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 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 70 case DocumentMarker::kComposition: | 70 case DocumentMarker::kComposition: |
| 71 return DocumentMarker::kCompositionMarkerIndex; | 71 return DocumentMarker::kCompositionMarkerIndex; |
| 72 } | 72 } |
| 73 | 73 |
| 74 NOTREACHED(); | 74 NOTREACHED(); |
| 75 return DocumentMarker::kSpellingMarkerIndex; | 75 return DocumentMarker::kSpellingMarkerIndex; |
| 76 } | 76 } |
| 77 | 77 |
| 78 } // namespace | 78 } // namespace |
| 79 | 79 |
| 80 Member<DocumentMarkerController::MarkerList>& | |
| 81 DocumentMarkerController::ListForType(MarkerLists* marker_lists, | |
|
rlanday
2017/04/17 08:19:46
I was confused when writing this why I have to spe
| |
| 82 DocumentMarker::MarkerType type) { | |
| 83 size_t marker_list_index = MarkerTypeToMarkerIndex(type); | |
|
yosin_UTC9
2017/04/17 09:13:44
nit: s/size_t/const size_t/
| |
| 84 return marker_lists->at(marker_list_index); | |
|
yosin_UTC9
2017/04/17 09:13:44
nit: It is OK to use |marker_lists[marker_list_ind
rlanday
2017/04/18 01:48:04
Ah, I didn't realize this did bounds checking, I j
| |
| 85 } | |
| 86 | |
| 80 inline bool DocumentMarkerController::PossiblyHasMarkers( | 87 inline bool DocumentMarkerController::PossiblyHasMarkers( |
| 81 DocumentMarker::MarkerTypes types) { | 88 DocumentMarker::MarkerTypes types) { |
| 82 return possibly_existing_marker_types_.Intersects(types); | 89 return possibly_existing_marker_types_.Intersects(types); |
| 83 } | 90 } |
| 84 | 91 |
| 85 DocumentMarkerController::DocumentMarkerController(Document& document) | 92 DocumentMarkerController::DocumentMarkerController(Document& document) |
| 86 : possibly_existing_marker_types_(0), document_(&document) { | 93 : possibly_existing_marker_types_(0), document_(&document) { |
| 87 SetContext(&document); | 94 SetContext(&document); |
| 88 } | 95 } |
| 89 | 96 |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 220 | 227 |
| 221 possibly_existing_marker_types_.Add(new_marker.GetType()); | 228 possibly_existing_marker_types_.Add(new_marker.GetType()); |
| 222 | 229 |
| 223 Member<MarkerLists>& markers = | 230 Member<MarkerLists>& markers = |
| 224 markers_.insert(node, nullptr).stored_value->value; | 231 markers_.insert(node, nullptr).stored_value->value; |
| 225 if (!markers) { | 232 if (!markers) { |
| 226 markers = new MarkerLists; | 233 markers = new MarkerLists; |
| 227 markers->Grow(DocumentMarker::kMarkerTypeIndexesCount); | 234 markers->Grow(DocumentMarker::kMarkerTypeIndexesCount); |
| 228 } | 235 } |
| 229 | 236 |
| 230 DocumentMarker::MarkerTypeIndex marker_list_index = | 237 DocumentMarker::MarkerType new_marker_type = new_marker.GetType(); |
|
yosin_UTC9
2017/04/17 09:13:44
nit: s/DocumentMarker::MarkerType/const DocumentMa
| |
| 231 MarkerTypeToMarkerIndex(new_marker.GetType()); | 238 if (!ListForType(markers, new_marker_type)) |
| 232 if (!markers->at(marker_list_index)) { | 239 ListForType(markers, new_marker_type) = new MarkerList; |
| 233 markers->at(marker_list_index) = new MarkerList; | |
| 234 } | |
| 235 | 240 |
| 236 Member<MarkerList>& list = markers->at(marker_list_index); | 241 Member<MarkerList>& list = ListForType(markers, new_marker_type); |
| 237 DocumentMarkerListEditor::AddMarker(list, &new_marker); | 242 DocumentMarkerListEditor::AddMarker(list, &new_marker); |
| 238 | 243 |
| 239 // repaint the affected node | 244 // repaint the affected node |
| 240 if (node->GetLayoutObject()) { | 245 if (node->GetLayoutObject()) { |
| 241 node->GetLayoutObject()->SetShouldDoFullPaintInvalidation( | 246 node->GetLayoutObject()->SetShouldDoFullPaintInvalidation( |
| 242 kPaintInvalidationDocumentMarkerChange); | 247 kPaintInvalidationDocumentMarkerChange); |
| 243 } | 248 } |
| 244 } | 249 } |
| 245 | 250 |
| 246 // TODO(rlanday): move DocumentMarkerListEditor into its own .h/.cpp files | 251 // TODO(rlanday): move DocumentMarkerListEditor into its own .h/.cpp files |
| (...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 767 | 772 |
| 768 bool DocumentMarkerController::SetMarkersActive(Node* node, | 773 bool DocumentMarkerController::SetMarkersActive(Node* node, |
| 769 unsigned start_offset, | 774 unsigned start_offset, |
| 770 unsigned end_offset, | 775 unsigned end_offset, |
| 771 bool active) { | 776 bool active) { |
| 772 MarkerLists* markers = markers_.at(node); | 777 MarkerLists* markers = markers_.at(node); |
| 773 if (!markers) | 778 if (!markers) |
| 774 return false; | 779 return false; |
| 775 | 780 |
| 776 bool doc_dirty = false; | 781 bool doc_dirty = false; |
| 777 Member<MarkerList>& list = | 782 Member<MarkerList>& list = ListForType(markers, DocumentMarker::kTextMatch); |
| 778 (*markers)[MarkerTypeToMarkerIndex(DocumentMarker::kTextMatch)]; | |
| 779 if (!list) | 783 if (!list) |
| 780 return false; | 784 return false; |
| 781 MarkerList::iterator start_pos = | 785 MarkerList::iterator start_pos = |
| 782 std::upper_bound(list->begin(), list->end(), start_offset, EndsBefore); | 786 std::upper_bound(list->begin(), list->end(), start_offset, EndsBefore); |
| 783 for (MarkerList::iterator marker = start_pos; marker != list->end(); | 787 for (MarkerList::iterator marker = start_pos; marker != list->end(); |
| 784 ++marker) { | 788 ++marker) { |
| 785 // Markers are returned in order, so stop if we are now past the specified | 789 // Markers are returned in order, so stop if we are now past the specified |
| 786 // range. | 790 // range. |
| 787 if ((*marker)->StartOffset() >= end_offset) | 791 if ((*marker)->StartOffset() >= end_offset) |
| 788 break; | 792 break; |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 894 } | 898 } |
| 895 | 899 |
| 896 } // namespace blink | 900 } // namespace blink |
| 897 | 901 |
| 898 #ifndef NDEBUG | 902 #ifndef NDEBUG |
| 899 void showDocumentMarkers(const blink::DocumentMarkerController* controller) { | 903 void showDocumentMarkers(const blink::DocumentMarkerController* controller) { |
| 900 if (controller) | 904 if (controller) |
| 901 controller->ShowMarkers(); | 905 controller->ShowMarkers(); |
| 902 } | 906 } |
| 903 #endif | 907 #endif |
| OLD | NEW |