Title: [287871] trunk
Revision
287871
Author
[email protected]
Date
2022-01-11 00:52:44 -0800 (Tue, 11 Jan 2022)

Log Message

[GTK][a11y] Set active state when element is the selected option active or aria-current isn't false with ATSPI
https://bugs.webkit.org/show_bug.cgi?id=235029

Reviewed by Adrian Perez de Castro.

Source/WebCore:

* accessibility/atspi/AXObjectCacheAtspi.cpp:
(WebCore::AXObjectCache::postPlatformNotification):
* accessibility/atspi/AccessibilityObjectAtspi.cpp:
(WebCore::AccessibilityObjectAtspi::state const):

Tools:

Add a unit test to check acive state and implement AccessibilityUIElement::currentStateValue().

* TestWebKitAPI/Tests/WebKitGtk/TestWebKitAccessibility.cpp:
(testAccessibleState):
* WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
(WTR::AccessibilityUIElement::domIdentifier const):
(WTR::AccessibilityUIElement::currentStateValue const): Deleted.
* WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
(WTR::AccessibilityUIElement::currentStateValue const):
* WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp:
(WTR::AccessibilityUIElement::currentStateValue const):
* WebKitTestRunner/InjectedBundle/win/AccessibilityUIElementWin.cpp:
(WTR::AccessibilityUIElement::currentStateValue const):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (287870 => 287871)


--- trunk/Source/WebCore/ChangeLog	2022-01-11 07:27:23 UTC (rev 287870)
+++ trunk/Source/WebCore/ChangeLog	2022-01-11 08:52:44 UTC (rev 287871)
@@ -1,3 +1,15 @@
+2022-01-11  Carlos Garcia Campos  <[email protected]>
+
+        [GTK][a11y] Set active state when element is the selected option active or aria-current isn't false with ATSPI
+        https://bugs.webkit.org/show_bug.cgi?id=235029
+
+        Reviewed by Adrian Perez de Castro.
+
+        * accessibility/atspi/AXObjectCacheAtspi.cpp:
+        (WebCore::AXObjectCache::postPlatformNotification):
+        * accessibility/atspi/AccessibilityObjectAtspi.cpp:
+        (WebCore::AccessibilityObjectAtspi::state const):
+
 2022-01-10  Yusuke Suzuki  <[email protected]>
 
         Fix Windows build after r287829

Modified: trunk/Source/WebCore/accessibility/atspi/AXObjectCacheAtspi.cpp (287870 => 287871)


--- trunk/Source/WebCore/accessibility/atspi/AXObjectCacheAtspi.cpp	2022-01-11 07:27:23 UTC (rev 287870)
+++ trunk/Source/WebCore/accessibility/atspi/AXObjectCacheAtspi.cpp	2022-01-11 08:52:44 UTC (rev 287871)
@@ -126,6 +126,7 @@
         wrapper->stateChanged("busy", coreObject->isBusy());
         break;
     case AXCurrentStateChanged:
+        wrapper->stateChanged("active", coreObject->currentState() != AccessibilityCurrentState::False);
         break;
     case AXRowExpanded:
         wrapper->stateChanged("expanded", true);

Modified: trunk/Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp (287870 => 287871)


--- trunk/Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp	2022-01-11 07:27:23 UTC (rev 287870)
+++ trunk/Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp	2022-01-11 08:52:44 UTC (rev 287871)
@@ -789,6 +789,9 @@
                 addState(Atspi::State::Showing);
         }
 
+        if (m_coreObject->isSelectedOptionActive() || m_coreObject->currentState() != AccessibilityCurrentState::False)
+            addState(Atspi::State::Active);
+
         if (m_coreObject->canSetFocusAttribute())
             addState(Atspi::State::Focusable);
 

Modified: trunk/Tools/ChangeLog (287870 => 287871)


--- trunk/Tools/ChangeLog	2022-01-11 07:27:23 UTC (rev 287870)
+++ trunk/Tools/ChangeLog	2022-01-11 08:52:44 UTC (rev 287871)
@@ -1,3 +1,24 @@
+2022-01-11  Carlos Garcia Campos  <[email protected]>
+
+        [GTK][a11y] Set active state when element is the selected option active or aria-current isn't false with ATSPI
+        https://bugs.webkit.org/show_bug.cgi?id=235029
+
+        Reviewed by Adrian Perez de Castro.
+
+        Add a unit test to check acive state and implement AccessibilityUIElement::currentStateValue().
+
+        * TestWebKitAPI/Tests/WebKitGtk/TestWebKitAccessibility.cpp:
+        (testAccessibleState):
+        * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
+        (WTR::AccessibilityUIElement::domIdentifier const):
+        (WTR::AccessibilityUIElement::currentStateValue const): Deleted.
+        * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
+        (WTR::AccessibilityUIElement::currentStateValue const):
+        * WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp:
+        (WTR::AccessibilityUIElement::currentStateValue const):
+        * WebKitTestRunner/InjectedBundle/win/AccessibilityUIElementWin.cpp:
+        (WTR::AccessibilityUIElement::currentStateValue const):
+
 2022-01-10  Dewei Zhu  <[email protected]>
 
         Revert r287861.

Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitGtk/TestWebKitAccessibility.cpp (287870 => 287871)


