Index: Source/modules/accessibility/AXObject.cpp |
diff --git a/Source/modules/accessibility/AXObject.cpp b/Source/modules/accessibility/AXObject.cpp |
index e05a796356d47388e2b9ba1dfd4e4a83316fcee2..7f717e438df06569d229a52e4b99ffcb1ce9f93e 100644 |
--- a/Source/modules/accessibility/AXObject.cpp |
+++ b/Source/modules/accessibility/AXObject.cpp |
@@ -453,8 +453,22 @@ bool AXObject::isPasswordFieldAndShouldHideValue() const |
return isPasswordField(); |
} |
+// If you call node->hasEditableStyle() since that will return true if an ancestor is editable. |
dmazzoni
2015/04/10 21:23:24
Please fix this sentence while you're at it, it do
|
+// This only returns true if this is the element that actually has the contentEditable attribute set. |
+bool AXObject::hasContentEditableAttributeSet() const |
+{ |
+ if (!hasAttribute(contenteditableAttr)) |
+ return false; |
+ const AtomicString& contentEditableValue = getAttribute(contenteditableAttr); |
+ // Both "true" (case-insensitive) and the empty string count as true. |
+ return contentEditableValue.isEmpty() || equalIgnoringCase(contentEditableValue, "true"); |
+} |
+ |
bool AXObject::isTextControl() const |
{ |
+ if (hasContentEditableAttributeSet()) |
+ return true; |
+ |
switch (roleValue()) { |
case TextFieldRole: |
case ComboBoxRole: |