| 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 36c053690e7d8cbf30bd4a2ca52940f4bc3247ab..689a6e5eac2673266fc0a1031ef1ed8cbeaffa02 100644
|
| --- a/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp
|
| +++ b/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp
|
| @@ -252,15 +252,14 @@ void DocumentMarkerController::MoveMarkers(Node* src_node,
|
| MarkerLists* dst_markers = markers_.at(dst_node);
|
|
|
| bool doc_dirty = false;
|
| - for (size_t marker_list_index = 0; marker_list_index < src_markers->size();
|
| - ++marker_list_index) {
|
| - MarkerList* src_list = src_markers->at(marker_list_index);
|
| + for (DocumentMarker::MarkerType type : DocumentMarker::AllMarkers()) {
|
| + MarkerList* src_list = ListForType(src_markers, type);
|
| if (!src_list)
|
| continue;
|
|
|
| - if (!dst_markers->at(marker_list_index))
|
| - dst_markers->at(marker_list_index) = new MarkerList;
|
| - MarkerList* dst_list = dst_markers->at(marker_list_index);
|
| + if (!ListForType(dst_markers, type))
|
| + ListForType(dst_markers, type) = new MarkerList;
|
| + MarkerList* dst_list = ListForType(dst_markers, type);
|
|
|
| if (DocumentMarkerListEditor::MoveMarkers(src_list, length, dst_list))
|
| doc_dirty = true;
|
| @@ -291,17 +290,15 @@ void DocumentMarkerController::RemoveMarkers(
|
|
|
| bool doc_dirty = false;
|
| size_t empty_lists_count = 0;
|
| - for (size_t marker_list_index = 0;
|
| - marker_list_index < DocumentMarker::kMarkerTypeIndexesCount;
|
| - ++marker_list_index) {
|
| - Member<MarkerList>& list = (*markers)[marker_list_index];
|
| + for (DocumentMarker::MarkerType type : DocumentMarker::AllMarkers()) {
|
| + Member<MarkerList>& list = ListForType(markers, type);
|
| if (!list || list->IsEmpty()) {
|
| if (list.Get() && list->IsEmpty())
|
| list.Clear();
|
| ++empty_lists_count;
|
| continue;
|
| }
|
| - if (!marker_types.Contains((*list->begin())->GetType()))
|
| + if (!marker_types.Contains(type))
|
| continue;
|
|
|
| if (DocumentMarkerListEditor::RemoveMarkers(list, start_offset, length))
|
| @@ -335,10 +332,8 @@ DocumentMarkerVector DocumentMarkerController::MarkersFor(
|
| if (!markers)
|
| return result;
|
|
|
| - for (size_t marker_list_index = 0;
|
| - marker_list_index < DocumentMarker::kMarkerTypeIndexesCount;
|
| - ++marker_list_index) {
|
| - Member<MarkerList>& list = (*markers)[marker_list_index];
|
| + for (DocumentMarker::MarkerType type : DocumentMarker::AllMarkers()) {
|
| + Member<MarkerList>& list = ListForType(markers, type);
|
| if (!list || list->IsEmpty() ||
|
| !marker_types.Contains((*list->begin())->GetType()))
|
| continue;
|
| @@ -359,10 +354,8 @@ DocumentMarkerVector DocumentMarkerController::Markers() {
|
| DocumentMarkerVector result;
|
| for (MarkerMap::iterator i = markers_.begin(); i != markers_.end(); ++i) {
|
| MarkerLists* markers = i->value.Get();
|
| - for (size_t marker_list_index = 0;
|
| - marker_list_index < DocumentMarker::kMarkerTypeIndexesCount;
|
| - ++marker_list_index) {
|
| - Member<MarkerList>& list = (*markers)[marker_list_index];
|
| + for (DocumentMarker::MarkerType type : DocumentMarker::AllMarkers()) {
|
| + Member<MarkerList>& list = ListForType(markers, type);
|
| for (size_t j = 0; list.Get() && j < list->size(); ++j)
|
| result.push_back(list->at(j).Get());
|
| }
|
| @@ -423,12 +416,9 @@ Vector<IntRect> DocumentMarkerController::RenderedRectsForMarkers(
|
| if (!node.isConnected())
|
| continue;
|
| MarkerLists* markers = node_iterator->value.Get();
|
| - for (size_t marker_list_index = 0;
|
| - marker_list_index < DocumentMarker::kMarkerTypeIndexesCount;
|
| - ++marker_list_index) {
|
| - Member<MarkerList>& list = (*markers)[marker_list_index];
|
| - if (!list || list->IsEmpty() ||
|
| - (*list->begin())->GetType() != marker_type)
|
| + for (DocumentMarker::MarkerType type : DocumentMarker::AllMarkers()) {
|
| + Member<MarkerList>& list = ListForType(markers, type);
|
| + if (!list || list->IsEmpty() || type != marker_type)
|
| continue;
|
| for (unsigned marker_index = 0; marker_index < list->size();
|
| ++marker_index) {
|
| @@ -514,11 +504,9 @@ void DocumentMarkerController::RemoveMarkers(
|
| const Node& node = *node_markers.key;
|
| if (!node.IsTextNode()) // MarkerRemoverPredicate requires a Text node.
|
| continue;
|
| - MarkerLists& markers = *node_markers.value;
|
| - for (size_t marker_list_index = 0;
|
| - marker_list_index < DocumentMarker::kMarkerTypeIndexesCount;
|
| - ++marker_list_index) {
|
| - Member<MarkerList>& list = markers[marker_list_index];
|
| + MarkerLists* markers = node_markers.value;
|
| + for (DocumentMarker::MarkerType type : DocumentMarker::AllMarkers()) {
|
| + Member<MarkerList>& list = ListForType(markers, type);
|
| if (!list)
|
| continue;
|
| bool removed_markers = false;
|
| @@ -529,8 +517,7 @@ void DocumentMarkerController::RemoveMarkers(
|
| removed_markers = true;
|
| }
|
| }
|
| - if (removed_markers &&
|
| - marker_list_index == DocumentMarker::kTextMatchMarkerIndex)
|
| + if (removed_markers && type == DocumentMarker::kTextMatch)
|
| InvalidatePaintForTickmarks(node);
|
| }
|
| }
|
| @@ -567,17 +554,15 @@ void DocumentMarkerController::RemoveMarkersFromList(
|
| } else {
|
| MarkerLists* markers = iterator->value.Get();
|
|
|
| - for (size_t marker_list_index = 0;
|
| - marker_list_index < DocumentMarker::kMarkerTypeIndexesCount;
|
| - ++marker_list_index) {
|
| - Member<MarkerList>& list = (*markers)[marker_list_index];
|
| + for (DocumentMarker::MarkerType type : DocumentMarker::AllMarkers()) {
|
| + Member<MarkerList>& list = ListForType(markers, type);
|
| if (!list || list->IsEmpty()) {
|
| if (list.Get() && list->IsEmpty())
|
| list.Clear();
|
| ++empty_lists_count;
|
| continue;
|
| }
|
| - if (marker_types.Contains((*list->begin())->GetType())) {
|
| + if (marker_types.Contains(type)) {
|
| list->clear();
|
| list.Clear();
|
| ++empty_lists_count;
|
| @@ -618,12 +603,9 @@ void DocumentMarkerController::RepaintMarkers(
|
|
|
| // inner loop: process each marker in the current node
|
| MarkerLists* markers = i->value.Get();
|
| - for (size_t marker_list_index = 0;
|
| - marker_list_index < DocumentMarker::kMarkerTypeIndexesCount;
|
| - ++marker_list_index) {
|
| - Member<MarkerList>& list = (*markers)[marker_list_index];
|
| - if (!list || list->IsEmpty() ||
|
| - !marker_types.Contains((*list->begin())->GetType()))
|
| + for (DocumentMarker::MarkerType type : DocumentMarker::AllMarkers()) {
|
| + Member<MarkerList>& list = ListForType(markers, type);
|
| + if (!list || list->IsEmpty() || !marker_types.Contains(type))
|
| continue;
|
|
|
| // cause the node to be redrawn
|
| @@ -707,10 +689,8 @@ void DocumentMarkerController::ShowMarkers() const {
|
| const Node* node = node_iterator->key;
|
| builder.Append(String::Format("%p", node));
|
| MarkerLists* markers = markers_.at(node);
|
| - for (size_t marker_list_index = 0;
|
| - marker_list_index < DocumentMarker::kMarkerTypeIndexesCount;
|
| - ++marker_list_index) {
|
| - Member<MarkerList>& list = (*markers)[marker_list_index];
|
| + for (DocumentMarker::MarkerType type : DocumentMarker::AllMarkers()) {
|
| + Member<MarkerList>& list = ListForType(markers, type);
|
| for (unsigned marker_index = 0; list.Get() && marker_index < list->size();
|
| ++marker_index) {
|
| DocumentMarker* marker = list->at(marker_index).Get();
|
|
|