| <html> |
| <head> |
| <script> |
| |
| if (window.testRunner) { |
| testRunner.clearBackForwardList(); |
| testRunner.dumpAsText(); |
| } |
| |
| function log(txt) |
| { |
| document.getElementById("logger").innerText += txt + "\n"; |
| } |
| |
| function tryURL(url) |
| { |
| try { |
| history.pushState(null, null, url); |
| log("Trying to pushState() with url " + url + " succeeded, but should've failed."); |
| } catch(e) { |
| log("Trying to pushState() with url " + url + " failed with exception " + e); |
| } |
| log("History length is " + history.length); |
| |
| try { |
| history.replaceState(null, null, url); |
| log("Trying to replaceState() with url " + url + " succeeded, but should've failed."); |
| } catch(e) { |
| log("Trying to replaceState() with url " + url + " failed with exception " + e); |
| } |
| log("History length is " + history.length); |
| } |
| |
| var URLsToTry = new Array( |
| "http://localhost/test.html", |
| "http://localhost:8001/test.html", |
| "http://www.webkit.org/test.html", |
| "http://www.webkit.org/", |
| "ftp://www.webkit.org/", |
| "file://anyfile.html/" |
| ); |
| |
| function runTest() |
| { |
| for (n in URLsToTry) |
| tryURL(URLsToTry[n]); |
| } |
| |
| </script> |
| <body onload="runTest();"> |
| <pre> |
| This test makes sure that calls to pushState() and replaceState() with URLs that violate the security origin check fail as expected. |
| </pre><br> |
| <pre id="logger"></pre> |
| </body> |
| </html> |