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

Side by Side Diff: chrome/browser/search/instant_io_context.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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/search/instant_io_context.h ('k') | chrome/browser/search/instant_service.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/search/instant_io_context.h" 5 #include "chrome/browser/search/instant_io_context.h"
6 6
7 #include "content/public/browser/browser_thread.h" 7 #include "content/public/browser/browser_thread.h"
8 #include "content/public/browser/resource_context.h" 8 #include "content/public/browser/resource_context.h"
9 #include "content/public/browser/resource_request_info.h" 9 #include "content/public/browser/resource_request_info.h"
10 #include "googleurl/src/gurl.h" 10 #include "googleurl/src/gurl.h"
(...skipping 17 matching lines...) Expand all
28 if (!info) 28 if (!info)
29 return NULL; 29 return NULL;
30 30
31 return GetDataForResourceContext(info->GetContext()); 31 return GetDataForResourceContext(info->GetContext());
32 } 32 }
33 33
34 } // namespace 34 } // namespace
35 35
36 const char InstantIOContext::kInstantIOContextKeyName[] = "instant_io_context"; 36 const char InstantIOContext::kInstantIOContextKeyName[] = "instant_io_context";
37 37
38 InstantIOContext::InstantIOContext() { 38 InstantIOContext::InstantIOContext()
39 : most_visited_item_cache_(kMaxInstantMostVisitedItemCacheSize) {
39 // The InstantIOContext is created on the UI thread but is accessed 40 // The InstantIOContext is created on the UI thread but is accessed
40 // on the IO thread. 41 // on the IO thread.
41 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 42 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
42 } 43 }
43 44
44 InstantIOContext::~InstantIOContext() { 45 InstantIOContext::~InstantIOContext() {
45 } 46 }
46 47
47 // static 48 // static
48 void InstantIOContext::SetUserDataOnIO( 49 void InstantIOContext::SetUserDataOnIO(
(...skipping 19 matching lines...) Expand all
68 } 69 }
69 70
70 // static 71 // static
71 void InstantIOContext::ClearInstantProcessesOnIO( 72 void InstantIOContext::ClearInstantProcessesOnIO(
72 scoped_refptr<InstantIOContext> instant_io_context) { 73 scoped_refptr<InstantIOContext> instant_io_context) {
73 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 74 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
74 instant_io_context->process_ids_.clear(); 75 instant_io_context->process_ids_.clear();
75 } 76 }
76 77
77 // static 78 // static
78 void InstantIOContext::AddMostVisitedItemIDOnIO( 79 void InstantIOContext::AddMostVisitedItemsOnIO(
79 scoped_refptr<InstantIOContext> instant_io_context, 80 scoped_refptr<InstantIOContext> instant_io_context,
80 uint64 most_visited_item_id, const GURL& url) { 81 std::vector<InstantMostVisitedItemIDPair> items) {
81 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 82 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
82 instant_io_context->most_visited_item_id_to_url_map_[most_visited_item_id] = 83 instant_io_context->most_visited_item_cache_.AddItemsWithRestrictedID(items);
83 url;
84 } 84 }
85 85
86 // static
87 void InstantIOContext::DeleteMostVisitedURLsOnIO(
88 scoped_refptr<InstantIOContext> instant_io_context,
89 std::vector<uint64> deleted_ids, bool all_history) {
90 if (all_history) {
91 instant_io_context->most_visited_item_id_to_url_map_.clear();
92 return;
93 }
94
95 for (size_t i = 0; i < deleted_ids.size(); ++i) {
96 instant_io_context->most_visited_item_id_to_url_map_.erase(
97 instant_io_context->most_visited_item_id_to_url_map_.find(
98 deleted_ids[i]));
99 }
100 }
101 86
102 // static 87 // static
103 bool InstantIOContext::ShouldServiceRequest(const net::URLRequest* request) { 88 bool InstantIOContext::ShouldServiceRequest(const net::URLRequest* request) {
104 const content::ResourceRequestInfo* info = 89 const content::ResourceRequestInfo* info =
105 content::ResourceRequestInfo::ForRequest(request); 90 content::ResourceRequestInfo::ForRequest(request);
106 if (!info) 91 if (!info)
107 return false; 92 return false;
108 93
109 InstantIOContext* instant_io_context = GetDataForRequest(request); 94 InstantIOContext* instant_io_context = GetDataForRequest(request);
110 if (!instant_io_context) 95 if (!instant_io_context)
111 return false; 96 return false;
112 97
113 int process_id = -1; 98 int process_id = -1;
114 int render_view_id = -1; 99 int render_view_id = -1;
115 if (info->GetAssociatedRenderView(&process_id, &render_view_id) && 100 if (info->GetAssociatedRenderView(&process_id, &render_view_id) &&
116 instant_io_context->IsInstantProcess(process_id)) 101 instant_io_context->IsInstantProcess(process_id))
117 return true; 102 return true;
118 return false; 103 return false;
119 } 104 }
120 105
121 // static 106 // static
122 bool InstantIOContext::GetURLForMostVisitedItemId( 107 bool InstantIOContext::GetURLForMostVisitedItemID(
123 const net::URLRequest* request, 108 const net::URLRequest* request,
124 uint64 most_visited_item_id, 109 InstantRestrictedID most_visited_item_id,
125 GURL* url) { 110 GURL* url) {
126 InstantIOContext* instant_io_context = GetDataForRequest(request); 111 InstantIOContext* instant_io_context = GetDataForRequest(request);
127 if (!instant_io_context) { 112 if (!instant_io_context) {
128 *url = GURL(); 113 *url = GURL();
129 return false; 114 return false;
130 } 115 }
131 116
132 return instant_io_context->GetURLForMostVisitedItemId(most_visited_item_id, 117 return instant_io_context->GetURLForMostVisitedItemID(most_visited_item_id,
133 url); 118 url);
134 } 119 }
135 120
136 bool InstantIOContext::IsInstantProcess(int process_id) const { 121 bool InstantIOContext::IsInstantProcess(int process_id) const {
137 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 122 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
138 return process_ids_.count(process_id) != 0; 123 return process_ids_.count(process_id) != 0;
139 } 124 }
140 125
141 bool InstantIOContext::GetURLForMostVisitedItemId(uint64 most_visited_item_id, 126 bool InstantIOContext::GetURLForMostVisitedItemID(
142 GURL* url) { 127 InstantRestrictedID most_visited_item_id,
143 std::map<uint64, GURL>::iterator it = 128 GURL* url) const {
144 most_visited_item_id_to_url_map_.find(most_visited_item_id); 129 InstantMostVisitedItem item;
145 if (it != most_visited_item_id_to_url_map_.end()) { 130 if (most_visited_item_cache_.GetItemWithRestrictedID(most_visited_item_id,
146 *url = it->second; 131 &item)) {
132 *url = item.url;
147 return true; 133 return true;
148 } 134 }
135
149 *url = GURL(); 136 *url = GURL();
150 return false; 137 return false;
151 } 138 }
OLDNEW
« no previous file with comments | « chrome/browser/search/instant_io_context.h ('k') | chrome/browser/search/instant_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698