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 dc2881b92fbe6d4cfae34626bc7e712bcfb6ae0e..05ec51f48af1c4841876a8a531643599d5f04c40 100644 |
--- a/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp |
+++ b/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp |
@@ -323,6 +323,23 @@ void DocumentMarkerController::RemoveMarkersInternal( |
} |
} |
+Optional<DocumentMarker*> DocumentMarkerController::MarkerAtPosition( |
+ const Position& position, |
+ DocumentMarker::MarkerTypes marker_types) { |
+ if (!PossiblyHasMarkers(marker_types)) |
+ return Optional<DocumentMarker*>(); |
+ Node* node = position.ComputeContainerNode(); |
+ unsigned offset = |
+ static_cast<unsigned>(position.ComputeOffsetInContainerNode()); |
+ |
+ for (DocumentMarker* marker : MarkersFor(node, marker_types)) { |
+ if (marker->StartOffset() < offset && marker->EndOffset() > offset) |
+ return marker; |
+ } |
+ |
+ return Optional<DocumentMarker*>(); |
+} |
+ |
DocumentMarkerVector DocumentMarkerController::MarkersFor( |
Node* node, |
DocumentMarker::MarkerTypes marker_types) { |
@@ -367,37 +384,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; |