Skip to content

Commit a6aeabc

Browse files
Swipe gesture tests don't work on macOS Sierra
https://bugs.webkit.org/show_bug.cgi?id=161675 <rdar://problem/23379930> Reviewed by Darin Adler. Tools: * DumpRenderTree/mac/UIScriptControllerMac.mm: (WTR::UIScriptController::platformPlayBackEventStream): (WTR::UIScriptController::beginBackSwipe): (WTR::UIScriptController::completeBackSwipe): * TestRunnerShared/EventSerialization/mac/EventSerializerMac.h: Copied from Tools/DumpRenderTree/mac/UIScriptControllerMac.mm. * TestRunnerShared/EventSerialization/mac/EventSerializerMac.mm: Added. (eventIsOfType): (eventIsOfTypes): (eventIsOfGestureType): (eventIsOfGestureTypes): (+[EventSerializer dictionaryForEvent:relativeToTime:]): (+[EventSerializer createEventForDictionary:inWindow:relativeToTime:]): (+[EventSerializer playEventStream:inWindow:completionHandler:]): * TestRunnerShared/EventSerialization/mac/SharedEventStreamsMac.h: Copied from Tools/WebKitTestRunner/mac/UIScriptControllerMac.mm. * TestRunnerShared/EventSerialization/mac/SharedEventStreamsMac.mm: Added. (beginSwipeBackEventStream): (completeSwipeBackEventStream): * TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl: * TestRunnerShared/UIScriptContext/UIScriptController.cpp: (WTR::UIScriptController::playBackEventStream): (WTR::UIScriptController::beginBackSwipe): (WTR::UIScriptController::completeBackSwipe): (WTR::UIScriptController::platformPlayBackEventStream): (WTR::UIScriptController::platformClearAllCallbacks): Deleted. * TestRunnerShared/UIScriptContext/UIScriptController.h: * TestRunnerShared/spi/CoreGraphicsSPI.h: Added. * TestRunnerShared/spi/IOKitSPI.h: Renamed from Tools/WebKitTestRunner/ios/IOKitSPI.h. * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj: * WebKitTestRunner/mac/UIScriptControllerMac.mm: (WTR::playBackEvents): (WTR::UIScriptController::beginBackSwipe): (WTR::UIScriptController::completeBackSwipe): (WTR::UIScriptController::platformPlayBackEventStream): LayoutTests: * platform/mac-wk2/TestExpectations: * swipe/basic-cached-back-swipe-expected.txt: * swipe/basic-cached-back-swipe.html: * swipe/main-frame-pinning-requirement-expected.txt: * swipe/main-frame-pinning-requirement.html: * swipe/pushState-cached-back-swipe-expected.txt: * swipe/pushState-cached-back-swipe.html: * swipe/pushState-programmatic-back-while-swiping-crash-expected.txt: * swipe/pushState-programmatic-back-while-swiping-crash.html: * swipe/resources/swipe-test.js: (measuredDurationShouldBeLessThan): (startSwipeGesture): (completeSwipeGesture): (playEventStream): (eventQueue.enqueueScrollEvent): Deleted. (eventQueue.enqueueSwipeEvent): Deleted. (eventQueue.hasPendingEvents): Deleted. (eventQueue.callAfterEventDispatch): Deleted. (eventQueue._processEventQueue): Deleted. (eventQueue._processEventQueueSoon): Deleted. * swipe/swipe-start-hysteresis-failures-expected.txt: Removed. * swipe/swipe-start-hysteresis-failures.html: Removed. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@214586 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent 24945b4 commit a6aeabc

35 files changed

+1180
-477
lines changed

LayoutTests/ChangeLog

