Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(268)

Unified Diff: third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp

Issue 2788523002: Finish all string attributes for Accessibility Object Model Phase 1. (Closed)
Patch Set: notifyAttributeChanged Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp
diff --git a/third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp b/third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp
index cc880744762b035d84bffa8dbfd06364f2fa1a76..e99aacaa575af5b064a2be860a4f06802e57d06d 100644
--- a/third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp
+++ b/third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp
@@ -823,7 +823,8 @@ static Element* siblingWithAriaRole(String role, Node* node) {
for (Element* sibling = ElementTraversal::firstChild(*parent); sibling;
sibling = ElementTraversal::nextSibling(*sibling)) {
- const AtomicString& siblingAriaRole = sibling->getAttribute(roleAttr);
+ const AtomicString& siblingAriaRole =
+ AccessibleNode::getProperty(sibling, AOMStringProperty::kRole);
if (equalIgnoringCase(siblingAriaRole, role))
return sibling;
}
@@ -928,6 +929,23 @@ void AXNodeObject::getSparseAXAttributes(
if (setter)
setter->run(*this, sparseAttributeClient, attr.value());
}
+
+ // TODO(dmazzoni): Efficiently iterate over AccessibleNode properties that are
+ // set and merge the two loops somehow.
+ if (toElement(node)->existingAccessibleNode()) {
+ AtomicString keyShortcuts =
+ getAOMPropertyOrARIAAttribute(AOMStringProperty::kKeyShortcuts);
+ if (!keyShortcuts.isNull()) {
+ axSparseAttributeSetterMap.at(aria_keyshortcutsAttr)
+ ->run(*this, sparseAttributeClient, keyShortcuts);
+ }
+ AtomicString roleDescription =
+ getAOMPropertyOrARIAAttribute(AOMStringProperty::kRoleDescription);
+ if (!roleDescription.isNull()) {
+ axSparseAttributeSetterMap.at(aria_roledescriptionAttr)
+ ->run(*this, sparseAttributeClient, roleDescription);
+ }
+ }
}
bool AXNodeObject::isAnchor() const {
@@ -1141,7 +1159,9 @@ bool AXNodeObject::isChecked() const {
case MenuItemRadioRole:
case RadioButtonRole:
case SwitchRole:
- if (equalIgnoringCase(getAttribute(aria_checkedAttr), "true"))
+ if (equalIgnoringCase(
+ getAOMPropertyOrARIAAttribute(AOMStringProperty::kChecked),
+ "true"))
return true;
return false;
default:
@@ -1403,7 +1423,7 @@ String AXNodeObject::ariaAutoComplete() const {
return String();
const AtomicString& ariaAutoComplete =
- getAttribute(aria_autocompleteAttr).lower();
+ getAOMPropertyOrARIAAttribute(AOMStringProperty::kAutocomplete).lower();
if (ariaAutoComplete == "inline" || ariaAutoComplete == "list" ||
ariaAutoComplete == "both")
@@ -1465,7 +1485,8 @@ AXObject* AXNodeObject::inPageLinkTarget() const {
}
AccessibilityOrientation AXNodeObject::orientation() const {
- const AtomicString& ariaOrientation = getAttribute(aria_orientationAttr);
+ const AtomicString& ariaOrientation =
+ getAOMPropertyOrARIAAttribute(AOMStringProperty::kOrientation);
AccessibilityOrientation orientation = AccessibilityOrientationUndefined;
if (equalIgnoringCase(ariaOrientation, "horizontal"))
orientation = AccessibilityOrientationHorizontal;
@@ -1611,10 +1632,10 @@ RGBA32 AXNodeObject::colorValue() const {
}
AriaCurrentState AXNodeObject::ariaCurrentState() const {
- if (!hasAttribute(aria_currentAttr))
- return AXObject::ariaCurrentState();
-
- const AtomicString& attributeValue = getAttribute(aria_currentAttr);
+ const AtomicString& attributeValue =
+ getAOMPropertyOrARIAAttribute(AOMStringProperty::kCurrent);
+ if (attributeValue.isNull())
+ return AriaCurrentStateUndefined;
if (attributeValue.isEmpty() || equalIgnoringCase(attributeValue, "false"))
return AriaCurrentStateFalse;
if (equalIgnoringCase(attributeValue, "true"))
@@ -1637,20 +1658,19 @@ AriaCurrentState AXNodeObject::ariaCurrentState() const {
}
InvalidState AXNodeObject::getInvalidState() const {
- if (hasAttribute(aria_invalidAttr)) {
- const AtomicString& attributeValue = getAttribute(aria_invalidAttr);
- if (equalIgnoringCase(attributeValue, "false"))
- return InvalidStateFalse;
- if (equalIgnoringCase(attributeValue, "true"))
- return InvalidStateTrue;
- if (equalIgnoringCase(attributeValue, "spelling"))
- return InvalidStateSpelling;
- if (equalIgnoringCase(attributeValue, "grammar"))
- return InvalidStateGrammar;
- // A yet unknown value.
- if (!attributeValue.isEmpty())
- return InvalidStateOther;
- }
+ const AtomicString& attributeValue =
+ getAOMPropertyOrARIAAttribute(AOMStringProperty::kInvalid);
+ if (equalIgnoringCase(attributeValue, "false"))
+ return InvalidStateFalse;
+ if (equalIgnoringCase(attributeValue, "true"))
+ return InvalidStateTrue;
+ if (equalIgnoringCase(attributeValue, "spelling"))
+ return InvalidStateSpelling;
+ if (equalIgnoringCase(attributeValue, "grammar"))
+ return InvalidStateGrammar;
+ // A yet unknown value.
+ if (!attributeValue.isEmpty())
+ return InvalidStateOther;
if (getNode() && getNode()->isElementNode() &&
toElement(getNode())->isFormControlElement()) {
@@ -1701,7 +1721,7 @@ int AXNodeObject::setSize() const {
String AXNodeObject::ariaInvalidValue() const {
if (getInvalidState() == InvalidStateOther)
- return getAttribute(aria_invalidAttr);
+ return getAOMPropertyOrARIAAttribute(AOMStringProperty::kInvalid);
return String();
}
@@ -1710,7 +1730,8 @@ String AXNodeObject::valueDescription() const {
if (!supportsRangeValue())
return String();
- return getAttribute(aria_valuetextAttr).getString();
+ return getAOMPropertyOrARIAAttribute(AOMStringProperty::kValueText)
+ .getString();
}
float AXNodeObject::valueForRange() const {
@@ -1874,7 +1895,8 @@ String AXNodeObject::textAlternative(bool recursive,
return text();
if (isRange()) {
- const AtomicString& ariaValuetext = getAttribute(aria_valuetextAttr);
+ const AtomicString& ariaValuetext =
+ getAOMPropertyOrARIAAttribute(AOMStringProperty::kValueText);
if (!ariaValuetext.isNull())
return ariaValuetext.getString();
return String::number(valueForRange());
@@ -2737,7 +2759,7 @@ String AXNodeObject::nativeTextAlternative(
source.type = nameFrom;
}
const AtomicString& ariaPlaceholder =
- htmlElement->fastGetAttribute(aria_placeholderAttr);
+ getAOMPropertyOrARIAAttribute(AOMStringProperty::kPlaceholder);
if (!ariaPlaceholder.isEmpty()) {
textAlternative = ariaPlaceholder;
if (nameSources) {

Powered by Google App Engine
This is Rietveld 408576698