summaryrefslogtreecommitdiffstats
path: root/docshell/test/chrome/bug449780_window.xul
diff options
context:
space:
mode:
Diffstat (limited to 'docshell/test/chrome/bug449780_window.xul')
-rw-r--r--docshell/test/chrome/bug449780_window.xul77
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>