+31
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,34 @@
1+
2017-03-29 Tim Horton <[email protected]>
2+
3+
Swipe gesture tests don't work on macOS Sierra
4+
https://bugs.webkit.org/show_bug.cgi?id=161675
5+
<rdar://problem/23379930>
6+
7+
Reviewed by Darin Adler.
8+
9+
* platform/mac-wk2/TestExpectations:
10+
* swipe/basic-cached-back-swipe-expected.txt:
11+
* swipe/basic-cached-back-swipe.html:
12+
* swipe/main-frame-pinning-requirement-expected.txt:
13+
* swipe/main-frame-pinning-requirement.html:
14+
* swipe/pushState-cached-back-swipe-expected.txt:
15+
* swipe/pushState-cached-back-swipe.html:
16+
* swipe/pushState-programmatic-back-while-swiping-crash-expected.txt:
17+
* swipe/pushState-programmatic-back-while-swiping-crash.html:
18+
* swipe/resources/swipe-test.js:
19+
(measuredDurationShouldBeLessThan):
20+
(startSwipeGesture):
21+
(completeSwipeGesture):
22+
(playEventStream):
23+
(eventQueue.enqueueScrollEvent): Deleted.
24+
(eventQueue.enqueueSwipeEvent): Deleted.
25+
(eventQueue.hasPendingEvents): Deleted.
26+
(eventQueue.callAfterEventDispatch): Deleted.
27+
(eventQueue._processEventQueue): Deleted.
28+
(eventQueue._processEventQueueSoon): Deleted.
29+
* swipe/swipe-start-hysteresis-failures-expected.txt: Removed.
30+
* swipe/swipe-start-hysteresis-failures.html: Removed.
31+
132
2017-03-29 Myles C. Maxfield <[email protected]>
233

334
Try to normalize variation ranges

LayoutTests/platform/mac-wk2/TestExpectations

-6
Original file line numberDiff line numberDiff line change
@@ -542,12 +542,6 @@ webkit.org/b/162638 [ Sierra+ ] fast/scrolling/rtl-scrollbars-alternate-iframe-b
542542
# <rdar://problem/25063128>
543543
[ Sierra+ ] media/media-controls-drag-timeline-set-controls-property.html [ Pass Timeout ]
544544

545-
# <rdar://problem/23379930> swipe tests crashing
546-
[ Sierra+ ] swipe/basic-cached-back-swipe.html [ Skip ]
547-
[ Sierra+ ] swipe/main-frame-pinning-requirement.html [ Skip ]
548-
[ Sierra+ ] swipe/pushState-cached-back-swipe.html [ Skip ]
549-
[ Sierra+ ] swipe/swipe-start-hysteresis-failures.html [ Skip ]
550-
551545
# Hitting "The certificate for this server is invalid" loading error (not happening in WK1)
552546
webkit.org/b/160445 [ Sierra+ ] http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-fetch-in-worker.html [ Failure ]
553547
webkit.org/b/160445 [ Sierra+ ] http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-fetch-in-main-frame.html [ Failure ]

LayoutTests/swipe/basic-cached-back-swipe-expected.txt

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
1-
swipe event (delta 0 0, phase 'maybegin')
2-
scroll event (delta 1 0, phase 'began')
3-
scroll event (delta 1 0, phase 'changed')
1+
startSwipeGesture
42
didBeginSwipe
5-
swipe event (delta 1 0, phase 'changed')
6-
swipe event (delta 256 0, phase 'changed')
7-
swipe event (delta 0 0, phase 'ended')
3+
completeSwipeGesture
84
willEndSwipe
95
didEndSwipe
106
didRemoveSwipeSnapshot

LayoutTests/swipe/basic-cached-back-swipe.html

-19
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,10 @@
66
</style>
77
<script src="resources/swipe-test.js"></script>
88
<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-
259
function didBeginSwipeCallback()
2610
{
2711
log("didBeginSwipe");
2812

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-
3113
completeSwipeGesture();
3214
}
3315

@@ -42,7 +24,6 @@
4224
{
4325
log("didEndSwipe");
4426

45-
shouldBe(0, eventQueue.hasPendingEvents(), "Event queue should be empty. The swipe isn't complete until we see the end of the gesture.");
4627
startMeasuringDuration("snapshotRemoval");
4728
}
4829

LayoutTests/swipe/main-frame-pinning-requirement-expected.txt

