| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <p id="description"></p> |
| <pre id="console"></pre> |
| <script> |
| description('Tests that using location.replace to update the hash of a page preserves it when navigating back to it.'); |
| |
| jsTestIsAsync = true; |
| |
| var testWindow; |
| |
| onload = function() |
| { |
| if (window.testRunner) { |
| testRunner.setCanOpenWindows(); |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| testWindow = window.open('resources/location-replace-hash-1.html'); |
| if (!testWindow) |
| testFailed('Could not open test window'); |
| } |
| |
| var currentState = 0; |
| var currentPageId; |
| |
| function onTestWindowNavigation(pageId) |
| { |
| // The page ID is put in a global so that the eval() inside of shouldBe can |
| // see it |
| currentPageId = pageId; |
| currentState++; |
| |
| switch (currentState) { |
| case 1: |
| shouldBe('currentPageId', '1'); |
| testWindow.location.replace('#foo'); |
| break; |
| case 2: |
| shouldBe('currentPageId', '1'); |
| shouldBe('testWindow.location.hash', '"#foo"'); |
| testWindow.location = 'location-replace-hash-2.html'; |
| break; |
| case 3: |
| shouldBe('currentPageId', '2'); |
| testWindow.history.back(); |
| break; |
| case 4: |
| shouldBe('currentPageId', '1'); |
| shouldBe('testWindow.location.hash', '"#foo"'); |
| break; |
| default: |
| testFailed('Should not be in state ' + currentState); |
| break; |
| } |
| |
| if (currentState == 4) { |
| testPassed('Complete: navigated through all the states'); |
| finishJSTest(); |
| } |
| } |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |