| 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)
|
|
|