60dec93710ca3aaa6327f1dec0f7f0d7ebe10028
[WebKit-https.git] / LayoutTests / fast / history / saves-state-after-fragment-nav.html
1 <html>
2 <script>
3
4 // Navigation steps:
5 // 1- loads this page
6 // 2- loads this page + hash (doesn't call onload)
7 // 3- loads a data URL that just navigates back
8 // 4- loads this page + hash (calls onload, triggering completion)
9
10 function navigateToHash(field) {
11   location.hash = 'hash';
12   field.value = 'test';
13 }
14
15 function navigateAwayAndBack() {
16   // Assigning to location does not create a history entry, so
17   // instead we simulate a link click.
18   var evt = document.createEvent("MouseEvents"); 
19   evt.initMouseEvent("click", true, true, window,
20       0, 0, 0, 0, 0, false, false, false, false, 0, null); 
21   document.getElementById('anchor').dispatchEvent(evt);
22 }
23
24 function runTestStep() {
25   var hash = location.hash;
26   var field = document.getElementById('field');
27
28   if (hash == "") {
29     if (window.layoutTestController) {
30       layoutTestController.dumpAsText();
31       layoutTestController.waitUntilDone();
32     }
33     // Location changes need to happen outside the onload handler to generate history entries.
34     setTimeout(function() {
35       navigateToHash(field);
36       navigateAwayAndBack();
37     }, 0);
38   } else {
39     document.body.innerHTML = (field.value == '') ? 'FAIL' : 'PASS';
40     if (window.layoutTestController)
41       layoutTestController.notifyDone();
42   }
43 }
44
45 </script>
46 <body onload='runTestStep()' onunload='/*suppress page cache*/'>
47   <input id='field'></input>
48   <a id='anchor' href='data:text/html,<body onload="history.back()"></body>'>go away and come back</a>
49 </body>
50 </html>