Title: [244691] trunk/Source/WebCore
- Revision
- 244691
- Author
- [email protected]
- Date
- 2019-04-26 09:36:29 -0700 (Fri, 26 Apr 2019)
Log Message
AX: Provide iOS method for setting focus
https://bugs.webkit.org/show_bug.cgi?id=197200
<rdar://problem/50131679>
Reviewed by Alex Christensen.
Put the focus setting code in a place that iOS and macOS can access.
Override a platform level method for setting focus on iOS.
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper _accessibilitySetFocus:]):
* accessibility/mac/WebAccessibilityObjectWrapperBase.h:
* accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
(-[WebAccessibilityObjectWrapperBase baseAccessibilitySetFocus:]):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper _accessibilitySetValue:forAttribute:]):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (244690 => 244691)
--- trunk/Source/WebCore/ChangeLog 2019-04-26 16:32:25 UTC (rev 244690)
+++ trunk/Source/WebCore/ChangeLog 2019-04-26 16:36:29 UTC (rev 244691)
@@ -1,3 +1,22 @@
+2019-04-26 Chris Fleizach <[email protected]>
+
+ AX: Provide iOS method for setting focus
+ https://bugs.webkit.org/show_bug.cgi?id=197200
+ <rdar://problem/50131679>
+
+ Reviewed by Alex Christensen.
+
+ Put the focus setting code in a place that iOS and macOS can access.
+ Override a platform level method for setting focus on iOS.
+
+ * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
+ (-[WebAccessibilityObjectWrapper _accessibilitySetFocus:]):
+ * accessibility/mac/WebAccessibilityObjectWrapperBase.h:
+ * accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
+ (-[WebAccessibilityObjectWrapperBase baseAccessibilitySetFocus:]):
+ * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
+ (-[WebAccessibilityObjectWrapper _accessibilitySetValue:forAttribute:]):
+
2019-04-26 Said Abou-Hallawa <[email protected]>
propertyRegistry() was not overridden for SVGFEFloodElement and SVGFEMergeElement
Modified: trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm (244690 => 244691)
--- trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm 2019-04-26 16:32:25 UTC (rev 244690)
+++ trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm 2019-04-26 16:36:29 UTC (rev 244691)
@@ -2007,6 +2007,11 @@
[self accessibilityModifySelection:granularity increase:YES];
}
+- (void)_accessibilitySetFocus:(BOOL)focus
+{
+ [self baseAccessibilitySetFocus:focus];
+}
+
- (void)accessibilityDecreaseSelection:(TextGranularity)granularity
{
[self accessibilityModifySelection:granularity increase:NO];
Modified: trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h (244690 => 244691)
--- trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h 2019-04-26 16:32:25 UTC (rev 244690)
+++ trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h 2019-04-26 16:36:29 UTC (rev 244691)
@@ -81,6 +81,7 @@
- (NSString *)baseAccessibilityHelpText;
- (NSArray<NSString *> *)baseAccessibilitySpeechHint;
+- (void)baseAccessibilitySetFocus:(BOOL)focus;
- (NSString *)ariaLandmarkRoleDescription;
- (id)attachmentView;
Modified: trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm (244690 => 244691)
--- trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm 2019-04-26 16:32:25 UTC (rev 244690)
+++ trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm 2019-04-26 16:36:29 UTC (rev 244691)
@@ -571,6 +571,27 @@
}
}
+- (void)baseAccessibilitySetFocus:(BOOL)focus
+{
+ // If focus is just set without making the view the first responder, then keyboard focus won't move to the right place.
+ if (focus && !m_object->document()->frame()->selection().isFocusedAndActive()) {
+ FrameView* frameView = m_object->documentFrameView();
+ Page* page = m_object->page();
+ if (page && frameView) {
+ ChromeClient& chromeClient = page->chrome().client();
+ chromeClient.focus();
+
+ // Legacy WebKit1 case.
+ if (frameView->platformWidget())
+ chromeClient.makeFirstResponder(frameView->platformWidget());
+ else
+ chromeClient.assistiveTechnologyMakeFirstResponder();
+ }
+ }
+
+ m_object->setFocused(focus);
+}
+
- (NSString *)accessibilityPlatformMathSubscriptKey
{
ASSERT_NOT_REACHED();
Modified: trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm (244690 => 244691)
--- trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm 2019-04-26 16:32:25 UTC (rev 244690)
+++ trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm 2019-04-26 16:36:29 UTC (rev 244691)
@@ -3871,27 +3871,7 @@
ASSERT(textMarkerRange);
m_object->setSelectedVisiblePositionRange([self visiblePositionRangeForTextMarkerRange:textMarkerRange]);
} else if ([attributeName isEqualToString: NSAccessibilityFocusedAttribute]) {
- ASSERT(number);
-
- bool focus = [number boolValue];
-
- // If focus is just set without making the view the first responder, then keyboard focus won't move to the right place.
- if (focus && !m_object->document()->frame()->selection().isFocusedAndActive()) {
- FrameView* frameView = m_object->documentFrameView();
- Page* page = m_object->page();
- if (page && frameView) {
- ChromeClient& chromeClient = page->chrome().client();
- chromeClient.focus();
-
- // Legacy WebKit1 case.
- if (frameView->platformWidget())
- chromeClient.makeFirstResponder(frameView->platformWidget());
- else
- chromeClient.assistiveTechnologyMakeFirstResponder();
- }
- }
-
- m_object->setFocused(focus);
+ [self baseAccessibilitySetFocus:[number boolValue]];
} else if ([attributeName isEqualToString: NSAccessibilityValueAttribute]) {
if (number && m_object->canSetNumericValue())
m_object->setValue([number floatValue]);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes