swipe-start-hysteresis-failures is flaky
[WebKit-https.git] / LayoutTests / swipe / pushState-cached-back-swipe.html
1 <head>
2 <style>
3 html {
4     font-size: 32pt;
5 }
6 </style>
7 <script src="resources/swipe-test.js"></script>
8 <script>
9 function startSwipeGesture()
10 {
11     eventSender.mouseMoveTo(100, 100);
12
13     eventQueue.enqueueSwipeEvent(0, 0, 'maybegin');
14     eventQueue.enqueueScrollEvent(1, 0, 'began');
15     eventQueue.enqueueScrollEvent(1, 0, 'changed');
16 }
17
18 function completeSwipeGesture()
19 {
20     eventQueue.enqueueSwipeEvent(1, 0, 'changed');
21     eventQueue.enqueueSwipeEvent(256, 0, 'changed');
22     eventQueue.enqueueSwipeEvent(0, 0, 'ended');
23 }
24
25 function didBeginSwipeCallback()
26 {
27     log("didBeginSwipe");
28
29     shouldBe(false, eventQueue.hasPendingEvents(), "Event queue should be empty. Both scroll events should be required to start the swipe because of the swipe-start hysteresis.");
30
31     completeSwipeGesture();
32 }
33
34 function willEndSwipeCallback()
35 {
36     log("willEndSwipe");
37
38     shouldBe(false, isFirstPage(), "The swipe should not yet have navigated away from the second page.");
39 }
40
41 function didEndSwipeCallback()
42 {
43     log("didEndSwipe");
44
45     shouldBe(0, eventQueue.hasPendingEvents(), "Event queue should be empty. The swipe isn't complete until we see the end of the gesture.");
46     startMeasuringDuration("snapshotRemoval");
47 }
48
49 function didRemoveSwipeSnapshotCallback()
50 {
51     log("didRemoveSwipeSnapshot");
52     
53     shouldBe(true, isFirstPage(), "The swipe should have navigated back to the first page.");
54     measuredDurationShouldBeLessThan("snapshotRemoval", 1000, "Because we're using the page cache, it shouldn't be long between the gesture completing and the snapshot being removed.")
55
56     testComplete();
57 }
58
59 function isFirstPage()
60 {
61     return window.location.href.indexOf("second") == -1;
62 }
63
64 function updateContent()
65 {
66     document.body.innerHTML = isFirstPage() ? "first" : "second";
67 }
68
69 window.onload = function () {
70     if (!window.eventSender || !window.testRunner) {
71         document.body.innerHTML = "This test must be run in WebKitTestRunner.";
72         return;
73     }
74
75     updateContent();
76
77     initializeLog();
78
79     testRunner.setNavigationGesturesEnabled(true);
80
81     testRunner.installDidBeginSwipeCallback(didBeginSwipeCallback);
82     testRunner.installWillEndSwipeCallback(willEndSwipeCallback);
83     testRunner.installDidEndSwipeCallback(didEndSwipeCallback);
84     testRunner.installDidRemoveSwipeSnapshotCallback(didRemoveSwipeSnapshotCallback);
85
86     testRunner.overridePreference("WebKitUsesPageCachePreferenceKey", 1);
87     testRunner.dumpAsText();
88     testRunner.waitUntilDone();
89
90     window.addEventListener("popstate", function(e) {
91         updateContent();
92     });
93
94     setTimeout(function () { 
95         history.pushState(null, null, "/second");
96         updateContent();
97
98         setTimeout(function () {
99             startSwipeGesture();
100         }, 0);
101     }, 0);
102 };
103 </script>
104 </head>
105 <body>
106 </body>