Chromium Code Reviews| 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..ce0560309d764268def12ef56548b40061c018a6 100644 |
| --- a/third_party/WebKit/Source/core/editing/FrameSelection.cpp |
| +++ b/third_party/WebKit/Source/core/editing/FrameSelection.cpp |
| @@ -1075,15 +1075,25 @@ void FrameSelection::scheduleVisualUpdateForPaintInvalidationIfNeeded() const { |
| frameView->scheduleVisualUpdateForPaintInvalidationIfNeeded(); |
| } |
| +static bool hasWord(const String& text) { |
|
yosin_UTC9
2017/03/01 03:31:03
nit: s/hasWord/hasNonSeparatorCharacter/
Since th
yoichio
2017/03/01 03:42:09
Done.
|
| + 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 |hasWord|. |
| 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() && hasWord(text)) { |
| setSelection(SelectionInDOMTree::Builder() |
| .collapse(start.toPositionWithAffinity()) |
| .extend(end.deepEquivalent()) |