Chromium Code Reviews| Index: third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp |
| diff --git a/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp b/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp |
| index c14dbaa44c63304ab7d2f23cd70d37f2c075e21b..67acd8ffca9c5077dbc07142e683545cd11011cf 100644 |
| --- a/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp |
| +++ b/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp |
| @@ -146,9 +146,7 @@ void DocumentMarkerController::prepareForDestruction() { |
| void DocumentMarkerController::removeMarkers( |
| TextIterator& markedText, |
| - DocumentMarker::MarkerTypes markerTypes, |
| - RemovePartiallyOverlappingMarkerOrNot |
| - shouldRemovePartiallyOverlappingMarker) { |
| + DocumentMarker::MarkerTypes markerTypes) { |
| for (; !markedText.atEnd(); markedText.advance()) { |
| if (!possiblyHasMarkers(markerTypes)) |
| return; |
| @@ -157,21 +155,17 @@ void DocumentMarkerController::removeMarkers( |
| int startOffset = markedText.startOffsetInCurrentContainer(); |
| int endOffset = markedText.endOffsetInCurrentContainer(); |
| removeMarkers(markedText.currentContainer(), startOffset, |
| - endOffset - startOffset, markerTypes, |
| - shouldRemovePartiallyOverlappingMarker); |
| + endOffset - startOffset, markerTypes); |
| } |
| } |
| void DocumentMarkerController::removeMarkers( |
| const EphemeralRange& range, |
| - DocumentMarker::MarkerTypes markerTypes, |
| - RemovePartiallyOverlappingMarkerOrNot |
| - shouldRemovePartiallyOverlappingMarker) { |
| + DocumentMarker::MarkerTypes markerTypes) { |
| DCHECK(!m_document->needsLayoutTreeUpdate()); |
| TextIterator markedText(range.startPosition(), range.endPosition()); |
| - DocumentMarkerController::removeMarkers( |
| - markedText, markerTypes, shouldRemovePartiallyOverlappingMarker); |
| + DocumentMarkerController::removeMarkers(markedText, markerTypes); |
| } |
| static bool startsFurther(const Member<RenderedDocumentMarker>& lhv, |
| @@ -343,9 +337,7 @@ void DocumentMarkerController::removeMarkers( |
| Node* node, |
| unsigned startOffset, |
| int length, |
| - DocumentMarker::MarkerTypes markerTypes, |
| - RemovePartiallyOverlappingMarkerOrNot |
| - shouldRemovePartiallyOverlappingMarker) { |
| + DocumentMarker::MarkerTypes markerTypes) { |
| if (length <= 0) |
| return; |
| @@ -382,34 +374,8 @@ void DocumentMarkerController::removeMarkers( |
| if (marker.startOffset() >= endOffset) |
| break; |
| - // at this point we know that marker and target intersect in some way |
| - docDirty = true; |
| - |
| - // pitch the old marker |
| list->erase(i - list->begin()); |
| - |
| - if (shouldRemovePartiallyOverlappingMarker) { |
| - // Stop here. Don't add resulting slices back. |
| - continue; |
| - } |
| - |
| - // add either of the resulting slices that are left after removing target |
| - if (startOffset > marker.startOffset()) { |
| - DocumentMarker newLeft = marker; |
| - newLeft.setEndOffset(startOffset); |
| - size_t insertIndex = i - list->begin(); |
| - list->insert(insertIndex, RenderedDocumentMarker::create(newLeft)); |
| - // Move to the marker after the inserted one. |
| - i = list->begin() + insertIndex + 1; |
| - } |
| - if (marker.endOffset() > endOffset) { |
| - DocumentMarker newRight = marker; |
| - newRight.setStartOffset(endOffset); |
| - size_t insertIndex = i - list->begin(); |
| - list->insert(insertIndex, RenderedDocumentMarker::create(newRight)); |
| - // Move to the marker after the inserted one. |
| - i = list->begin() + insertIndex + 1; |
| - } |
| + docDirty = true; |
| } |
| if (list->isEmpty()) { |
| @@ -829,12 +795,6 @@ void DocumentMarkerController::didUpdateCharacterData(CharacterData* node, |
| unsigned offset, |
| unsigned oldLength, |
| unsigned newLength) { |
| - // If we're doing a pure remove operation, remove the markers in the range |
|
Xiaocheng
2017/04/08 00:23:36
I see.
But this change fits better in the previou
|
| - // being removed (markers containing, but larger than, the range, will be |
| - // split) |
| - if (newLength == 0) |
| - removeMarkers(node, offset, oldLength); |
| - |
| if (!possiblyHasMarkers(DocumentMarker::AllMarkers())) |
| return; |
| DCHECK(!m_markers.isEmpty()); |