| Index: third_party/WebKit/Source/core/html/HTMLTextFormControlElement.cpp
|
| diff --git a/third_party/WebKit/Source/core/html/HTMLTextFormControlElement.cpp b/third_party/WebKit/Source/core/html/HTMLTextFormControlElement.cpp
|
| index aa6dbb630bdddfc87c02202b87130c2dd5c2865f..aaebf9ab04d740383ab5f28989f4b9a5b29f9448 100644
|
| --- a/third_party/WebKit/Source/core/html/HTMLTextFormControlElement.cpp
|
| +++ b/third_party/WebKit/Source/core/html/HTMLTextFormControlElement.cpp
|
| @@ -189,7 +189,7 @@ void HTMLTextFormControlElement::setSelectionDirection(const String& direction)
|
|
|
| void HTMLTextFormControlElement::select()
|
| {
|
| - setSelectionRange(0, std::numeric_limits<int>::max(), SelectionHasNoDirection, DispatchSelectEvent);
|
| + setSelectionRangeForBinding(0, std::numeric_limits<int>::max());
|
| focus();
|
| }
|
|
|
| @@ -260,7 +260,7 @@ void HTMLTextFormControlElement::setRangeText(const String& replacement, unsigne
|
| newSelectionEnd = start + replacementLength;
|
| }
|
|
|
| - setSelectionRange(newSelectionStart, newSelectionEnd, SelectionHasNoDirection);
|
| + setSelectionRangeForBinding(newSelectionStart, newSelectionEnd);
|
| }
|
|
|
| void HTMLTextFormControlElement::setSelectionRangeForBinding(int start, int end, const String& directionString)
|
| @@ -270,7 +270,8 @@ void HTMLTextFormControlElement::setSelectionRangeForBinding(int start, int end,
|
| direction = SelectionHasForwardDirection;
|
| else if (directionString == "backward")
|
| direction = SelectionHasBackwardDirection;
|
| - setSelectionRange(start, end, direction);
|
| + if (setSelectionRange(start, end, direction))
|
| + scheduleSelectEvent();
|
| }
|
|
|
| static Position positionForIndex(HTMLElement* innerEditor, int index)
|
| @@ -339,10 +340,10 @@ static int indexForPosition(HTMLElement* innerEditor, const Position& passedPosi
|
| return index;
|
| }
|
|
|
| -void HTMLTextFormControlElement::setSelectionRange(int start, int end, TextFieldSelectionDirection direction, NeedToDispatchSelectEvent eventBehaviour)
|
| +bool HTMLTextFormControlElement::setSelectionRange(int start, int end, TextFieldSelectionDirection direction)
|
| {
|
| if (openShadowRoot() || !isTextFormControl())
|
| - return;
|
| + return false;
|
| const int editorValueLength = static_cast<int>(innerEditorValue().length());
|
| DCHECK_GE(editorValueLength, 0);
|
| end = std::max(std::min(end, editorValueLength), 0);
|
| @@ -352,15 +353,12 @@ void HTMLTextFormControlElement::setSelectionRange(int start, int end, TextField
|
| direction = SelectionHasForwardDirection;
|
| cacheSelection(start, end, direction);
|
|
|
| - if (document().focusedElement() != this) {
|
| - if (eventBehaviour == DispatchSelectEvent)
|
| - scheduleSelectEvent();
|
| - return;
|
| - }
|
| + if (document().focusedElement() != this)
|
| + return true;
|
|
|
| HTMLElement* innerEditor = innerEditorElement();
|
| if (!frame || !innerEditor)
|
| - return;
|
| + return true;
|
|
|
| Position startPosition = positionForIndex(innerEditor, start);
|
| Position endPosition = start == end ? startPosition : positionForIndex(innerEditor, end);
|
| @@ -384,8 +382,7 @@ void HTMLTextFormControlElement::setSelectionRange(int start, int end, TextField
|
| newSelection.setIsDirectional(direction != SelectionHasNoDirection);
|
|
|
| frame->selection().setSelection(newSelection, FrameSelection::DoNotAdjustInFlatTree | FrameSelection::CloseTyping | FrameSelection::ClearTypingStyle | FrameSelection::DoNotSetFocus);
|
| - if (eventBehaviour == DispatchSelectEvent)
|
| - scheduleSelectEvent();
|
| + return true;
|
| }
|
|
|
| VisiblePosition HTMLTextFormControlElement::visiblePositionForIndex(int index) const
|
| @@ -568,7 +565,8 @@ void HTMLTextFormControlElement::setAutocapitalize(const AtomicString& autocapit
|
|
|
| void HTMLTextFormControlElement::restoreCachedSelection()
|
| {
|
| - setSelectionRange(m_cachedSelectionStart, m_cachedSelectionEnd, m_cachedSelectionDirection, DispatchSelectEvent);
|
| + if (setSelectionRange(m_cachedSelectionStart, m_cachedSelectionEnd, m_cachedSelectionDirection))
|
| + scheduleSelectEvent();
|
| }
|
|
|
| void HTMLTextFormControlElement::selectionChanged(bool userTriggered)
|
|
|