| 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 0566f7cff8f0cf19bda506d358d9109eee305fde..c0eaf7a4c88961fb0ddd1c19dba238616a81b204 100644
|
| --- a/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp
|
| +++ b/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp
|
| @@ -327,6 +327,23 @@ void DocumentMarkerController::RemoveMarkersInternal(
|
| }
|
| }
|
|
|
| +DocumentMarker* DocumentMarkerController::MarkerAtPosition(
|
| + const Position& position,
|
| + DocumentMarker::MarkerTypes marker_types) {
|
| + if (!PossiblyHasMarkers(marker_types))
|
| + return nullptr;
|
| + Node* const node = position.ComputeContainerNode();
|
| + const unsigned offset =
|
| + static_cast<unsigned>(position.ComputeOffsetInContainerNode());
|
| +
|
| + const auto& markers = MarkersFor(node, marker_types);
|
| + const auto& it =
|
| + std::find_if(markers.begin(), markers.end(), [=](DocumentMarker* marker) {
|
| + return marker->StartOffset() < offset && offset < marker->EndOffset();
|
| + });
|
| + return it == markers.end() ? nullptr : *it;
|
| +}
|
| +
|
| DocumentMarkerVector DocumentMarkerController::MarkersFor(
|
| Node* node,
|
| DocumentMarker::MarkerTypes marker_types) {
|
| @@ -371,37 +388,6 @@ DocumentMarkerVector DocumentMarkerController::Markers() {
|
| return result;
|
| }
|
|
|
| -DocumentMarkerVector DocumentMarkerController::MarkersInRange(
|
| - const EphemeralRange& range,
|
| - DocumentMarker::MarkerTypes marker_types) {
|
| - if (!PossiblyHasMarkers(marker_types))
|
| - return DocumentMarkerVector();
|
| -
|
| - DocumentMarkerVector found_markers;
|
| -
|
| - Node* start_container = range.StartPosition().ComputeContainerNode();
|
| - DCHECK(start_container);
|
| - unsigned start_offset = static_cast<unsigned>(
|
| - range.StartPosition().ComputeOffsetInContainerNode());
|
| - Node* end_container = range.EndPosition().ComputeContainerNode();
|
| - DCHECK(end_container);
|
| - unsigned end_offset =
|
| - static_cast<unsigned>(range.EndPosition().ComputeOffsetInContainerNode());
|
| -
|
| - for (Node& node : range.Nodes()) {
|
| - for (DocumentMarker* marker : MarkersFor(&node)) {
|
| - if (!marker_types.Contains(marker->GetType()))
|
| - continue;
|
| - if (node == start_container && marker->EndOffset() <= start_offset)
|
| - continue;
|
| - if (node == end_container && marker->StartOffset() >= end_offset)
|
| - continue;
|
| - found_markers.push_back(marker);
|
| - }
|
| - }
|
| - return found_markers;
|
| -}
|
| -
|
| Vector<IntRect> DocumentMarkerController::RenderedRectsForMarkers(
|
| DocumentMarker::MarkerType marker_type) {
|
| Vector<IntRect> result;
|
|
|