js/xpconnect/tests/chrome/test_bug866823.xul

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:bd16fda5e5ee
1 <?xml version="1.0"?>
2 <?xml-stylesheet type="text/css" href="chrome://global/skin"?>
3 <?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
4 <!--
5 https://bugzilla.mozilla.org/show_bug.cgi?id=866823
6 -->
7 <window title="Mozilla Bug 866823"
8 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
9 <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
10
11 <!-- test results are displayed in the html:body -->
12 <body xmlns="http://www.w3.org/1999/xhtml">
13 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=866823"
14 target="_blank">Mozilla Bug 866823</a>
15 </body>
16
17 <!-- test code goes here -->
18 <script type="application/javascript">
19 <![CDATA[
20 /** Test for Bug 866823 **/
21 SimpleTest.waitForExplicitFinish();
22 const Cu = Components.utils;
23
24 function go() {
25 var iwin = $('ifr').contentWindow;
26
27 // Make sure that Xray waivers can't be transitively extended onto objects
28 // for whom the extender may not waive.
29 var sb = new Cu.Sandbox(iwin, { wantXrays: true });
30 sb.iwin = iwin;
31 ok(Cu.evalInSandbox('iwin.wrappedJSObject.top == iwin.top', sb), "Waiver does not propagate");
32 Cu.evalInSandbox('iwin.wrappedJSObject.waiver = iwin.wrappedJSObject', sb);
33 ok(iwin.wrappedJSObject.eval('waiver == window'), "Waivers disappear same-compartment");
34
35 // Make sure that COW prototype always happens.
36 sb.arrayProto = Array.prototype;
37 ok(Cu.evalInSandbox('arrayProto == Array.prototype', sb),
38 "Prototype remapping should happen even when the object isn't used as a prototype");
39
40 // Make sure that prototype remapping happens even for nsEP.
41 var sbEP = new Cu.Sandbox(['http://example.org']);
42 sb.epArrayProto = sbEP.Array.prototype;
43 ok(Cu.evalInSandbox('epArrayProto == Array.prototype', sb),
44 "Prototype remapping should happen for all non-subsuming access");
45
46 SimpleTest.finish();
47 }
48
49 ]]>
50 </script>
51 <iframe id="ifr" onload="go();" type="content" src="http://example.org/tests/js/xpconnect/tests/mochitest/file_empty.html" />
52 </window>

mercurial