зеркало из https://github.com/mozilla/gecko-dev.git
63 строки
2.4 KiB
HTML
63 строки
2.4 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
|
<title>Bug 1300461</title>
|
|
</head>
|
|
<body onload="test();">
|
|
<script>
|
|
/**
|
|
* Bug 1300461 identifies that if a history entry was not bfcached, and
|
|
* a http redirection happens when navigating to that entry, the history
|
|
* index would mess up.
|
|
*
|
|
* The test case emulates the circumstance by the following steps
|
|
* 1) Navigate to file_bug1300461_back.html which is not bf-cachable.
|
|
* 2) In file_bug1300461_back.html, replace its own history state to
|
|
* file_bug1300461_redirect.html.
|
|
* 3) Back, and then forward. Since the document is not in bfcache, it
|
|
* tries to load file_bug1300461_redirect.html directly.
|
|
* 4) file_bug1300461_redirect.html redirects UA to
|
|
* file_bug1300461_back.html through HTTP 301 header.
|
|
*
|
|
* We verify the history index, canGoBack, canGoForward, etc. keep correct
|
|
* in this process.
|
|
*/
|
|
let Ci = SpecialPowers.Ci;
|
|
let webNav = SpecialPowers.wrap(window)
|
|
.docShell
|
|
.QueryInterface(Ci.nsIWebNavigation);
|
|
let shistory = webNav.sessionHistory;
|
|
let testSteps = [
|
|
function() {
|
|
opener.is(shistory.count, 1, "check history length");
|
|
opener.is(shistory.index, 0, "check history index");
|
|
opener.ok(!webNav.canGoForward, "check canGoForward");
|
|
setTimeout(() => window.location = "file_bug1300461_back.html", 0);
|
|
},
|
|
function() {
|
|
opener.is(shistory.count, 2, "check history length");
|
|
opener.is(shistory.index, 0, "check history index");
|
|
opener.ok(webNav.canGoForward, "check canGoForward");
|
|
window.history.forward();
|
|
},
|
|
function() {
|
|
opener.is(shistory.count, 2, "check history length");
|
|
opener.is(shistory.index, 0, "check history index");
|
|
opener.ok(webNav.canGoForward, "check canGoForward");
|
|
opener.info("file_bug1300461.html tests finished");
|
|
opener.nextTest();
|
|
window.close();
|
|
},
|
|
];
|
|
|
|
function test() {
|
|
if (opener) {
|
|
opener.info("file_bug1300461.html test " + opener.testCount);
|
|
testSteps[opener.testCount++]();
|
|
}
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|