OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/search/search.h" | 5 #include "chrome/browser/search/search.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/feature_list.h" | 10 #include "base/feature_list.h" |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 // URL should not be used because Suggest is disabled. | 73 // URL should not be used because Suggest is disabled. |
74 // Not used anymore, see crbug.com/340424. | 74 // Not used anymore, see crbug.com/340424. |
75 // NEW_TAB_URL_SUGGEST_OFF = 5, | 75 // NEW_TAB_URL_SUGGEST_OFF = 5, |
76 | 76 |
77 // URL should not be used because it is blocked for a supervised user. | 77 // URL should not be used because it is blocked for a supervised user. |
78 NEW_TAB_URL_BLOCKED = 6, | 78 NEW_TAB_URL_BLOCKED = 6, |
79 | 79 |
80 NEW_TAB_URL_MAX | 80 NEW_TAB_URL_MAX |
81 }; | 81 }; |
82 | 82 |
83 // Used to set the Instant support state of the Navigation entry. | |
84 const char kInstantSupportStateKey[] = "instant_support_state"; | |
85 | |
86 const char kInstantSupportEnabled[] = "Instant support enabled"; | |
87 const char kInstantSupportDisabled[] = "Instant support disabled"; | |
88 const char kInstantSupportUnknown[] = "Instant support unknown"; | |
89 | |
90 base::Feature kUseGoogleLocalNtp { | 83 base::Feature kUseGoogleLocalNtp { |
91 "UseGoogleLocalNtp", base::FEATURE_DISABLED_BY_DEFAULT | 84 "UseGoogleLocalNtp", base::FEATURE_DISABLED_BY_DEFAULT |
92 }; | 85 }; |
93 | 86 |
94 InstantSupportState StringToInstantSupportState(const base::string16& value) { | |
95 if (value == base::ASCIIToUTF16(kInstantSupportEnabled)) | |
96 return INSTANT_SUPPORT_YES; | |
97 else if (value == base::ASCIIToUTF16(kInstantSupportDisabled)) | |
98 return INSTANT_SUPPORT_NO; | |
99 else | |
100 return INSTANT_SUPPORT_UNKNOWN; | |
101 } | |
102 | |
103 base::string16 InstantSupportStateToString(InstantSupportState state) { | |
104 switch (state) { | |
105 case INSTANT_SUPPORT_NO: | |
106 return base::ASCIIToUTF16(kInstantSupportDisabled); | |
107 case INSTANT_SUPPORT_YES: | |
108 return base::ASCIIToUTF16(kInstantSupportEnabled); | |
109 case INSTANT_SUPPORT_UNKNOWN: | |
110 return base::ASCIIToUTF16(kInstantSupportUnknown); | |
111 } | |
112 return base::ASCIIToUTF16(kInstantSupportUnknown); | |
113 } | |
114 | |
115 TemplateURL* GetDefaultSearchProviderTemplateURL(Profile* profile) { | 87 TemplateURL* GetDefaultSearchProviderTemplateURL(Profile* profile) { |
116 if (profile) { | 88 if (profile) { |
117 TemplateURLService* template_url_service = | 89 TemplateURLService* template_url_service = |
118 TemplateURLServiceFactory::GetForProfile(profile); | 90 TemplateURLServiceFactory::GetForProfile(profile); |
119 if (template_url_service) | 91 if (template_url_service) |
120 return template_url_service->GetDefaultSearchProvider(); | 92 return template_url_service->GetDefaultSearchProvider(); |
121 } | 93 } |
122 return NULL; | 94 return NULL; |
123 } | 95 } |
124 | 96 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 const TemplateURLRef& instant_url_ref = template_url->instant_url_ref(); | 141 const TemplateURLRef& instant_url_ref = template_url->instant_url_ref(); |
170 UIThreadSearchTermsData search_terms_data(profile); | 142 UIThreadSearchTermsData search_terms_data(profile); |
171 const GURL instant_url = TemplateURLRefToGURL( | 143 const GURL instant_url = TemplateURLRefToGURL( |
172 instant_url_ref, search_terms_data, false, false); | 144 instant_url_ref, search_terms_data, false, false); |
173 if (!instant_url.is_valid()) | 145 if (!instant_url.is_valid()) |
174 return false; | 146 return false; |
175 | 147 |
176 return MatchesOriginAndPath(url, instant_url); | 148 return MatchesOriginAndPath(url, instant_url); |
177 } | 149 } |
178 | 150 |
179 base::string16 GetSearchTermsImpl(const content::WebContents* contents, | |
180 const content::NavigationEntry* entry) { | |
181 // TODO(treib): Remove this and update callers accordingly. crbug.com/627747 | |
182 return base::string16(); | |
183 } | |
184 | |
185 bool IsURLAllowedForSupervisedUser(const GURL& url, Profile* profile) { | 151 bool IsURLAllowedForSupervisedUser(const GURL& url, Profile* profile) { |
186 #if defined(ENABLE_SUPERVISED_USERS) | 152 #if defined(ENABLE_SUPERVISED_USERS) |
187 SupervisedUserService* supervised_user_service = | 153 SupervisedUserService* supervised_user_service = |
188 SupervisedUserServiceFactory::GetForProfile(profile); | 154 SupervisedUserServiceFactory::GetForProfile(profile); |
189 SupervisedUserURLFilter* url_filter = | 155 SupervisedUserURLFilter* url_filter = |
190 supervised_user_service->GetURLFilterForUIThread(); | 156 supervised_user_service->GetURLFilterForUIThread(); |
191 if (url_filter->GetFilteringBehaviorForURL(url) == | 157 if (url_filter->GetFilteringBehaviorForURL(url) == |
192 SupervisedUserURLFilter::BLOCK) { | 158 SupervisedUserURLFilter::BLOCK) { |
193 return false; | 159 return false; |
194 } | 160 } |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
292 template_url->ExtractSearchTermsFromURL( | 258 template_url->ExtractSearchTermsFromURL( |
293 url, UIThreadSearchTermsData(profile), &search_terms); | 259 url, UIThreadSearchTermsData(profile), &search_terms); |
294 return search_terms; | 260 return search_terms; |
295 } | 261 } |
296 | 262 |
297 bool IsQueryExtractionAllowedForURL(Profile* profile, const GURL& url) { | 263 bool IsQueryExtractionAllowedForURL(Profile* profile, const GURL& url) { |
298 TemplateURL* template_url = GetDefaultSearchProviderTemplateURL(profile); | 264 TemplateURL* template_url = GetDefaultSearchProviderTemplateURL(profile); |
299 return template_url && IsSuitableURLForInstant(url, template_url); | 265 return template_url && IsSuitableURLForInstant(url, template_url); |
300 } | 266 } |
301 | 267 |
302 base::string16 GetSearchTermsFromNavigationEntry( | |
303 const content::NavigationEntry* entry) { | |
304 base::string16 search_terms; | |
305 if (entry) | |
306 entry->GetExtraData(sessions::kSearchTermsKey, &search_terms); | |
307 return search_terms; | |
308 } | |
309 | |
310 base::string16 GetSearchTerms(const content::WebContents* contents) { | |
311 if (!contents) | |
312 return base::string16(); | |
313 | |
314 const content::NavigationEntry* entry = | |
315 contents->GetController().GetVisibleEntry(); | |
316 if (!entry) | |
317 return base::string16(); | |
318 | |
319 if (IsInstantExtendedAPIEnabled()) { | |
320 InstantSupportState state = | |
321 GetInstantSupportStateFromNavigationEntry(*entry); | |
322 if (state == INSTANT_SUPPORT_NO) | |
323 return base::string16(); | |
324 } | |
325 | |
326 return GetSearchTermsImpl(contents, entry); | |
327 } | |
328 | |
329 bool ShouldAssignURLToInstantRenderer(const GURL& url, Profile* profile) { | 268 bool ShouldAssignURLToInstantRenderer(const GURL& url, Profile* profile) { |
330 return url.is_valid() && | 269 return url.is_valid() && |
331 profile && | 270 profile && |
332 IsInstantExtendedAPIEnabled() && | 271 IsInstantExtendedAPIEnabled() && |
333 (url.SchemeIs(chrome::kChromeSearchScheme) || | 272 (url.SchemeIs(chrome::kChromeSearchScheme) || |
334 IsInstantURL(url, profile)); | 273 IsInstantURL(url, profile)); |
335 } | 274 } |
336 | 275 |
337 bool IsRenderedInInstantProcess(const content::WebContents* contents, | 276 bool IsRenderedInInstantProcess(const content::WebContents* contents, |
338 Profile* profile) { | 277 Profile* profile) { |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
515 return false; | 454 return false; |
516 | 455 |
517 if (IsInstantNTPURL(*url, profile)) { | 456 if (IsInstantNTPURL(*url, profile)) { |
518 *url = GURL(chrome::kChromeUINewTabURL); | 457 *url = GURL(chrome::kChromeUINewTabURL); |
519 return true; | 458 return true; |
520 } | 459 } |
521 | 460 |
522 return false; | 461 return false; |
523 } | 462 } |
524 | 463 |
525 void SetInstantSupportStateInNavigationEntry(InstantSupportState state, | |
526 content::NavigationEntry* entry) { | |
527 if (!entry) | |
528 return; | |
529 | |
530 entry->SetExtraData(kInstantSupportStateKey, | |
531 InstantSupportStateToString(state)); | |
532 } | |
533 | |
534 InstantSupportState GetInstantSupportStateFromNavigationEntry( | |
535 const content::NavigationEntry& entry) { | |
536 base::string16 value; | |
537 if (!entry.GetExtraData(kInstantSupportStateKey, &value)) | |
538 return INSTANT_SUPPORT_UNKNOWN; | |
539 | |
540 return StringToInstantSupportState(value); | |
541 } | |
542 | |
543 } // namespace search | 464 } // namespace search |
OLD | NEW |