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

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

Issue 2883503004: [DMC #7] Only create RenderedDocumentMarkers for TextMatchMarkerListImpl (Closed)
Patch Set: Rebase on InvalidateRectsForAllMarkers() refactor Created 3 years, 7 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 8aaf49fe53aa7f49900a43d39865570044a37323..16a4f234c38afd00afb891c6fdad45264339ad0a 100644
--- a/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp
+++ b/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp
@@ -395,6 +395,10 @@ DocumentMarkerVector DocumentMarkerController::Markers() {
Vector<IntRect> DocumentMarkerController::RenderedRectsForMarkers(
DocumentMarker::MarkerType marker_type) {
+ // Only TextMatch markers can have rendered rects
+ // TODO(rlanday): remove marker_type parameter
+ DCHECK_EQ(marker_type, DocumentMarker::kTextMatch);
+
Vector<IntRect> result;
if (!PossiblyHasMarkers(marker_type))
@@ -410,17 +414,18 @@ Vector<IntRect> DocumentMarkerController::RenderedRectsForMarkers(
if (!node.isConnected())
continue;
MarkerLists* markers = node_iterator->value.Get();
- for (DocumentMarker::MarkerType type : DocumentMarker::AllMarkers()) {
- DocumentMarkerList* const list = ListForType(markers, type);
- if (!list || list->IsEmpty() || type != marker_type)
- continue;
+ DocumentMarkerList* const list =
+ ListForType(markers, DocumentMarker::kTextMatch);
+ if (!list || list->IsEmpty())
+ continue;
- for (RenderedDocumentMarker* rendered_marker : list->GetMarkers()) {
- UpdateMarkerRenderedRectIfNeeded(node, *rendered_marker);
- if (!rendered_marker->IsRendered())
- continue;
- result.push_back(rendered_marker->RenderedRect());
- }
+ for (DocumentMarker* marker : list->GetMarkers()) {
+ RenderedDocumentMarker* const rendered_marker =
+ ToRenderedDocumentMarker(marker);
+ UpdateMarkerRenderedRectIfNeeded(node, *rendered_marker);
+ if (!rendered_marker->IsRendered())
+ continue;
+ result.push_back(rendered_marker->RenderedRect());
}
}
@@ -445,18 +450,17 @@ void DocumentMarkerController::InvalidateRectsForMarkersInNode(
const Node& node) {
MarkerLists* markers = markers_.at(&node);
- for (auto& marker_list : *markers) {
- if (!marker_list || marker_list->IsEmpty())
- continue;
+ const DocumentMarkerList* const marker_list =
+ ListForType(markers, DocumentMarker::kTextMatch);
+ if (!marker_list || marker_list->IsEmpty())
+ return;
- const HeapVector<Member<RenderedDocumentMarker>>& markers_in_list =
- marker_list->GetMarkers();
- for (auto& marker : markers_in_list)
- marker->Invalidate();
+ const HeapVector<Member<DocumentMarker>>& markers_in_list =
+ marker_list->GetMarkers();
+ for (auto& marker : markers_in_list)
+ ToRenderedDocumentMarker(marker)->Invalidate();
- if (markers_in_list.front()->GetType() == DocumentMarker::kTextMatch)
- InvalidatePaintForTickmarks(node);
- }
+ InvalidatePaintForTickmarks(node);
}
void DocumentMarkerController::InvalidateRectsForAllMarkers() {
@@ -638,7 +642,7 @@ bool DocumentMarkerController::SetMarkersActive(Node* node,
if (!list)
return false;
- const HeapVector<Member<RenderedDocumentMarker>>& markers_in_list =
+ const HeapVector<Member<DocumentMarker>>& markers_in_list =
list->GetMarkers();
// TODO(rlanday): this assumes that the markers are stored in sorted order.
// This method should probably eventually be implemented by a
@@ -677,7 +681,7 @@ void DocumentMarkerController::ShowMarkers() const {
MarkerLists* markers = markers_.at(node);
for (DocumentMarker::MarkerType type : DocumentMarker::AllMarkers()) {
DocumentMarkerList* const list = ListForType(markers, type);
- const HeapVector<Member<RenderedDocumentMarker>>& markers_in_list =
+ const HeapVector<Member<DocumentMarker>>& markers_in_list =
list->GetMarkers();
for (const DocumentMarker* marker : markers_in_list) {
builder.Append(" ");

Powered by Google App Engine
This is Rietveld 408576698