Title: [231763] trunk
- Revision
- 231763
- Author
- [email protected]
- Date
- 2018-05-14 10:26:25 -0700 (Mon, 14 May 2018)
Log Message
NSEvent event trackers don't work from WebKitTestRunner
https://bugs.webkit.org/show_bug.cgi?id=185383
rdar://problem/40025045
Patch by Jeremy Jones <[email protected]> on 2018-05-14
Reviewed by Simon Fraser.
Tools:
Post simulated wheel events to _sendEventToObservers: so they can be handled by NSEvent observers.
NSEvent swipe tracking is used for webkit swipe navigation.
* WebKitTestRunner/mac/EventSenderProxy.mm:
(WTR::EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases):
LayoutTests:
This test initiates back navigation with wheel events.
* swipe/wheel-event-initiated-back-navigation-expected.txt: Added.
* swipe/wheel-event-initiated-back-navigation.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (231762 => 231763)
--- trunk/LayoutTests/ChangeLog 2018-05-14 17:18:05 UTC (rev 231762)
+++ trunk/LayoutTests/ChangeLog 2018-05-14 17:26:25 UTC (rev 231763)
@@ -1,3 +1,16 @@
+2018-05-14 Jeremy Jones <[email protected]>
+
+ NSEvent event trackers don't work from WebKitTestRunner
+ https://bugs.webkit.org/show_bug.cgi?id=185383
+ rdar://problem/40025045
+
+ Reviewed by Simon Fraser.
+
+ This test initiates back navigation with wheel events.
+
+ * swipe/wheel-event-initiated-back-navigation-expected.txt: Added.
+ * swipe/wheel-event-initiated-back-navigation.html: Added.
+
2018-05-14 Yusuke Suzuki <[email protected]>
[JSC] timeClip(-0) should produce +0
Added: trunk/LayoutTests/swipe/wheel-event-initiated-back-navigation-expected.txt (0 => 231763)
--- trunk/LayoutTests/swipe/wheel-event-initiated-back-navigation-expected.txt (rev 0)
+++ trunk/LayoutTests/swipe/wheel-event-initiated-back-navigation-expected.txt 2018-05-14 17:26:25 UTC (rev 231763)
@@ -0,0 +1,5 @@
+This is a swipe navigation test.
+
+PASS: mouseWheel caused navigation
+PASS: navigated back to page1
+
Added: trunk/LayoutTests/swipe/wheel-event-initiated-back-navigation.html (0 => 231763)
--- trunk/LayoutTests/swipe/wheel-event-initiated-back-navigation.html (rev 0)
+++ trunk/LayoutTests/swipe/wheel-event-initiated-back-navigation.html 2018-05-14 17:26:25 UTC (rev 231763)
@@ -0,0 +1,68 @@
+<html>
+<head>
+<script>
+
+function logResult(s) {
+ document.getElementById('result').textContent += s + "\n";
+}
+
+function backSwipe()
+{
+ var divTarget = document.getElementById('content');
+ var documentBounds = divTarget.getBoundingClientRect();
+
+ eventSender.mouseMoveTo(documentBounds.left + 10, documentBounds.top + 10);
+ eventSender.mouseScrollByWithWheelAndMomentumPhases(100, 0, 'began', 'none');
+ eventSender.mouseScrollByWithWheelAndMomentumPhases(100, 0, 'changed', 'none');
+ eventSender.mouseScrollByWithWheelAndMomentumPhases(100, 0, 'changed', 'none');
+ eventSender.mouseScrollByWithWheelAndMomentumPhases(100, 0, 'ended', 'none');
+}
+
+function startTest()
+{
+ if (!window.eventSender) {
+ logResult('This test must be run in DumpRenderTree/WebKitTestRunner (no eventSender)');
+ return;
+ }
+
+ if (!window.testRunner) {
+ logResult('This test must be run in DumpRenderTree/WebKitTestRunner (no testRunner)');
+ return;
+ }
+
+ testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+ testRunner.overridePreference("WebKitUsesPageCachePreferenceKey", 1);
+ testRunner.setNavigationGesturesEnabled(true);
+
+ window._onpopstate_ = function(event) {
+ logResult('PASS: mouseWheel caused navigation');
+ if (event.state.name == "page1") {
+ logResult('PASS: navigated back to ' + event.state.name);
+ } else {
+ logResult('FAILED: navigated back to ' + event.state.name);
+ }
+ testRunner.notifyDone();
+ };
+
+ var stateObj = { name: "page1" };
+ history.replaceState(stateObj, "page1", "");
+
+ var stateObj = { name: "page2" };
+ history.pushState(stateObj, "page2", "");
+
+ backSwipe();
+}
+
+window.addEventListener('load', startTest, false);
+
+</script>
+</head>
+<body id="content">
+
+<h1>This is a swipe navigation test.</h1>
+
+<pre id="result"></pre>
+
+</body>
+</html>
\ No newline at end of file
Modified: trunk/Tools/ChangeLog (231762 => 231763)
--- trunk/Tools/ChangeLog 2018-05-14 17:18:05 UTC (rev 231762)
+++ trunk/Tools/ChangeLog 2018-05-14 17:26:25 UTC (rev 231763)
@@ -1,3 +1,17 @@
+2018-05-14 Jeremy Jones <[email protected]>
+
+ NSEvent event trackers don't work from WebKitTestRunner
+ https://bugs.webkit.org/show_bug.cgi?id=185383
+ rdar://problem/40025045
+
+ Reviewed by Simon Fraser.
+
+ Post simulated wheel events to _sendEventToObservers: so they can be handled by NSEvent observers.
+ NSEvent swipe tracking is used for webkit swipe navigation.
+
+ * WebKitTestRunner/mac/EventSenderProxy.mm:
+ (WTR::EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases):
+
2018-05-11 Leo Balter <[email protected]>
Test262 Runner should search for the Debug JSC by default
Modified: trunk/Tools/WebKitTestRunner/mac/EventSenderProxy.mm (231762 => 231763)
--- trunk/Tools/WebKitTestRunner/mac/EventSenderProxy.mm 2018-05-14 17:18:05 UTC (rev 231762)
+++ trunk/Tools/WebKitTestRunner/mac/EventSenderProxy.mm 2018-05-14 17:26:25 UTC (rev 231763)
@@ -43,6 +43,7 @@
@end
@interface NSEvent (ForTestRunner)
++ (NSEvent *)_sendEventToObservers:(NSEvent *)event;
- (void)_postDelayed;
@end
@@ -876,6 +877,7 @@
// Our event should have the correct settings:
if (NSView *targetView = [m_testController->mainWebView()->platformView() hitTest:[event locationInWindow]]) {
[NSApp _setCurrentEvent:event];
+ event = [NSEvent _sendEventToObservers:event];
[targetView scrollWheel:event];
[NSApp _setCurrentEvent:nil];
} else {
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes