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

Reply via email to