Title: [170518] trunk
- Revision
- 170518
- Author
- [email protected]
- Date
- 2014-06-26 21:31:25 -0700 (Thu, 26 Jun 2014)
Log Message
[iOS][WK2] Distant focusable element may not be scrolled into view when focused using keyboard
https://bugs.webkit.org/show_bug.cgi?id=134309
<rdar://problem/17427385>
Reviewed by Darin Adler.
.:
Add a manual test to ensure that we scroll to a distant focused text field when it's focused
using the keyboard.
* ManualTests/ios/scroll-to-distant-keyboard-focused-text-field.html: Added.
Source/WebKit2:
Fixes an issue where the focusable element may not be scrolled into view when it's focused by
using the keyboard accessory (i.e. the < and > buttons). In particular, we don't scroll a
keyboard focused text field into view when it's positioned significantly outside the visible region.
* UIProcess/ios/WKContentViewInteraction.h: Added an instance variable called _didAccessoryTabInitiateFocus
to track whether an accessory tab initiated the focus of the focusable element.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView cleanupInteraction]): Clear _didAccessoryTabInitiateFocus so that we're in a good state
should the WebProcess crash between the time the UIProcess receives the accessory tab request and the
WebProcess calls back to the UIProcess to zoom/scroll to the newly focused element.
(-[WKContentView _displayFormNodeInputView]): Modified to pass an empty rectangle for the selection
rectangle to -_zoomToFocusRect to avoid constraining the scroll to the newly focused element when it
was focused using the keyboard accessory tab buttons
(-[WKContentView accessoryTab:]): Modified to set _didAccessoryTabInitiateFocus to YES. We'll set
this boolean to NO in -_displayFormNodeInputView.
Modified Paths
Added Paths
Diff
Modified: trunk/ChangeLog (170517 => 170518)
--- trunk/ChangeLog 2014-06-27 03:20:34 UTC (rev 170517)
+++ trunk/ChangeLog 2014-06-27 04:31:25 UTC (rev 170518)
@@ -1,3 +1,16 @@
+2014-06-26 Daniel Bates <[email protected]>
+
+ [iOS][WK2] Distant focusable element may not be scrolled into view when focused using keyboard
+ https://bugs.webkit.org/show_bug.cgi?id=134309
+ <rdar://problem/17427385>
+
+ Reviewed by Darin Adler.
+
+ Add a manual test to ensure that we scroll to a distant focused text field when it's focused
+ using the keyboard.
+
+ * ManualTests/ios/scroll-to-distant-keyboard-focused-text-field.html: Added.
+
2014-06-25 Laszlo Gombos <[email protected]>
Remove build guard for progress element
Added: trunk/ManualTests/ios/scroll-to-distant-keyboard-focused-text-field.html (0 => 170518)
--- trunk/ManualTests/ios/scroll-to-distant-keyboard-focused-text-field.html (rev 0)
+++ trunk/ManualTests/ios/scroll-to-distant-keyboard-focused-text-field.html 2014-06-27 04:31:25 UTC (rev 170518)
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta name="viewport" content="height=device-height">
+<style>
+#input1 {
+ position: absolute;
+ top: 880px;
+ left: 200px;
+}
+
+body {
+ height: 900px;
+}
+</style>
+</head>
+<body>
+<p>This test can be used to ensure that we scroll to the newly focused field when using the keyboard to switch focus from a text field positioned at the bottom of the page to a text field positioned at the top of the page.</p>
+<ol>
+ <li>Scroll all the way to the bottom of the page.</li>
+ <li>Tap the text field with text "Field 2"</li>
+ <li>Tap the '<' above the keyboard to move the focus to the previous text field on the page, "Field 1".</li>
+</ol>
+<p>This test PASSED if we scroll to "Field 1" such that it's visible.</p>
+<input type="text" id="input0" value="Field 1">
+<input type="text" id="input1" value="Field 2">
+</body>
+</html>
Modified: trunk/Source/WebKit2/ChangeLog (170517 => 170518)
--- trunk/Source/WebKit2/ChangeLog 2014-06-27 03:20:34 UTC (rev 170517)
+++ trunk/Source/WebKit2/ChangeLog 2014-06-27 04:31:25 UTC (rev 170518)
@@ -1,3 +1,27 @@
+2014-06-26 Daniel Bates <[email protected]>
+
+ [iOS][WK2] Distant focusable element may not be scrolled into view when focused using keyboard
+ https://bugs.webkit.org/show_bug.cgi?id=134309
+ <rdar://problem/17427385>
+
+ Reviewed by Darin Adler.
+
+ Fixes an issue where the focusable element may not be scrolled into view when it's focused by
+ using the keyboard accessory (i.e. the < and > buttons). In particular, we don't scroll a
+ keyboard focused text field into view when it's positioned significantly outside the visible region.
+
+ * UIProcess/ios/WKContentViewInteraction.h: Added an instance variable called _didAccessoryTabInitiateFocus
+ to track whether an accessory tab initiated the focus of the focusable element.
+ * UIProcess/ios/WKContentViewInteraction.mm:
+ (-[WKContentView cleanupInteraction]): Clear _didAccessoryTabInitiateFocus so that we're in a good state
+ should the WebProcess crash between the time the UIProcess receives the accessory tab request and the
+ WebProcess calls back to the UIProcess to zoom/scroll to the newly focused element.
+ (-[WKContentView _displayFormNodeInputView]): Modified to pass an empty rectangle for the selection
+ rectangle to -_zoomToFocusRect to avoid constraining the scroll to the newly focused element when it
+ was focused using the keyboard accessory tab buttons
+ (-[WKContentView accessoryTab:]): Modified to set _didAccessoryTabInitiateFocus to YES. We'll set
+ this boolean to NO in -_displayFormNodeInputView.
+
2014-06-26 Timothy Horton <[email protected]>
[iOS][WK2] Implement WKPDFView smart magnification
Modified: trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.h (170517 => 170518)
--- trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.h 2014-06-27 03:20:34 UTC (rev 170517)
+++ trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.h 2014-06-27 04:31:25 UTC (rev 170518)
@@ -139,6 +139,7 @@
BOOL _selectionNeedsUpdate;
BOOL _usingGestureForSelection;
BOOL _inspectorNodeSearchEnabled;
+ BOOL _didAccessoryTabInitiateFocus;
}
@end
Modified: trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm (170517 => 170518)
--- trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm 2014-06-27 03:20:34 UTC (rev 170517)
+++ trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm 2014-06-27 04:31:25 UTC (rev 170518)
@@ -263,6 +263,7 @@
_textSelectionAssistant = nil;
_actionSheetAssistant = nil;
_smartMagnificationController = nil;
+ _didAccessoryTabInitiateFocus = NO;
[_formInputSession invalidate];
_formInputSession = nil;
[_highlightView removeFromSuperview];
@@ -638,12 +639,13 @@
- (void)_displayFormNodeInputView
{
[self _zoomToFocusRect:_assistedNodeInformation.elementRect
- selectionRect:_assistedNodeInformation.selectionRect
+ selectionRect: _didAccessoryTabInitiateFocus ? IntRect() : _assistedNodeInformation.selectionRect
fontSize:_assistedNodeInformation.nodeFontSize
minimumScale:_assistedNodeInformation.minimumScaleFactor
maximumScale:_assistedNodeInformation.maximumScaleFactor
allowScaling:(_assistedNodeInformation.allowsUserScaling && !UICurrentUserInterfaceIdiomIsPad())
forceScroll:[self requiresAccessoryView]];
+ _didAccessoryTabInitiateFocus = NO;
[self _updateAccessory];
}
@@ -1729,6 +1731,7 @@
- (void)accessoryTab:(BOOL)isNext
{
+ _didAccessoryTabInitiateFocus = YES; // Will be cleared in either -_displayFormNodeInputView or -cleanupInteraction.
_page->focusNextAssistedNode(isNext);
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes