2008-04-29 00:18:55 -07:00
|
|
|
<html><head>
|
|
|
|
<title>Bug 426646, Using location.replace breaks iframe history</title>
|
|
|
|
<script type="text/javascript">
|
|
|
|
var url1 = "data:text/html;charset=utf-8,1st%20page";
|
|
|
|
|
|
|
|
var win0 = null;
|
|
|
|
|
2011-08-01 16:45:47 -07:00
|
|
|
function soon(f) {
|
|
|
|
return function() { setTimeout(f, 0); };
|
|
|
|
}
|
|
|
|
|
2008-04-29 00:18:55 -07:00
|
|
|
function doe() {
|
|
|
|
document.body.innerHTML = "<iframe src='about:blank'></iframe>";
|
|
|
|
document.body.innerHTML += "<iframe src='about:blank'></iframe>";
|
|
|
|
win0 = window.frames[0];
|
2011-08-01 16:45:47 -07:00
|
|
|
win0.frameElement.onload = soon(doe2);
|
2008-04-29 00:18:55 -07:00
|
|
|
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);
|
2011-08-01 16:45:47 -07:00
|
|
|
ifr1.onload = soon(doe3);
|
|
|
|
|
2008-04-29 00:18:55 -07:00
|
|
|
var ifr2 = document.createElement("iframe");
|
|
|
|
document.body.insertBefore(ifr2, document.body.firstChild);
|
2011-08-01 16:45:47 -07:00
|
|
|
ifr2.onload = soon(doe3);
|
|
|
|
|
2008-04-29 00:18:55 -07:00
|
|
|
var ifr3 = document.createElement("iframe");
|
|
|
|
document.body.insertBefore(ifr3, document.body.firstChild);
|
2011-08-01 16:45:47 -07:00
|
|
|
ifr3.onload = soon(doe3);
|
2008-04-29 00:18:55 -07:00
|
|
|
}
|
|
|
|
|
2011-08-01 16:45:47 -07:00
|
|
|
var doe3_count = 0;
|
2011-07-31 12:39:32 -07:00
|
|
|
function doe3() {
|
2011-08-01 16:45:47 -07:00
|
|
|
// 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 = 'data:text/html;charset=utf-8,2nd%20page';
|
2011-07-31 10:22:14 -07:00
|
|
|
}
|
|
|
|
|
2011-07-31 12:39:32 -07:00
|
|
|
function doe4() {
|
2011-08-01 16:45:47 -07:00
|
|
|
win0.frameElement.onload = soon(doe5);
|
|
|
|
history.go(-1);
|
|
|
|
}
|
|
|
|
|
|
|
|
function doe5() {
|
2008-04-29 00:18:55 -07:00
|
|
|
opener.is(win0.location, url1, "History.go(-1) didn't work?");
|
|
|
|
close();
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
</head>
|
2011-08-01 16:45:47 -07:00
|
|
|
<body onload="setTimeout(doe, 0);" onunload="opener.nextTest();">
|
2008-04-29 00:18:55 -07:00
|
|
|
</body></html>
|