+4-19
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,8 @@
1-
swipe event (delta 0 0, phase 'maybegin')
2-
scroll event (delta 10 0, phase 'began')
3-
scroll event (delta 10 0, phase 'changed')
4-
scroll event (delta 10 0, phase 'changed')
5-
scroll event (delta 10 0, phase 'changed')
6-
scroll event (delta 10 0, phase 'changed')
7-
scroll event (delta 10 0, phase 'changed')
8-
scroll event (delta 10 0, phase 'changed')
9-
scroll event (delta 10 0, phase 'changed')
10-
scroll event (delta 10 0, phase 'changed')
11-
scroll event (delta 10 0, phase 'changed')
12-
scroll event (delta 10 0, phase 'changed')
13-
scroll event (delta 0 0, phase 'ended')
14-
swipe event (delta 0 0, phase 'maybegin')
15-
scroll event (delta 1 0, phase 'began')
16-
scroll event (delta 10 0, phase 'changed')
1+
startSwipeGesture
2+
completeSwipeGesture
3+
startSwipeGesture
174
didBeginSwipe
18-
swipe event (delta 1 0, phase 'changed')
19-
swipe event (delta 256 0, phase 'changed')
20-
swipe event (delta 0 0, phase 'ended')
5+
completeSwipeGesture
216
willEndSwipe
227
didEndSwipe
238
didRemoveSwipeSnapshot

LayoutTests/swipe/main-frame-pinning-requirement.html

+15-43
Original file line numberDiff line numberDiff line change
@@ -6,48 +6,24 @@
66
</style>
77
<script src="resources/swipe-test.js"></script>
88
<script>
9-
function startSwipeGesture()
10-
{
11-
eventSender.mouseMoveTo(100, 100);
129

10+
function runTest()
11+
{
1312
// The first swipe should fail because we're scrolled to the middle of the document
1413
// and this is all a single gesture. We can only start swipes if we *begin*
1514
// 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);
15+
startSwipeGesture(function () {
16+
completeSwipeGesture(function () {
17+
testRunner.clearTestRunnerCallbacks();
18+
testRunner.installDidBeginSwipeCallback(didBeginSwipeCallback);
19+
testRunner.installWillEndSwipeCallback(willEndSwipeCallback);
20+
testRunner.installDidEndSwipeCallback(didEndSwipeCallback);
21+
testRunner.installDidRemoveSwipeSnapshotCallback(didRemoveSwipeSnapshotCallback);
3622

37-
setTimeout(function () {
3823
// 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');
24+
startSwipeGesture(function () { completeSwipeGesture(); });
25+
});
26+
});
5127
}
5228

5329
function didBeginSwipeNotReachedCallback()
@@ -58,10 +34,6 @@
5834
function didBeginSwipeCallback()
5935
{
6036
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();
6537
}
6638

6739
function willEndSwipeCallback()
@@ -75,7 +47,6 @@
7547
{
7648
log("didEndSwipe");
7749

78-
shouldBe(0, eventQueue.hasPendingEvents(), "Event queue should be empty. The swipe isn't complete until we see the end of the gesture.");
7950
startMeasuringDuration("snapshotRemoval");
8051
}
8152

@@ -121,8 +92,9 @@
12192
}
12293

12394
// Second page loaded.
124-
window.scrollTo(1000, 0);
125-
startSwipeGesture();
95+
window.scrollTo(100, 0);
96+
97+
runTest();
12698
};
12799
</script>
128100
</head>

LayoutTests/swipe/pushState-cached-back-swipe-expected.txt

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
1-
swipe event (delta 0 0, phase 'maybegin')
2-
scroll event (delta 1 0, phase 'began')
3-
scroll event (delta 1 0, phase 'changed')
1+
startSwipeGesture
42
didBeginSwipe
5-
swipe event (delta 1 0, phase 'changed')
6-
swipe event (delta 256 0, phase 'changed')
7-
swipe event (delta 0 0, phase 'ended')
3+
completeSwipeGesture
84
willEndSwipe
95
didEndSwipe
106
didRemoveSwipeSnapshot

LayoutTests/swipe/pushState-cached-back-swipe.html

-18
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,11 @@
66
</style>
77
<script src="resources/swipe-test.js"></script>
88
<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-
}
249

2510
function didBeginSwipeCallback()
2611
{
2712
log("didBeginSwipe");
2813

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-
3114
completeSwipeGesture();
3215
}
3316

