Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(691)

Unified Diff: chrome/browser/search/instant_service.cc

Issue 12498002: InstantExtended: Adding InstantRestrictedIDCache. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixing android compile error. Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/search/instant_service.h ('k') | chrome/browser/ui/search/instant_controller.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/search/instant_service.cc
diff --git a/chrome/browser/search/instant_service.cc b/chrome/browser/search/instant_service.cc
index 00e34b5b9d8b6971eb820f30b90f4befdb8a85fc..d4d1d4a53a1074cb082dd786c60a8c6a749e1b5f 100644
--- a/chrome/browser/search/instant_service.cc
+++ b/chrome/browser/search/instant_service.cc
@@ -24,24 +24,9 @@
using content::BrowserThread;
-namespace {
-
-// Copies deleted urls out of the history data structure |details| into a
-// straight vector of GURLs.
-void HistoryDetailsToDeletedURLs(const history::URLsDeletedDetails& details,
- std::vector<GURL>* deleted_urls) {
- for (history::URLRows::const_iterator it = details.rows.begin();
- it != details.rows.end();
- ++it) {
- deleted_urls->push_back(it->url());
- }
-}
-
-} // namespace
-
InstantService::InstantService(Profile* profile)
: profile_(profile),
- last_most_visited_item_id_(0) {
+ most_visited_item_cache_(kMaxInstantMostVisitedItemCacheSize) {
// Stub for unit tests.
if (!BrowserThread::CurrentlyOn(BrowserThread::UI))
return;
@@ -49,9 +34,6 @@ InstantService::InstantService(Profile* profile)
registrar_.Add(this,
content::NOTIFICATION_RENDERER_PROCESS_TERMINATED,
content::NotificationService::AllSources());
- registrar_.Add(this,
- chrome::NOTIFICATION_HISTORY_URLS_DELETED,
- content::NotificationService::AllSources());
instant_io_context_ = new InstantIOContext();
@@ -84,11 +66,12 @@ const std::string InstantService::MaybeTranslateInstantPathOnUI(
if (!instant_service)
return path;
- uint64 most_visited_item_id = 0;
- if (base::StringToUint64(path, &most_visited_item_id)) {
- GURL url;
- if (instant_service->GetURLForMostVisitedItemId(most_visited_item_id, &url))
- return url.spec();
+ InstantRestrictedID restricted_id = 0;
+ DCHECK_EQ(sizeof(InstantRestrictedID), sizeof(int));
+ if (base::StringToInt(path, &restricted_id)) {
+ InstantMostVisitedItem item;
+ if (instant_service->GetMostVisitedItemForID(restricted_id, &item))
+ return item.url.spec();
}
return path;
}
@@ -96,13 +79,16 @@ const std::string InstantService::MaybeTranslateInstantPathOnUI(
const std::string InstantService::MaybeTranslateInstantPathOnIO(
const net::URLRequest* request, const std::string& path) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- uint64 most_visited_item_id = 0;
- if (base::StringToUint64(path, &most_visited_item_id)) {
+
+ InstantRestrictedID restricted_id = 0;
+ DCHECK_EQ(sizeof(InstantRestrictedID), sizeof(int));
+ if (base::StringToInt(path, &restricted_id)) {
GURL url;
- if (InstantIOContext::GetURLForMostVisitedItemId(request,
- most_visited_item_id,
- &url))
+ if (InstantIOContext::GetURLForMostVisitedItemID(request,
+ restricted_id,
+ &url)) {
return url.spec();
+ }
}
return path;
}
@@ -113,8 +99,8 @@ bool InstantService::IsInstantPath(const GURL& url) {
std::string path = url.path().substr(1);
// Check that path is of Most Visited item ID form.
- uint64 dummy = 0;
- return base::StringToUint64(path, &dummy);
+ InstantRestrictedID dummy = 0;
+ return base::StringToInt(path, &dummy);
}
void InstantService::AddInstantProcess(int process_id) {
@@ -132,48 +118,32 @@ bool InstantService::IsInstantProcess(int process_id) const {
return process_ids_.find(process_id) != process_ids_.end();
}
-uint64 InstantService::AddURL(const GURL& url) {
- uint64 id = 0;
- if (GetMostVisitedItemIDForURL(url, &id))
- return id;
-
- last_most_visited_item_id_++;
- most_visited_item_id_to_url_map_[last_most_visited_item_id_] = url;
- url_to_most_visited_item_id_map_[url] = last_most_visited_item_id_;
+void InstantService::AddMostVisitedItems(
+ const std::vector<InstantMostVisitedItem>& items) {
+ most_visited_item_cache_.AddItems(items);
+ // Post task to the IO thread to copy the data.
if (instant_io_context_) {
+ std::vector<InstantMostVisitedItemIDPair> items;
+ most_visited_item_cache_.GetCurrentItems(&items);
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
- base::Bind(&InstantIOContext::AddMostVisitedItemIDOnIO,
- instant_io_context_, last_most_visited_item_id_, url));
+ base::Bind(&InstantIOContext::AddMostVisitedItemsOnIO,
+ instant_io_context_,
+ items));
}
-
- return last_most_visited_item_id_;
}
-bool InstantService::GetMostVisitedItemIDForURL(
- const GURL& url,
- uint64 *most_visited_item_id) {
- std::map<GURL, uint64>::iterator it =
- url_to_most_visited_item_id_map_.find(url);
- if (it != url_to_most_visited_item_id_map_.end()) {
- *most_visited_item_id = it->second;
- return true;
- }
- *most_visited_item_id = 0;
- return false;
+void InstantService::GetCurrentMostVisitedItems(
+ std::vector<InstantMostVisitedItemIDPair>* items) const {
+ most_visited_item_cache_.GetCurrentItems(items);
}
-bool InstantService::GetURLForMostVisitedItemId(uint64 most_visited_item_id,
- GURL* url) {
- std::map<uint64, GURL>::iterator it =
- most_visited_item_id_to_url_map_.find(most_visited_item_id);
- if (it != most_visited_item_id_to_url_map_.end()) {
- *url = it->second;
- return true;
- }
- *url = GURL();
- return false;
+bool InstantService::GetMostVisitedItemForID(
+ InstantRestrictedID most_visited_item_id,
+ InstantMostVisitedItem* item) const {
+ return most_visited_item_cache_.GetItemWithRestrictedID(
+ most_visited_item_id, item);
}
void InstantService::Shutdown() {
@@ -205,45 +175,7 @@ void InstantService::Observe(int type,
}
break;
}
- case chrome::NOTIFICATION_HISTORY_URLS_DELETED: {
- content::Details<history::URLsDeletedDetails> det(details);
- std::vector<GURL> deleted_urls;
- HistoryDetailsToDeletedURLs(*det.ptr(), &deleted_urls);
-
- std::vector<uint64> deleted_ids;
- if (det->all_history) {
- url_to_most_visited_item_id_map_.clear();
- most_visited_item_id_to_url_map_.clear();
- } else {
- DeleteHistoryURLs(deleted_urls, &deleted_ids);
- }
-
- if (instant_io_context_) {
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- base::Bind(&InstantIOContext::DeleteMostVisitedURLsOnIO,
- instant_io_context_, deleted_ids, det->all_history));
- }
- break;
- }
default:
NOTREACHED() << "Unexpected notification type in InstantService.";
}
}
-
-void InstantService::DeleteHistoryURLs(const std::vector<GURL>& deleted_urls,
- std::vector<uint64>* deleted_ids) {
- for (std::vector<GURL>::const_iterator it = deleted_urls.begin();
- it != deleted_urls.end();
- ++it) {
- std::map<GURL, uint64>::iterator item =
- url_to_most_visited_item_id_map_.find(*it);
- if (item != url_to_most_visited_item_id_map_.end()) {
- uint64 most_visited_item_id = item->second;
- url_to_most_visited_item_id_map_.erase(item);
- most_visited_item_id_to_url_map_.erase(
- most_visited_item_id_to_url_map_.find(most_visited_item_id));
- deleted_ids->push_back(most_visited_item_id);
- }
- }
-}
« no previous file with comments | « chrome/browser/search/instant_service.h ('k') | chrome/browser/ui/search/instant_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698