diff options
Diffstat (limited to 'dom/xbl/test/file_bug950909.xml')
-rw-r--r-- | dom/xbl/test/file_bug950909.xml | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/dom/xbl/test/file_bug950909.xml b/dom/xbl/test/file_bug950909.xml new file mode 100644 index 000000000..c711d9ed4 --- /dev/null +++ b/dom/xbl/test/file_bug950909.xml @@ -0,0 +1,37 @@ +<?xml version="1.0"?> +<bindings id="chromeTestBindings" xmlns="http://www.mozilla.org/xbl"> + <binding id="testBinding" bindToUntrustedContent="true"> + <implementation implements="nsIObserver"> + <constructor> + <![CDATA[ + // This binding gets applied to a content object, and thus is actually + // running in a content XBL scope. + var win = XPCNativeWrapper.unwrap(window); + var SpecialPowers = win.SpecialPowers; + var ok = SpecialPowers.unwrap(SpecialPowers.wrap(window).parent.ok); + ok(win != window, "Should be running in an XBL scope with Xrays"); + + // Generate an XPCWrappedJS for the reflector. We need to do this + // explicitly with a testing helper, because we're converging on + // removing XPConnect from the web, which means that it won't be + // possible to generate an XPCWrappedJS from content (or XBL) code. + var scope = {}; + var holder = SpecialPowers.Cu.generateXPCWrappedJS(this, scope); + + // Now, QI |this|, which will generate an aggregated native. + this.QueryInterface(Components.interfaces.nsIObserver); + + ok(true, "Didn't assert or crash"); + + SpecialPowers.wrap(window).parent.SimpleTest.finish(); + ]]> + </constructor> + <method name="observe"> + <parameter name="aSubject"/> + <parameter name="aTopic"/> + <parameter name="aData"/> + <body><![CDATA[]]></body> + </method> + </implementation> + </binding> +</bindings> |