Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
<!--
-->
<window title="Mozilla Bug 1355109"
<!-- test results are displayed in the html:body -->
target="_blank">Mozilla Bug 758415</a>
</body>
<!-- test code goes here -->
<script type="application/javascript">
<![CDATA[
SimpleTest.waitForExplicitFinish();
// Import our test JSM. We first strip the filename off
// the chrome url, then append the jsm filename.
var base = /.*\//.exec(window.location.href)[0];
ChromeUtils.import(base + "file_expandosharing.jsm");
// Wait for all child frames to load.
var gLoadCount = 0;
function frameLoaded() {
if (++gLoadCount == window.frames.length)
go();
}
function go() {
testSandbox(1);
testSandbox(100);
testSandbox(1000);
SimpleTest.finish();
}
function testSandbox(iterations) {
// Create an expanded principal sandbox to get xrays with exclusive
// expandos.
var sandbox = new Cu.Sandbox(["https://test1.example.org",
sandbox.iframeWindows = new sandbox.Array();
for (let iframe of document.getElementsByTagName('iframe')) {
sandbox.iframeWindows.push(iframe.contentWindow);
}
Cu.evalInSandbox(testClassName.toSource(), sandbox);
Cu.evalInSandbox(testIC.toSource(), sandbox);
is(Cu.evalInSandbox("testIC(" + iterations + ");", sandbox), true, "sandbox test");
}
// This is in a separate function to provide a common source location for ICs.
function testClassName(obj, expected) {
var className = obj.className;
if (className != expected)
throw new Error("Got " + className + ", expected " + expected);
}
function testIC(iterations) {
for (var i = 0; i < this.iframeWindows.length; i++) {
var win = this.iframeWindows[i];
var spans = win.document.getElementsByTagName('span');
for (var j = 0; j < spans.length; j++) {
var span = spans[j];
for (var k = 0; k < iterations; k++)
testClassName(span, "iamaspan");
Object.defineProperty(span, "className", { value: "what" });
testClassName(span, "what");
}
}
return true;
}
]]>
</script>
<iframe id="inlineFrame1" onload="frameLoaded();" type="content" src="https://test1.example.org/tests/js/xpconnect/tests/mochitest/file_xrayic.html" />
<iframe id="inlineFrame2" onload="frameLoaded();" type="content" src="https://test1.example.org/tests/js/xpconnect/tests/mochitest/file_xrayic.html" />
</window>