Title: [195482] trunk
Revision
195482
Author
[email protected]
Date
2016-01-22 14:43:38 -0800 (Fri, 22 Jan 2016)

Log Message

Add a test for iOS arrow-key repeat
https://bugs.webkit.org/show_bug.cgi?id=152857
<rdar://problem/24017380>

Reviewed by Darin Adler.

* WebKitTestRunner/UIScriptContext/Bindings/UIScriptController.idl:
* WebKitTestRunner/UIScriptContext/UIScriptController.cpp:
(WTR::UIScriptController::keyUpUsingHardwareKeyboard):
(WTR::UIScriptController::keyDownUsingHardwareKeyboard):
* WebKitTestRunner/UIScriptContext/UIScriptController.h:
* WebKitTestRunner/ios/HIDEventGenerator.h:
* WebKitTestRunner/ios/HIDEventGenerator.mm:
(-[HIDEventGenerator keyPress:completionBlock:]):
(-[HIDEventGenerator keyDown:completionBlock:]):
(-[HIDEventGenerator keyUp:completionBlock:]):
* WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::typeCharacterUsingHardwareKeyboard):
(WTR::UIScriptController::keyDownUsingHardwareKeyboard):
(WTR::UIScriptController::keyUpUsingHardwareKeyboard):
Make it possible to independently send keyUp/keyDown, instead of just paired.

* fast/events/ios/keyboard-scrolling-repeat-expected.txt: Added.
* fast/events/ios/keyboard-scrolling-repeat.html: Added.
Add the aforementioned test. It waits for the held-down arrow key to scroll twice, then sends the up.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (195481 => 195482)


--- trunk/LayoutTests/ChangeLog	2016-01-22 22:42:28 UTC (rev 195481)
+++ trunk/LayoutTests/ChangeLog	2016-01-22 22:43:38 UTC (rev 195482)
@@ -1,3 +1,15 @@
+2016-01-22  Tim Horton  <[email protected]>
+
+        Add a test for iOS arrow-key repeat
+        https://bugs.webkit.org/show_bug.cgi?id=152857
+        <rdar://problem/24017380>
+
+        Reviewed by Darin Adler.
+
+        * fast/events/ios/keyboard-scrolling-repeat-expected.txt: Added.
+        * fast/events/ios/keyboard-scrolling-repeat.html: Added.
+        Add the aforementioned test. It waits for the held-down arrow key to scroll twice, then sends the up.
+
 2016-01-21  Sam Weinig  <[email protected]>
 
         Treat non-https actions on secure pages as mixed content

Added: trunk/LayoutTests/fast/events/ios/keyboard-scrolling-repeat-expected.txt (0 => 195482)


--- trunk/LayoutTests/fast/events/ios/keyboard-scrolling-repeat-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/events/ios/keyboard-scrolling-repeat-expected.txt	2016-01-22 22:43:38 UTC (rev 195482)
@@ -0,0 +1,7 @@
+PASS successfullyParsed is true
+
+TEST COMPLETE
+Before starting to hold the down arrow, window.scrollY = 0
+After starting to hold the down arrow, window.scrollY = 40
+After continuing to hold the down arrow, window.scrollY = 80
+

Added: trunk/LayoutTests/fast/events/ios/keyboard-scrolling-repeat.html (0 => 195482)


