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

Unified Diff: chrome/browser/predictors/autocomplete_action_predictor.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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/predictors/autocomplete_action_predictor.cc
diff --git a/chrome/browser/predictors/autocomplete_action_predictor.cc b/chrome/browser/predictors/autocomplete_action_predictor.cc
index 33119069718a3581d6ee9b2de240c7176dd5f0fa..8804b985ff84bb54d6b2444e8398eae1df18501c 100644
--- a/chrome/browser/predictors/autocomplete_action_predictor.cc
+++ b/chrome/browser/predictors/autocomplete_action_predictor.cc
@@ -151,6 +151,19 @@ void AutocompleteActionPredictor::ClearTransitionalMatches() {
transitional_matches_.clear();
}
+prerender::PrerenderHandle AutocompleteActionPredictor::StartPrerendering(
+ const GURL& url,
+ content::SessionStorageNamespace* session_storage_namespace) {
+ if (prerender::PrerenderManager* prerender_manager =
+ prerender::PrerenderManagerFactory::GetForProfile(profile_)) {
+ prerender_ = prerender_manager->AddPrerenderFromOmnibox(
+ url, session_storage_namespace);
+ return prerender_;
+ }
+ prerender_ = prerender::PrerenderHandle();
+ return prerender_;
+}
+
// Given a match, return a recommended action.
AutocompleteActionPredictor::Action
AutocompleteActionPredictor::RecommendAction(
@@ -307,14 +320,10 @@ void AutocompleteActionPredictor::OnOmniboxOpenedUrl(
const GURL& opened_url = match.destination_url;
- // If the Omnibox triggered a prerender but the URL doesn't match the one the
- // user is navigating to, cancel the prerender.
- prerender::PrerenderManager* prerender_manager =
- prerender::PrerenderManagerFactory::GetForProfile(profile_);
- // |prerender_manager| can be NULL in incognito mode or if prerendering is
- // otherwise disabled.
- if (prerender_manager && !prerender_manager->IsPrerendering(opened_url))
- prerender_manager->CancelOmniboxPrerenders();
+ // If the Omnibox triggered a prerender but the prerender doesn't match the
+ // one the user is navigating to, then we drop the prerender.
+ if (prerender_ != match.prerender)
dominich 2012/06/18 15:32:44 This should not be pulled from the match. The prer
gavinp 2012/06/18 16:40:48 We did talk about this at length, and I'm aware we
+ prerender_ = prerender::PrerenderHandle();
dominich 2012/06/18 15:32:44 if this has a side-effect of canceling a prerender
gavinp 2012/06/18 16:40:48 And a runtime error if you try to drop a ref to a
const string16 lower_user_text(base::i18n::ToLower(log.text));

Powered by Google App Engine
This is Rietveld 408576698