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

Unified Diff: third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp

Issue 2806683002: Don't ever split DocumentMarkers on remove (Closed)
Patch Set: Rebase (no manual changes) Created 3 years, 8 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: 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 fc3101d976b001cda671ff1b45b4cc88bb7ff52a..ad1da82cbb6413d7efc0093cb387a2629e542d0a 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& marked_text,
- DocumentMarker::MarkerTypes marker_types,
- RemovePartiallyOverlappingMarkerOrNot
- should_remove_partially_overlapping_marker) {
+ DocumentMarker::MarkerTypes marker_types) {
for (; !marked_text.AtEnd(); marked_text.Advance()) {
if (!PossiblyHasMarkers(marker_types))
return;
@@ -157,21 +155,17 @@ void DocumentMarkerController::RemoveMarkers(
int start_offset = marked_text.StartOffsetInCurrentContainer();
int end_offset = marked_text.EndOffsetInCurrentContainer();
RemoveMarkers(marked_text.CurrentContainer(), start_offset,
- end_offset - start_offset, marker_types,
- should_remove_partially_overlapping_marker);
+ end_offset - start_offset, marker_types);
}
}
void DocumentMarkerController::RemoveMarkers(
const EphemeralRange& range,
- DocumentMarker::MarkerTypes marker_types,
- RemovePartiallyOverlappingMarkerOrNot
- should_remove_partially_overlapping_marker) {
+ DocumentMarker::MarkerTypes marker_types) {
DCHECK(!document_->NeedsLayoutTreeUpdate());
TextIterator marked_text(range.StartPosition(), range.EndPosition());
- DocumentMarkerController::RemoveMarkers(
- marked_text, marker_types, should_remove_partially_overlapping_marker);
+ DocumentMarkerController::RemoveMarkers(marked_text, marker_types);
}
static bool StartsFurther(const Member<RenderedDocumentMarker>& lhv,
@@ -334,9 +328,7 @@ void DocumentMarkerController::RemoveMarkers(
Node* node,
unsigned start_offset,
int length,
- DocumentMarker::MarkerTypes marker_types,
- RemovePartiallyOverlappingMarkerOrNot
- should_remove_partially_overlapping_marker) {
+ DocumentMarker::MarkerTypes marker_types) {
if (length <= 0)
return;
@@ -373,34 +365,8 @@ void DocumentMarkerController::RemoveMarkers(
if (marker.StartOffset() >= end_offset)
break;
- // at this point we know that marker and target intersect in some way
- doc_dirty = true;
-
- // pitch the old marker
list->erase(i - list->begin());
-
- if (should_remove_partially_overlapping_marker) {
- // Stop here. Don't add resulting slices back.
- continue;
- }
-
- // add either of the resulting slices that are left after removing target
- if (start_offset > marker.StartOffset()) {
- DocumentMarker new_left = marker;
- new_left.SetEndOffset(start_offset);
- size_t insert_index = i - list->begin();
- list->insert(insert_index, RenderedDocumentMarker::Create(new_left));
- // Move to the marker after the inserted one.
- i = list->begin() + insert_index + 1;
- }
- if (marker.EndOffset() > end_offset) {
- DocumentMarker new_right = marker;
- new_right.SetStartOffset(end_offset);
- size_t insert_index = i - list->begin();
- list->insert(insert_index, RenderedDocumentMarker::Create(new_right));
- // Move to the marker after the inserted one.
- i = list->begin() + insert_index + 1;
- }
+ doc_dirty = true;
}
if (list->IsEmpty()) {

Powered by Google App Engine
This is Rietveld 408576698