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