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

Reply via email to