diff options
Diffstat (limited to '')
-rw-r--r-- | dom/base/test/file_bug426646-2.html | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/dom/base/test/file_bug426646-2.html b/dom/base/test/file_bug426646-2.html new file mode 100644 index 0000000000..2da090b32f --- /dev/null +++ b/dom/base/test/file_bug426646-2.html @@ -0,0 +1,65 @@ +<html><head> +<title>Bug 426646, Using location.replace breaks iframe history</title> +<script type="text/javascript"> +var BASE_URI = "http://mochi.test:8888/tests/dom/base/test/"; +var url1 = BASE_URI + "iframe1_bug426646.html"; + +var win0 = null; + +function soon(f) { + return function() { setTimeout(f, 0); }; +} + +function doe() { + document.body.innerHTML = "<iframe src='about:blank'></iframe>"; + document.body.innerHTML += "<iframe src='about:blank'></iframe>"; + win0 = window.frames[0]; + win0.frameElement.onload = soon(doe2); + win0.location.replace(url1); +} + +function doe2() { + // Add some iframes/docshells. Session history should still work. + var ifr1 = document.createElement("iframe"); + document.body.insertBefore(ifr1, document.body.firstChild); + ifr1.onload = soon(doe3); + + var ifr2 = document.createElement("iframe"); + document.body.insertBefore(ifr2, document.body.firstChild); + ifr2.onload = soon(doe3); + + var ifr3 = document.createElement("iframe"); + document.body.insertBefore(ifr3, document.body.firstChild); + ifr3.onload = soon(doe3); +} + +var doe3_count = 0; +function doe3() { + // Wait until all three iframes have loaded about:blank before navigating + // win0. + doe3_count++; + if (doe3_count < 3) { + return; + } + if (doe3_count > 3) { + ok(false, 'Unexpected ' + doe3_count + 'th call to doe3.'); + return; + } + + win0.frameElement.onload = soon(doe4); + win0.location = BASE_URI + 'iframe2_bug426646.html'; +} + +function doe4() { + win0.frameElement.onload = soon(doe5); + history.go(-1); +} + +function doe5() { + opener.is(String(win0.location), url1, "History.go(-1) didn't work?"); + close(); +} +</script> +</head> +<body onload="setTimeout(doe, 0);" onunload="opener.nextTest();"> +</body></html> |