OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/omnibox/browser/url_index_private_data.h" | 5 #include "components/omnibox/browser/url_index_private_data.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <functional> | 9 #include <functional> |
10 #include <iterator> | 10 #include <iterator> |
(...skipping 581 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
592 // construct a flat_set than to insert elements one by one. | 592 // construct a flat_set than to insert elements one by one. |
593 HistoryIDVector buffer; | 593 HistoryIDVector buffer; |
594 for (WordID word_id : word_id_set) { | 594 for (WordID word_id : word_id_set) { |
595 WordIDHistoryMap::iterator word_iter = word_id_history_map_.find(word_id); | 595 WordIDHistoryMap::iterator word_iter = word_id_history_map_.find(word_id); |
596 if (word_iter != word_id_history_map_.end()) { | 596 if (word_iter != word_id_history_map_.end()) { |
597 HistoryIDSet& word_history_id_set(word_iter->second); | 597 HistoryIDSet& word_history_id_set(word_iter->second); |
598 buffer.insert(buffer.end(), word_history_id_set.begin(), | 598 buffer.insert(buffer.end(), word_history_id_set.begin(), |
599 word_history_id_set.end()); | 599 word_history_id_set.end()); |
600 } | 600 } |
601 } | 601 } |
602 HistoryIDSet history_id_set(buffer.begin(), buffer.end()); | 602 HistoryIDSet history_id_set(buffer.begin(), buffer.end(), |
| 603 base::KEEP_FIRST_OF_DUPES); |
603 | 604 |
604 // Record a new cache entry for this word if the term is longer than | 605 // Record a new cache entry for this word if the term is longer than |
605 // a single character. | 606 // a single character. |
606 if (term_length > 1) | 607 if (term_length > 1) |
607 search_term_cache_[term] = SearchTermCacheItem(word_id_set, history_id_set); | 608 search_term_cache_[term] = SearchTermCacheItem(word_id_set, history_id_set); |
608 | 609 |
609 return history_id_set; | 610 return history_id_set; |
610 } | 611 } |
611 | 612 |
612 WordIDSet URLIndexPrivateData::WordIDSetForTermChars( | 613 WordIDSet URLIndexPrivateData::WordIDSetForTermChars( |
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1082 if (actual_item_count == 0 || actual_item_count != expected_item_count) | 1083 if (actual_item_count == 0 || actual_item_count != expected_item_count) |
1083 return false; | 1084 return false; |
1084 | 1085 |
1085 for (const auto& entry : list_item.char_word_map_entry()) { | 1086 for (const auto& entry : list_item.char_word_map_entry()) { |
1086 expected_item_count = entry.item_count(); | 1087 expected_item_count = entry.item_count(); |
1087 actual_item_count = entry.word_id_size(); | 1088 actual_item_count = entry.word_id_size(); |
1088 if (actual_item_count == 0 || actual_item_count != expected_item_count) | 1089 if (actual_item_count == 0 || actual_item_count != expected_item_count) |
1089 return false; | 1090 return false; |
1090 base::char16 uni_char = static_cast<base::char16>(entry.char_16()); | 1091 base::char16 uni_char = static_cast<base::char16>(entry.char_16()); |
1091 const RepeatedField<int32_t>& word_ids = entry.word_id(); | 1092 const RepeatedField<int32_t>& word_ids = entry.word_id(); |
1092 char_word_map_[uni_char] = {word_ids.begin(), word_ids.end()}; | 1093 char_word_map_[uni_char] = |
| 1094 WordIDSet(word_ids.begin(), word_ids.end(), base::KEEP_FIRST_OF_DUPES); |
1093 } | 1095 } |
1094 return true; | 1096 return true; |
1095 } | 1097 } |
1096 | 1098 |
1097 bool URLIndexPrivateData::RestoreWordIDHistoryMap( | 1099 bool URLIndexPrivateData::RestoreWordIDHistoryMap( |
1098 const InMemoryURLIndexCacheItem& cache) { | 1100 const InMemoryURLIndexCacheItem& cache) { |
1099 if (!cache.has_word_id_history_map()) | 1101 if (!cache.has_word_id_history_map()) |
1100 return false; | 1102 return false; |
1101 const WordIDHistoryMapItem& list_item(cache.word_id_history_map()); | 1103 const WordIDHistoryMapItem& list_item(cache.word_id_history_map()); |
1102 uint32_t expected_item_count = list_item.item_count(); | 1104 uint32_t expected_item_count = list_item.item_count(); |
1103 uint32_t actual_item_count = list_item.word_id_history_map_entry_size(); | 1105 uint32_t actual_item_count = list_item.word_id_history_map_entry_size(); |
1104 if (actual_item_count == 0 || actual_item_count != expected_item_count) | 1106 if (actual_item_count == 0 || actual_item_count != expected_item_count) |
1105 return false; | 1107 return false; |
1106 for (const auto& entry : list_item.word_id_history_map_entry()) { | 1108 for (const auto& entry : list_item.word_id_history_map_entry()) { |
1107 expected_item_count = entry.item_count(); | 1109 expected_item_count = entry.item_count(); |
1108 actual_item_count = entry.history_id_size(); | 1110 actual_item_count = entry.history_id_size(); |
1109 if (actual_item_count == 0 || actual_item_count != expected_item_count) | 1111 if (actual_item_count == 0 || actual_item_count != expected_item_count) |
1110 return false; | 1112 return false; |
1111 WordID word_id = entry.word_id(); | 1113 WordID word_id = entry.word_id(); |
1112 const RepeatedField<int64_t>& history_ids = entry.history_id(); | 1114 const RepeatedField<int64_t>& history_ids = entry.history_id(); |
1113 word_id_history_map_[word_id] = {history_ids.begin(), history_ids.end()}; | 1115 word_id_history_map_[word_id] = HistoryIDSet( |
| 1116 history_ids.begin(), history_ids.end(), base::KEEP_FIRST_OF_DUPES); |
1114 for (HistoryID history_id : history_ids) | 1117 for (HistoryID history_id : history_ids) |
1115 history_id_word_map_[history_id].insert(word_id); | 1118 history_id_word_map_[history_id].insert(word_id); |
1116 } | 1119 } |
1117 return true; | 1120 return true; |
1118 } | 1121 } |
1119 | 1122 |
1120 bool URLIndexPrivateData::RestoreHistoryInfoMap( | 1123 bool URLIndexPrivateData::RestoreHistoryInfoMap( |
1121 const InMemoryURLIndexCacheItem& cache) { | 1124 const InMemoryURLIndexCacheItem& cache) { |
1122 if (!cache.has_history_info_map()) | 1125 if (!cache.has_history_info_map()) |
1123 return false; | 1126 return false; |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1263 // First cut: typed count, visit count, recency. | 1266 // First cut: typed count, visit count, recency. |
1264 // TODO(mrossetti): This is too simplistic. Consider an approach which ranks | 1267 // TODO(mrossetti): This is too simplistic. Consider an approach which ranks |
1265 // recently visited (within the last 12/24 hours) as highly important. Get | 1268 // recently visited (within the last 12/24 hours) as highly important. Get |
1266 // input from mpearson. | 1269 // input from mpearson. |
1267 if (r1.typed_count() != r2.typed_count()) | 1270 if (r1.typed_count() != r2.typed_count()) |
1268 return (r1.typed_count() > r2.typed_count()); | 1271 return (r1.typed_count() > r2.typed_count()); |
1269 if (r1.visit_count() != r2.visit_count()) | 1272 if (r1.visit_count() != r2.visit_count()) |
1270 return (r1.visit_count() > r2.visit_count()); | 1273 return (r1.visit_count() > r2.visit_count()); |
1271 return (r1.last_visit() > r2.last_visit()); | 1274 return (r1.last_visit() > r2.last_visit()); |
1272 } | 1275 } |
OLD | NEW |