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

Unified Diff: chrome/browser/instant/instant_io_context.cc

Issue 12498002: InstantExtended: Adding InstantRestrictedIDCache. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merging David's and Sreeram's changes. 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
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;
}

Powered by Google App Engine
This is Rietveld 408576698