Index: chrome/browser/autocomplete/autocomplete_edit.cc |
diff --git a/chrome/browser/autocomplete/autocomplete_edit.cc b/chrome/browser/autocomplete/autocomplete_edit.cc |
index cfb25cd7fef2d5d5624b20e4a087a6a5914c8591..fcf0dd8e5a3f5491428c2d1f1c5cfcbdea05aa83 100644 |
--- a/chrome/browser/autocomplete/autocomplete_edit.cc |
+++ b/chrome/browser/autocomplete/autocomplete_edit.cc |
@@ -259,7 +259,7 @@ void AutocompleteEditModel::OnChanged() { |
} else { |
switch (recommended_action) { |
case AutocompleteActionPredictor::ACTION_PRERENDER: |
- DoPrerender(current_match); |
+ DoPrerender(action_predictor, current_match); |
break; |
case AutocompleteActionPredictor::ACTION_PRECONNECT: |
DoPreconnect(current_match); |
@@ -1099,23 +1099,23 @@ bool AutocompleteEditModel::DoInstant(const AutocompleteMatch& match, |
return false; |
} |
-void AutocompleteEditModel::DoPrerender(const AutocompleteMatch& match) { |
+void AutocompleteEditModel::DoPrerender( |
+ AutocompleteActionPredictor* action_predictor, |
+ const AutocompleteMatch& match) { |
+ DCHECK(action_predictor); |
+ |
// Do not prerender if the destination URL is the same as the current URL. |
if (match.destination_url == PermanentURL()) |
return; |
// It's possible the tab strip does not have an active tab contents, for |
// instance if the tab has been closed or on return from a sleep state |
// (http://crbug.com/105689) |
- TabContents* tab = controller_->GetTabContents(); |
- if (!tab) |
- return; |
- prerender::PrerenderManager* prerender_manager = |
- prerender::PrerenderManagerFactory::GetForProfile(tab->profile()); |
- if (prerender_manager) { |
+ if (TabContents* tab = controller_->GetTabContents()) { |
content::RenderViewHost* current_host = |
tab->web_contents()->GetRenderViewHost(); |
- prerender_manager->AddPrerenderFromOmnibox( |
+ prerender::PrerenderHandle prerender = action_predictor->StartPrerendering( |
match.destination_url, current_host->GetSessionStorageNamespace()); |
+ match.prerender = prerender->AsWeakPtr(); |
} |
} |