Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / search_engines / template_url_service_factory.cc
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/bind.h"
10 #include "base/prefs/pref_service.h"
11 #include "chrome/browser/browser_process.h"
12 #include "chrome/browser/google/google_url_tracker_factory.h"
13 #include "chrome/browser/history/history_service_factory.h"
14 #include "chrome/browser/profiles/incognito_helpers.h"
15 #include "chrome/browser/rlz/rlz.h"
16 #include "chrome/browser/search_engines/chrome_template_url_service_client.h"
17 #include "chrome/browser/search_engines/ui_thread_search_terms_data.h"
18 #include "chrome/browser/webdata/web_data_service_factory.h"
19 #include "components/keyed_service/content/browser_context_dependency_manager.h"
20 #include "components/pref_registry/pref_registry_syncable.h"
21 #include "components/search_engines/default_search_manager.h"
22 #include "components/search_engines/search_engines_pref_names.h"
23 #include "components/search_engines/template_url_service.h"
24
25 // static
26 TemplateURLService* TemplateURLServiceFactory::GetForProfile(Profile* profile) {
27   return static_cast<TemplateURLService*>(
28       GetInstance()->GetServiceForBrowserContext(profile, true));
29 }
30
31 // static
32 TemplateURLServiceFactory* TemplateURLServiceFactory::GetInstance() {
33   return Singleton<TemplateURLServiceFactory>::get();
34 }
35
36 // static
37 KeyedService* TemplateURLServiceFactory::BuildInstanceFor(
38     content::BrowserContext* context) {
39   base::Closure dsp_change_callback;
40 #if defined(ENABLE_RLZ)
41   dsp_change_callback =
42       base::Bind(base::IgnoreResult(&RLZTracker::RecordProductEvent),
43                  rlz_lib::CHROME,
44                  RLZTracker::ChromeOmnibox(),
45                  rlz_lib::SET_TO_GOOGLE);
46 #endif
47   Profile* profile = static_cast<Profile*>(context);
48   return new TemplateURLService(
49       profile->GetPrefs(),
50       scoped_ptr<SearchTermsData>(new UIThreadSearchTermsData(profile)),
51       WebDataServiceFactory::GetKeywordWebDataForProfile(
52           profile, Profile::EXPLICIT_ACCESS),
53       scoped_ptr<TemplateURLServiceClient>(
54           new ChromeTemplateURLServiceClient(profile)),
55       GoogleURLTrackerFactory::GetForProfile(profile),
56       g_browser_process->rappor_service(),
57       dsp_change_callback);
58 }
59
60 TemplateURLServiceFactory::TemplateURLServiceFactory()
61     : BrowserContextKeyedServiceFactory(
62         "TemplateURLServiceFactory",
63         BrowserContextDependencyManager::GetInstance()) {
64   DependsOn(GoogleURLTrackerFactory::GetInstance());
65   DependsOn(HistoryServiceFactory::GetInstance());
66   DependsOn(WebDataServiceFactory::GetInstance());
67 }
68
69 TemplateURLServiceFactory::~TemplateURLServiceFactory() {}
70
71 KeyedService* TemplateURLServiceFactory::BuildServiceInstanceFor(
72     content::BrowserContext* profile) const {
73   return BuildInstanceFor(static_cast<Profile*>(profile));
74 }
75
76 void TemplateURLServiceFactory::RegisterProfilePrefs(
77     user_prefs::PrefRegistrySyncable* registry) {
78   DefaultSearchManager::RegisterProfilePrefs(registry);
79   registry->RegisterStringPref(prefs::kSyncedDefaultSearchProviderGUID,
80                                std::string(),
81                                user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
82   registry->RegisterBooleanPref(
83       prefs::kDefaultSearchProviderEnabled,
84       true,
85       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
86   registry->RegisterStringPref(
87       prefs::kDefaultSearchProviderName,
88       std::string(),
89       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
90   registry->RegisterStringPref(
91       prefs::kDefaultSearchProviderID,
92       std::string(),
93       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
94   registry->RegisterStringPref(
95       prefs::kDefaultSearchProviderPrepopulateID,
96       std::string(),
97       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
98   registry->RegisterStringPref(
99       prefs::kDefaultSearchProviderSuggestURL,
100       std::string(),
101       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
102   registry->RegisterStringPref(
103       prefs::kDefaultSearchProviderSearchURL,
104       std::string(),
105       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
106   registry->RegisterStringPref(
107       prefs::kDefaultSearchProviderInstantURL,
108       std::string(),
109       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
110   registry->RegisterStringPref(
111       prefs::kDefaultSearchProviderImageURL,
112       std::string(),
113       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
114   registry->RegisterStringPref(
115       prefs::kDefaultSearchProviderNewTabURL,
116       std::string(),
117       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
118   registry->RegisterStringPref(
119       prefs::kDefaultSearchProviderSearchURLPostParams,
120       std::string(),
121       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
122   registry->RegisterStringPref(
123       prefs::kDefaultSearchProviderSuggestURLPostParams,
124       std::string(),
125       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
126   registry->RegisterStringPref(
127       prefs::kDefaultSearchProviderInstantURLPostParams,
128       std::string(),
129       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
130   registry->RegisterStringPref(
131       prefs::kDefaultSearchProviderImageURLPostParams,
132       std::string(),
133       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
134   registry->RegisterStringPref(
135       prefs::kDefaultSearchProviderKeyword,
136       std::string(),
137       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
138   registry->RegisterStringPref(
139       prefs::kDefaultSearchProviderIconURL,
140       std::string(),
141       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
142   registry->RegisterStringPref(
143       prefs::kDefaultSearchProviderEncodings,
144       std::string(),
145       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
146   registry->RegisterListPref(prefs::kDefaultSearchProviderAlternateURLs,
147                              user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
148   registry->RegisterStringPref(
149       prefs::kDefaultSearchProviderSearchTermsReplacementKey,
150       std::string(),
151       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
152 }
153
154 content::BrowserContext* TemplateURLServiceFactory::GetBrowserContextToUse(
155     content::BrowserContext* context) const {
156   return chrome::GetBrowserContextRedirectedInIncognito(context);
157 }
158
159 bool TemplateURLServiceFactory::ServiceIsNULLWhileTesting() const {
160   return true;
161 }