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

Unified Diff: Source/core/editing/VisibleUnits.cpp

Issue 544083002: Avoid allocating temporary ranges in connection with text and character iterators. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 3 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
Index: Source/core/editing/VisibleUnits.cpp
diff --git a/Source/core/editing/VisibleUnits.cpp b/Source/core/editing/VisibleUnits.cpp
index a2b04e8cc7319d67d37dd927fe77539d97adeb8e..f51ec7cd29846afe54bceeba7153ff8c16fc739d 100644
--- a/Source/core/editing/VisibleUnits.cpp
+++ b/Source/core/editing/VisibleUnits.cpp
@@ -514,9 +514,9 @@ static VisiblePosition previousBoundary(const VisiblePosition& c, BoundarySearch
}
if (!next)
- return VisiblePosition(it.atEnd() ? it.range()->startPosition() : pos, DOWNSTREAM);
+ return VisiblePosition(it.atEnd() ? it.startPosition() : pos, DOWNSTREAM);
- Node* node = it.range()->startContainer();
+ Node* node = it.startContainer();
if ((node->isTextNode() && static_cast<int>(next) <= node->maxCharacterOffset()) || (node->renderer() && node->renderer()->isBR() && !next))
// The next variable contains a usable index into a text node
return VisiblePosition(createLegacyEditingPosition(node, next), DOWNSTREAM);
@@ -525,7 +525,7 @@ static VisiblePosition previousBoundary(const VisiblePosition& c, BoundarySearch
BackwardsCharacterIterator charIt(searchRange.get());
charIt.advance(string.size() - suffixLength - next);
// FIXME: charIt can get out of shadow host.
- return VisiblePosition(charIt.range()->endPosition(), DOWNSTREAM);
+ return VisiblePosition(charIt.endPosition(), DOWNSTREAM);
}
static VisiblePosition nextBoundary(const VisiblePosition& c, BoundarySearchFunction searchFunction)
@@ -590,20 +590,19 @@ static VisiblePosition nextBoundary(const VisiblePosition& c, BoundarySearchFunc
}
if (it.atEnd() && next == string.size()) {
- pos = it.range()->startPosition();
+ pos = it.startPosition();
} else if (next != invalidOffset && next != prefixLength) {
// Use the character iterator to translate the next value into a DOM position.
CharacterIterator charIt(searchRange.get(), TextIteratorEmitsCharactersBetweenAllVisiblePositions);
charIt.advance(next - prefixLength - 1);
- RefPtrWillBeRawPtr<Range> characterRange = charIt.range();
- pos = characterRange->endPosition();
+ pos = charIt.endPosition();
if (charIt.characterAt(0) == '\n') {
// FIXME: workaround for collapsed range (where only start position is correct) emitted for some emitted newlines (see rdar://5192593)
VisiblePosition visPos = VisiblePosition(pos);
- if (visPos == VisiblePosition(characterRange->startPosition())) {
+ if (visPos == VisiblePosition(charIt.startPosition())) {
charIt.advance(1);
- pos = charIt.range()->startPosition();
+ pos = charIt.startPosition();
}
}
}
« Source/core/editing/TextIterator.cpp ('K') | « Source/core/editing/VisibleSelection.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698