65817d3f2e327c5bbdc304628237f307862ede9d
[WebKit-https.git] / LayoutTests / swipe / swipe-start-hysteresis-failures.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 doShortSwipeGesture()
10 {
11     eventSender.mouseMoveTo(100, 100);
12
13     // Total delta of 10, 0; should not be enough to start a swipe.
14     eventQueue.enqueueSwipeEvent(0, 0, 'maybegin');
15     eventQueue.enqueueScrollEvent(1, 0, 'began');
16     eventQueue.enqueueScrollEvent(0, 0, 'changed');
17     eventQueue.enqueueScrollEvent(0, 0, 'ended');
18
19     waitForEventDispatch(doDiagonalSwipeGesture);
20 }
21
22 function doDiagonalSwipeGesture()
23 {
24     // Total delta of 20, 20; this is ordinarily sufficient magnitude to start a swipe,
25     // but is too diagonal to start a swipe.
26     eventQueue.enqueueSwipeEvent(0, 0, 'maybegin');
27     eventQueue.enqueueScrollEvent(2, 2, 'began');
28     eventQueue.enqueueScrollEvent(0, 0, 'changed');
29     eventQueue.enqueueScrollEvent(0, 0, 'ended');
30
31     waitForEventDispatch(doVerticalSwipeGesture);
32 }
33
34 function doVerticalSwipeGesture()
35 {
36     // Total delta of 0, 20; this is ordinarily sufficient magnitude to start a swipe,
37     // but is completely vertical, so we won't start a swipe.
38     eventQueue.enqueueSwipeEvent(0, 0, 'maybegin');
39     eventQueue.enqueueScrollEvent(0, 2, 'began');
40     eventQueue.enqueueScrollEvent(0, 0, 'changed');
41     eventQueue.enqueueScrollEvent(0, 0, 'ended');
42
43     waitForEventDispatch(doHorizontalThenVerticalSwipeGesture);
44 }
45
46 function doHorizontalThenVerticalSwipeGesture()
47 {
48     // Total delta of 10, 20; this is ordinarily sufficient magnitude to start a swipe,
49     // but is too vertical, so we won't start a swipe.
50     eventQueue.enqueueSwipeEvent(0, 0, 'maybegin');
51     eventQueue.enqueueScrollEvent(1, 0, 'began');
52     eventQueue.enqueueScrollEvent(0, 2, 'changed');
53     eventQueue.enqueueScrollEvent(0, 0, 'ended');
54
55     waitForEventDispatch(doRegularSwipeGesture);
56 }
57
58 function doRegularSwipeGesture()
59 {
60     // Swap in a different callback that makes sure we *do* reach didBeginSwipe.
61     testRunner.clearTestRunnerCallbacks();
62     var sawDidBeginSwipe = false;
63     testRunner.installDidBeginSwipeCallback(function () {
64         sawDidBeginSwipe = true;
65         // Need a swipe-end event to clean up.
66         eventQueue.enqueueSwipeEvent(0, 0, 'ended');
67     });
68
69     testRunner.installDidRemoveSwipeSnapshotCallback(function () {
70         shouldBe(true, sawDidBeginSwipe, "The last gesture should start a swipe, because it is sufficient magnitude and in the correct direction.")
71         testComplete();
72     });
73
74     // Total delta of 30, 10; this should start a swipe as usual.
75     eventQueue.enqueueSwipeEvent(0, 0, 'maybegin');
76     eventQueue.enqueueScrollEvent(3, 1, 'began');
77     eventQueue.enqueueScrollEvent(0, 0, 'changed');
78     eventQueue.enqueueScrollEvent(0, 0, 'ended');
79 }
80
81 function waitForEventDispatch(callback)
82 {
83     var interval = setInterval(function () { 
84         if (!eventQueue.hasPendingEvents()) {
85             clearInterval(interval);
86             callback();
87         }
88     }, 0);
89 }
90
91 function didBeginSwipeNotReachedCallback()
92 {
93     log("Failure. Should never begin a swipe, because all of the attempted swipes should fail due to the swipe-start hysteresis.");
94 }
95
96 function isFirstPage()
97 {
98     return window.location.href.indexOf("second") == -1;
99 }
100
101 window.onload = function () {
102     if (!window.eventSender || !window.testRunner) {
103         document.body.innerHTML = "This test must be run in WebKitTestRunner.";
104         return;
105     }
106
107     document.body.innerHTML = isFirstPage() ? "first" : "second";
108
109     if (isFirstPage()) {
110         initializeLog();
111
112         testRunner.setNavigationGesturesEnabled(true);
113
114         testRunner.installDidBeginSwipeCallback(didBeginSwipeNotReachedCallback);
115
116         testRunner.overridePreference("WebKitUsesPageCachePreferenceKey", 1);
117         testRunner.dumpAsText();
118         testRunner.waitUntilDone();
119
120         setTimeout(function () { 
121             window.location.href = window.location.href + "?second";
122         }, 0);
123         return;
124     }
125
126     doShortSwipeGesture();
127 };
128 </script>
129 </head>
130 <body>
131 </body>