diff options
Diffstat (limited to 'docshell/test/chrome/bug449780_window.xul')
-rw-r--r-- | docshell/test/chrome/bug449780_window.xul | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/docshell/test/chrome/bug449780_window.xul b/docshell/test/chrome/bug449780_window.xul new file mode 100644 index 000000000..38633c00f --- /dev/null +++ b/docshell/test/chrome/bug449780_window.xul @@ -0,0 +1,77 @@ +<?xml version="1.0"?> +<?xml-stylesheet href="chrome://global/skin" type="text/css"?> +<window title="Mozilla Bug 449780" onload="doTheTest()" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> + + <hbox id="parent"> + </hbox> + + <!-- test code goes here --> + <script type="application/javascript"><![CDATA[ + var imports = [ "SimpleTest", "is", "isnot", "ok", "onerror" ]; + for (var name of imports) { + window[name] = window.opener.wrappedJSObject[name]; + } + + function $(id) { + return document.getElementById(id); + } + + function addBrowser(parent, id, width, height) { + var b = + document.createElementNS("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "browser"); + b.setAttribute("type", "content"); + b.setAttribute("id", id); + b.setAttribute("width", width); + b.setAttribute("height", height); + $(parent).appendChild(b); + } + addBrowser("parent", "f1", 300, 200); + addBrowser("parent", "f2", 300, 200); + + /** Test for Bug 449780 **/ + var doc1 = "data:text/html,<html><body>This is a test</body></html>"; + var doc2 = "data:text/html,<html><body>This is a second test</body></html>"; + + function getDOM(id) { + return $(id).contentDocument.documentElement.innerHTML; + } + + var tester = (function() { + var origDOM = getDOM("f1"); + $("f1").contentDocument.body.textContent = "Modified"; + var modifiedDOM = getDOM("f1"); + isnot(origDOM, modifiedDOM, "DOM should be different"); + $("f1").contentWindow.location.href = doc2; + yield undefined; + + $("f1").goBack(); + yield undefined; + + is(getDOM("f1"), modifiedDOM, "Should have been bfcached"); + $("f1").goForward(); + yield undefined; + + // Ignore the notifications during swap + $("f1").removeEventListener("pageshow", testDriver, false); + $("f1").swapDocShells($("f2")); + $("f2").addEventListener("pageshow", testDriver, false); + $("f2").goBack(); + yield undefined; + + is(getDOM("f2"), origDOM, "Should have not have been bfcached"); + window.close(); + SimpleTest.finish(); + yield undefined; + })(); + + function testDriver() { + setTimeout(function() { tester.next() }, 0); + } + + function doTheTest() { + $("f1").addEventListener("pageshow", testDriver, false); + $("f1").setAttribute("src", doc1); + } + ]]></script> +</window> |