Chromium Code Reviews| 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)); |