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

Side by Side Diff: chrome/browser/autocomplete/autocomplete_edit.cc

Issue 10553029: Handle interface to prerenders. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 6 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/autocomplete/autocomplete_edit.h" 5 #include "chrome/browser/autocomplete/autocomplete_edit.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 UMA_HISTOGRAM_ENUMERATION("AutocompleteActionPredictor.Action", 252 UMA_HISTOGRAM_ENUMERATION("AutocompleteActionPredictor.Action",
253 recommended_action, 253 recommended_action,
254 AutocompleteActionPredictor::LAST_PREDICT_ACTION); 254 AutocompleteActionPredictor::LAST_PREDICT_ACTION);
255 string16 suggested_text; 255 string16 suggested_text;
256 256
257 if (DoInstant(current_match, &suggested_text)) { 257 if (DoInstant(current_match, &suggested_text)) {
258 SetSuggestedText(suggested_text, instant_complete_behavior_); 258 SetSuggestedText(suggested_text, instant_complete_behavior_);
259 } else { 259 } else {
260 switch (recommended_action) { 260 switch (recommended_action) {
261 case AutocompleteActionPredictor::ACTION_PRERENDER: 261 case AutocompleteActionPredictor::ACTION_PRERENDER:
262 DoPrerender(current_match); 262 DoPrerender(action_predictor, current_match);
263 break; 263 break;
264 case AutocompleteActionPredictor::ACTION_PRECONNECT: 264 case AutocompleteActionPredictor::ACTION_PRECONNECT:
265 DoPreconnect(current_match); 265 DoPreconnect(current_match);
266 break; 266 break;
267 case AutocompleteActionPredictor::ACTION_NONE: 267 case AutocompleteActionPredictor::ACTION_NONE:
268 break; 268 break;
269 default: 269 default:
270 NOTREACHED() << "Unexpected recommended action: " << recommended_action; 270 NOTREACHED() << "Unexpected recommended action: " << recommended_action;
271 break; 271 break;
272 } 272 }
(...skipping 819 matching lines...) Expand 10 before | Expand all | Expand 10 after
1092 1092
1093 // It's possible DoInstant() was called due to an OnChanged() event from the 1093 // It's possible DoInstant() was called due to an OnChanged() event from the
1094 // omnibox view if the user clicked the renderer while IME composition was 1094 // omnibox view if the user clicked the renderer while IME composition was
1095 // active. In that case we still want to commit on mouse up, so don't call 1095 // active. In that case we still want to commit on mouse up, so don't call
1096 // Hide(). 1096 // Hide().
1097 if (!instant->commit_on_mouse_up()) 1097 if (!instant->commit_on_mouse_up())
1098 instant->Hide(); 1098 instant->Hide();
1099 return false; 1099 return false;
1100 } 1100 }
1101 1101
1102 void AutocompleteEditModel::DoPrerender(const AutocompleteMatch& match) { 1102 void AutocompleteEditModel::DoPrerender(
1103 AutocompleteActionPredictor* action_predictor,
1104 const AutocompleteMatch& match) {
1105 DCHECK(action_predictor);
1106
1103 // Do not prerender if the destination URL is the same as the current URL. 1107 // Do not prerender if the destination URL is the same as the current URL.
1104 if (match.destination_url == PermanentURL()) 1108 if (match.destination_url == PermanentURL())
1105 return; 1109 return;
1106 // It's possible the tab strip does not have an active tab contents, for 1110 // It's possible the tab strip does not have an active tab contents, for
1107 // instance if the tab has been closed or on return from a sleep state 1111 // instance if the tab has been closed or on return from a sleep state
1108 // (http://crbug.com/105689) 1112 // (http://crbug.com/105689)
1109 TabContents* tab = controller_->GetTabContents(); 1113 if (TabContents* tab = controller_->GetTabContents()) {
1110 if (!tab)
1111 return;
1112 prerender::PrerenderManager* prerender_manager =
1113 prerender::PrerenderManagerFactory::GetForProfile(tab->profile());
1114 if (prerender_manager) {
1115 content::RenderViewHost* current_host = 1114 content::RenderViewHost* current_host =
1116 tab->web_contents()->GetRenderViewHost(); 1115 tab->web_contents()->GetRenderViewHost();
1117 prerender_manager->AddPrerenderFromOmnibox( 1116 prerender::PrerenderHandle prerender = action_predictor->StartPrerendering(
1118 match.destination_url, current_host->GetSessionStorageNamespace()); 1117 match.destination_url, current_host->GetSessionStorageNamespace());
1118 match.prerender = prerender->AsWeakPtr();
1119 } 1119 }
1120 } 1120 }
1121 1121
1122 void AutocompleteEditModel::DoPreconnect(const AutocompleteMatch& match) { 1122 void AutocompleteEditModel::DoPreconnect(const AutocompleteMatch& match) {
1123 if (!match.destination_url.SchemeIs(chrome::kExtensionScheme)) { 1123 if (!match.destination_url.SchemeIs(chrome::kExtensionScheme)) {
1124 // Warm up DNS Prefetch cache, or preconnect to a search service. 1124 // Warm up DNS Prefetch cache, or preconnect to a search service.
1125 UMA_HISTOGRAM_ENUMERATION("Autocomplete.MatchType", match.type, 1125 UMA_HISTOGRAM_ENUMERATION("Autocomplete.MatchType", match.type,
1126 AutocompleteMatch::NUM_TYPES); 1126 AutocompleteMatch::NUM_TYPES);
1127 if (profile_->GetNetworkPredictor()) { 1127 if (profile_->GetNetworkPredictor()) {
1128 profile_->GetNetworkPredictor()->AnticipateOmniboxUrl( 1128 profile_->GetNetworkPredictor()->AnticipateOmniboxUrl(
(...skipping 23 matching lines...) Expand all
1152 return metrics::OmniboxEventProto_PageClassification_INVALID_SPEC; 1152 return metrics::OmniboxEventProto_PageClassification_INVALID_SPEC;
1153 const std::string& url = gurl.spec(); 1153 const std::string& url = gurl.spec();
1154 if (url == chrome::kChromeUINewTabURL) 1154 if (url == chrome::kChromeUINewTabURL)
1155 return metrics::OmniboxEventProto_PageClassification_NEW_TAB_PAGE; 1155 return metrics::OmniboxEventProto_PageClassification_NEW_TAB_PAGE;
1156 if (url == chrome::kAboutBlankURL) 1156 if (url == chrome::kAboutBlankURL)
1157 return metrics::OmniboxEventProto_PageClassification_BLANK; 1157 return metrics::OmniboxEventProto_PageClassification_BLANK;
1158 if (url == profile()->GetPrefs()->GetString(prefs::kHomePage)) 1158 if (url == profile()->GetPrefs()->GetString(prefs::kHomePage))
1159 return metrics::OmniboxEventProto_PageClassification_HOMEPAGE; 1159 return metrics::OmniboxEventProto_PageClassification_HOMEPAGE;
1160 return metrics::OmniboxEventProto_PageClassification_OTHER; 1160 return metrics::OmniboxEventProto_PageClassification_OTHER;
1161 } 1161 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698