Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |