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