Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Unified Diff: third_party/WebKit/Source/core/editing/FrameSelection.cpp

Issue 2723913002: Relax text validation in FrameSelection::selectWordAroundPosition (Closed)
Patch Set: update Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/editing/FrameSelectionTest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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())
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/editing/FrameSelectionTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698