| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <p id="description"></p> |
| <pre id="console"></pre> |
| |
| <iframe src="data:text/plain,iframe1" id="iframe1"></iframe> |
| <iframe src="data:text/plain,iframe2" id="iframe2"></iframe> |
| |
| <script> |
| var wentBack = false; |
| |
| description('Tests that we trigger same-document navigation when history entries are generated via fragment changes, even if the frames present in the document change between history entries.'); |
| |
| if (window.testRunner) { |
| testRunner.dumpChildFramesAsText(); |
| testRunner.clearBackForwardList(); |
| testRunner.dumpBackForwardList(); |
| } |
| |
| onload = function() |
| { |
| // Run afer onload, to make sure that we can generate history entries. |
| setTimeout(beginTest, 0); |
| } |
| |
| onpopstate = function(event) { |
| var loc = location.href; |
| var filenameAndQuery = loc.substring(loc.lastIndexOf('/') + 1); |
| debug('popstate to state: ' + event.state + ' filename: ' + filenameAndQuery); |
| |
| if (!location.hash) { |
| if (wentBack) { |
| debug('going forward'); |
| history.forward(); |
| } |
| } else if (location.hash == '#newState') { |
| if (!wentBack) { |
| wentBack = true; |
| debug('going back'); |
| history.back(); |
| } else { |
| finishJSTest(); |
| } |
| } else { |
| testFailed('Unexpected state'); |
| } |
| }; |
| |
| |
| function beginTest() |
| { |
| debug('removing iframe2'); |
| document.body.removeChild(document.getElementById('iframe2')); |
| |
| debug('navigating to #newState'); |
| window.location.href = '#newState'; |
| } |
| var jsTestIsAsync = true; |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |