| Index: third_party/WebKit/Source/core/editing/FrameSelection.cpp
|
| diff --git a/third_party/WebKit/Source/core/editing/FrameSelection.cpp b/third_party/WebKit/Source/core/editing/FrameSelection.cpp
|
| index de34916614b35d263230620fbca35d9e65f60208..496f98e4071a672aa46c549dd010e4a3d72de395 100644
|
| --- a/third_party/WebKit/Source/core/editing/FrameSelection.cpp
|
| +++ b/third_party/WebKit/Source/core/editing/FrameSelection.cpp
|
| @@ -1075,15 +1075,26 @@ void FrameSelection::scheduleVisualUpdateForPaintInvalidationIfNeeded() const {
|
| frameView->scheduleVisualUpdateForPaintInvalidationIfNeeded();
|
| }
|
|
|
| +static bool hasNonSeparatorCharacter(const String& text) {
|
| + for (unsigned i = 0; i < text.length(); i++) {
|
| + if (!isSeparator(text.characterStartingAt(i)))
|
| + return true;
|
| + }
|
| + return false;
|
| +}
|
| +
|
| bool FrameSelection::selectWordAroundPosition(const VisiblePosition& position) {
|
| static const EWordSide wordSideList[2] = {RightWordIfOnBoundary,
|
| LeftWordIfOnBoundary};
|
| for (EWordSide wordSide : wordSideList) {
|
| + // TODO(yoichio): We should have Position version of |start/endOfWord|
|
| + // for avoiding unnecessary canonicalization.
|
| + // Then we don't need |hasNonSeparatorCharacter|.
|
| VisiblePosition start = startOfWord(position, wordSide);
|
| VisiblePosition end = endOfWord(position, wordSide);
|
| String text =
|
| plainText(EphemeralRange(start.deepEquivalent(), end.deepEquivalent()));
|
| - if (!text.isEmpty() && !isSeparator(text.characterStartingAt(0))) {
|
| + if (!text.isEmpty() && hasNonSeparatorCharacter(text)) {
|
| setSelection(SelectionInDOMTree::Builder()
|
| .collapse(start.toPositionWithAffinity())
|
| .extend(end.deepEquivalent())
|
|
|