Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1049)

Unified Diff: chrome/browser/instant/instant_loader.cc

Issue 6990015: Preload Instant search when omnibox is focused. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Rebaseline Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/instant/instant_loader.h ('k') | chrome/browser/instant/instant_loader_manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/instant/instant_loader.cc
diff --git a/chrome/browser/instant/instant_loader.cc b/chrome/browser/instant/instant_loader.cc
index 39727772457df53efdceb563cd3ba4ade5e57cf6..50e29c44b241a0b67267eea490a42103ee197257 100644
--- a/chrome/browser/instant/instant_loader.cc
+++ b/chrome/browser/instant/instant_loader.cc
@@ -728,32 +728,8 @@ bool InstantLoader::Update(TabContentsWrapper* tab_contents,
complete_suggested_text_.substr(user_text_.size());
}
} else {
- preview_tab_contents_delegate_->PrepareForNewLoad();
-
- // Load the instant URL. We don't reflect the url we load in url() as
- // callers expect that we're loading the URL they tell us to.
- //
- // This uses an empty string for the replacement text as the url doesn't
- // really have the search params, but we need to use the replace
- // functionality so that embeded tags (like {google:baseURL}) are escaped
- // correctly.
- // TODO(sky): having to use a replaceable url is a bit of a hack here.
- GURL instant_url(
- template_url->instant_url()->ReplaceSearchTerms(
- *template_url, string16(), -1, string16()));
- CommandLine* cl = CommandLine::ForCurrentProcess();
- if (cl->HasSwitch(switches::kInstantURL))
- instant_url = GURL(cl->GetSwitchValueASCII(switches::kInstantURL));
- preview_contents_->controller().LoadURL(
- instant_url, GURL(), transition_type);
- RenderViewHost* host = preview_contents_->render_view_host();
- host->Send(new ViewMsg_SearchBoxChange(
- host->routing_id(), user_text_, verbatim, 0, 0));
- frame_load_observer_.reset(
- new FrameLoadObserver(this,
- preview_contents()->tab_contents(),
- user_text_,
- verbatim));
+ LoadInstantURL(tab_contents, template_url, transition_type, user_text_,
+ verbatim);
}
} else {
DCHECK(template_url_id_ == 0);
@@ -856,6 +832,21 @@ void InstantLoader::CommitInstantLoader() {
delegate_->CommitInstantLoader(this);
}
+void InstantLoader::MaybeLoadInstantURL(TabContentsWrapper* tab_contents,
+ const TemplateURL* template_url) {
+ DCHECK(template_url_id_ == template_url->id());
+
+ // If we already have a |preview_contents_|, future search queries will be
+ // issued into it (see the "if (!created_preview_contents)" block in |Update|
+ // above), so there is no need to load the |template_url|'s instant URL.
+ if (preview_contents_.get())
+ return;
+
+ CreatePreviewContents(tab_contents);
+ LoadInstantURL(tab_contents, template_url, PageTransition::GENERATED,
+ string16(), true);
+}
+
void InstantLoader::SetCompleteSuggestedText(
const string16& complete_suggested_text,
InstantCompleteBehavior behavior) {
@@ -1093,3 +1084,31 @@ void InstantLoader::CreatePreviewContents(TabContentsWrapper* tab_contents) {
preview_contents_->tab_contents()->ShowContents();
}
+
+void InstantLoader::LoadInstantURL(TabContentsWrapper* tab_contents,
+ const TemplateURL* template_url,
+ PageTransition::Type transition_type,
+ const string16& user_text,
+ bool verbatim) {
+ preview_tab_contents_delegate_->PrepareForNewLoad();
+
+ // Load the instant URL. We don't reflect the url we load in url() as
+ // callers expect that we're loading the URL they tell us to.
+ //
+ // This uses an empty string for the replacement text as the url doesn't
+ // really have the search params, but we need to use the replace
+ // functionality so that embeded tags (like {google:baseURL}) are escaped
+ // correctly.
+ // TODO(sky): having to use a replaceable url is a bit of a hack here.
+ GURL instant_url(template_url->instant_url()->ReplaceSearchTerms(
+ *template_url, string16(), -1, string16()));
+ CommandLine* cl = CommandLine::ForCurrentProcess();
+ if (cl->HasSwitch(switches::kInstantURL))
+ instant_url = GURL(cl->GetSwitchValueASCII(switches::kInstantURL));
+ preview_contents_->controller().LoadURL(instant_url, GURL(), transition_type);
+ RenderViewHost* host = preview_contents_->render_view_host();
+ host->Send(new ViewMsg_SearchBoxChange(
+ host->routing_id(), user_text, verbatim, 0, 0));
+ frame_load_observer_.reset(new FrameLoadObserver(
+ this, preview_contents()->tab_contents(), user_text, verbatim));
+}
« no previous file with comments | « chrome/browser/instant/instant_loader.h ('k') | chrome/browser/instant/instant_loader_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698