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

Side by Side 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: 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/instant/instant_loader.h" 5 #include "chrome/browser/instant/instant_loader.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after
702 complete_suggested_text_); 702 complete_suggested_text_);
703 string16 user_text_lower = base::i18n::ToLower(user_text_); 703 string16 user_text_lower = base::i18n::ToLower(user_text_);
704 if (!verbatim && 704 if (!verbatim &&
705 complete_suggested_text_lower.size() > user_text_lower.size() && 705 complete_suggested_text_lower.size() > user_text_lower.size() &&
706 !complete_suggested_text_lower.compare(0, user_text_lower.size(), 706 !complete_suggested_text_lower.compare(0, user_text_lower.size(),
707 user_text_lower)) { 707 user_text_lower)) {
708 *suggested_text = last_suggestion_ = 708 *suggested_text = last_suggestion_ =
709 complete_suggested_text_.substr(user_text_.size()); 709 complete_suggested_text_.substr(user_text_.size());
710 } 710 }
711 } else { 711 } else {
712 preview_tab_contents_delegate_->PrepareForNewLoad(); 712 LoadInstantURL(tab_contents, template_url, transition_type, user_text_,
713 713 verbatim);
714 // Load the instant URL. We don't reflect the url we load in url() as
715 // callers expect that we're loading the URL they tell us to.
716 //
717 // This uses an empty string for the replacement text as the url doesn't
718 // really have the search params, but we need to use the replace
719 // functionality so that embeded tags (like {google:baseURL}) are escaped
720 // correctly.
721 // TODO(sky): having to use a replaceable url is a bit of a hack here.
722 GURL instant_url(
723 template_url->instant_url()->ReplaceSearchTerms(
724 *template_url, string16(), -1, string16()));
725 CommandLine* cl = CommandLine::ForCurrentProcess();
726 if (cl->HasSwitch(switches::kInstantURL))
727 instant_url = GURL(cl->GetSwitchValueASCII(switches::kInstantURL));
728 preview_contents_->controller().LoadURL(
729 instant_url, GURL(), transition_type);
730 RenderViewHost* host = preview_contents_->render_view_host();
731 host->Send(new ViewMsg_SearchBoxChange(
732 host->routing_id(), user_text_, verbatim, 0, 0));
733 frame_load_observer_.reset(
734 new FrameLoadObserver(this,
735 preview_contents()->tab_contents(),
736 user_text_,
737 verbatim));
738 } 714 }
739 } else { 715 } else {
740 DCHECK(template_url_id_ == 0); 716 DCHECK(template_url_id_ == 0);
741 preview_tab_contents_delegate_->PrepareForNewLoad(); 717 preview_tab_contents_delegate_->PrepareForNewLoad();
742 frame_load_observer_.reset(NULL); 718 frame_load_observer_.reset(NULL);
743 preview_contents_->controller().LoadURL(url_, GURL(), transition_type); 719 preview_contents_->controller().LoadURL(url_, GURL(), transition_type);
744 } 720 }
745 return true; 721 return true;
746 } 722 }
747 723
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
1027 Source<NavigationController>(&preview_contents_->controller())); 1003 Source<NavigationController>(&preview_contents_->controller()));
1028 #endif 1004 #endif
1029 1005
1030 registrar_.Add( 1006 registrar_.Add(
1031 this, 1007 this,
1032 NotificationType::NAV_ENTRY_COMMITTED, 1008 NotificationType::NAV_ENTRY_COMMITTED,
1033 Source<NavigationController>(&preview_contents_->controller())); 1009 Source<NavigationController>(&preview_contents_->controller()));
1034 1010
1035 preview_contents_->tab_contents()->ShowContents(); 1011 preview_contents_->tab_contents()->ShowContents();
1036 } 1012 }
1013
1014 void InstantLoader::LoadInstantURL(TabContentsWrapper* tab_contents,
sky 2011/05/20 20:52:18 Position should match header (and next method).
sreeram 2011/05/21 03:18:27 Done.
1015 const TemplateURL* template_url,
1016 PageTransition::Type transition_type,
1017 const string16& user_text,
1018 bool verbatim) {
1019 preview_tab_contents_delegate_->PrepareForNewLoad();
1020
1021 // Load the instant URL. We don't reflect the url we load in url() as
1022 // callers expect that we're loading the URL they tell us to.
1023 //
1024 // This uses an empty string for the replacement text as the url doesn't
1025 // really have the search params, but we need to use the replace
1026 // functionality so that embeded tags (like {google:baseURL}) are escaped
1027 // correctly.
1028 // TODO(sky): having to use a replaceable url is a bit of a hack here.
1029 GURL instant_url(template_url->instant_url()->ReplaceSearchTerms(
1030 *template_url, string16(), -1, string16()));
1031 CommandLine* cl = CommandLine::ForCurrentProcess();
1032 if (cl->HasSwitch(switches::kInstantURL))
1033 instant_url = GURL(cl->GetSwitchValueASCII(switches::kInstantURL));
1034 preview_contents_->controller().LoadURL(instant_url, GURL(), transition_type);
1035 RenderViewHost* host = preview_contents_->render_view_host();
1036 host->Send(new ViewMsg_SearchBoxChange(
1037 host->routing_id(), user_text, verbatim, 0, 0));
1038 frame_load_observer_.reset(new FrameLoadObserver(
1039 this, preview_contents()->tab_contents(), user_text, verbatim));
1040 }
1041
1042 void InstantLoader::MaybeLoadInstantURL(TabContentsWrapper* tab_contents,
1043 const TemplateURL* template_url) {
1044 DCHECK(template_url_id_ == template_url->id());
1045
1046 // If we already have a |preview_contents_|, future search queries will be
1047 // issued into it (see the "if (!created_preview_contents)" block in |Update|
1048 // above), so there is no need to load the |template_url|'s instant URL.
1049 if (preview_contents_.get())
1050 return;
1051
1052 CommandLine* cl = CommandLine::ForCurrentProcess();
sky 2011/05/20 20:52:18 Put this check in InstantController, not here.
sreeram 2011/05/21 03:18:27 Done.
1053 if (!cl->HasSwitch(switches::kPreloadInstantSearch))
1054 return;
1055
1056 CreatePreviewContents(tab_contents);
1057 LoadInstantURL(tab_contents, template_url, PageTransition::GENERATED,
1058 string16(), true);
sky 2011/05/20 20:52:18 Won't this ultimately result in calls back to Page
sreeram 2011/05/21 03:18:27 No. Several reasons why PageFinishedLoading won't
1059 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698