• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #include "chrome/browser/autocomplete/chrome_autocomplete_provider_client.h"
6 
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.h"
13 #include "chrome/browser/history/history_service_factory.h"
14 #include "chrome/browser/profiles/profile.h"
15 #include "chrome/browser/sync/profile_sync_service.h"
16 #include "chrome/browser/sync/profile_sync_service_factory.h"
17 #include "chrome/common/pref_names.h"
18 
ChromeAutocompleteProviderClient(Profile * profile)19 ChromeAutocompleteProviderClient::ChromeAutocompleteProviderClient(
20     Profile* profile)
21     : profile_(profile),
22       scheme_classifier_(profile) {
23 }
24 
~ChromeAutocompleteProviderClient()25 ChromeAutocompleteProviderClient::~ChromeAutocompleteProviderClient() {
26 }
27 
28 net::URLRequestContextGetter*
RequestContext()29 ChromeAutocompleteProviderClient::RequestContext() {
30   return profile_->GetRequestContext();
31 }
32 
IsOffTheRecord()33 bool ChromeAutocompleteProviderClient::IsOffTheRecord() {
34   return profile_->IsOffTheRecord();
35 }
36 
AcceptLanguages()37 std::string ChromeAutocompleteProviderClient::AcceptLanguages() {
38   return profile_->GetPrefs()->GetString(prefs::kAcceptLanguages);
39 }
40 
SearchSuggestEnabled()41 bool ChromeAutocompleteProviderClient::SearchSuggestEnabled() {
42   return profile_->GetPrefs()->GetBoolean(prefs::kSearchSuggestEnabled);
43 }
44 
ShowBookmarkBar()45 bool ChromeAutocompleteProviderClient::ShowBookmarkBar() {
46   return profile_->GetPrefs()->GetBoolean(bookmarks::prefs::kShowBookmarkBar);
47 }
48 
49 const AutocompleteSchemeClassifier&
SchemeClassifier()50 ChromeAutocompleteProviderClient::SchemeClassifier() {
51   return scheme_classifier_;
52 }
53 
Classify(const base::string16 & text,bool prefer_keyword,bool allow_exact_keyword_match,metrics::OmniboxEventProto::PageClassification page_classification,AutocompleteMatch * match,GURL * alternate_nav_url)54 void ChromeAutocompleteProviderClient::Classify(
55     const base::string16& text,
56     bool prefer_keyword,
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_);
63   DCHECK(classifier);
64   classifier->Classify(text, prefer_keyword, allow_exact_keyword_match,
65                        page_classification, match, alternate_nav_url);
66 }
67 
InMemoryDatabase()68 history::URLDatabase* ChromeAutocompleteProviderClient::InMemoryDatabase() {
69   HistoryService* history_service =
70       HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS);
71   return history_service ? history_service->InMemoryDatabase() : NULL;
72 }
73 
DeleteMatchingURLsForKeywordFromHistory(history::KeywordID keyword_id,const base::string16 & term)74 void ChromeAutocompleteProviderClient::DeleteMatchingURLsForKeywordFromHistory(
75     history::KeywordID keyword_id,
76     const base::string16& term) {
77   HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS)
78       ->DeleteMatchingURLsForKeyword(keyword_id, term);
79 }
80 
TabSyncEnabledAndUnencrypted()81 bool ChromeAutocompleteProviderClient::TabSyncEnabledAndUnencrypted() {
82   // Check field trials and settings allow sending the URL on suggest requests.
83   ProfileSyncService* service =
84       ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile_);
85   sync_driver::SyncPrefs sync_prefs(profile_->GetPrefs());
86   return service &&
87       service->IsSyncEnabledAndLoggedIn() &&
88       sync_prefs.GetPreferredDataTypes(syncer::UserTypes()).Has(
89           syncer::PROXY_TABS) &&
90       !service->GetEncryptedDataTypes().Has(syncer::SESSIONS);
91 }
92 
PrefetchImage(const GURL & url)93 void ChromeAutocompleteProviderClient::PrefetchImage(const GURL& url) {
94   BitmapFetcherService* image_service =
95       BitmapFetcherServiceFactory::GetForBrowserContext(profile_);
96   DCHECK(image_service);
97   image_service->Prefetch(url);
98 }
99