OLD | NEW |
---|---|
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "core/editing/markers/DocumentMarkerListEditor.h" | 5 #include "core/editing/markers/DocumentMarkerListEditor.h" |
6 | 6 |
7 #include "core/editing/markers/SpellCheckMarkerListImpl.h" | 7 #include "core/editing/markers/SpellCheckMarkerListImpl.h" |
8 | 8 |
9 namespace blink { | 9 namespace blink { |
10 | 10 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
45 dst_list->Add(&marker); | 45 dst_list->Add(&marker); |
46 didMoveMarker = true; | 46 didMoveMarker = true; |
47 } | 47 } |
48 | 48 |
49 // Remove the range of markers that were moved to dstNode | 49 // Remove the range of markers that were moved to dstNode |
50 src_list->erase(0, it - src_list->begin()); | 50 src_list->erase(0, it - src_list->begin()); |
51 | 51 |
52 return didMoveMarker; | 52 return didMoveMarker; |
53 } | 53 } |
54 | 54 |
55 // TODO(rlanday): this method was created by cutting and pasting code from | |
56 // DocumentMarkerController::RemoveMarkers(), it should be refactored in a | |
57 // future CL | |
58 bool DocumentMarkerListEditor::RemoveMarkers(MarkerList* list, | 55 bool DocumentMarkerListEditor::RemoveMarkers(MarkerList* list, |
59 unsigned start_offset, | 56 unsigned start_offset, |
60 int length) { | 57 int length) { |
61 bool doc_dirty = false; | |
62 const unsigned end_offset = start_offset + length; | 58 const unsigned end_offset = start_offset + length; |
59 | |
yosin_UTC9
2017/06/02 01:11:45
nit: Please remove an extra blank line.
| |
63 MarkerList::iterator start_pos = std::upper_bound( | 60 MarkerList::iterator start_pos = std::upper_bound( |
64 list->begin(), list->end(), start_offset, | 61 list->begin(), list->end(), start_offset, |
65 [](size_t start_offset, const Member<DocumentMarker>& marker) { | 62 [](size_t start_offset, const Member<DocumentMarker>& marker) { |
66 return start_offset < marker->EndOffset(); | 63 return start_offset < marker->EndOffset(); |
67 }); | 64 }); |
68 for (MarkerList::iterator i = start_pos; i != list->end();) { | |
69 const DocumentMarker& marker = *i->Get(); | |
70 | 65 |
71 // markers are returned in order, so stop if we are now past the specified | 66 MarkerList::iterator end_pos = std::lower_bound( |
72 // range | 67 list->begin(), list->end(), end_offset, |
73 if (marker.StartOffset() >= end_offset) | 68 [](const Member<DocumentMarker>& marker, size_t end_offset) { |
74 break; | 69 return marker->StartOffset() < end_offset; |
70 }); | |
75 | 71 |
76 list->erase(i - list->begin()); | 72 list->erase(start_pos - list->begin(), end_pos - start_pos); |
77 doc_dirty = true; | 73 return start_pos != end_pos; |
78 } | |
79 | |
80 return doc_dirty; | |
81 } | 74 } |
82 | 75 |
83 // TODO(rlanday): make this not take O(n^2) time when all the markers are | 76 // TODO(rlanday): make this not take O(n^2) time when all the markers are |
84 // removed | 77 // removed |
85 bool DocumentMarkerListEditor::ShiftMarkersContentDependent( | 78 bool DocumentMarkerListEditor::ShiftMarkersContentDependent( |
86 MarkerList* list, | 79 MarkerList* list, |
87 unsigned offset, | 80 unsigned offset, |
88 unsigned old_length, | 81 unsigned old_length, |
89 unsigned new_length) { | 82 unsigned new_length) { |
90 bool did_shift_marker = false; | 83 bool did_shift_marker = false; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
135 did_shift_marker = true; | 128 did_shift_marker = true; |
136 marker.SetStartOffset(result.value().start_offset); | 129 marker.SetStartOffset(result.value().start_offset); |
137 marker.SetEndOffset(result.value().end_offset); | 130 marker.SetEndOffset(result.value().end_offset); |
138 } | 131 } |
139 } | 132 } |
140 | 133 |
141 return did_shift_marker; | 134 return did_shift_marker; |
142 } | 135 } |
143 | 136 |
144 } // namespace blink | 137 } // namespace blink |
OLD | NEW |