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();