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

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

Issue 2805493002: Boolean properties for Accessibility Object Model Phase 1 (Closed)
Patch Set: 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/AXObject.cpp
diff --git a/third_party/WebKit/Source/modules/accessibility/AXObject.cpp b/third_party/WebKit/Source/modules/accessibility/AXObject.cpp
index 3e18e556d466beaf250314eaee1346ca0c2f1955..4a20d1a95c5bb6829f76c6f17284d89e2aebe668 100644
--- a/third_party/WebKit/Source/modules/accessibility/AXObject.cpp
+++ b/third_party/WebKit/Source/modules/accessibility/AXObject.cpp
@@ -389,6 +389,39 @@ const AtomicString& AXObject::getAOMPropertyOrARIAAttribute(
return AccessibleNode::getProperty(toElement(node), property);
}
+bool AXObject::getAOMPropertyOrARIAAttribute(AOMBooleanProperty property,
aboxhall 2017/04/07 05:22:35 Ok, now I see what you were talking about. This i
dmazzoni 2017/04/21 07:11:37 Thanks for the discussion. I went with this form:
+ bool& result) const {
+ Node* node = this->getNode();
aboxhall 2017/04/07 05:22:35 Would it help to make a convenience protected/priv
dmazzoni 2017/04/21 07:11:37 Good idea. Used it throughout the file.
+ if (!node || !node->isElementNode())
+ return false;
+
+ bool isNull = true;
+ result = AccessibleNode::getProperty(toElement(node), property, isNull);
+ return !isNull;
+}
+
+bool AXObject::hasAOMPropertyOrARIAAttribute(
+ AOMBooleanProperty property) const {
+ bool dummyResult;
+ return getAOMPropertyOrARIAAttribute(property, dummyResult);
+}
+
+bool AXObject::AOMPropertyOrARIAAttributeIsTrue(
+ AOMBooleanProperty property) const {
+ bool result;
+ if (getAOMPropertyOrARIAAttribute(property, result))
+ return result;
+ return false;
+}
+
+bool AXObject::AOMPropertyOrARIAAttributeIsFalse(
+ AOMBooleanProperty property) const {
+ bool result;
+ if (getAOMPropertyOrARIAAttribute(property, result))
+ return !result;
+ return false;
+}
+
bool AXObject::isARIATextControl() const {
return ariaRoleAttribute() == TextFieldRole ||
ariaRoleAttribute() == SearchBoxRole ||
@@ -596,7 +629,7 @@ AXObject* AXObject::leafNodeAncestor() const {
const AXObject* AXObject::ariaHiddenRoot() const {
for (const AXObject* object = this; object; object = object->parentObject()) {
- if (equalIgnoringASCIICase(object->getAttribute(aria_hiddenAttr), "true"))
+ if (object->AOMPropertyOrARIAAttributeIsTrue(AOMBooleanProperty::kHidden))
return object;
}
@@ -609,16 +642,17 @@ bool AXObject::isDescendantOfDisabledNode() const {
}
const AXObject* AXObject::disabledAncestor() const {
- const AtomicString& disabled = getAttribute(aria_disabledAttr);
- if (equalIgnoringASCIICase(disabled, "true"))
- return this;
- if (equalIgnoringASCIICase(disabled, "false"))
- return 0;
+ bool disabled = false;
+ if (getAOMPropertyOrARIAAttribute(AOMBooleanProperty::kDisabled, disabled)) {
+ if (disabled)
+ return this;
+ return nullptr;
+ }
if (AXObject* parent = parentObject())
return parent->disabledAncestor();
- return 0;
+ return nullptr;
}
bool AXObject::lastKnownIsIgnoredValue() {
@@ -723,7 +757,7 @@ String AXObject::recursiveTextAlternative(const AXObject& axObj,
}
bool AXObject::isHiddenForTextAlternativeCalculation() const {
- if (equalIgnoringASCIICase(getAttribute(aria_hiddenAttr), "false"))
+ if (AOMPropertyOrARIAAttributeIsFalse(AOMBooleanProperty::kHidden))
return false;
if (getLayoutObject())
@@ -982,7 +1016,7 @@ bool AXObject::isMultiline() const {
if (!isNativeTextControl() && !isNonNativeTextControl())
return false;
- return equalIgnoringASCIICase(getAttribute(aria_multilineAttr), "true");
+ return AOMPropertyOrARIAAttributeIsTrue(AOMBooleanProperty::kMultiline);
}
bool AXObject::ariaPressedIsPresent() const {

Powered by Google App Engine
This is Rietveld 408576698