--- trunk/LayoutTests/fast/events/ios/keyboard-scrolling-repeat.html	                        (rev 0)
+++ trunk/LayoutTests/fast/events/ios/keyboard-scrolling-repeat.html	2016-01-22 22:43:38 UTC (rev 195482)
@@ -0,0 +1,89 @@
+<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] -->
+
+<html>
+
+<head>
+    <script src=""
+    <meta name="viewport" content="initial-scale=1.5, user-scalable=no">
+    <script id="ui-script" type="text/plain">
+        (function() {
+            // FIXME (151264): Need to tap to focus so that key events go through.
+            uiController.singleTapAtPoint(50, 25, function() {
+                uiController.keyDownUsingHardwareKeyboard("downArrow", function() {
+                    uiController.didEndScrollingCallback = function() {
+                        uiController.uiScriptComplete();
+                    };
+                });
+            });
+        })();
+    </script>
+
+    <script id="ui-script-waitforscroll" type="text/plain">
+        (function() {
+            uiController.didEndScrollingCallback = function() {
+                uiController.uiScriptComplete();
+            };
+        })();
+    </script>
+
+    <script id="ui-script-keyup" type="text/plain">
+        (function() {
+            uiController.keyUpUsingHardwareKeyboard("downArrow", function() {
+                uiController.uiScriptComplete();
+            });
+        })();
+    </script>
+
+    <script>
+        if (window.testRunner) {
+            testRunner.dumpAsText();
+            testRunner.waitUntilDone();
+        }
+
+        function getInitialUIScript()
+        {
+            return document.getElementById("ui-script").text;
+        }
+
+        function getWaitForScrollUIScript()
+        {
+            return document.getElementById("ui-script-waitforscroll").text;
+        }
+
+        function getKeyUpUIScript()
+        {
+            return document.getElementById("ui-script-keyup").text;
+        }
+
+        function runTest()
+        {
+            if (!window.testRunner || !testRunner.runUIScript)
+                return;
+
+            debug("Before starting to hold the down arrow, window.scrollY = " + window.scrollY);
+            testRunner.runUIScript(getInitialUIScript(), function(result) {
+                debug("After starting to hold the down arrow, window.scrollY = " + window.scrollY);
+                testRunner.runUIScript(getWaitForScrollUIScript(), function(result) {
+                    debug("After continuing to hold the down arrow, window.scrollY = " + window.scrollY);
+                    testRunner.runUIScript(getKeyUpUIScript(), function(result) {
+                        testRunner.notifyDone();
+                    });
+                });
+            });
+        }
+    </script>
+    <style>
+    #placeholder {
+        width: 100px;
+        height: 5000px;
+    }
+    </style>
+</head>
+
+<body style="margin: 0;" _onload_="runTest()">
+    <div id="placeholder">
+    <div id="console"></div>
+    <script src=""
+</body>
+
+</html>

Modified: trunk/Tools/ChangeLog (195481 => 195482)


--- trunk/Tools/ChangeLog	2016-01-22 22:42:28 UTC (rev 195481)
+++ trunk/Tools/ChangeLog	2016-01-22 22:43:38 UTC (rev 195482)
@@ -7,6 +7,30 @@
 
 2016-01-22  Tim Horton  <[email protected]>
 
+        Add a test for iOS arrow-key repeat
+        https://bugs.webkit.org/show_bug.cgi?id=152857
+        <rdar://problem/24017380>
+
+        Reviewed by Darin Adler.
+
+        * WebKitTestRunner/UIScriptContext/Bindings/UIScriptController.idl:
+        * WebKitTestRunner/UIScriptContext/UIScriptController.cpp:
+        (WTR::UIScriptController::keyUpUsingHardwareKeyboard):
+        (WTR::UIScriptController::keyDownUsingHardwareKeyboard):
+        * WebKitTestRunner/UIScriptContext/UIScriptController.h:
+        * WebKitTestRunner/ios/HIDEventGenerator.h:
+        * WebKitTestRunner/ios/HIDEventGenerator.mm:
+        (-[HIDEventGenerator keyPress:completionBlock:]):
+        (-[HIDEventGenerator keyDown:completionBlock:]):
+        (-[HIDEventGenerator keyUp:completionBlock:]):
+        * WebKitTestRunner/ios/UIScriptControllerIOS.mm:
+        (WTR::UIScriptController::typeCharacterUsingHardwareKeyboard):
+        (WTR::UIScriptController::keyDownUsingHardwareKeyboard):
+        (WTR::UIScriptController::keyUpUsingHardwareKeyboard):
+        Make it possible to independently send keyUp/keyDown, instead of just paired.
+
+2016-01-22  Tim Horton  <[email protected]>
+
         Reproducible "Unhanded web process message 'WebUserContentController:AddUserScripts'" and friends
         https://bugs.webkit.org/show_bug.cgi?id=153193
         <rdar://problem/24222034>

