| 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 8fd8a1134328f25716b7ae9f7434673b1bf06842..41bfb92199759344edefb2d141e5f66e019381b7 100644
|
| --- a/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp
|
| +++ b/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp
|
| @@ -175,26 +175,6 @@ void DocumentMarkerController::RemoveMarkers(
|
| DocumentMarkerController::RemoveMarkers(marked_text, marker_types);
|
| }
|
|
|
| -static bool StartsFurther(const Member<RenderedDocumentMarker>& lhv,
|
| - const DocumentMarker* rhv) {
|
| - return lhv->StartOffset() < rhv->StartOffset();
|
| -}
|
| -
|
| -static bool EndsBefore(size_t start_offset,
|
| - const Member<RenderedDocumentMarker>& rhv) {
|
| - return start_offset < rhv->EndOffset();
|
| -}
|
| -
|
| -static bool CompareByStart(const Member<DocumentMarker>& lhv,
|
| - const Member<DocumentMarker>& rhv) {
|
| - return lhv->StartOffset() < rhv->StartOffset();
|
| -}
|
| -
|
| -static bool DoesNotOverlap(const Member<RenderedDocumentMarker>& lhv,
|
| - const DocumentMarker* rhv) {
|
| - return lhv->EndOffset() < rhv->StartOffset();
|
| -}
|
| -
|
| static void UpdateMarkerRenderedRect(const Node& node,
|
| RenderedDocumentMarker& marker) {
|
| Range* range = Range::Create(node.GetDocument());
|
| @@ -262,8 +242,13 @@ void DocumentMarkerListEditor::AddMarker(MarkerList* list,
|
| marker->GetType() != DocumentMarker::kComposition) {
|
| MergeOverlapping(list, rendered_marker);
|
| } else {
|
| - MarkerList::iterator pos =
|
| - std::lower_bound(list->begin(), list->end(), marker, StartsFurther);
|
| + MarkerList::iterator pos = std::lower_bound(
|
| + list->begin(), list->end(), marker,
|
| + [](const Member<RenderedDocumentMarker>& marker_in_list,
|
| + const DocumentMarker* marker_to_insert) {
|
| + return marker_in_list->StartOffset() <
|
| + marker_to_insert->StartOffset();
|
| + });
|
| list->insert(pos - list->begin(), rendered_marker);
|
| }
|
| }
|
| @@ -273,8 +258,12 @@ void DocumentMarkerListEditor::AddMarker(MarkerList* list,
|
| void DocumentMarkerListEditor::MergeOverlapping(
|
| MarkerList* list,
|
| RenderedDocumentMarker* to_insert) {
|
| - MarkerList::iterator first_overlapping =
|
| - std::lower_bound(list->begin(), list->end(), to_insert, DoesNotOverlap);
|
| + MarkerList::iterator first_overlapping = std::lower_bound(
|
| + list->begin(), list->end(), to_insert,
|
| + [](const Member<RenderedDocumentMarker>& marker_in_list,
|
| + const DocumentMarker* marker_to_insert) {
|
| + return marker_in_list->EndOffset() < marker_to_insert->StartOffset();
|
| + });
|
| size_t index = first_overlapping - list->begin();
|
| list->insert(index, to_insert);
|
| MarkerList::iterator inserted = list->begin() + index;
|
| @@ -424,8 +413,11 @@ bool DocumentMarkerListEditor::RemoveMarkers(MarkerList* list,
|
| int length) {
|
| bool doc_dirty = false;
|
| unsigned end_offset = start_offset + length;
|
| - MarkerList::iterator start_pos =
|
| - std::upper_bound(list->begin(), list->end(), start_offset, EndsBefore);
|
| + MarkerList::iterator start_pos = std::upper_bound(
|
| + list->begin(), list->end(), start_offset,
|
| + [](size_t start_offset, const Member<RenderedDocumentMarker>& marker) {
|
| + return start_offset < marker->EndOffset();
|
| + });
|
| for (MarkerList::iterator i = start_pos; i != list->end();) {
|
| DocumentMarker marker(*i->Get());
|
|
|
| @@ -462,7 +454,11 @@ DocumentMarkerVector DocumentMarkerController::MarkersFor(
|
| result.push_back(list->at(i).Get());
|
| }
|
|
|
| - std::sort(result.begin(), result.end(), CompareByStart);
|
| + std::sort(result.begin(), result.end(),
|
| + [](const Member<DocumentMarker>& marker1,
|
| + const Member<DocumentMarker>& marker2) {
|
| + return marker1->StartOffset() < marker2->StartOffset();
|
| + });
|
| return result;
|
| }
|
|
|
| @@ -478,7 +474,11 @@ DocumentMarkerVector DocumentMarkerController::Markers() {
|
| result.push_back(list->at(j).Get());
|
| }
|
| }
|
| - std::sort(result.begin(), result.end(), CompareByStart);
|
| + std::sort(result.begin(), result.end(),
|
| + [](const Member<DocumentMarker>& marker1,
|
| + const Member<DocumentMarker>& marker2) {
|
| + return marker1->StartOffset() < marker2->StartOffset();
|
| + });
|
| return result;
|
| }
|
|
|
| @@ -781,8 +781,11 @@ bool DocumentMarkerController::SetMarkersActive(Node* node,
|
| Member<MarkerList>& list = ListForType(markers, DocumentMarker::kTextMatch);
|
| if (!list)
|
| return false;
|
| - MarkerList::iterator start_pos =
|
| - std::upper_bound(list->begin(), list->end(), start_offset, EndsBefore);
|
| + MarkerList::iterator start_pos = std::upper_bound(
|
| + list->begin(), list->end(), start_offset,
|
| + [](size_t start_offset, const Member<RenderedDocumentMarker>& marker) {
|
| + return start_offset < marker->EndOffset();
|
| + });
|
| for (MarkerList::iterator marker = start_pos; marker != list->end();
|
| ++marker) {
|
| // Markers are returned in order, so stop if we are now past the specified
|
|
|