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/instant/search.h" | 5 #include "chrome/browser/instant/search.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/metrics/field_trial.h" | 8 #include "base/metrics/field_trial.h" |
9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 const content::NavigationEntry* entry) { | 181 const content::NavigationEntry* entry) { |
182 if (!IsQueryExtractionEnabled()) | 182 if (!IsQueryExtractionEnabled()) |
183 return string16(); | 183 return string16(); |
184 | 184 |
185 // For security reasons, don't extract search terms if the page is not being | 185 // For security reasons, don't extract search terms if the page is not being |
186 // rendered in the privileged Instant renderer process. This is to protect | 186 // rendered in the privileged Instant renderer process. This is to protect |
187 // against a malicious page somehow scripting the search results page and | 187 // against a malicious page somehow scripting the search results page and |
188 // faking search terms in the URL. Random pages can't get into the Instant | 188 // faking search terms in the URL. Random pages can't get into the Instant |
189 // renderer and scripting doesn't work cross-process, so if the page is in | 189 // renderer and scripting doesn't work cross-process, so if the page is in |
190 // the Instant process, we know it isn't being exploited. | 190 // the Instant process, we know it isn't being exploited. |
191 // Since iOS and Android doesn't use the instant framework, these checks are | 191 // Since iOS and Android don't use the Instant framework, these checks are |
192 // disabled for the two platforms. | 192 // disabled for the two platforms. |
193 Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); | 193 Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); |
194 #if !defined(OS_IOS) && !defined(OS_ANDROID) | 194 #if !defined(OS_IOS) && !defined(OS_ANDROID) |
195 if (!IsRenderedInInstantProcess(contents, profile)) | 195 if (!IsRenderedInInstantProcess(contents, profile)) |
196 return string16(); | 196 return string16(); |
197 #endif // !defined(OS_IOS) && !defined(OS_ANDROID) | 197 #endif // !defined(OS_IOS) && !defined(OS_ANDROID) |
198 // Check to see if search terms have already been extracted. | 198 // Check to see if search terms have already been extracted. |
199 string16 search_terms = GetSearchTermsFromNavigationEntry(entry); | 199 string16 search_terms = GetSearchTermsFromNavigationEntry(entry); |
200 if (!search_terms.empty()) | 200 if (!search_terms.empty()) |
201 return search_terms; | 201 return search_terms; |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
316 } | 316 } |
317 | 317 |
318 void RegisterUserPrefs(PrefRegistrySyncable* registry) { | 318 void RegisterUserPrefs(PrefRegistrySyncable* registry) { |
319 registry->RegisterBooleanPref(prefs::kInstantConfirmDialogShown, false, | 319 registry->RegisterBooleanPref(prefs::kInstantConfirmDialogShown, false, |
320 PrefRegistrySyncable::SYNCABLE_PREF); | 320 PrefRegistrySyncable::SYNCABLE_PREF); |
321 registry->RegisterBooleanPref(prefs::kInstantEnabled, false, | 321 registry->RegisterBooleanPref(prefs::kInstantEnabled, false, |
322 PrefRegistrySyncable::SYNCABLE_PREF); | 322 PrefRegistrySyncable::SYNCABLE_PREF); |
323 // This default is overridden by SetInstantExtendedPrefDefault(). | 323 // This default is overridden by SetInstantExtendedPrefDefault(). |
324 registry->RegisterBooleanPref(prefs::kInstantExtendedEnabled, false, | 324 registry->RegisterBooleanPref(prefs::kInstantExtendedEnabled, false, |
325 PrefRegistrySyncable::SYNCABLE_PREF); | 325 PrefRegistrySyncable::SYNCABLE_PREF); |
| 326 |
| 327 // TODO(jered): Remove this. |
| 328 registry->RegisterStringPref(prefs::kInstantUIZeroSuggestUrlPrefix, "", |
| 329 PrefRegistrySyncable::UNSYNCABLE_PREF); |
326 } | 330 } |
327 | 331 |
328 const char* GetInstantPrefName() { | 332 const char* GetInstantPrefName() { |
329 return IsInstantExtendedAPIEnabled() ? prefs::kInstantExtendedEnabled : | 333 return IsInstantExtendedAPIEnabled() ? prefs::kInstantExtendedEnabled : |
330 prefs::kInstantEnabled; | 334 prefs::kInstantEnabled; |
331 } | 335 } |
332 | 336 |
333 bool IsInstantPrefEnabled(Profile* profile) { | 337 bool IsInstantPrefEnabled(Profile* profile) { |
334 if (!profile || profile->IsOffTheRecord()) | 338 if (!profile || profile->IsOffTheRecord()) |
335 return false; | 339 return false; |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
517 GURL::Replacements replacements; | 521 GURL::Replacements replacements; |
518 replacements.SetSchemeStr(search_scheme); | 522 replacements.SetSchemeStr(search_scheme); |
519 replacements.SetHostStr(search_host); | 523 replacements.SetHostStr(search_host); |
520 replacements.SetPortStr(search_port); | 524 replacements.SetPortStr(search_port); |
521 replacements.SetPathStr(search_path); | 525 replacements.SetPathStr(search_path); |
522 return instant_url.ReplaceComponents(replacements); | 526 return instant_url.ReplaceComponents(replacements); |
523 } | 527 } |
524 | 528 |
525 } // namespace search | 529 } // namespace search |
526 } // namespace chrome | 530 } // namespace chrome |
OLD | NEW |