| <!-- webkit-test-runner [ UsesBackForwardCache=true ] --> |
| <head> |
| <style> |
| html { |
| font-size: 32pt; |
| } |
| </style> |
| <script src="resources/swipe-test.js"></script> |
| <script> |
| function runTest() |
| { |
| playEventStream(`[{ |
| "relativeTimeMS" : 0, |
| "kCGEventScrollGestureFlagBits" : 1, |
| "kCGEventGestureHIDType" : 6, |
| "kCGSEventTypeField" : 29, |
| "kCGEventGesturePhase" : 128, |
| "windowLocation" : "{400, 300}" |
| }, |
| { |
| "relativeTimeMS" : 8, |
| "kCGEventGestureHIDType" : 61, |
| "kCGSEventTypeField" : 29, |
| "kCGEventGestureStartEndSeriesType" : 6, |
| "windowLocation" : "{0, 0}" |
| }, |
| { |
| "kCGEventGestureHIDType" : 6, |
| "relativeTimeMS" : 8, |
| "windowLocation" : "{400, 300}", |
| "kCGEventGesturePhase" : 1, |
| "kCGEventScrollGestureFlagBits" : 1, |
| "kCGSEventTypeField" : 29, |
| "kCGEventGestureScrollX" : 2 |
| }, |
| { |
| "relativeTimeMS" : 8, |
| "windowLocation" : "{400, 300}", |
| "kCGScrollWheelEventScrollPhase" : 1, |
| "kCGScrollWheelEventIsContinuous" : 1, |
| "kCGScrollWheelEventPointDeltaAxis2" : 1, |
| "kCGSEventTypeField" : 22 |
| }]`, goBack); |
| } |
| |
| function goBack() |
| { |
| window.history.back(); |
| |
| setTimeout(continueTest, 0); |
| } |
| |
| function continueTest() |
| { |
| playEventStream(`[ |
| { |
| "relativeTimeMS" : 0, |
| "windowLocation" : "{400, 300}", |
| "kCGScrollWheelEventScrollPhase" : 1, |
| "kCGScrollWheelEventIsContinuous" : 1, |
| "kCGScrollWheelEventPointDeltaAxis2" : 20, |
| "kCGSEventTypeField" : 22 |
| }]`, function () { |
| completeTest(); |
| }); |
| } |
| |
| function completeTest() |
| { |
| completeSwipeGesture(testComplete); |
| } |
| |
| function didBeginSwipeCallback() |
| { |
| log("Failed. Should not begin swipe; we've already navigated away from the item where the swipe started, and there is no other back item."); |
| } |
| |
| function isFirstPage() |
| { |
| return window.location.href.indexOf("second") == -1; |
| } |
| |
| function updateContent() |
| { |
| document.body.innerHTML = isFirstPage() ? "first" : "second"; |
| } |
| |
| window.onload = function () { |
| if (!window.eventSender || !window.testRunner) { |
| document.body.innerHTML = "This test must be run in WebKitTestRunner."; |
| return; |
| } |
| |
| updateContent(); |
| |
| initializeSwipeTest(); |
| |
| testRunner.installDidBeginSwipeCallback(didBeginSwipeCallback); |
| |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| |
| window.addEventListener("popstate", function(e) { |
| updateContent(); |
| }); |
| |
| setTimeout(function () { |
| history.pushState(null, null, "/second"); |
| updateContent(); |
| |
| setTimeout(function () { |
| runTest(); |
| }, 0); |
| }, 0); |
| }; |
| </script> |
| </head> |
| <body> |
| </body> |