11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file. 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/autocomplete/chrome_autocomplete_provider_client.h" 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/prefs/pref_service.h" 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/autocomplete/autocomplete_classifier.h" 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/autocomplete/autocomplete_classifier_factory.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/bitmap_fetcher/bitmap_fetcher_service.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/bitmap_fetcher/bitmap_fetcher_service_factory.h" 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/history/history_service.h" 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/history/history_service_factory.h" 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/profiles/profile.h" 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/sync/profile_sync_service.h" 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/sync/profile_sync_service_factory.h" 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/common/pref_names.h" 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciChromeAutocompleteProviderClient::ChromeAutocompleteProviderClient( 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Profile* profile) 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci : profile_(profile), 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scheme_classifier_(profile) { 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciChromeAutocompleteProviderClient::~ChromeAutocompleteProviderClient() { 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinet::URLRequestContextGetter* 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciChromeAutocompleteProviderClient::RequestContext() { 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return profile_->GetRequestContext(); 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool ChromeAutocompleteProviderClient::IsOffTheRecord() { 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return profile_->IsOffTheRecord(); 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistd::string ChromeAutocompleteProviderClient::AcceptLanguages() { 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return profile_->GetPrefs()->GetString(prefs::kAcceptLanguages); 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool ChromeAutocompleteProviderClient::SearchSuggestEnabled() { 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return profile_->GetPrefs()->GetBoolean(prefs::kSearchSuggestEnabled); 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool ChromeAutocompleteProviderClient::ShowBookmarkBar() { 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return profile_->GetPrefs()->GetBoolean(bookmarks::prefs::kShowBookmarkBar); 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciconst AutocompleteSchemeClassifier& 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciChromeAutocompleteProviderClient::SchemeClassifier() { 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return scheme_classifier_; 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid ChromeAutocompleteProviderClient::Classify( 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const base::string16& text, 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool prefer_keyword, 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool allow_exact_keyword_match, 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci metrics::OmniboxEventProto::PageClassification page_classification, 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci AutocompleteMatch* match, 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GURL* alternate_nav_url) { 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci AutocompleteClassifier* classifier = 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci AutocompleteClassifierFactory::GetForProfile(profile_); 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK(classifier); 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci classifier->Classify(text, prefer_keyword, allow_exact_keyword_match, 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci page_classification, match, alternate_nav_url); 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccihistory::URLDatabase* ChromeAutocompleteProviderClient::InMemoryDatabase() { 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci HistoryService* history_service = 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS); 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return history_service ? history_service->InMemoryDatabase() : NULL; 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid ChromeAutocompleteProviderClient::DeleteMatchingURLsForKeywordFromHistory( 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci history::KeywordID keyword_id, 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const base::string16& term) { 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS) 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ->DeleteMatchingURLsForKeyword(keyword_id, term); 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool ChromeAutocompleteProviderClient::TabSyncEnabledAndUnencrypted() { 821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Check field trials and settings allow sending the URL on suggest requests. 831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ProfileSyncService* service = 841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile_); 851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci sync_driver::SyncPrefs sync_prefs(profile_->GetPrefs()); 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return service && 871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci service->IsSyncEnabledAndLoggedIn() && 881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci sync_prefs.GetPreferredDataTypes(syncer::UserTypes()).Has( 891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci syncer::PROXY_TABS) && 901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci !service->GetEncryptedDataTypes().Has(syncer::SESSIONS); 911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid ChromeAutocompleteProviderClient::PrefetchImage(const GURL& url) { 941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci BitmapFetcherService* image_service = 951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci BitmapFetcherServiceFactory::GetForBrowserContext(profile_); 961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK(image_service); 971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci image_service->Prefetch(url); 981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 99