summaryrefslogtreecommitdiffstats
path: root/dom/xul/test/file_bug1271240.xul
diff options
context:
space:
mode:
Diffstat (limited to 'dom/xul/test/file_bug1271240.xul')
-rw-r--r--dom/xul/test/file_bug1271240.xul82
1 files changed, 82 insertions, 0 deletions
diff --git a/dom/xul/test/file_bug1271240.xul b/dom/xul/test/file_bug1271240.xul
new file mode 100644
index 000000000..2edd5a1b4
--- /dev/null
+++ b/dom/xul/test/file_bug1271240.xul
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
+<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
+ type="text/css"?>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1271240
+-->
+<window title="Mozilla Bug 1271240"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" onload="run();">
+
+ <!-- test code goes here -->
+ <script type="application/javascript">
+ <![CDATA[
+
+ function ok(cond, msg) {
+ opener.wrappedJSObject.ok(cond, msg);
+ }
+
+ function is(actual, expected, msg) {
+ opener.wrappedJSObject.is(actual, expected, msg);
+ }
+
+ /** Test for Bug 1271240 **/
+ function run() {
+ // test non-remote, non-prerendered browser
+ createBrowser(false, false)
+ .then(browser => verifyBrowser(browser, false, false))
+
+ // test non-remote, prerendered browser
+ .then(() => createBrowser(true, false))
+ .then(browser => verifyBrowser(browser, true, false))
+ .then(browser => makePrerenderedBrowserActive(browser))
+ .then(browser => verifyBrowser(browser, false, false))
+
+ // test remote, non-prerendered browser
+ .then(() => createBrowser(false, true))
+ .then(browser => verifyBrowser(browser, false, true))
+
+ // test remote, prerendered browser
+ .then(() => createBrowser(true, true))
+ .then(browser => verifyBrowser(browser, true, true))
+ .then(browser => makePrerenderedBrowserActive(browser))
+ .then(browser => verifyBrowser(browser, false, true))
+
+ // finish test
+ .then(() => {
+ opener.postMessage('finish', '*');
+ window.close();
+ });
+ }
+
+ function createBrowser(prerendered, remote) {
+ return new Promise(resolve => {
+ var browser = document.createElement('browser');
+ browser.setAttribute('type', 'content');
+ browser.setAttribute('prerendered', prerendered);
+ browser.setAttribute('remote', remote);
+ document.documentElement.appendChild(browser);
+ browser.loadURI('example.com');
+ resolve(browser);
+ });
+ }
+
+ function verifyBrowser(browser, prerendered, remote) {
+ var docShellOrTabParent = remote ?
+ browser.frameLoader.tabParent : browser.frameLoader.docShell;
+ ok(docShellOrTabParent, 'docShellOrTabParent should not be null');
+ is(docShellOrTabParent.isPrerendered, prerendered,
+ 'isPrerendered should be ' + prerendered);
+ return browser;
+ }
+
+ function makePrerenderedBrowserActive(browser) {
+ browser.makePrerenderedBrowserActive();
+ return browser;
+ }
+
+ ]]>
+ </script>
+ <!-- <browser type="content-primary" flex="1" id="content" />
+ <browser type="content-primary" flex="1" id="content-remote" remote="true" /> -->
+</window>