Index: LayoutTests/fast/loader/stateobjects/document-destroyed-navigate-back.html |
diff --git a/LayoutTests/fast/loader/stateobjects/document-destroyed-navigate-back.html b/LayoutTests/fast/loader/stateobjects/document-destroyed-navigate-back.html |
index 02937d2d36c670b52327c18e6bbe89173a41200e..d812aa2a447565697dcceb7d29f297a67afbf368 100644 |
--- a/LayoutTests/fast/loader/stateobjects/document-destroyed-navigate-back.html |
+++ b/LayoutTests/fast/loader/stateobjects/document-destroyed-navigate-back.html |
@@ -15,45 +15,32 @@ function lastPathComponent() |
} |
function runFirstStageOfTest() |
-{ |
+{ |
history.replaceState("FirstEntry", null, "?FirstEntry"); |
history.pushState("SecondEntry", null, "?SecondEntry"); |
history.back(); |
} |
-function runSecondStageOfTest() |
-{ |
- alert("Last path component of location is " + lastPathComponent()); |
-} |
- |
-function runThirdStageOfTest() |
-{ |
- alert("Final stage of test loaded"); |
-} |
- |
function runTest() |
{ |
if (!sessionStorage.stage) { |
// Location changes need to happen outside the onload handler to generate history entries. |
setTimeout(runFirstStageOfTest, 0); |
} else if (sessionStorage.stage == 2) |
- runSecondStageOfTest(); |
- else if (sessionStorage.stage == 3) |
- runThirdStageOfTest(); |
+ alert("Last path component of location is " + lastPathComponent()); |
} |
-function statePopped() |
+function continueTest(state) |
{ |
- alert("State popped - " + event.state + " (type " + typeof event.state + ")"); |
- if (event.state == "FirstEntry") { |
+ if (state == "FirstEntry") { |
history.replaceState("FirstEntryWillLaterBeReactivated", null, "?FirstEntryWillLaterBeReactivated"); |
history.forward(); |
- } else if (event.state == "SecondEntry") { |
+ } else if (state == "SecondEntry") { |
history.replaceState("SecondEntryWillLaterBeReactivated", null, "?SecondEntryWillLaterBeReactivated"); |
window.location = "resources/navigate-back.html"; |
- } else if (event.state == "SecondEntryWillLaterBeReactivated") |
+ } else if (state == "SecondEntryWillLaterBeReactivated") |
history.back(); |
- else if (event.state == "FirstEntryWillLaterBeReactivated") { |
+ else if (state == "FirstEntryWillLaterBeReactivated") { |
alert("Test complete"); |
sessionStorage.clear(); |
if (window.testRunner) |
@@ -61,14 +48,30 @@ function statePopped() |
} |
} |
+window.onpopstate = function statePopped() |
+{ |
+ var state = event.state; |
+ alert("State popped - " + state + " (type " + typeof state + ")"); |
+ continueTest(state); |
+} |
+ |
+window.onpageshow = function pageShown() |
+{ |
+ if (sessionStorage.stage == 2) { |
+ var state = history.state; |
+ alert("Page shown - " + state + " (type " + typeof state + ")"); |
+ continueTest(state); |
+ } |
+} |
+ |
</script> |
-<body onload="runTest();" onpopstate="statePopped();" onunload="/* disable page cache */"> |
+<body onload="runTest();" onunload="/* disable page cache */"> |
<pre> |
This test: |
-Builds up a list of state object entries with fragment URLs. |
-Navigates through them to verify that the popstate event is fired. |
-Navigates away to a new document, with the old document being destroyed. |
--Navigates back to the state object entries and verifies the popstate event is fired even on the new documents. |
+-Navigates back to the state object entries and verifies the pageshow or popstate events are fired on the new documents. |
</pre><br> |
<pre id="logger"></pre> |
</body> |