Modified: trunk/Tools/WebKitTestRunner/UIScriptContext/Bindings/UIScriptController.idl (195481 => 195482)


--- trunk/Tools/WebKitTestRunner/UIScriptContext/Bindings/UIScriptController.idl	2016-01-22 22:42:28 UTC (rev 195481)
+++ trunk/Tools/WebKitTestRunner/UIScriptContext/Bindings/UIScriptController.idl	2016-01-22 22:43:38 UTC (rev 195482)
@@ -36,6 +36,8 @@
     void doubleTapAtPoint(long x, long y, object callback);
 
     void typeCharacterUsingHardwareKeyboard(DOMString character, object callback);
+    void keyDownUsingHardwareKeyboard(DOMString character, object callback);
+    void keyUpUsingHardwareKeyboard(DOMString character, object callback);
 
     attribute object didShowKeyboardCallback;
     attribute object didHideKeyboardCallback;

Modified: trunk/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.cpp (195481 => 195482)


--- trunk/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.cpp	2016-01-22 22:42:28 UTC (rev 195481)
+++ trunk/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.cpp	2016-01-22 22:43:38 UTC (rev 195482)
@@ -130,6 +130,14 @@
 {
 }
 
+void UIScriptController::keyUpUsingHardwareKeyboard(JSStringRef, JSValueRef)
+{
+}
+
+void UIScriptController::keyDownUsingHardwareKeyboard(JSStringRef, JSValueRef)
+{
+}
+
 double UIScriptController::zoomScale() const
 {
     return 1;

Modified: trunk/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.h (195481 => 195482)


--- trunk/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.h	2016-01-22 22:42:28 UTC (rev 195481)
+++ trunk/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.h	2016-01-22 22:43:38 UTC (rev 195482)
@@ -51,6 +51,8 @@
     void doubleTapAtPoint(long x, long y, JSValueRef callback);
     
     void typeCharacterUsingHardwareKeyboard(JSStringRef character, JSValueRef callback);
+    void keyDownUsingHardwareKeyboard(JSStringRef character, JSValueRef callback);
+    void keyUpUsingHardwareKeyboard(JSStringRef character, JSValueRef callback);
 
     void setWillBeginZoomingCallback(JSValueRef);
     JSValueRef willBeginZoomingCallback() const;

Modified: trunk/Tools/WebKitTestRunner/ios/HIDEventGenerator.h (195481 => 195482)


--- trunk/Tools/WebKitTestRunner/ios/HIDEventGenerator.h	2016-01-22 22:42:28 UTC (rev 195481)
+++ trunk/Tools/WebKitTestRunner/ios/HIDEventGenerator.h	2016-01-22 22:43:38 UTC (rev 195482)
@@ -51,6 +51,8 @@
 - (void)markerEventReceived:(IOHIDEventRef)event;
 
 // Keyboard
+- (void)keyPress:(NSString *)character completionBlock:(void (^)(void))completionBlock;
 - (void)keyDown:(NSString *)character completionBlock:(void (^)(void))completionBlock;
+- (void)keyUp:(NSString *)character completionBlock:(void (^)(void))completionBlock;
 
 @end

Modified: trunk/Tools/WebKitTestRunner/ios/HIDEventGenerator.mm (195481 => 195482)


--- trunk/Tools/WebKitTestRunner/ios/HIDEventGenerator.mm	2016-01-22 22:42:28 UTC (rev 195481)
+++ trunk/Tools/WebKitTestRunner/ios/HIDEventGenerator.mm	2016-01-22 22:43:38 UTC (rev 195482)
@@ -574,6 +574,24 @@
     return 0;
 }
 
