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

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

Issue 2896703003: [DMC #11] Move some rendered rect method impls from DMC To TextMatchMarkerListImpl (Closed)
Patch Set: Rebase Created 3 years, 6 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights
7 * reserved. 7 * reserved.
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved.
9 * (http://www.torchmobile.com/) 9 * (http://www.torchmobile.com/)
10 * Copyright (C) Research In Motion Limited 2010. All rights reserved. 10 * Copyright (C) Research In Motion Limited 2010. All rights reserved.
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 } 389 }
390 std::sort(result.begin(), result.end(), 390 std::sort(result.begin(), result.end(),
391 [](const Member<DocumentMarker>& marker1, 391 [](const Member<DocumentMarker>& marker1,
392 const Member<DocumentMarker>& marker2) { 392 const Member<DocumentMarker>& marker2) {
393 return marker1->StartOffset() < marker2->StartOffset(); 393 return marker1->StartOffset() < marker2->StartOffset();
394 }); 394 });
395 return result; 395 return result;
396 } 396 }
397 397
398 Vector<IntRect> DocumentMarkerController::RenderedRectsForTextMatchMarkers() { 398 Vector<IntRect> DocumentMarkerController::RenderedRectsForTextMatchMarkers() {
399 DCHECK(!document_->View()->NeedsLayout());
400 DCHECK(!document_->NeedsLayoutTreeUpdate());
401
399 Vector<IntRect> result; 402 Vector<IntRect> result;
403
400 if (!PossiblyHasMarkers(DocumentMarker::kTextMatch)) 404 if (!PossiblyHasMarkers(DocumentMarker::kTextMatch))
401 return result; 405 return result;
402 DCHECK(!(markers_.IsEmpty())); 406 DCHECK(!(markers_.IsEmpty()));
403 407
404 // outer loop: process each node 408 // outer loop: process each node
405 MarkerMap::iterator end = markers_.end(); 409 MarkerMap::iterator end = markers_.end();
406 for (MarkerMap::iterator node_iterator = markers_.begin(); 410 for (MarkerMap::iterator node_iterator = markers_.begin();
407 node_iterator != end; ++node_iterator) { 411 node_iterator != end; ++node_iterator) {
408 // inner loop; process each marker in this node 412 // inner loop; process each marker in this node
409 const Node& node = *node_iterator->key; 413 const Node& node = *node_iterator->key;
410 if (!node.isConnected()) 414 if (!node.isConnected())
411 continue; 415 continue;
412 MarkerLists* markers = node_iterator->value.Get(); 416 MarkerLists* markers = node_iterator->value.Get();
413 DocumentMarkerList* const list = 417 DocumentMarkerList* const list =
414 ListForType(markers, DocumentMarker::kTextMatch); 418 ListForType(markers, DocumentMarker::kTextMatch);
415 if (!list || list->IsEmpty()) 419 if (!list)
416 continue; 420 continue;
417 421 result.AppendVector(ToTextMatchMarkerListImpl(list)->RenderedRects(node));
418 for (DocumentMarker* marker : list->GetMarkers()) {
419 RenderedDocumentMarker* const rendered_marker =
420 ToRenderedDocumentMarker(marker);
421 UpdateMarkerRenderedRectIfNeeded(node, *rendered_marker);
422 if (!rendered_marker->IsRendered())
423 continue;
424 result.push_back(rendered_marker->RenderedRect());
425 }
426 } 422 }
427 423
428 return result; 424 return result;
425 }
426
427 // TODO(rlanday): move this to TextMatchMarkerListImpl.cpp
428 Vector<IntRect> TextMatchMarkerListImpl::RenderedRects(const Node& node) {
429 Vector<IntRect> result;
430
431 for (DocumentMarker* marker : markers_) {
432 RenderedDocumentMarker* const rendered_marker =
433 ToRenderedDocumentMarker(marker);
434 UpdateMarkerRenderedRectIfNeeded(node, *rendered_marker);
435 if (!rendered_marker->IsRendered())
436 continue;
437 result.push_back(rendered_marker->RenderedRect());
438 }
439
440 return result;
429 } 441 }
430 442
431 static void InvalidatePaintForTickmarks(const Node& node) { 443 static void InvalidatePaintForTickmarks(const Node& node) {
432 if (FrameView* frame_view = node.GetDocument().View()) 444 if (FrameView* frame_view = node.GetDocument().View())
433 frame_view->InvalidatePaintForTickmarks(); 445 frame_view->InvalidatePaintForTickmarks();
434 } 446 }
435 447
436 void DocumentMarkerController::UpdateMarkerRenderedRectIfNeeded( 448 // TODO(rlanday): move this to TextMatchMarkerListImpl.cpp
449 void TextMatchMarkerListImpl::UpdateMarkerRenderedRectIfNeeded(
yosin_UTC9 2017/05/24 09:17:23 Since this function is just two lines, let's expan
437 const Node& node, 450 const Node& node,
438 RenderedDocumentMarker& marker) { 451 RenderedDocumentMarker& marker) {
439 DCHECK(!document_->View() || !document_->View()->NeedsLayout());
440 DCHECK(!document_->NeedsLayoutTreeUpdate());
441 if (!marker.IsValid()) 452 if (!marker.IsValid())
442 UpdateMarkerRenderedRect(node, marker); 453 UpdateMarkerRenderedRect(node, marker);
443 } 454 }
444 455
445 void DocumentMarkerController::InvalidateRectsForTextMatchMarkersInNode( 456 void DocumentMarkerController::InvalidateRectsForTextMatchMarkersInNode(
446 const Node& node) { 457 const Node& node) {
447 MarkerLists* markers = markers_.at(&node); 458 MarkerLists* markers = markers_.at(&node);
448 459
449 const DocumentMarkerList* const marker_list = 460 const DocumentMarkerList* const marker_list =
450 ListForType(markers, DocumentMarker::kTextMatch); 461 ListForType(markers, DocumentMarker::kTextMatch);
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
732 } 743 }
733 744
734 } // namespace blink 745 } // namespace blink
735 746
736 #ifndef NDEBUG 747 #ifndef NDEBUG
737 void showDocumentMarkers(const blink::DocumentMarkerController* controller) { 748 void showDocumentMarkers(const blink::DocumentMarkerController* controller) {
738 if (controller) 749 if (controller)
739 controller->ShowMarkers(); 750 controller->ShowMarkers();
740 } 751 }
741 #endif 752 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698