Index: Source/modules/accessibility/AXLayoutObject.cpp |
diff --git a/Source/modules/accessibility/AXLayoutObject.cpp b/Source/modules/accessibility/AXLayoutObject.cpp |
index b6b1774b1931a7fea3bdc802f0af8a9d44ab816b..9566033c2de776b8bd976bc6408b27a463343de7 100644 |
--- a/Source/modules/accessibility/AXLayoutObject.cpp |
+++ b/Source/modules/accessibility/AXLayoutObject.cpp |
@@ -1590,16 +1590,12 @@ AXObject::PlainTextRange AXLayoutObject::selectedTextRange() const |
if (!isTextControl()) |
return PlainTextRange(); |
- AccessibilityRole ariaRole = ariaRoleAttribute(); |
- if (isNativeTextControl() && ariaRole == UnknownRole && m_layoutObject->isTextControl()) { |
+ if (m_layoutObject->isTextControl()) { |
HTMLTextFormControlElement* textControl = toLayoutTextControl(m_layoutObject)->textFormControlElement(); |
return PlainTextRange(textControl->selectionStart(), textControl->selectionEnd() - textControl->selectionStart()); |
} |
- if (ariaRole == UnknownRole) |
- return PlainTextRange(); |
- |
- return ariaSelectedTextRange(); |
+ return visibleSelectionUnderObject(); |
} |
VisibleSelection AXLayoutObject::selection() const |
@@ -1613,7 +1609,7 @@ VisibleSelection AXLayoutObject::selection() const |
void AXLayoutObject::setSelectedTextRange(const PlainTextRange& range) |
{ |
- if (isNativeTextControl() && m_layoutObject->isTextControl()) { |
+ if (m_layoutObject->isTextControl()) { |
HTMLTextFormControlElement* textControl = toLayoutTextControl(m_layoutObject)->textFormControlElement(); |
textControl->setSelectionRange(range.start, range.start + range.length, SelectionHasNoDirection, NotDispatchSelectEvent); |
return; |
@@ -1750,7 +1746,7 @@ VisiblePosition AXLayoutObject::visiblePositionForIndex(int index) const |
if (!m_layoutObject) |
return VisiblePosition(); |
- if (isNativeTextControl() && m_layoutObject->isTextControl()) |
+ if (m_layoutObject->isTextControl()) |
return toLayoutTextControl(m_layoutObject)->textFormControlElement()->visiblePositionForIndex(index); |
if (!allowsTextRanges() && !m_layoutObject->isText()) |
@@ -1775,7 +1771,7 @@ VisiblePosition AXLayoutObject::visiblePositionForIndex(int index) const |
int AXLayoutObject::indexForVisiblePosition(const VisiblePosition& pos) const |
{ |
- if (isNativeTextControl() && m_layoutObject->isTextControl()) { |
+ if (m_layoutObject->isTextControl()) { |
HTMLTextFormControlElement* textControl = toLayoutTextControl(m_layoutObject)->textFormControlElement(); |
return textControl->indexForVisiblePosition(pos); |
} |
@@ -1788,7 +1784,9 @@ int AXLayoutObject::indexForVisiblePosition(const VisiblePosition& pos) const |
return 0; |
Position indexPosition = pos.deepEquivalent(); |
- if (indexPosition.isNull() || highestEditableRoot(indexPosition, HasEditableAXRole) != node) |
+ if (indexPosition.isNull() |
+ || (highestEditableRoot(indexPosition) != node |
+ && highestEditableRoot(indexPosition, HasEditableAXRole) != node)) |
return 0; |
RefPtrWillBeRawPtr<Range> range = Range::create(m_layoutObject->document()); |
@@ -1877,7 +1875,7 @@ void AXLayoutObject::ariaListboxSelectedChildren(AccessibilityChildrenVector& re |
} |
} |
-AXObject::PlainTextRange AXLayoutObject::ariaSelectedTextRange() const |
+AXObject::PlainTextRange AXLayoutObject::visibleSelectionUnderObject() const |
{ |
Node* node = m_layoutObject->node(); |
if (!node) |