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)); |