1// Copyright (c) 2012 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/autocomplete_classifier_factory.h" 6 7#include "chrome/browser/autocomplete/autocomplete_classifier.h" 8#include "chrome/browser/autocomplete/autocomplete_controller.h" 9#include "chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.h" 10#include "chrome/browser/autocomplete/shortcuts_backend_factory.h" 11#include "chrome/browser/profiles/incognito_helpers.h" 12#include "chrome/browser/profiles/profile.h" 13#include "chrome/browser/search_engines/template_url_service_factory.h" 14#include "components/keyed_service/content/browser_context_dependency_manager.h" 15 16#if defined(ENABLE_EXTENSIONS) 17#include "extensions/browser/extension_system_provider.h" 18#include "extensions/browser/extensions_browser_client.h" 19#endif 20 21// static 22AutocompleteClassifier* AutocompleteClassifierFactory::GetForProfile( 23 Profile* profile) { 24 return static_cast<AutocompleteClassifier*>( 25 GetInstance()->GetServiceForBrowserContext(profile, true)); 26} 27 28// static 29AutocompleteClassifierFactory* AutocompleteClassifierFactory::GetInstance() { 30 return Singleton<AutocompleteClassifierFactory>::get(); 31} 32 33// static 34KeyedService* AutocompleteClassifierFactory::BuildInstanceFor( 35 content::BrowserContext* context) { 36 Profile* profile = static_cast<Profile*>(context); 37 return new AutocompleteClassifier( 38 make_scoped_ptr(new AutocompleteController( 39 profile, TemplateURLServiceFactory::GetForProfile(profile), NULL, 40 AutocompleteClassifier::kDefaultOmniboxProviders)), 41 scoped_ptr<AutocompleteSchemeClassifier>( 42 new ChromeAutocompleteSchemeClassifier(profile))); 43} 44 45AutocompleteClassifierFactory::AutocompleteClassifierFactory() 46 : BrowserContextKeyedServiceFactory( 47 "AutocompleteClassifier", 48 BrowserContextDependencyManager::GetInstance()) { 49#if defined(ENABLE_EXTENSIONS) 50 DependsOn( 51 extensions::ExtensionsBrowserClient::Get()->GetExtensionSystemFactory()); 52#endif 53 DependsOn(TemplateURLServiceFactory::GetInstance()); 54 // TODO(pkasting): Uncomment these once they exist. 55 // DependsOn(PrefServiceFactory::GetInstance()); 56 DependsOn(ShortcutsBackendFactory::GetInstance()); 57} 58 59AutocompleteClassifierFactory::~AutocompleteClassifierFactory() { 60} 61 62content::BrowserContext* AutocompleteClassifierFactory::GetBrowserContextToUse( 63 content::BrowserContext* context) const { 64 return chrome::GetBrowserContextRedirectedInIncognito(context); 65} 66 67bool AutocompleteClassifierFactory::ServiceIsNULLWhileTesting() const { 68 return true; 69} 70 71KeyedService* AutocompleteClassifierFactory::BuildServiceInstanceFor( 72 content::BrowserContext* profile) const { 73 return BuildInstanceFor(static_cast<Profile*>(profile)); 74} 75