Index: chrome/browser/instant/instant_io_context.cc |
diff --git a/chrome/browser/instant/instant_io_context.cc b/chrome/browser/instant/instant_io_context.cc |
index e2199d65889b750a80168106a674ccd767bf464b..d740c285775ad094497f17828342e1acb41df26d 100644 |
--- a/chrome/browser/instant/instant_io_context.cc |
+++ b/chrome/browser/instant/instant_io_context.cc |
@@ -14,6 +14,9 @@ using content::BrowserThread; |
namespace { |
+// Size of the most visited item cache. |
+const int kMostVisitedItemCacheSize = 1000; |
palmer
2013/03/13 23:50:37
You define this in two .cc files; should be in a s
dhollowa
2013/03/14 00:02:43
How are you picking this number? It seems too hig
Shishir
2013/03/14 19:53:03
We need a larger number because of the race condit
Shishir
2013/03/14 19:53:03
Done.
dhollowa
2013/03/14 23:40:00
This should be removed in favor of the common defi
|
+ |
// 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_(kMostVisitedItemCacheSize) { |
// 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) { |
+ const 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 restricted_id, |
GURL* url) { |
InstantIOContext* instant_io_context = GetDataForRequest(request); |
if (!instant_io_context) { |
@@ -129,8 +117,7 @@ bool InstantIOContext::GetURLForMostVisitedItemId( |
return false; |
} |
- return instant_io_context->GetURLForMostVisitedItemId(most_visited_item_id, |
- url); |
+ return instant_io_context->GetURLForMostVisitedItemID(restricted_id, url); |
} |
bool InstantIOContext::IsInstantProcess(int process_id) const { |
@@ -138,14 +125,15 @@ 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 restricted_id, |
+ GURL* url) const { |
+ InstantMostVisitedItem item; |
+ if (most_visited_item_cache_.GetItemWithRestrictedID(restricted_id, &item)) { |
+ *url = item.url; |
return true; |
} |
+ |
*url = GURL(); |
return false; |
} |