| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/autocomplete/base_search_provider.h" | 5 #include "chrome/browser/autocomplete/base_search_provider.h" |
| 6 | 6 |
| 7 #include "base/i18n/case_conversion.h" | 7 #include "base/i18n/case_conversion.h" |
| 8 #include "base/i18n/icu_string_conversions.h" | 8 #include "base/i18n/icu_string_conversions.h" |
| 9 #include "base/json/json_string_value_serializer.h" | 9 #include "base/json/json_string_value_serializer.h" |
| 10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 #include "chrome/browser/search_engines/template_url_prepopulate_data.h" | 23 #include "chrome/browser/search_engines/template_url_prepopulate_data.h" |
| 24 #include "chrome/browser/sync/profile_sync_service.h" | 24 #include "chrome/browser/sync/profile_sync_service.h" |
| 25 #include "chrome/browser/sync/profile_sync_service_factory.h" | 25 #include "chrome/browser/sync/profile_sync_service_factory.h" |
| 26 #include "chrome/common/net/url_fixer_upper.h" | 26 #include "chrome/common/net/url_fixer_upper.h" |
| 27 #include "chrome/common/pref_names.h" | 27 #include "chrome/common/pref_names.h" |
| 28 #include "components/sync_driver/sync_prefs.h" | 28 #include "components/sync_driver/sync_prefs.h" |
| 29 #include "content/public/common/url_constants.h" | 29 #include "content/public/common/url_constants.h" |
| 30 #include "net/base/escape.h" | 30 #include "net/base/escape.h" |
| 31 #include "net/base/net_util.h" | 31 #include "net/base/net_util.h" |
| 32 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" | 32 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
| 33 #include "net/base/url_constants.h" |
| 33 #include "net/http/http_response_headers.h" | 34 #include "net/http/http_response_headers.h" |
| 34 #include "net/url_request/url_fetcher_delegate.h" | 35 #include "net/url_request/url_fetcher_delegate.h" |
| 35 #include "url/gurl.h" | 36 #include "url/gurl.h" |
| 36 | 37 |
| 37 namespace { | 38 namespace { |
| 38 | 39 |
| 39 AutocompleteMatchType::Type GetAutocompleteMatchType(const std::string& type) { | 40 AutocompleteMatchType::Type GetAutocompleteMatchType(const std::string& type) { |
| 40 if (type == "ENTITY") | 41 if (type == "ENTITY") |
| 41 return AutocompleteMatchType::SEARCH_SUGGEST_ENTITY; | 42 return AutocompleteMatchType::SEARCH_SUGGEST_ENTITY; |
| 42 if (type == "INFINITE") | 43 if (type == "INFINITE") |
| (...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 535 bool BaseSearchProvider::ZeroSuggestEnabled( | 536 bool BaseSearchProvider::ZeroSuggestEnabled( |
| 536 const GURL& suggest_url, | 537 const GURL& suggest_url, |
| 537 const TemplateURL* template_url, | 538 const TemplateURL* template_url, |
| 538 AutocompleteInput::PageClassification page_classification, | 539 AutocompleteInput::PageClassification page_classification, |
| 539 Profile* profile) { | 540 Profile* profile) { |
| 540 if (!OmniboxFieldTrial::InZeroSuggestFieldTrial()) | 541 if (!OmniboxFieldTrial::InZeroSuggestFieldTrial()) |
| 541 return false; | 542 return false; |
| 542 | 543 |
| 543 // Make sure we are sending the suggest request through HTTPS to prevent | 544 // Make sure we are sending the suggest request through HTTPS to prevent |
| 544 // exposing the current page URL or personalized results without encryption. | 545 // exposing the current page URL or personalized results without encryption. |
| 545 if (!suggest_url.SchemeIs(content::kHttpsScheme)) | 546 if (!suggest_url.SchemeIs(net::kHttpsScheme)) |
| 546 return false; | 547 return false; |
| 547 | 548 |
| 548 // Don't show zero suggest on the NTP. | 549 // Don't show zero suggest on the NTP. |
| 549 // TODO(hfung): Experiment with showing MostVisited zero suggest on NTP | 550 // TODO(hfung): Experiment with showing MostVisited zero suggest on NTP |
| 550 // under the conditions described in crbug.com/305366. | 551 // under the conditions described in crbug.com/305366. |
| 551 if ((page_classification == | 552 if ((page_classification == |
| 552 AutocompleteInput::INSTANT_NTP_WITH_FAKEBOX_AS_STARTING_FOCUS) || | 553 AutocompleteInput::INSTANT_NTP_WITH_FAKEBOX_AS_STARTING_FOCUS) || |
| 553 (page_classification == | 554 (page_classification == |
| 554 AutocompleteInput::INSTANT_NTP_WITH_OMNIBOX_AS_STARTING_FOCUS)) | 555 AutocompleteInput::INSTANT_NTP_WITH_OMNIBOX_AS_STARTING_FOCUS)) |
| 555 return false; | 556 return false; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 582 Profile* profile) { | 583 Profile* profile) { |
| 583 if (!ZeroSuggestEnabled(suggest_url, template_url, page_classification, | 584 if (!ZeroSuggestEnabled(suggest_url, template_url, page_classification, |
| 584 profile)) | 585 profile)) |
| 585 return false; | 586 return false; |
| 586 | 587 |
| 587 if (!current_page_url.is_valid()) | 588 if (!current_page_url.is_valid()) |
| 588 return false; | 589 return false; |
| 589 | 590 |
| 590 // Only allow HTTP URLs or HTTPS URLs for the same domain as the search | 591 // Only allow HTTP URLs or HTTPS URLs for the same domain as the search |
| 591 // provider. | 592 // provider. |
| 592 if ((current_page_url.scheme() != content::kHttpScheme) && | 593 if ((current_page_url.scheme() != net::kHttpScheme) && |
| 593 ((current_page_url.scheme() != content::kHttpsScheme) || | 594 ((current_page_url.scheme() != net::kHttpsScheme) || |
| 594 !net::registry_controlled_domains::SameDomainOrHost( | 595 !net::registry_controlled_domains::SameDomainOrHost( |
| 595 current_page_url, suggest_url, | 596 current_page_url, |
| 597 suggest_url, |
| 596 net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES))) | 598 net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES))) |
| 597 return false; | 599 return false; |
| 598 | 600 |
| 599 // Check field trials and settings allow sending the URL on suggest requests. | 601 // Check field trials and settings allow sending the URL on suggest requests. |
| 600 ProfileSyncService* service = | 602 ProfileSyncService* service = |
| 601 ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile); | 603 ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile); |
| 602 sync_driver::SyncPrefs sync_prefs(profile->GetPrefs()); | 604 sync_driver::SyncPrefs sync_prefs(profile->GetPrefs()); |
| 603 if (service == NULL || | 605 if (service == NULL || |
| 604 !service->IsSyncEnabledAndLoggedIn() || | 606 !service->IsSyncEnabledAndLoggedIn() || |
| 605 !sync_prefs.GetPreferredDataTypes(syncer::UserTypes()).Has( | 607 !sync_prefs.GetPreferredDataTypes(syncer::UserTypes()).Has( |
| (...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 898 } | 900 } |
| 899 | 901 |
| 900 void BaseSearchProvider::OnDeletionComplete( | 902 void BaseSearchProvider::OnDeletionComplete( |
| 901 bool success, SuggestionDeletionHandler* handler) { | 903 bool success, SuggestionDeletionHandler* handler) { |
| 902 RecordDeletionResult(success); | 904 RecordDeletionResult(success); |
| 903 SuggestionDeletionHandlers::iterator it = std::find( | 905 SuggestionDeletionHandlers::iterator it = std::find( |
| 904 deletion_handlers_.begin(), deletion_handlers_.end(), handler); | 906 deletion_handlers_.begin(), deletion_handlers_.end(), handler); |
| 905 DCHECK(it != deletion_handlers_.end()); | 907 DCHECK(it != deletion_handlers_.end()); |
| 906 deletion_handlers_.erase(it); | 908 deletion_handlers_.erase(it); |
| 907 } | 909 } |
| OLD | NEW |