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();