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

Side by Side Diff: chrome/browser/ui/search/instant_search_prerenderer.cc

Issue 2321083002: [NoStatePrefetch] Add performance histograms. (Closed)
Patch Set: Review comments Created 4 years, 3 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
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/ui/search/instant_search_prerenderer.h" 5 #include "chrome/browser/ui/search/instant_search_prerenderer.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "chrome/browser/prerender/prerender_handle.h" 9 #include "chrome/browser/prerender/prerender_handle.h"
10 #include "chrome/browser/prerender/prerender_manager.h" 10 #include "chrome/browser/prerender/prerender_manager.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 const gfx::Size& size) { 59 const gfx::Size& size) {
60 // TODO(kmadhusu): Enable Instant for Incognito profile. 60 // TODO(kmadhusu): Enable Instant for Incognito profile.
61 if (profile_->IsOffTheRecord()) 61 if (profile_->IsOffTheRecord())
62 return; 62 return;
63 63
64 // Only cancel the old prerender after starting the new one, so if the URLs 64 // Only cancel the old prerender after starting the new one, so if the URLs
65 // are the same, the underlying prerender will be reused. 65 // are the same, the underlying prerender will be reused.
66 std::unique_ptr<prerender::PrerenderHandle> old_prerender_handle = 66 std::unique_ptr<prerender::PrerenderHandle> old_prerender_handle =
67 std::move(prerender_handle_); 67 std::move(prerender_handle_);
68 prerender::PrerenderManager* prerender_manager = 68 prerender::PrerenderManager* prerender_manager =
69 prerender::PrerenderManagerFactory::GetForProfile(profile_); 69 prerender::PrerenderManagerFactory::GetForBrowserContext(profile_);
70 if (prerender_manager) { 70 if (prerender_manager) {
71 prerender_handle_ = prerender_manager->AddPrerenderForInstant( 71 prerender_handle_ = prerender_manager->AddPrerenderForInstant(
72 prerender_url_, session_storage_namespace, size); 72 prerender_url_, session_storage_namespace, size);
73 } 73 }
74 if (old_prerender_handle) 74 if (old_prerender_handle)
75 old_prerender_handle->OnCancel(); 75 old_prerender_handle->OnCancel();
76 } 76 }
77 77
78 void InstantSearchPrerenderer::Cancel() { 78 void InstantSearchPrerenderer::Cancel() {
79 if (!prerender_handle_) 79 if (!prerender_handle_)
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 122
123 return true; 123 return true;
124 } 124 }
125 125
126 bool InstantSearchPrerenderer::UsePrerenderedPage( 126 bool InstantSearchPrerenderer::UsePrerenderedPage(
127 const GURL& url, 127 const GURL& url,
128 chrome::NavigateParams* params) { 128 chrome::NavigateParams* params) {
129 base::string16 search_terms = 129 base::string16 search_terms =
130 search::ExtractSearchTermsFromURL(profile_, url); 130 search::ExtractSearchTermsFromURL(profile_, url);
131 prerender::PrerenderManager* prerender_manager = 131 prerender::PrerenderManager* prerender_manager =
132 prerender::PrerenderManagerFactory::GetForProfile(profile_); 132 prerender::PrerenderManagerFactory::GetForBrowserContext(profile_);
133 if (search_terms.empty() || !params->target_contents || 133 if (search_terms.empty() || !params->target_contents ||
134 !prerender_contents() || !prerender_manager || 134 !prerender_contents() || !prerender_manager ||
135 !QueryMatchesPrefetch(search_terms) || 135 !QueryMatchesPrefetch(search_terms) ||
136 params->disposition != WindowOpenDisposition::CURRENT_TAB) { 136 params->disposition != WindowOpenDisposition::CURRENT_TAB) {
137 Cancel(); 137 Cancel();
138 return false; 138 return false;
139 } 139 }
140 140
141 // Do not use prerendered page for renderer initiated search requests. 141 // Do not use prerendered page for renderer initiated search requests.
142 if (params->is_renderer_initiated && 142 if (params->is_renderer_initiated &&
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 content::WebContents* InstantSearchPrerenderer::prerender_contents() const { 182 content::WebContents* InstantSearchPrerenderer::prerender_contents() const {
183 return (prerender_handle_ && prerender_handle_->contents()) ? 183 return (prerender_handle_ && prerender_handle_->contents()) ?
184 prerender_handle_->contents()->prerender_contents() : NULL; 184 prerender_handle_->contents()->prerender_contents() : NULL;
185 } 185 }
186 186
187 bool InstantSearchPrerenderer::QueryMatchesPrefetch( 187 bool InstantSearchPrerenderer::QueryMatchesPrefetch(
188 const base::string16& query) const { 188 const base::string16& query) const {
189 return search::ShouldReuseInstantSearchBasePage() || 189 return search::ShouldReuseInstantSearchBasePage() ||
190 last_instant_suggestion_.text == query; 190 last_instant_suggestion_.text == query;
191 } 191 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/browser_navigator.cc ('k') | chrome/browser/ui/search/instant_search_prerenderer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698