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
3 // found in the LICENSE file.
5 #include "chrome/browser/autocomplete/chrome_autocomplete_provider_client.h"
7 #include "base/prefs/pref_service.h"
8 #include "chrome/browser/autocomplete/autocomplete_classifier.h"
9 #include "chrome/browser/autocomplete/autocomplete_classifier_factory.h"
10 #include "chrome/browser/bitmap_fetcher/bitmap_fetcher_service.h"
11 #include "chrome/browser/bitmap_fetcher/bitmap_fetcher_service_factory.h"
12 #include "chrome/browser/history/history_service_factory.h"
13 #include "chrome/browser/profiles/profile.h"
14 #include "chrome/browser/sync/profile_sync_service.h"
15 #include "chrome/browser/sync/profile_sync_service_factory.h"
16 #include "chrome/common/pref_names.h"
17 #include "components/history/core/browser/history_service.h"
19 ChromeAutocompleteProviderClient::ChromeAutocompleteProviderClient(
22 scheme_classifier_(profile
) {
25 ChromeAutocompleteProviderClient::~ChromeAutocompleteProviderClient() {
28 net::URLRequestContextGetter
*
29 ChromeAutocompleteProviderClient::RequestContext() {
30 return profile_
->GetRequestContext();
33 bool ChromeAutocompleteProviderClient::IsOffTheRecord() {
34 return profile_
->IsOffTheRecord();
37 std::string
ChromeAutocompleteProviderClient::AcceptLanguages() {
38 return profile_
->GetPrefs()->GetString(prefs::kAcceptLanguages
);
41 bool ChromeAutocompleteProviderClient::SearchSuggestEnabled() {
42 return profile_
->GetPrefs()->GetBoolean(prefs::kSearchSuggestEnabled
);
45 bool ChromeAutocompleteProviderClient::ShowBookmarkBar() {
46 return profile_
->GetPrefs()->GetBoolean(bookmarks::prefs::kShowBookmarkBar
);
49 const AutocompleteSchemeClassifier
&
50 ChromeAutocompleteProviderClient::SchemeClassifier() {
51 return scheme_classifier_
;
54 void ChromeAutocompleteProviderClient::Classify(
55 const base::string16
& text
,
57 bool allow_exact_keyword_match
,
58 metrics::OmniboxEventProto::PageClassification page_classification
,
59 AutocompleteMatch
* match
,
60 GURL
* alternate_nav_url
) {
61 AutocompleteClassifier
* classifier
=
62 AutocompleteClassifierFactory::GetForProfile(profile_
);
64 classifier
->Classify(text
, prefer_keyword
, allow_exact_keyword_match
,
65 page_classification
, match
, alternate_nav_url
);
68 history::URLDatabase
* ChromeAutocompleteProviderClient::InMemoryDatabase() {
69 history::HistoryService
* history_service
=
70 HistoryServiceFactory::GetForProfile(profile_
,
71 ServiceAccessType::EXPLICIT_ACCESS
);
72 return history_service
? history_service
->InMemoryDatabase() : NULL
;
75 void ChromeAutocompleteProviderClient::DeleteMatchingURLsForKeywordFromHistory(
76 history::KeywordID keyword_id
,
77 const base::string16
& term
) {
78 HistoryServiceFactory::GetForProfile(profile_
,
79 ServiceAccessType::EXPLICIT_ACCESS
)
80 ->DeleteMatchingURLsForKeyword(keyword_id
, term
);
83 bool ChromeAutocompleteProviderClient::TabSyncEnabledAndUnencrypted() {
84 // Check field trials and settings allow sending the URL on suggest requests.
85 ProfileSyncService
* service
=
86 ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile_
);
87 sync_driver::SyncPrefs
sync_prefs(profile_
->GetPrefs());
89 service
->IsSyncEnabledAndLoggedIn() &&
90 sync_prefs
.GetPreferredDataTypes(syncer::UserTypes()).Has(
91 syncer::PROXY_TABS
) &&
92 !service
->GetEncryptedDataTypes().Has(syncer::SESSIONS
);
95 void ChromeAutocompleteProviderClient::PrefetchImage(const GURL
& url
) {
96 BitmapFetcherService
* image_service
=
97 BitmapFetcherServiceFactory::GetForBrowserContext(profile_
);
98 DCHECK(image_service
);
99 image_service
->Prefetch(url
);