| <script> |
| |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.dumpChildFramesAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| function log(msg) { |
| document.getElementById("logger").innerHTML += msg + "<br>"; |
| } |
| |
| var object = "aaaaaaaaaa"; |
| for (var i = 0; i < 16; ++i) |
| object += object; |
| |
| function click() |
| { |
| if (!eventSender) |
| return; |
| |
| var button = document.getElementById("button"); |
| eventSender.mouseMoveTo(button.offsetLeft + 5, button.offsetTop + 5); |
| eventSender.mouseDown(); |
| eventSender.mouseUp(); |
| } |
| |
| window.onload = click; |
| |
| var count = 1; |
| |
| function clicked() |
| { |
| try { |
| history.pushState(object, object, object); |
| } catch (e) { |
| log("Unexpected exception: " + e); |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| } |
| |
| log("Parent frame successfully added item: " + count + " times"); |
| ++count; |
| |
| if (count > 10) { |
| openFrame(); |
| return; |
| } |
| |
| setTimeout(click, 0); |
| } |
| |
| function iframeLoaded() |
| { |
| document.getElementById("button").onclick = window.frames[0].iframeClicked; |
| click(); |
| } |
| |
| function openFrame() |
| { |
| var iframe = document.createElement('iframe'); |
| iframe.src = 'resources/pushstate-iframe.html' |
| iframe.onload = iframeLoaded; |
| document.body.appendChild(iframe); |
| } |
| |
| </script> |
| <body> |
| Test should not crash.<br> |
| Test does pushState both from the main frame and from an iframe and makes sure they both count against the main frame document's size limit.<br> |
| <button id="button" onclick="clicked();">Click to test pushState through a user gesture</button> |
| <div id="logger"></div> |
| </body> |