Title: [264147] trunk/Source/WebCore
Revision
264147
Author
[email protected]
Date
2020-07-08 20:19:58 -0700 (Wed, 08 Jul 2020)

Log Message

Implementation of AXIsolatedObject::setSelectedVisiblePositionRange.
https://bugs.webkit.org/show_bug.cgi?id=214118

Reviewed by Chris Fleizach.

Covered by test: accessibility/mac/selected-visible-position-range.html.

Implemented AXIsolatedObject::setSelectedVisiblePositionRange() and
selection() by forwarding the call to the associated AX object.

* accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::selection const):
(WebCore::AXIsolatedObject::setSelectedVisiblePositionRange const):
* accessibility/isolatedtree/AXIsolatedObject.h:
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper _accessibilitySetValue:forAttribute:]):
call to the backing object should happen on the main thread since it
takes a VisiblePositionRange parameter.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (264146 => 264147)


--- trunk/Source/WebCore/ChangeLog	2020-07-09 03:19:09 UTC (rev 264146)
+++ trunk/Source/WebCore/ChangeLog	2020-07-09 03:19:58 UTC (rev 264147)
@@ -1,3 +1,24 @@
+2020-07-08  Andres Gonzalez  <[email protected]>
+
+        Implementation of AXIsolatedObject::setSelectedVisiblePositionRange.
+        https://bugs.webkit.org/show_bug.cgi?id=214118
+
+        Reviewed by Chris Fleizach.
+
+        Covered by test: accessibility/mac/selected-visible-position-range.html.
+
+        Implemented AXIsolatedObject::setSelectedVisiblePositionRange() and
+        selection() by forwarding the call to the associated AX object.
+
+        * accessibility/isolatedtree/AXIsolatedObject.cpp:
+        (WebCore::AXIsolatedObject::selection const):
+        (WebCore::AXIsolatedObject::setSelectedVisiblePositionRange const):
+        * accessibility/isolatedtree/AXIsolatedObject.h:
+        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
+        (-[WebAccessibilityObjectWrapper _accessibilitySetValue:forAttribute:]):
+        call to the backing object should happen on the main thread since it
+        takes a VisiblePositionRange parameter.
+
 2020-07-08  Simon Fraser  <[email protected]>
 
         Clean up time values in ScrollController

Modified: trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp (264146 => 264147)


--- trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp	2020-07-09 03:19:09 UTC (rev 264146)
+++ trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp	2020-07-09 03:19:58 UTC (rev 264147)
@@ -1081,6 +1081,22 @@
     });
 }
 
+VisibleSelection AXIsolatedObject::selection() const
+{
+    ASSERT(isMainThread());
+
+    auto* object = associatedAXObject();
+    return object ? object->selection() : VisibleSelection();
+}
+
+void AXIsolatedObject::setSelectedVisiblePositionRange(const VisiblePositionRange& visiblePositionRange) const
+{
+    ASSERT(isMainThread());
+
+    if (auto* object = associatedAXObject())
+        object->setSelectedVisiblePositionRange(visiblePositionRange);
+}
+
 bool AXIsolatedObject::isListBoxOption() const
 {
     ASSERT_NOT_REACHED();

Modified: trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h (264146 => 264147)


--- trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h	2020-07-09 03:19:09 UTC (rev 264146)
+++ trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h	2020-07-09 03:19:58 UTC (rev 264147)
@@ -647,10 +647,11 @@
     bool preventKeyboardDOMEventDispatch() const override;
 
     PlainTextRange selectedTextRange() const override;
+    VisibleSelection selection() const override;
+    void setSelectedVisiblePositionRange(const VisiblePositionRange&) const override;
     // TODO: Text ranges and selection.
     unsigned selectionStart() const override { return 0; }
     unsigned selectionEnd() const override { return 0; }
-    VisibleSelection selection() const override { return VisibleSelection(); }
     String selectedText() const override { return String(); }
     VisiblePositionRange visiblePositionRange() const override { return VisiblePositionRange(); }
     VisiblePositionRange visiblePositionRangeForLine(unsigned) const override { return VisiblePositionRange(); }
@@ -670,7 +671,6 @@
     IntRect boundsForVisiblePositionRange(const VisiblePositionRange&) const override { return IntRect(); }
     IntRect boundsForRange(const RefPtr<Range>) const override { return IntRect(); }
     int lengthForVisiblePositionRange(const VisiblePositionRange&) const override { return 0; }
-    void setSelectedVisiblePositionRange(const VisiblePositionRange&) const override { }
     VisiblePosition visiblePositionForBounds(const IntRect&, AccessibilityVisiblePositionForBounds) const override { return VisiblePosition(); }
     VisiblePosition visiblePositionForPoint(const IntPoint&) const override { return VisiblePosition(); }
     VisiblePosition nextVisiblePosition(const VisiblePosition&) const override { return VisiblePosition(); }

Modified: trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm (264146 => 264147)


--- trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm	2020-07-09 03:19:09 UTC (rev 264146)
+++ trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm	2020-07-09 03:19:58 UTC (rev 264147)
@@ -3538,7 +3538,10 @@
     // handle the command
     if ([attributeName isEqualToString: @"AXSelectedTextMarkerRange"]) {
         ASSERT(textMarkerRange);
-        backingObject->setSelectedVisiblePositionRange([self visiblePositionRangeForTextMarkerRange:textMarkerRange]);
+        Accessibility::performFunctionOnMainThread([&textMarkerRange, protectedSelf = retainPtr(self)] {
+            if (auto* backingObject = protectedSelf.get().axBackingObject)
+                backingObject->setSelectedVisiblePositionRange([protectedSelf visiblePositionRangeForTextMarkerRange:textMarkerRange]);
+        });
     } else if ([attributeName isEqualToString: NSAccessibilityFocusedAttribute]) {
         [self baseAccessibilitySetFocus:[number boolValue]];
     } else if ([attributeName isEqualToString: NSAccessibilityValueAttribute]) {
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to