| Index: Source/modules/accessibility/AXObject.cpp
|
| diff --git a/Source/modules/accessibility/AXObject.cpp b/Source/modules/accessibility/AXObject.cpp
|
| index d451350c269b3c73125e32f061c7b31bacc2fce0..9a6158096672cd72bed7b0b44dcdeb10790cdfc1 100644
|
| --- a/Source/modules/accessibility/AXObject.cpp
|
| +++ b/Source/modules/accessibility/AXObject.cpp
|
| @@ -317,8 +317,22 @@ bool AXObject::isPasswordFieldAndShouldHideValue() const
|
| return isPasswordField();
|
| }
|
|
|
| +// If you call node->hasEditableStyle() since that will return true if an ancestor is editable.
|
| +// 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 TextAreaRole:
|
| case TextFieldRole:
|
|
|