Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(297)

Side by Side Diff: LayoutTests/fast/loader/stateobjects/document-destroyed-navigate-back-with-fragment-scroll.html

Issue 680273004: Never fire popstate event when navigating between documents (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 <html> 1 <html>
2 <head> 2 <head>
3 <script> 3 <script>
4 4
5 if (window.testRunner) { 5 if (window.testRunner) {
6 if (!sessionStorage.stage) 6 if (!sessionStorage.stage)
7 testRunner.clearBackForwardList(); 7 testRunner.clearBackForwardList();
8 testRunner.dumpAsText(); 8 testRunner.dumpAsText();
9 testRunner.waitUntilDone(); 9 testRunner.waitUntilDone();
10 } 10 }
(...skipping 15 matching lines...) Expand all
26 history.back(); 26 history.back();
27 } 27 }
28 28
29 function runTest() 29 function runTest()
30 { 30 {
31 alert("LOADED"); 31 alert("LOADED");
32 if (!sessionStorage.stage) 32 if (!sessionStorage.stage)
33 runFirstStageOfTest(); 33 runFirstStageOfTest();
34 } 34 }
35 35
36 onpopstate = function() 36 function continueTest(state)
37 { 37 {
38 alert("State popped - " + event.state + " (type " + typeof event.state + ")" );
39
40 // FIXME: Once the popstate and hashchange events fire asynchronously, we 38 // FIXME: Once the popstate and hashchange events fire asynchronously, we
41 // can eliminate this setTimeout hack. The hashchange event currently runs 39 // can eliminate this setTimeout hack. The hashchange event currently runs
42 // synchronously following the popstate event, but the calls to 40 // synchronously following the popstate event, but the calls to
43 // replaceState cause the location to change immediately. That confuses 41 // replaceState cause the location to change immediately. That confuses
44 // our hashchange handler, which expects to see the "old" value of the 42 // our hashchange handler, which expects to see the "old" value of the
45 // location. 43 // location.
46 44
47 var state = event.state;
48 setTimeout(function() { 45 setTimeout(function() {
49 if (state == "FirstEntry") { 46 if (state == "FirstEntry") {
50 history.replaceState("FirstEntryWillLaterBeReactivated", null, "#Fir stEntryWillLaterBeReactivated"); 47 history.replaceState("FirstEntryWillLaterBeReactivated", null, "#Fir stEntryWillLaterBeReactivated");
51 history.forward(); 48 history.forward();
52 } else if (state == "SecondEntry") { 49 } else if (state == "SecondEntry") {
53 history.replaceState("SecondEntryWillLaterBeReactivated", null, "#Se condEntryWillLaterBeReactivated"); 50 history.replaceState("SecondEntryWillLaterBeReactivated", null, "#Se condEntryWillLaterBeReactivated");
54 window.location = "resources/navigate-back.html"; 51 window.location = "resources/navigate-back.html";
55 } else if (state == "SecondEntryWillLaterBeReactivated") 52 } else if (state == "SecondEntryWillLaterBeReactivated")
56 history.back(); 53 history.back();
57 }, 0); 54 }, 0);
58 } 55 }
59 56
60 onhashchange = function(event) 57 window.onpopstate = function statePopped()
58 {
59 var state = event.state;
60 alert("State popped - " + state + " (type " + typeof state + ")");
61 continueTest(state);
62 }
63
64 window.onpageshow = function pageShown()
65 {
66 if (sessionStorage.stage == 2) {
67 var state = history.state;
68 alert("Page shown - " + state + " (type " + typeof state + ")");
69 continueTest(state);
70 }
71 }
72
73 window.onhashchange = function hashChanged(event)
61 { 74 {
62 alert("hashChanged - Last path component of location is " + lastPathComponent (event.newURL)); 75 alert("hashChanged - Last path component of location is " + lastPathComponent (event.newURL));
63 if (hashOf(event.newURL) == "#FirstEntryWillLaterBeReactivated") { 76 if (hashOf(event.newURL) == "#FirstEntryWillLaterBeReactivated") {
64 alert("Test complete"); 77 alert("Test complete");
65 sessionStorage.clear(); 78 sessionStorage.clear();
66 if (window.testRunner) 79 if (window.testRunner)
67 testRunner.notifyDone(); 80 testRunner.notifyDone();
68 } 81 }
69 } 82 }
70 83
71 </script> 84 </script>
72 <body onload="runTest();" onunload="/* disable page cache */"> 85 <body onload="runTest();" onunload="/* disable page cache */">
73 <pre> 86 <pre>
74 This test: 87 This test:
75 -Builds up a list of state object entries with fragment URLs. 88 -Builds up a list of state object entries with fragment URLs.
76 -Navigates through them to verify that the popstate and hashchanged events are f ired. 89 -Navigates through them to verify that the popstate and hashchanged events are f ired.
77 -Navigates away to a new document, with the old document being destroyed. 90 -Navigates away to a new document, with the old document being destroyed.
78 -Navigates back to the state object entries and verifies the popstate event is f ired even on the new documents. 91 -Navigates back to the state object entries and verifies the pageshow or popstat e events are fired on the new documents.
79 </pre> 92 </pre>
80 </body> 93 </body>
81 </html> 94 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698