AX: [ATK] Expose aria-busy via ATK_STATE_BUSY
https://bugs.webkit.org/show_bug.cgi?id=164909
Reviewed by Chris Fleizach.
Source/WebCore:
Expose aria-busy via ATK_STATE_BUSY. Also rename ariaLiveRegionBusy()
to isBusy() because in ARIA 1.1 aria-busy is no longer limited to live
regions.
Test: accessibility/aria-busy.html
* accessibility/AccessibilityObject.h:
(WebCore::AccessibilityObject::isBusy):
(WebCore::AccessibilityObject::ariaLiveRegionBusy): Deleted.
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::isBusy):
(WebCore::AccessibilityRenderObject::ariaLiveRegionBusy): Deleted.
* accessibility/AccessibilityRenderObject.h:
* accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(setAtkStateSetFromCoreObject):
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper accessibilityARIAIsBusy]):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
* inspector/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::buildObjectForAccessibilityProperties):
Tools:
Implement boolAttributeValue() for ATK so we can test AXElementBusy.
* WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
(WTR::AccessibilityUIElement::boolAttributeValue):
LayoutTests:
* accessibility/aria-busy-expected.txt: Added.
* accessibility/aria-busy.html: Added.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@208924 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index dc0c117..7ea2d74 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,32 @@
+2016-11-19 Joanmarie Diggs <jdiggs@igalia.com>
+
+ AX: [ATK] Expose aria-busy via ATK_STATE_BUSY
+ https://bugs.webkit.org/show_bug.cgi?id=164909
+
+ Reviewed by Chris Fleizach.
+
+ Expose aria-busy via ATK_STATE_BUSY. Also rename ariaLiveRegionBusy()
+ to isBusy() because in ARIA 1.1 aria-busy is no longer limited to live
+ regions.
+
+ Test: accessibility/aria-busy.html
+
+ * accessibility/AccessibilityObject.h:
+ (WebCore::AccessibilityObject::isBusy):
+ (WebCore::AccessibilityObject::ariaLiveRegionBusy): Deleted.
+ * accessibility/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::isBusy):
+ (WebCore::AccessibilityRenderObject::ariaLiveRegionBusy): Deleted.
+ * accessibility/AccessibilityRenderObject.h:
+ * accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
+ (setAtkStateSetFromCoreObject):
+ * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
+ (-[WebAccessibilityObjectWrapper accessibilityARIAIsBusy]):
+ * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
+ (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
+ * inspector/InspectorDOMAgent.cpp:
+ (WebCore::InspectorDOMAgent::buildObjectForAccessibilityProperties):
+
2016-11-19 Ryosuke Niwa <rniwa@webkit.org>
REGRESSION(r200964): Tab focus navigation is broken on results.en.voyages-sncf.com
diff --git a/Source/WebCore/accessibility/AccessibilityObject.h b/Source/WebCore/accessibility/AccessibilityObject.h
index daea0f5..4e8d8a1 100644
--- a/Source/WebCore/accessibility/AccessibilityObject.h
+++ b/Source/WebCore/accessibility/AccessibilityObject.h
@@ -921,7 +921,7 @@
virtual const String ariaLiveRegionStatus() const { return String(); }
virtual const AtomicString& ariaLiveRegionRelevant() const { return nullAtom; }
virtual bool ariaLiveRegionAtomic() const { return false; }
- virtual bool ariaLiveRegionBusy() const { return false; }
+ virtual bool isBusy() const { return false; }
static const String defaultLiveRegionStatusForRole(AccessibilityRole);
static bool liveRegionStatusIsEnabled(const AtomicString&);
static bool contentEditableAttributeIsEnabled(Element*);
diff --git a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp b/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
index 5ae068e..3e6b2c1 100644
--- a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
+++ b/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
@@ -3270,7 +3270,7 @@
}
}
-bool AccessibilityRenderObject::ariaLiveRegionBusy() const
+bool AccessibilityRenderObject::isBusy() const
{
return elementAttributeValue(aria_busyAttr);
}
diff --git a/Source/WebCore/accessibility/AccessibilityRenderObject.h b/Source/WebCore/accessibility/AccessibilityRenderObject.h
index 196eaa8..b1cdf56 100644
--- a/Source/WebCore/accessibility/AccessibilityRenderObject.h
+++ b/Source/WebCore/accessibility/AccessibilityRenderObject.h
@@ -273,7 +273,7 @@
const String ariaLiveRegionStatus() const override;
const AtomicString& ariaLiveRegionRelevant() const override;
bool ariaLiveRegionAtomic() const override;
- bool ariaLiveRegionBusy() const override;
+ bool isBusy() const override;
bool inheritsPresentationalRole() const override;
diff --git a/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp b/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp
index c373aea..44bb1de 100644
--- a/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp
+++ b/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp
@@ -750,6 +750,9 @@
if (isListBoxOption && coreObject->isSelectedOptionActive())
atk_state_set_add_state(stateSet, ATK_STATE_ACTIVE);
+ if (coreObject->isBusy())
+ atk_state_set_add_state(stateSet, ATK_STATE_BUSY);
+
#if ATK_CHECK_VERSION(2,11,2)
if (coreObject->supportsChecked() && coreObject->canSetValueAttribute())
atk_state_set_add_state(stateSet, ATK_STATE_CHECKABLE);
diff --git a/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm b/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm
index 1ab2099..ce8caf5 100644
--- a/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm
+++ b/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm
@@ -2655,7 +2655,7 @@
if (![self _prepareAccessibilityCall])
return NO;
- return m_object->ariaLiveRegionBusy();
+ return m_object->isBusy();
}
- (NSString *)accessibilityARIALiveRegionStatus
diff --git a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
index 31f019c..5871668 100644
--- a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
+++ b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
@@ -3329,7 +3329,7 @@
if ([attributeName isEqualToString:NSAccessibilityARIAAtomicAttribute])
return [NSNumber numberWithBool:m_object->ariaLiveRegionAtomic()];
if ([attributeName isEqualToString:NSAccessibilityElementBusyAttribute])
- return [NSNumber numberWithBool:m_object->ariaLiveRegionBusy()];
+ return [NSNumber numberWithBool:m_object->isBusy()];
// MathML Attributes.
if (m_object->isMathElement()) {
diff --git a/Source/WebCore/inspector/InspectorDOMAgent.cpp b/Source/WebCore/inspector/InspectorDOMAgent.cpp
index 00fc642..83a024b 100644
--- a/Source/WebCore/inspector/InspectorDOMAgent.cpp
+++ b/Source/WebCore/inspector/InspectorDOMAgent.cpp
@@ -1627,7 +1627,7 @@
// An AX object is "busy" if it or any ancestor has aria-busy="true" set.
AccessibilityObject* current = axObject;
while (!busy && current) {
- busy = current->ariaLiveRegionBusy();
+ busy = current->isBusy();
current = current->parentObject();
}