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 22 AutocompleteClassifier* AutocompleteClassifierFactory::GetForProfile( 23 Profile* profile) { 24 return static_cast<AutocompleteClassifier*>( 25 GetInstance()->GetServiceForBrowserContext(profile, true)); 26 } 27 28 // static 29 AutocompleteClassifierFactory* AutocompleteClassifierFactory::GetInstance() { 30 return Singleton<AutocompleteClassifierFactory>::get(); 31 } 32 33 // static 34 KeyedService* 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 45 AutocompleteClassifierFactory::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 59 AutocompleteClassifierFactory::~AutocompleteClassifierFactory() { 60 } 61 62 content::BrowserContext* AutocompleteClassifierFactory::GetBrowserContextToUse( 63 content::BrowserContext* context) const { 64 return chrome::GetBrowserContextRedirectedInIncognito(context); 65 } 66 67 bool AutocompleteClassifierFactory::ServiceIsNULLWhileTesting() const { 68 return true; 69 } 70 71 KeyedService* AutocompleteClassifierFactory::BuildServiceInstanceFor( 72 content::BrowserContext* profile) const { 73 return BuildInstanceFor(static_cast<Profile*>(profile)); 74 } 75