summaryrefslogtreecommitdiffstats
path: root/chrome/browser/predictors
diff options
context:
space:
mode:
authormmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-04 22:24:10 +0000
committermmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-04 22:24:10 +0000
commitf4126df56211740e179d466a1a1af61c9002b2fb (patch)
tree9e4e3ae25d43068d2f75bd0627e9da16685e7f9e /chrome/browser/predictors
parent4cccde3ed333f9ed50c4b8fbe0cbad3ea03e4d08 (diff)
downloadchromium_src-f4126df56211740e179d466a1a1af61c9002b2fb.zip
chromium_src-f4126df56211740e179d466a1a1af61c9002b2fb.tar.gz
chromium_src-f4126df56211740e179d466a1a1af61c9002b2fb.tar.bz2
Fix prerendering from the omnibox.
We were cancelling the existing prerender whenever a new character was typed, rather than reusing the old prerender when possible. BUG=179885 Review URL: https://chromiumcodereview.appspot.com/12387088 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@185995 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/predictors')
-rw-r--r--chrome/browser/predictors/autocomplete_action_predictor.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/chrome/browser/predictors/autocomplete_action_predictor.cc b/chrome/browser/predictors/autocomplete_action_predictor.cc
index 0c9dd9a..c991975 100644
--- a/chrome/browser/predictors/autocomplete_action_predictor.cc
+++ b/chrome/browser/predictors/autocomplete_action_predictor.cc
@@ -140,8 +140,10 @@ void AutocompleteActionPredictor::StartPrerendering(
const GURL& url,
const content::SessionStorageNamespaceMap& session_storage_namespace_map,
const gfx::Size& size) {
- if (prerender_handle_)
- prerender_handle_->OnCancel();
+ // Only cancel the old prerender after starting the new one, so if the URLs
+ // are the same, the underlying prerender will be reused.
+ scoped_ptr<prerender::PrerenderHandle> old_prerender_handle(
+ prerender_handle_.release());
if (prerender::PrerenderManager* prerender_manager =
prerender::PrerenderManagerFactory::GetForProfile(profile_)) {
content::SessionStorageNamespace* session_storage_namespace = NULL;
@@ -152,9 +154,9 @@ void AutocompleteActionPredictor::StartPrerendering(
prerender_handle_.reset(
prerender_manager->AddPrerenderFromOmnibox(
url, session_storage_namespace, size));
- } else {
- prerender_handle_.reset();
}
+ if (old_prerender_handle)
+ old_prerender_handle->OnCancel();
}
// Given a match, return a recommended action.