| Index: Source/core/editing/VisibleUnits.cpp
|
| diff --git a/Source/core/editing/VisibleUnits.cpp b/Source/core/editing/VisibleUnits.cpp
|
| index f51ec7cd29846afe54bceeba7153ff8c16fc739d..73387b78649bf6738235c489eacfe16437efa813 100644
|
| --- a/Source/core/editing/VisibleUnits.cpp
|
| +++ b/Source/core/editing/VisibleUnits.cpp
|
| @@ -457,7 +457,6 @@ static VisiblePosition previousBoundary(const VisiblePosition& c, BoundarySearch
|
| Document& d = boundary->document();
|
| Position start = createLegacyEditingPosition(boundary, 0).parentAnchoredEquivalent();
|
| Position end = pos.parentAnchoredEquivalent();
|
| - RefPtrWillBeRawPtr<Range> searchRange = Range::create(d);
|
|
|
| Vector<UChar, 1024> string;
|
| unsigned suffixLength = 0;
|
| @@ -480,14 +479,11 @@ static VisiblePosition previousBoundary(const VisiblePosition& c, BoundarySearch
|
| }
|
| }
|
|
|
| - searchRange->setStart(start.deprecatedNode(), start.deprecatedEditingOffset(), exceptionState);
|
| - searchRange->setEnd(end.deprecatedNode(), end.deprecatedEditingOffset(), exceptionState);
|
| -
|
| ASSERT(!exceptionState.hadException());
|
| if (exceptionState.hadException())
|
| return VisiblePosition();
|
|
|
| - SimplifiedBackwardsTextIterator it(searchRange.get());
|
| + SimplifiedBackwardsTextIterator it(start, end);
|
| unsigned next = 0;
|
| bool needMoreContext = false;
|
| while (!it.atEnd()) {
|
| @@ -522,7 +518,7 @@ static VisiblePosition previousBoundary(const VisiblePosition& c, BoundarySearch
|
| return VisiblePosition(createLegacyEditingPosition(node, next), DOWNSTREAM);
|
|
|
| // Use the character iterator to translate the next value into a DOM position.
|
| - BackwardsCharacterIterator charIt(searchRange.get());
|
| + BackwardsCharacterIterator charIt(start, end);
|
| charIt.advance(string.size() - suffixLength - next);
|
| // FIXME: charIt can get out of shadow host.
|
| return VisiblePosition(charIt.endPosition(), DOWNSTREAM);
|
| @@ -536,7 +532,6 @@ static VisiblePosition nextBoundary(const VisiblePosition& c, BoundarySearchFunc
|
| return VisiblePosition();
|
|
|
| Document& d = boundary->document();
|
| - RefPtrWillBeRawPtr<Range> searchRange(d.createRange());
|
| Position start(pos.parentAnchoredEquivalent());
|
|
|
| Vector<UChar, 1024> string;
|
| @@ -559,9 +554,11 @@ static VisiblePosition nextBoundary(const VisiblePosition& c, BoundarySearchFunc
|
| }
|
| }
|
|
|
| - searchRange->selectNodeContents(boundary, IGNORE_EXCEPTION);
|
| - searchRange->setStart(start.deprecatedNode(), start.deprecatedEditingOffset(), IGNORE_EXCEPTION);
|
| - TextIterator it(searchRange.get(), TextIteratorEmitsCharactersBetweenAllVisiblePositions);
|
| + Position searchStart = createLegacyEditingPosition(start.deprecatedNode(), start.deprecatedEditingOffset());
|
| + RangeBoundaryPoint searchEndPoint(boundary);
|
| + searchEndPoint.setToEndOfNode(*boundary);
|
| + Position searchEnd = searchEndPoint.toPosition();
|
| + TextIterator it(searchStart, searchEnd, TextIteratorEmitsCharactersBetweenAllVisiblePositions);
|
| const unsigned invalidOffset = static_cast<unsigned>(-1);
|
| unsigned next = invalidOffset;
|
| bool needMoreContext = false;
|
| @@ -593,7 +590,7 @@ static VisiblePosition nextBoundary(const VisiblePosition& c, BoundarySearchFunc
|
| 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);
|
| + CharacterIterator charIt(searchStart, searchEnd, TextIteratorEmitsCharactersBetweenAllVisiblePositions);
|
| charIt.advance(next - prefixLength - 1);
|
| pos = charIt.endPosition();
|
|
|
|
|