+- (void)keyPress:(NSString *)character completionBlock:(void (^)(void))completionBlock
+{
+    bool shouldWrapWithShift = shouldWrapWithShiftKeyEventForCharacter(character);
+    uint32_t usage = hidUsageCodeForCharacter(character);
+    uint64_t absoluteMachTime = mach_absolute_time();
+
+    if (shouldWrapWithShift)
+        [self _sendIOHIDKeyboardEvent:absoluteMachTime usage:kHIDUsage_KeyboardLeftShift isKeyDown:true];
+
+    [self _sendIOHIDKeyboardEvent:absoluteMachTime usage:usage isKeyDown:true];
+    [self _sendIOHIDKeyboardEvent:absoluteMachTime usage:usage isKeyDown:false];
+
+    if (shouldWrapWithShift)
+        [self _sendIOHIDKeyboardEvent:absoluteMachTime usage:kHIDUsage_KeyboardLeftShift isKeyDown:false];
+
+    [self _sendMarkerHIDEventWithCompletionBlock:completionBlock];
+}
+
 - (void)keyDown:(NSString *)character completionBlock:(void (^)(void))completionBlock
 {
     bool shouldWrapWithShift = shouldWrapWithShiftKeyEventForCharacter(character);
@@ -584,6 +602,16 @@
         [self _sendIOHIDKeyboardEvent:absoluteMachTime usage:kHIDUsage_KeyboardLeftShift isKeyDown:true];
 
     [self _sendIOHIDKeyboardEvent:absoluteMachTime usage:usage isKeyDown:true];
+
+    [self _sendMarkerHIDEventWithCompletionBlock:completionBlock];
+}
+
+- (void)keyUp:(NSString *)character completionBlock:(void (^)(void))completionBlock
+{
+    bool shouldWrapWithShift = shouldWrapWithShiftKeyEventForCharacter(character);
+    uint32_t usage = hidUsageCodeForCharacter(character);
+    uint64_t absoluteMachTime = mach_absolute_time();
+
     [self _sendIOHIDKeyboardEvent:absoluteMachTime usage:usage isKeyDown:false];
 
     if (shouldWrapWithShift)

Modified: trunk/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm (195481 => 195482)


--- trunk/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm	2016-01-22 22:42:28 UTC (rev 195481)
+++ trunk/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm	2016-01-22 22:43:38 UTC (rev 195482)
@@ -106,6 +106,18 @@
     unsigned callbackID = m_context->prepareForAsyncTask(callback, CallbackTypeNonPersistent);
 
     // Assumes that the keyboard is already shown.
+    [[HIDEventGenerator sharedHIDEventGenerator] keyPress:toWTFString(toWK(character)) completionBlock:^{
+        if (!m_context)
+            return;
+        m_context->asyncTaskComplete(callbackID);
+    }];
+}
+
+void UIScriptController::keyDownUsingHardwareKeyboard(JSStringRef character, JSValueRef callback)
+{
+    unsigned callbackID = m_context->prepareForAsyncTask(callback, CallbackTypeNonPersistent);
+
+    // Assumes that the keyboard is already shown.
     [[HIDEventGenerator sharedHIDEventGenerator] keyDown:toWTFString(toWK(character)) completionBlock:^{
         if (!m_context)
             return;
@@ -113,6 +125,18 @@
     }];
 }
 
+void UIScriptController::keyUpUsingHardwareKeyboard(JSStringRef character, JSValueRef callback)
+{
+    unsigned callbackID = m_context->prepareForAsyncTask(callback, CallbackTypeNonPersistent);
+
+    // Assumes that the keyboard is already shown.
+    [[HIDEventGenerator sharedHIDEventGenerator] keyUp:toWTFString(toWK(character)) completionBlock:^{
+        if (!m_context)
+            return;
+        m_context->asyncTaskComplete(callbackID);
+    }];
+}
+
 double UIScriptController::minimumZoomScale() const
 {
     TestRunnerWKWebView *webView = TestController::singleton().mainWebView()->platformView();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to