--- trunk/Tools/TestWebKitAPI/Tests/WebKitGtk/TestWebKitAccessibility.cpp	2022-01-11 07:27:23 UTC (rev 287870)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitGtk/TestWebKitAccessibility.cpp	2022-01-11 08:52:44 UTC (rev 287871)
@@ -492,6 +492,7 @@
         "    <input value='Disabled' disabled>"
         "    <input value='Read only' readonly>"
         "    <textarea rows=5 autofocus></textarea>"
+        "    <ul><li aria-current='step'>Current</li></ul>"
         "  </body>"
         "</html>",
         nullptr);
@@ -502,7 +503,7 @@
 
     auto documentWeb = test->findDocumentWeb(testApp.get());
     g_assert_true(ATSPI_IS_ACCESSIBLE(documentWeb.get()));
-    g_assert_cmpint(atspi_accessible_get_child_count(documentWeb.get(), nullptr), ==, 2);
+    g_assert_cmpint(atspi_accessible_get_child_count(documentWeb.get(), nullptr), ==, 3);
 
     auto h1 = adoptGRef(atspi_accessible_get_child_at_index(documentWeb.get(), 0, nullptr));
     g_assert_true(ATSPI_IS_ACCESSIBLE(h1.get()));
@@ -686,6 +687,17 @@
     // FIXME: ATK doesn't implement selectable text, but includes oprientation.
     g_assert_true(atspi_state_set_contains(stateSet.get(), ATSPI_STATE_HORIZONTAL));
 #endif
+
+    auto ul = adoptGRef(atspi_accessible_get_child_at_index(documentWeb.get(), 2, nullptr));
+    g_assert_true(ATSPI_IS_ACCESSIBLE(textArea.get()));
+    auto li = adoptGRef(atspi_accessible_get_child_at_index(ul.get(), 0, nullptr));
+    stateSet = adoptGRef(atspi_accessible_get_state_set(li.get()));
+    g_assert_cmpuint(AccessibilityTest::stateSetSize(stateSet.get()), ==, 5);
+    g_assert_true(atspi_state_set_contains(stateSet.get(), ATSPI_STATE_ACTIVE));
+    g_assert_true(atspi_state_set_contains(stateSet.get(), ATSPI_STATE_ENABLED));
+    g_assert_true(atspi_state_set_contains(stateSet.get(), ATSPI_STATE_SENSITIVE));
+    g_assert_true(atspi_state_set_contains(stateSet.get(), ATSPI_STATE_VISIBLE));
+    g_assert_true(atspi_state_set_contains(stateSet.get(), ATSPI_STATE_SHOWING));
 }
 
 static void testAccessibleStateChanged(AccessibilityTest* test, gconstpointer)

Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp (287870 => 287871)


--- trunk/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp	2022-01-11 07:27:23 UTC (rev 287870)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp	2022-01-11 08:52:44 UTC (rev 287871)
@@ -121,7 +121,6 @@
 bool AccessibilityUIElement::isInCell() const { return false; }
 
 JSRetainPtr<JSStringRef> AccessibilityUIElement::domIdentifier() const { return nullptr; }
-JSRetainPtr<JSStringRef> AccessibilityUIElement::currentStateValue() const { return nullptr; }
 JSRetainPtr<JSStringRef> AccessibilityUIElement::sortDirection() const { return nullptr; }
 JSRetainPtr<JSStringRef> AccessibilityUIElement::lineRectsAndText() const { return { }; }
 RefPtr<AccessibilityTextMarkerRange> AccessibilityUIElement::leftWordTextMarkerRangeForTextMarker(AccessibilityTextMarker*) { return nullptr; }

Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp (287870 => 287871)


--- trunk/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp	2022-01-11 07:27:23 UTC (rev 287870)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp	2022-01-11 08:52:44 UTC (rev 287871)
@@ -1117,6 +1117,11 @@
     return 0;
 }
 
+JSRetainPtr<JSStringRef> AccessibilityUIElement::currentStateValue() const
+{
+    return nullptr;
+}
+
 JSValueRef AccessibilityUIElement::uiElementArrayAttributeValue(JSStringRef attribute) const
 {
     // FIXME: implement

Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp (287870 => 287871)


--- trunk/Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp	2022-01-11 07:27:23 UTC (rev 287870)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp	2022-01-11 08:52:44 UTC (rev 287871)
@@ -410,6 +410,12 @@
     return 0;
 }
 
+JSRetainPtr<JSStringRef> AccessibilityUIElement::currentStateValue() const
+{
+    auto value = m_element->attributes().get("current");
+    return OpaqueJSString::tryCreate(!value.isNull() ? value : "false").leakRef();
+}
+
 JSValueRef AccessibilityUIElement::uiElementArrayAttributeValue(JSStringRef attribute) const
 {
     return nullptr;

Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/win/AccessibilityUIElementWin.cpp (287870 => 287871)


--- trunk/Tools/WebKitTestRunner/InjectedBundle/win/AccessibilityUIElementWin.cpp	2022-01-11 07:27:23 UTC (rev 287870)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/win/AccessibilityUIElementWin.cpp	2022-01-11 08:52:44 UTC (rev 287871)
@@ -190,6 +190,12 @@
     return nullptr;
 }
 
+JSRetainPtr<JSStringRef> AccessibilityUIElement::currentStateValue() const
+{
+    notImplemented();
+    return nullptr;
+}
+
 JSRetainPtr<JSStringRef> AccessibilityUIElement::stringDescriptionOfAttributeValue(JSStringRef)
 {
     notImplemented();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to