| Index: third_party/WebKit/Source/core/editing/VisibleUnits.cpp
|
| diff --git a/third_party/WebKit/Source/core/editing/VisibleUnits.cpp b/third_party/WebKit/Source/core/editing/VisibleUnits.cpp
|
| index 751409debe4532e9e5ebdcd14da9a02d8e363478..e0265d75f8273660f8693f7f9331eb3a506d785d 100644
|
| --- a/third_party/WebKit/Source/core/editing/VisibleUnits.cpp
|
| +++ b/third_party/WebKit/Source/core/editing/VisibleUnits.cpp
|
| @@ -45,6 +45,7 @@
|
| #include "core/frame/LocalFrame.h"
|
| #include "core/frame/Settings.h"
|
| #include "core/html/HTMLBRElement.h"
|
| +#include "core/html/HTMLTextFormControlElement.h"
|
| #include "core/layout/HitTestRequest.h"
|
| #include "core/layout/HitTestResult.h"
|
| #include "core/layout/LayoutBlockFlow.h"
|
| @@ -1794,20 +1795,26 @@ VisiblePosition endOfEditableContent(const VisiblePosition& visiblePosition)
|
| return createVisiblePosition(lastPositionInNode(highestRoot));
|
| }
|
|
|
| -template <typename Strategy>
|
| -static bool isEndOfEditableOrNonEditableContentAlgorithm(const VisiblePositionTemplate<Strategy>& p)
|
| -{
|
| - return p.isNotNull() && nextPositionOf(p).isNull();
|
| -}
|
| -
|
| bool isEndOfEditableOrNonEditableContent(const VisiblePosition& position)
|
| {
|
| - return isEndOfEditableOrNonEditableContentAlgorithm<EditingStrategy>(position);
|
| + return position.isNotNull() && nextPositionOf(position).isNull();
|
| }
|
|
|
| +// TODO(yosin) We should rename |isEndOfEditableOrNonEditableContent()| what
|
| +// this function does, e.g. |isLastVisiblePositionOrEndOfInnerEditor()|.
|
| bool isEndOfEditableOrNonEditableContent(const VisiblePositionInComposedTree& position)
|
| {
|
| - return isEndOfEditableOrNonEditableContentAlgorithm<EditingInComposedTreeStrategy>(position);
|
| + if (position.isNull())
|
| + return false;
|
| + const VisiblePositionInComposedTree nextPosition = nextPositionOf(position);
|
| + if (nextPosition.isNull())
|
| + return true;
|
| + // In DOM version, following condition, the last position of inner editor
|
| + // of INPUT/TEXTAREA element, by |nextPosition().isNull()|, because of
|
| + // an inner editor is an only leaf node.
|
| + if (!nextPosition.deepEquivalent().isAfterAnchor())
|
| + return false;
|
| + return isHTMLTextFormControlElement(nextPosition.deepEquivalent().anchorNode());
|
| }
|
|
|
| VisiblePosition leftBoundaryOfLine(const VisiblePosition& c, TextDirection direction)
|
|
|