| <head> |
| <style> |
| html { |
| font-size: 32pt; |
| } |
| </style> |
| <script src="resources/swipe-test.js"></script> |
| <script> |
| |
| function runTest() |
| { |
| // The first swipe should fail because we're scrolled to the middle of the document |
| // and this is all a single gesture. We can only start swipes if we *begin* |
| // pinned to the edge. |
| startSwipeGesture(function () { |
| completeSwipeGesture(function () { |
| testRunner.clearTestRunnerCallbacks(); |
| testRunner.installDidBeginSwipeCallback(didBeginSwipeCallback); |
| testRunner.installWillEndSwipeCallback(willEndSwipeCallback); |
| testRunner.installDidEndSwipeCallback(didEndSwipeCallback); |
| testRunner.installDidRemoveSwipeSnapshotCallback(didRemoveSwipeSnapshotCallback); |
| |
| // The second swipe should succeed because we are now scrolled to the left edge. |
| startSwipeGesture(function () { completeSwipeGesture(); }); |
| }); |
| }); |
| } |
| |
| function didBeginSwipeNotReachedCallback() |
| { |
| log("Failure. Should never begin a swipe, because we were in the middle of a scrolling gesture that started when the main frame was not pinned to the left."); |
| } |
| |
| function didBeginSwipeCallback() |
| { |
| log("didBeginSwipe"); |
| } |
| |
| function willEndSwipeCallback() |
| { |
| log("willEndSwipe"); |
| |
| shouldBe(false, isFirstPage(), "The swipe should not yet have navigated away from the second page."); |
| } |
| |
| function didEndSwipeCallback() |
| { |
| log("didEndSwipe"); |
| |
| startMeasuringDuration("snapshotRemoval"); |
| } |
| |
| function didRemoveSwipeSnapshotCallback() |
| { |
| log("didRemoveSwipeSnapshot"); |
| |
| shouldBe(true, isFirstPage(), "The swipe should have navigated back to the first page."); |
| measuredDurationShouldBeLessThan("snapshotRemoval", 1000, "Because we're using the page cache, it shouldn't be long between the gesture completing and the snapshot being removed.") |
| |
| testComplete(); |
| } |
| |
| function isFirstPage() |
| { |
| return window.location.href.indexOf("second") == -1; |
| } |
| |
| window.onload = function () { |
| if (!window.eventSender || !window.testRunner) { |
| document.getElementById("large").innerHTML = "This test must be run in WebKitTestRunner."; |
| return; |
| } |
| |
| document.getElementById("large").innerHTML = isFirstPage() ? "first" : "second"; |
| |
| if (isFirstPage()) { |
| initializeSwipeTest(); |
| |
| testRunner.installDidBeginSwipeCallback(didBeginSwipeNotReachedCallback); |
| testRunner.installWillEndSwipeCallback(willEndSwipeCallback); |
| testRunner.installDidEndSwipeCallback(didEndSwipeCallback); |
| testRunner.installDidRemoveSwipeSnapshotCallback(didRemoveSwipeSnapshotCallback); |
| |
| testRunner.overridePreference("WebKitUsesPageCachePreferenceKey", 1); |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| |
| setTimeout(function () { |
| window.location.href = window.location.href + "?second"; |
| }, 0); |
| return; |
| } |
| |
| // Second page loaded. |
| window.scrollTo(100, 0); |
| |
| runTest(); |
| }; |
| </script> |
| </head> |
| <body> |
| <div id="large" style="width: 2000px; height: 2000px;"></div> |
| </body> |