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

Side by Side Diff: chrome/browser/ui/omnibox/chrome_omnibox_client.cc

Issue 1260033003: Partially componentize //chrome/browser/search/search.{h,cc} (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 4 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/ui/omnibox/chrome_omnibox_client.h" 5 #include "chrome/browser/ui/omnibox/chrome_omnibox_client.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 // highly or if kAllowPrefetchNonDefaultMatch field trial is enabled, we'll 50 // highly or if kAllowPrefetchNonDefaultMatch field trial is enabled, we'll
51 // return it. 51 // return it.
52 // 52 //
53 // If the kAllowPrefetchNonDefaultMatch field trial is enabled we return the 53 // If the kAllowPrefetchNonDefaultMatch field trial is enabled we return the
54 // prefetch suggestion even if it is not the default match. Otherwise we only 54 // prefetch suggestion even if it is not the default match. Otherwise we only
55 // care about matches that are the default or the second entry in the dropdown 55 // care about matches that are the default or the second entry in the dropdown
56 // (which can happen for non-default matches when a top verbatim match is 56 // (which can happen for non-default matches when a top verbatim match is
57 // shown); for other matches, we think the likelihood of the user selecting 57 // shown); for other matches, we think the likelihood of the user selecting
58 // them is low enough that prefetching isn't worth doing. 58 // them is low enough that prefetching isn't worth doing.
59 const AutocompleteMatch* GetMatchToPrefetch(const AutocompleteResult& result) { 59 const AutocompleteMatch* GetMatchToPrefetch(const AutocompleteResult& result) {
60 if (chrome::ShouldAllowPrefetchNonDefaultMatch()) { 60 if (search::ShouldAllowPrefetchNonDefaultMatch()) {
61 const AutocompleteResult::const_iterator prefetch_match = std::find_if( 61 const AutocompleteResult::const_iterator prefetch_match = std::find_if(
62 result.begin(), result.end(), SearchProvider::ShouldPrefetch); 62 result.begin(), result.end(), SearchProvider::ShouldPrefetch);
63 return prefetch_match != result.end() ? &(*prefetch_match) : NULL; 63 return prefetch_match != result.end() ? &(*prefetch_match) : NULL;
64 } 64 }
65 65
66 // If the default match should be prefetched, do that. 66 // If the default match should be prefetched, do that.
67 const auto default_match = result.default_match(); 67 const auto default_match = result.default_match();
68 if ((default_match != result.end()) && 68 if ((default_match != result.end()) &&
69 SearchProvider::ShouldPrefetch(*default_match)) 69 SearchProvider::ShouldPrefetch(*default_match))
70 return &(*default_match); 70 return &(*default_match);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 127
128 bool ChromeOmniboxClient::CurrentPageExists() const { 128 bool ChromeOmniboxClient::CurrentPageExists() const {
129 return (controller_->GetWebContents() != NULL); 129 return (controller_->GetWebContents() != NULL);
130 } 130 }
131 131
132 const GURL& ChromeOmniboxClient::GetURL() const { 132 const GURL& ChromeOmniboxClient::GetURL() const {
133 return controller_->GetWebContents()->GetURL(); 133 return controller_->GetWebContents()->GetURL();
134 } 134 }
135 135
136 bool ChromeOmniboxClient::IsInstantNTP() const { 136 bool ChromeOmniboxClient::IsInstantNTP() const {
137 return chrome::IsInstantNTP(controller_->GetWebContents()); 137 return search::IsInstantNTP(controller_->GetWebContents());
138 } 138 }
139 139
140 bool ChromeOmniboxClient::IsSearchResultsPage() const { 140 bool ChromeOmniboxClient::IsSearchResultsPage() const {
141 Profile* profile = Profile::FromBrowserContext( 141 Profile* profile = Profile::FromBrowserContext(
142 controller_->GetWebContents()->GetBrowserContext()); 142 controller_->GetWebContents()->GetBrowserContext());
143 return TemplateURLServiceFactory::GetForProfile(profile)-> 143 return TemplateURLServiceFactory::GetForProfile(profile)->
144 IsSearchResultsPageFromDefaultSearchProvider(GetURL()); 144 IsSearchResultsPageFromDefaultSearchProvider(GetURL());
145 } 145 }
146 146
147 bool ChromeOmniboxClient::IsLoading() const { 147 bool ChromeOmniboxClient::IsLoading() const {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 if (!controller_->GetWebContents()) 197 if (!controller_->GetWebContents())
198 return; 198 return;
199 SearchTabHelper::FromWebContents( 199 SearchTabHelper::FromWebContents(
200 controller_->GetWebContents())->OmniboxFocusChanged(state, reason); 200 controller_->GetWebContents())->OmniboxFocusChanged(state, reason);
201 } 201 }
202 202
203 void ChromeOmniboxClient::OnResultChanged( 203 void ChromeOmniboxClient::OnResultChanged(
204 const AutocompleteResult& result, 204 const AutocompleteResult& result,
205 bool default_match_changed, 205 bool default_match_changed,
206 const base::Callback<void(const SkBitmap& bitmap)>& on_bitmap_fetched) { 206 const base::Callback<void(const SkBitmap& bitmap)>& on_bitmap_fetched) {
207 if (chrome::IsInstantExtendedAPIEnabled() && 207 if (search::IsInstantExtendedAPIEnabled() &&
208 ((default_match_changed && result.default_match() != result.end()) || 208 ((default_match_changed && result.default_match() != result.end()) ||
209 (chrome::ShouldAllowPrefetchNonDefaultMatch() && !result.empty()))) { 209 (search::ShouldAllowPrefetchNonDefaultMatch() && !result.empty()))) {
210 InstantSuggestion prefetch_suggestion; 210 InstantSuggestion prefetch_suggestion;
211 const AutocompleteMatch* match_to_prefetch = GetMatchToPrefetch(result); 211 const AutocompleteMatch* match_to_prefetch = GetMatchToPrefetch(result);
212 if (match_to_prefetch) { 212 if (match_to_prefetch) {
213 prefetch_suggestion.text = match_to_prefetch->contents; 213 prefetch_suggestion.text = match_to_prefetch->contents;
214 prefetch_suggestion.metadata = 214 prefetch_suggestion.metadata =
215 SearchProvider::GetSuggestMetadata(*match_to_prefetch); 215 SearchProvider::GetSuggestMetadata(*match_to_prefetch);
216 } 216 }
217 // Send the prefetch suggestion unconditionally to the InstantPage. If 217 // Send the prefetch suggestion unconditionally to the InstantPage. If
218 // there is no suggestion to prefetch, we need to send a blank query to 218 // there is no suggestion to prefetch, we need to send a blank query to
219 // clear the prefetched results. 219 // clear the prefetched results.
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 match.destination_url, 283 match.destination_url,
284 predictors::AutocompleteActionPredictor::IsPreconnectable(match)); 284 predictors::AutocompleteActionPredictor::IsPreconnectable(match));
285 } 285 }
286 // We could prefetch the alternate nav URL, if any, but because there 286 // We could prefetch the alternate nav URL, if any, but because there
287 // can be many of these as a user types an initial series of characters, 287 // can be many of these as a user types an initial series of characters,
288 // the OS DNS cache could suffer eviction problems for minimal gain. 288 // the OS DNS cache could suffer eviction problems for minimal gain.
289 } 289 }
290 290
291 void ChromeOmniboxClient::SetSuggestionToPrefetch( 291 void ChromeOmniboxClient::SetSuggestionToPrefetch(
292 const InstantSuggestion& suggestion) { 292 const InstantSuggestion& suggestion) {
293 DCHECK(chrome::IsInstantExtendedAPIEnabled()); 293 DCHECK(search::IsInstantExtendedAPIEnabled());
294 content::WebContents* web_contents = controller_->GetWebContents(); 294 content::WebContents* web_contents = controller_->GetWebContents();
295 if (web_contents && 295 if (web_contents &&
296 SearchTabHelper::FromWebContents(web_contents)->IsSearchResultsPage()) { 296 SearchTabHelper::FromWebContents(web_contents)->IsSearchResultsPage()) {
297 if (chrome::ShouldPrefetchSearchResultsOnSRP()) { 297 if (search::ShouldPrefetchSearchResultsOnSRP()) {
298 SearchTabHelper::FromWebContents(web_contents)-> 298 SearchTabHelper::FromWebContents(web_contents)->
299 SetSuggestionToPrefetch(suggestion); 299 SetSuggestionToPrefetch(suggestion);
300 } 300 }
301 } else { 301 } else {
302 InstantSearchPrerenderer* prerenderer = 302 InstantSearchPrerenderer* prerenderer =
303 InstantSearchPrerenderer::GetForProfile(profile_); 303 InstantSearchPrerenderer::GetForProfile(profile_);
304 if (prerenderer) 304 if (prerenderer)
305 prerenderer->Prerender(suggestion); 305 prerenderer->Prerender(suggestion);
306 } 306 }
307 } 307 }
308 308
309 void ChromeOmniboxClient::OnBitmapFetched(const BitmapFetchedCallback& callback, 309 void ChromeOmniboxClient::OnBitmapFetched(const BitmapFetchedCallback& callback,
310 const SkBitmap& bitmap) { 310 const SkBitmap& bitmap) {
311 request_id_ = BitmapFetcherService::REQUEST_ID_INVALID; 311 request_id_ = BitmapFetcherService::REQUEST_ID_INVALID;
312 callback.Run(bitmap); 312 callback.Run(bitmap);
313 } 313 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698