diff options
Diffstat (limited to 'devtools/shared/webconsole/test/test_jsterm_cd_iframe.html')
-rw-r--r-- | devtools/shared/webconsole/test/test_jsterm_cd_iframe.html | 223 |
1 files changed, 223 insertions, 0 deletions
diff --git a/devtools/shared/webconsole/test/test_jsterm_cd_iframe.html b/devtools/shared/webconsole/test/test_jsterm_cd_iframe.html new file mode 100644 index 000000000..7207a00a1 --- /dev/null +++ b/devtools/shared/webconsole/test/test_jsterm_cd_iframe.html @@ -0,0 +1,223 @@ +<!DOCTYPE HTML> +<html lang="en"> +<head> + <meta charset="utf8"> + <title>Test for the cd() function</title> + <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> + <script type="text/javascript;version=1.8" src="common.js"></script> + <!-- Any copyright is dedicated to the Public Domain. + - http://creativecommons.org/publicdomain/zero/1.0/ --> +</head> +<body> +<p>Test for the cd() function</p> + +<iframe id="content-iframe" src="http://example.com/chrome/devtools/shared/webconsole/test/sandboxed_iframe.html"></iframe> + +<script class="testbody" type="text/javascript;version=1.8"> +SimpleTest.waitForExplicitFinish(); + +let gState; + +function startTest() +{ + removeEventListener("load", startTest); + + attachConsoleToTab([], onAttach); +} + +function onAttach(aState, aResponse) +{ + top.foobarObject = Object.create(null); + top.foobarObject.bug609872 = "parent"; + + window.foobarObject = Object.create(null); + window.foobarObject.bug609872 = "child"; + + gState = aState; + + let tests = [doCheckParent, doCdIframe, doCheckIframe, + doCdContentIframe, + doCdSandboxedIframe, doCheckSandboxedIframe, + doCdParent, + doCdParent, + doCheckParent2]; + runTests(tests, testEnd); +} + +function doCheckParent() +{ + info("check parent window"); + gState.client.evaluateJS("window.foobarObject.bug609872", + onFooObjectFromParent); +} + +function onFooObjectFromParent(aResponse) +{ + checkObject(aResponse, { + from: gState.actor, + input: "window.foobarObject.bug609872", + result: "parent", + }); + + ok(!aResponse.exception, "no eval exception"); + ok(!aResponse.helperResult, "no helper result"); + + nextTest(); +} + +function doCdIframe() +{ + info("test cd('iframe')"); + gState.client.evaluateJS("cd('iframe')", onCdIframe); +} + +function onCdIframe(aResponse) +{ + checkObject(aResponse, { + from: gState.actor, + input: "cd('iframe')", + result: { type: "undefined" }, + helperResult: { type: "cd" }, + }); + + ok(!aResponse.exception, "no eval exception"); + + nextTest(); +} + +function doCheckIframe() +{ + info("check foobarObject from the iframe"); + gState.client.evaluateJS("window.foobarObject.bug609872", + onFooObjectFromIframe); +} + +function onFooObjectFromIframe(aResponse) +{ + checkObject(aResponse, { + from: gState.actor, + input: "window.foobarObject.bug609872", + result: "child", + }); + + ok(!aResponse.exception, "no js eval exception"); + ok(!aResponse.helperResult, "no helper result"); + + nextTest(); +} + +function doCdContentIframe() +{ + info("test cd('#content-iframe')"); + gState.client.evaluateJS("cd('#content-iframe')", onCdContentIframe); +} + +function onCdContentIframe(aResponse) +{ + checkObject(aResponse, { + from: gState.actor, + input: "cd('#content-iframe')", + result: { type: "undefined" }, + helperResult: { type: "cd" }, + }); + + ok(!aResponse.exception, "no eval exception"); + + nextTest(); +} +function doCdSandboxedIframe() +{ + // Don't use string to ensure we don't get security exception + // when passing a content window reference. + let cmd = "cd(document.getElementById('sandboxed-iframe').contentWindow)"; + info("test " + cmd); + gState.client.evaluateJS(cmd, onCdSandboxedIframe.bind(null, cmd)); +} + +function onCdSandboxedIframe(cmd, aResponse) +{ + checkObject(aResponse, { + from: gState.actor, + input: cmd, + result: { type: "undefined" }, + helperResult: { type: "cd" }, + }); + + ok(!aResponse.exception, "no eval exception"); + + nextTest(); +} + +function doCheckSandboxedIframe() +{ + info("check foobarObject from the sandboxed iframe"); + gState.client.evaluateJS("window.foobarObject.bug1051224", + onFooObjectFromSandboxedIframe); +} + +function onFooObjectFromSandboxedIframe(aResponse) +{ + checkObject(aResponse, { + from: gState.actor, + input: "window.foobarObject.bug1051224", + result: "sandboxed", + }); + + ok(!aResponse.exception, "no js eval exception"); + ok(!aResponse.helperResult, "no helper result"); + + nextTest(); +} + +function doCdParent() +{ + info("test cd() back to parent"); + gState.client.evaluateJS("cd()", onCdParent); +} + +function onCdParent(aResponse) +{ + checkObject(aResponse, { + from: gState.actor, + input: "cd()", + result: { type: "undefined" }, + helperResult: { type: "cd" }, + }); + + ok(!aResponse.exception, "no eval exception"); + + nextTest(); +} + +function doCheckParent2() +{ + gState.client.evaluateJS("window.foobarObject.bug609872", + onFooObjectFromParent2); +} + +function onFooObjectFromParent2(aResponse) +{ + checkObject(aResponse, { + from: gState.actor, + input: "window.foobarObject.bug609872", + result: "parent", + }); + + ok(!aResponse.exception, "no eval exception"); + ok(!aResponse.helperResult, "no helper result"); + + nextTest(); +} + +function testEnd() +{ + closeDebugger(gState, function() { + gState = null; + SimpleTest.finish(); + }); +} + +addEventListener("load", startTest); +</script> +</body> +</html> |