Chromium Code Reviews| Index: chrome/browser/search/instant_io_context.cc |
| diff --git a/chrome/browser/search/instant_io_context.cc b/chrome/browser/search/instant_io_context.cc |
| index ad813eaf877619c4862e9b90aa465faa622d6583..950b9e8b6ba2ae8ad21f8c7084266601f07a80c3 100644 |
| --- a/chrome/browser/search/instant_io_context.cc |
| +++ b/chrome/browser/search/instant_io_context.cc |
| @@ -14,6 +14,9 @@ using content::BrowserThread; |
| namespace { |
| +// Size of the most visited item cache. |
| +const int kMostVisitedItemCacheSize = 100; |
|
sreeram
2013/03/19 21:36:17
Not being used. Can be removed.
Shishir
2013/03/19 22:20:20
Done.
|
| + |
| // Retrieves the Instant data from the |context|'s named user-data. |
| InstantIOContext* GetDataForResourceContext( |
| content::ResourceContext* context) { |
| @@ -35,7 +38,8 @@ InstantIOContext* GetDataForRequest(const net::URLRequest* request) { |
| const char InstantIOContext::kInstantIOContextKeyName[] = "instant_io_context"; |
| -InstantIOContext::InstantIOContext() { |
| +InstantIOContext::InstantIOContext() |
| + : most_visited_item_cache_(kMaxInstantMostVisitedItemCacheSize) { |
| // The InstantIOContext is created on the UI thread but is accessed |
| // on the IO thread. |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| @@ -75,29 +79,13 @@ void InstantIOContext::ClearInstantProcessesOnIO( |
| } |
| // static |
| -void InstantIOContext::AddMostVisitedItemIDOnIO( |
| +void InstantIOContext::AddMostVisitedItemsOnIO( |
| scoped_refptr<InstantIOContext> instant_io_context, |
| - uint64 most_visited_item_id, const GURL& url) { |
| + std::vector<InstantMostVisitedItemIDPair> items) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| - instant_io_context->most_visited_item_id_to_url_map_[most_visited_item_id] = |
| - url; |
| + instant_io_context->most_visited_item_cache_.AddItemsWithRestrictedID(items); |
| } |
| -// static |
| -void InstantIOContext::DeleteMostVisitedURLsOnIO( |
| - scoped_refptr<InstantIOContext> instant_io_context, |
| - std::vector<uint64> deleted_ids, bool all_history) { |
| - if (all_history) { |
| - instant_io_context->most_visited_item_id_to_url_map_.clear(); |
| - return; |
| - } |
| - |
| - for (size_t i = 0; i < deleted_ids.size(); ++i) { |
| - instant_io_context->most_visited_item_id_to_url_map_.erase( |
| - instant_io_context->most_visited_item_id_to_url_map_.find( |
| - deleted_ids[i])); |
| - } |
| -} |
| // static |
| bool InstantIOContext::ShouldServiceRequest(const net::URLRequest* request) { |
| @@ -119,9 +107,9 @@ bool InstantIOContext::ShouldServiceRequest(const net::URLRequest* request) { |
| } |
| // static |
| -bool InstantIOContext::GetURLForMostVisitedItemId( |
| +bool InstantIOContext::GetURLForMostVisitedItemID( |
| const net::URLRequest* request, |
| - uint64 most_visited_item_id, |
| + InstantRestrictedID most_visited_item_id, |
| GURL* url) { |
| InstantIOContext* instant_io_context = GetDataForRequest(request); |
| if (!instant_io_context) { |
| @@ -129,7 +117,7 @@ bool InstantIOContext::GetURLForMostVisitedItemId( |
| return false; |
| } |
| - return instant_io_context->GetURLForMostVisitedItemId(most_visited_item_id, |
| + return instant_io_context->GetURLForMostVisitedItemID(most_visited_item_id, |
| url); |
| } |
| @@ -138,14 +126,16 @@ bool InstantIOContext::IsInstantProcess(int process_id) const { |
| return process_ids_.count(process_id) != 0; |
| } |
| -bool InstantIOContext::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; |
| +bool InstantIOContext::GetURLForMostVisitedItemID( |
| + InstantRestrictedID most_visited_item_id, |
| + GURL* url) const { |
| + InstantMostVisitedItem item; |
| + if (most_visited_item_cache_.GetItemWithRestrictedID(most_visited_item_id, |
| + &item)) { |
| + *url = item.url; |
| return true; |
| } |
| + |
| *url = GURL(); |
| return false; |
| } |