Turn on threaded scrolling by default in the tests
[WebKit-https.git] / LayoutTests / swipe / main-frame-pinning-requirement.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     // The first swipe should fail because we're scrolled to the middle of the document
14     // and this is all a single gesture. We can only start swipes if we *begin*
15     // pinned to the edge.
16     eventQueue.enqueueSwipeEvent(0, 0, 'maybegin');
17     eventQueue.enqueueScrollEvent(10, 0, 'began');
18     eventQueue.enqueueScrollEvent(10, 0, 'changed');
19     eventQueue.enqueueScrollEvent(10, 0, 'changed');
20     eventQueue.enqueueScrollEvent(10, 0, 'changed');
21     eventQueue.enqueueScrollEvent(10, 0, 'changed');
22     eventQueue.enqueueScrollEvent(10, 0, 'changed');
23     eventQueue.enqueueScrollEvent(10, 0, 'changed');
24     eventQueue.enqueueScrollEvent(10, 0, 'changed');
25     eventQueue.enqueueScrollEvent(10, 0, 'changed');
26     eventQueue.enqueueScrollEvent(10, 0, 'changed');
27     eventQueue.enqueueScrollEvent(10, 0, 'changed');
28     eventQueue.enqueueScrollEvent(0, 0, 'ended');
29
30     eventQueue.callAfterEventDispatch(function () {
31         testRunner.clearTestRunnerCallbacks();
32         testRunner.installDidBeginSwipeCallback(didBeginSwipeCallback);
33         testRunner.installWillEndSwipeCallback(willEndSwipeCallback);
34         testRunner.installDidEndSwipeCallback(didEndSwipeCallback);
35         testRunner.installDidRemoveSwipeSnapshotCallback(didRemoveSwipeSnapshotCallback);
36
37         setTimeout(function () {
38             // The second swipe should succeed because we are now scrolled to the left edge.
39             eventQueue.enqueueSwipeEvent(0, 0, 'maybegin');
40             eventQueue.enqueueScrollEvent(1, 0, 'began');
41             eventQueue.enqueueScrollEvent(10, 0, 'changed');
42         }, 0);
43     })
44 }
45
46 function completeSwipeGesture()
47 {
48     eventQueue.enqueueSwipeEvent(1, 0, 'changed');
49     eventQueue.enqueueSwipeEvent(256, 0, 'changed');
50     eventQueue.enqueueSwipeEvent(0, 0, 'ended');
51 }
52
53 function didBeginSwipeNotReachedCallback()
54 {
55     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.");
56 }
57
58 function didBeginSwipeCallback()
59 {
60     log("didBeginSwipe");
61
62     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.");
63
64     completeSwipeGesture();
65 }
66
67 function willEndSwipeCallback()
68 {
69     log("willEndSwipe");
70
71     shouldBe(false, isFirstPage(), "The swipe should not yet have navigated away from the second page.");
72 }
73
74 function didEndSwipeCallback()
75 {
76     log("didEndSwipe");
77
78     shouldBe(0, eventQueue.hasPendingEvents(), "Event queue should be empty. The swipe isn't complete until we see the end of the gesture.");
79     startMeasuringDuration("snapshotRemoval");
80 }
81
82 function didRemoveSwipeSnapshotCallback()
83 {
84     log("didRemoveSwipeSnapshot");
85
86     shouldBe(true, isFirstPage(), "The swipe should have navigated back to the first page.");
87     measuredDurationShouldBeLessThan("snapshotRemoval", 1000, "Because we're using the page cache, it shouldn't be long between the gesture completing and the snapshot being removed.")
88
89     testComplete();
90 }
91
92 function isFirstPage()
93 {
94     return window.location.href.indexOf("second") == -1;
95 }
96
97 window.onload = function () {
98     if (!window.eventSender || !window.testRunner) {
99         document.getElementById("large").innerHTML = "This test must be run in WebKitTestRunner.";
100         return;
101     }
102
103     document.getElementById("large").innerHTML = isFirstPage() ? "first" : "second";
104
105     if (isFirstPage()) {
106         initializeSwipeTest();
107
108         testRunner.installDidBeginSwipeCallback(didBeginSwipeNotReachedCallback);
109         testRunner.installWillEndSwipeCallback(willEndSwipeCallback);
110         testRunner.installDidEndSwipeCallback(didEndSwipeCallback);
111         testRunner.installDidRemoveSwipeSnapshotCallback(didRemoveSwipeSnapshotCallback);
112
113         testRunner.overridePreference("WebKitUsesPageCachePreferenceKey", 1);
114         testRunner.dumpAsText();
115         testRunner.waitUntilDone();
116
117         setTimeout(function () {
118             window.location.href = window.location.href + "?second";
119         }, 0);
120         return;
121     }
122
123     // Second page loaded.
124     window.scrollTo(1000, 0);
125     startSwipeGesture();
126 };
127 </script>
128 </head>
129 <body>
130 <div id="large" style="width: 2000px; height: 2000px;"></div>
131 </body>