@@ -42,7 +25,6 @@
4225
{
4326
log("didEndSwipe");
4427

45-
shouldBe(0, eventQueue.hasPendingEvents(), "Event queue should be empty. The swipe isn't complete until we see the end of the gesture.");
4628
startMeasuringDuration("snapshotRemoval");
4729
}
4830

Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
swipe event (delta 0 0, phase 'maybegin')
2-
scroll event (delta 1 0, phase 'began')
3-
scroll event (delta 1 0, phase 'changed')
4-
swipe event (delta 1 0, phase 'changed')
5-
swipe event (delta 256 0, phase 'changed')
6-
swipe event (delta 0 0, phase 'ended')
1+
playEventStream
2+
playEventStream
3+
completeSwipeGesture
74

LayoutTests/swipe/pushState-programmatic-back-while-swiping-crash.html

+49-19
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,67 @@
66
</style>
77
<script src="resources/swipe-test.js"></script>
88
<script>
9-
function startSwipeGesture()
9+
function runTest()
1010
{
11-
eventSender.mouseMoveTo(100, 100);
12-
13-
eventQueue.enqueueSwipeEvent(0, 0, 'maybegin');
14-
eventQueue.enqueueScrollEvent(1, 0, 'began');
15-
16-
eventQueue.callAfterEventDispatch(goBack);
11+
playEventStream(`[{
12+
"relativeTimeMS" : 0,
13+
"kCGEventScrollGestureFlagBits" : 1,
14+
"kCGEventGestureHIDType" : 6,
15+
"kCGSEventTypeField" : 29,
16+
"kCGEventGesturePhase" : 128,
17+
"windowLocation" : "{400, 300}"
18+
},
19+
{
20+
"relativeTimeMS" : 8,
21+
"kCGEventGestureHIDType" : 61,
22+
"kCGSEventTypeField" : 29,
23+
"kCGEventGestureStartEndSeriesType" : 6,
24+
"windowLocation" : "{0, 0}"
25+
},
26+
{
27+
"kCGEventGestureHIDType" : 6,
28+
"relativeTimeMS" : 8,
29+
"windowLocation" : "{400, 300}",
30+
"kCGEventGesturePhase" : 1,
31+
"kCGEventScrollGestureFlagBits" : 1,
32+
"kCGSEventTypeField" : 29,
33+
"kCGEventGestureScrollX" : 2
34+
},
35+
{
36+
"relativeTimeMS" : 8,
37+
"windowLocation" : "{400, 300}",
38+
"kCGScrollWheelEventScrollPhase" : 1,
39+
"kCGScrollWheelEventIsContinuous" : 1,
40+
"kCGScrollWheelEventPointDeltaAxis2" : 1,
41+
"kCGSEventTypeField" : 22
42+
}]`, goBack);
1743
}
1844

1945
function goBack()
2046
{
2147
window.history.back();
2248

23-
eventQueue.callAfterEventDispatch(continueSwipeGesture);
49+
setTimeout(continueTest, 0);
2450
}
2551

26-
function continueSwipeGesture()
52+
function continueTest()
2753
{
28-
eventQueue.enqueueScrollEvent(1, 0, 'changed');
29-
30-
eventQueue.callAfterEventDispatch(completeSwipeGesture);
54+
playEventStream(`[
55+
{
56+
"relativeTimeMS" : 0,
57+
"windowLocation" : "{400, 300}",
58+
"kCGScrollWheelEventScrollPhase" : 1,
59+
"kCGScrollWheelEventIsContinuous" : 1,
60+
"kCGScrollWheelEventPointDeltaAxis2" : 20,
61+
"kCGSEventTypeField" : 22
62+
}]`, function () {
63+
completeTest();
64+
});
3165
}
3266

33-
function completeSwipeGesture()
67+
function completeTest()
3468
{
35-
eventQueue.enqueueSwipeEvent(1, 0, 'changed');
36-
eventQueue.enqueueSwipeEvent(256, 0, 'changed');
37-
eventQueue.enqueueSwipeEvent(0, 0, 'ended');
38-
39-
eventQueue.callAfterEventDispatch(testComplete);
69+
completeSwipeGesture(testComplete);
4070
}
4171

4272
function didBeginSwipeCallback()
@@ -79,7 +109,7 @@
79109
updateContent();
80110

81111
setTimeout(function () {
82-
startSwipeGesture();
112+
runTest();
83113
}, 0);
84114
}, 0);
85115
};

0 commit comments

Comments
 (0)