| 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 "chrome/browser/history/shortcuts_backend.h" | 5 #include "chrome/browser/history/shortcuts_backend.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 void ShortcutsBackend::Observe(int type, | 220 void ShortcutsBackend::Observe(int type, |
| 221 const content::NotificationSource& source, | 221 const content::NotificationSource& source, |
| 222 const content::NotificationDetails& details) { | 222 const content::NotificationDetails& details) { |
| 223 if (current_state_ != INITIALIZED) | 223 if (current_state_ != INITIALIZED) |
| 224 return; | 224 return; |
| 225 if (type == chrome::NOTIFICATION_HISTORY_URLS_DELETED) { | 225 if (type == chrome::NOTIFICATION_HISTORY_URLS_DELETED) { |
| 226 if (content::Details<const history::URLsDeletedDetails>(details)-> | 226 if (content::Details<const history::URLsDeletedDetails>(details)-> |
| 227 all_history) { | 227 all_history) { |
| 228 DeleteAllShortcuts(); | 228 DeleteAllShortcuts(); |
| 229 } | 229 } |
| 230 const std::set<GURL>& urls = | 230 const URLRows& rows( |
| 231 content::Details<const history::URLsDeletedDetails>(details)->urls; | 231 content::Details<const history::URLsDeletedDetails>(details)->rows); |
| 232 std::vector<std::string> shortcut_ids; | 232 std::vector<std::string> shortcut_ids; |
| 233 | 233 |
| 234 for (GuidToShortcutsIteratorMap::iterator it = guid_map_.begin(); | 234 for (GuidToShortcutsIteratorMap::iterator it = guid_map_.begin(); |
| 235 it != guid_map_.end(); ++it) { | 235 it != guid_map_.end(); ++it) { |
| 236 if (urls.find(it->second->second.url) != urls.end()) | 236 if (std::find_if(rows.begin(), rows.end(), |
| 237 URLRow::URLRowHasURL(it->second->second.url)) != |
| 238 rows.end()) |
| 237 shortcut_ids.push_back(it->first); | 239 shortcut_ids.push_back(it->first); |
| 238 } | 240 } |
| 239 DeleteShortcutsWithIds(shortcut_ids); | 241 DeleteShortcutsWithIds(shortcut_ids); |
| 240 return; | 242 return; |
| 241 } | 243 } |
| 242 | 244 |
| 243 DCHECK(type == chrome::NOTIFICATION_OMNIBOX_OPENED_URL); | 245 DCHECK(type == chrome::NOTIFICATION_OMNIBOX_OPENED_URL); |
| 244 | 246 |
| 245 AutocompleteLog* log = content::Details<AutocompleteLog>(details).ptr(); | 247 AutocompleteLog* log = content::Details<AutocompleteLog>(details).ptr(); |
| 246 string16 text_lowercase(base::i18n::ToLower(log->text)); | 248 string16 text_lowercase(base::i18n::ToLower(log->text)); |
| 247 | 249 |
| 248 const AutocompleteMatch& match(log->result.match_at(log->selected_index)); | 250 const AutocompleteMatch& match(log->result.match_at(log->selected_index)); |
| 249 for (ShortcutMap::iterator it = shortcuts_map_.lower_bound(text_lowercase); | 251 for (ShortcutMap::iterator it = shortcuts_map_.lower_bound(text_lowercase); |
| 250 it != shortcuts_map_.end() && | 252 it != shortcuts_map_.end() && |
| 251 StartsWith(it->first, text_lowercase, true); ++it) { | 253 StartsWith(it->first, text_lowercase, true); ++it) { |
| 252 if (match.destination_url == it->second.url) { | 254 if (match.destination_url == it->second.url) { |
| 253 UpdateShortcut(Shortcut(it->second.id, log->text, match.destination_url, | 255 UpdateShortcut(Shortcut(it->second.id, log->text, match.destination_url, |
| 254 match.contents, match.contents_class, match.description, | 256 match.contents, match.contents_class, match.description, |
| 255 match.description_class, base::Time::Now(), | 257 match.description_class, base::Time::Now(), |
| 256 it->second.number_of_hits + 1)); | 258 it->second.number_of_hits + 1)); |
| 257 return; | 259 return; |
| 258 } | 260 } |
| 259 } | 261 } |
| 260 AddShortcut(Shortcut(guid::GenerateGUID(), log->text, match.destination_url, | 262 AddShortcut(Shortcut(guid::GenerateGUID(), log->text, match.destination_url, |
| 261 match.contents, match.contents_class, match.description, | 263 match.contents, match.contents_class, match.description, |
| 262 match.description_class, base::Time::Now(), 1)); | 264 match.description_class, base::Time::Now(), 1)); |
| 263 } | 265 } |
| 264 | 266 |
| 265 } // namespace history | 267 } // namespace history |
| OLD | NEW |