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 2ac67fa6c65b71987b8115c7a96983df3876f2fd..642bc7c88aca79f0efb522f81587ef2973495f37 100644 |
--- a/chrome/browser/predictors/autocomplete_action_predictor.cc |
+++ b/chrome/browser/predictors/autocomplete_action_predictor.cc |
@@ -26,6 +26,7 @@ |
#include "chrome/browser/predictors/predictor_database.h" |
#include "chrome/browser/predictors/predictor_database_factory.h" |
#include "chrome/browser/prerender/prerender_field_trial.h" |
+#include "chrome/browser/prerender/prerender_handle.h" |
#include "chrome/browser/prerender/prerender_manager.h" |
#include "chrome/browser/prerender/prerender_manager_factory.h" |
#include "chrome/browser/profiles/profile.h" |
@@ -119,6 +120,8 @@ AutocompleteActionPredictor::~AutocompleteActionPredictor() { |
main_profile_predictor_->incognito_predictor_ = NULL; |
else if (incognito_predictor_) |
incognito_predictor_->main_profile_predictor_ = NULL; |
+ if (prerender_handle_.get()) |
+ prerender_handle_->OnCancel(); |
} |
void AutocompleteActionPredictor::RegisterTransitionalMatches( |
@@ -153,6 +156,22 @@ void AutocompleteActionPredictor::ClearTransitionalMatches() { |
transitional_matches_.clear(); |
} |
+void AutocompleteActionPredictor::StartPrerendering( |
+ const GURL& url, |
+ content::SessionStorageNamespace* session_storage_namespace, |
+ const gfx::Size& size) { |
+ if (prerender_handle_.get()) |
+ prerender_handle_->OnNavigateAway(); |
+ if (prerender::PrerenderManager* prerender_manager = |
+ prerender::PrerenderManagerFactory::GetForProfile(profile_)) { |
+ prerender_handle_.reset( |
+ prerender_manager->AddPrerenderFromOmnibox( |
+ url, session_storage_namespace, size)); |
+ } else { |
+ prerender_handle_.reset(); |
+ } |
+} |
+ |
// Given a match, return a recommended action. |
AutocompleteActionPredictor::Action |
AutocompleteActionPredictor::RecommendAction( |