template_url_service_factory.cc revision a36e5920737c6adbddd3e43b760e5de8431db6e0
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/search_engines/template_url_service_factory.h" 6 7#include <string> 8 9#include "base/prefs/pref_service.h" 10#include "chrome/browser/google/google_url_tracker_factory.h" 11#include "chrome/browser/history/history_service_factory.h" 12#include "chrome/browser/profiles/incognito_helpers.h" 13#include "chrome/browser/search_engines/template_url_service.h" 14#include "chrome/browser/webdata/web_data_service_factory.h" 15#include "chrome/common/pref_names.h" 16#include "components/browser_context_keyed_service/browser_context_dependency_manager.h" 17#include "components/user_prefs/pref_registry_syncable.h" 18 19// static 20TemplateURLService* TemplateURLServiceFactory::GetForProfile(Profile* profile) { 21 return static_cast<TemplateURLService*>( 22 GetInstance()->GetServiceForBrowserContext(profile, true)); 23} 24 25// static 26TemplateURLServiceFactory* TemplateURLServiceFactory::GetInstance() { 27 return Singleton<TemplateURLServiceFactory>::get(); 28} 29 30// static 31BrowserContextKeyedService* TemplateURLServiceFactory::BuildInstanceFor( 32 content::BrowserContext* profile) { 33 return new TemplateURLService(static_cast<Profile*>(profile)); 34} 35 36TemplateURLServiceFactory::TemplateURLServiceFactory() 37 : BrowserContextKeyedServiceFactory( 38 "TemplateURLServiceFactory", 39 BrowserContextDependencyManager::GetInstance()) { 40 DependsOn(GoogleURLTrackerFactory::GetInstance()); 41 DependsOn(HistoryServiceFactory::GetInstance()); 42 DependsOn(WebDataServiceFactory::GetInstance()); 43} 44 45TemplateURLServiceFactory::~TemplateURLServiceFactory() {} 46 47BrowserContextKeyedService* TemplateURLServiceFactory::BuildServiceInstanceFor( 48 content::BrowserContext* profile) const { 49 return BuildInstanceFor(static_cast<Profile*>(profile)); 50} 51 52void TemplateURLServiceFactory::RegisterProfilePrefs( 53 user_prefs::PrefRegistrySyncable* registry) { 54 registry->RegisterStringPref(prefs::kSyncedDefaultSearchProviderGUID, 55 std::string(), 56 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 57 registry->RegisterBooleanPref( 58 prefs::kDefaultSearchProviderEnabled, 59 true, 60 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 61 registry->RegisterStringPref( 62 prefs::kDefaultSearchProviderName, 63 std::string(), 64 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 65 registry->RegisterStringPref( 66 prefs::kDefaultSearchProviderID, 67 std::string(), 68 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 69 registry->RegisterStringPref( 70 prefs::kDefaultSearchProviderPrepopulateID, 71 std::string(), 72 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 73 registry->RegisterStringPref( 74 prefs::kDefaultSearchProviderSuggestURL, 75 std::string(), 76 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 77 registry->RegisterStringPref( 78 prefs::kDefaultSearchProviderSearchURL, 79 std::string(), 80 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 81 registry->RegisterStringPref( 82 prefs::kDefaultSearchProviderInstantURL, 83 std::string(), 84 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 85 registry->RegisterStringPref( 86 prefs::kDefaultSearchProviderImageURL, 87 std::string(), 88 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 89 registry->RegisterStringPref( 90 prefs::kDefaultSearchProviderSearchURLPostParams, 91 std::string(), 92 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 93 registry->RegisterStringPref( 94 prefs::kDefaultSearchProviderSuggestURLPostParams, 95 std::string(), 96 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 97 registry->RegisterStringPref( 98 prefs::kDefaultSearchProviderInstantURLPostParams, 99 std::string(), 100 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 101 registry->RegisterStringPref( 102 prefs::kDefaultSearchProviderImageURLPostParams, 103 std::string(), 104 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 105 registry->RegisterStringPref( 106 prefs::kDefaultSearchProviderKeyword, 107 std::string(), 108 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 109 registry->RegisterStringPref( 110 prefs::kDefaultSearchProviderIconURL, 111 std::string(), 112 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 113 registry->RegisterStringPref( 114 prefs::kDefaultSearchProviderEncodings, 115 std::string(), 116 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 117 registry->RegisterListPref(prefs::kDefaultSearchProviderAlternateURLs, 118 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 119 registry->RegisterStringPref( 120 prefs::kDefaultSearchProviderSearchTermsReplacementKey, 121 std::string(), 122 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 123} 124 125content::BrowserContext* TemplateURLServiceFactory::GetBrowserContextToUse( 126 content::BrowserContext* context) const { 127 return chrome::GetBrowserContextRedirectedInIncognito(context); 128} 129 130bool TemplateURLServiceFactory::ServiceIsNULLWhileTesting() const { 131 return true; 132} 133 134void TemplateURLServiceFactory::BrowserContextShutdown( 135 content::BrowserContext* profile) { 136 // We shutdown AND destroy the TemplateURLService during this pass. 137 // TemplateURLService schedules a task on the WebDataService from its 138 // destructor. Delete it first to ensure the task gets scheduled before we 139 // shut down the database. 140 BrowserContextKeyedServiceFactory::BrowserContextShutdown(profile); 141 BrowserContextKeyedServiceFactory::BrowserContextDestroyed(profile); 142} 143 144void TemplateURLServiceFactory::BrowserContextDestroyed( 145 content::BrowserContext* profile) { 146 // Don't double delete. 147} 148