Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(237)

Side by Side Diff: chrome/browser/sync/profile_sync_factory_impl.cc

Issue 8596017: sync: rename ProfileSyncFactory to ProfileSyncComponentsFactory. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: final Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011 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 "base/command_line.h"
6 #include "chrome/browser/extensions/app_notification_manager.h"
7 #include "chrome/browser/extensions/extension_service.h"
8 #include "chrome/browser/extensions/settings/settings_backend.h"
9 #include "chrome/browser/prefs/pref_model_associator.h"
10 #include "chrome/browser/profiles/profile.h"
11 #include "chrome/browser/search_engines/template_url_service.h"
12 #include "chrome/browser/search_engines/template_url_service_factory.h"
13 #include "chrome/browser/sync/api/syncable_service.h"
14 #include "chrome/browser/sync/glue/app_data_type_controller.h"
15 #include "chrome/browser/sync/glue/app_notification_data_type_controller.h"
16 #include "chrome/browser/sync/glue/autofill_data_type_controller.h"
17 #include "chrome/browser/sync/glue/autofill_profile_data_type_controller.h"
18 #include "chrome/browser/sync/glue/bookmark_change_processor.h"
19 #include "chrome/browser/sync/glue/bookmark_data_type_controller.h"
20 #include "chrome/browser/sync/glue/bookmark_model_associator.h"
21 #include "chrome/browser/sync/glue/data_type_manager_impl.h"
22 #include "chrome/browser/sync/glue/extension_data_type_controller.h"
23 #include "chrome/browser/sync/glue/extension_setting_data_type_controller.h"
24 #include "chrome/browser/sync/glue/generic_change_processor.h"
25 #include "chrome/browser/sync/glue/password_change_processor.h"
26 #include "chrome/browser/sync/glue/password_data_type_controller.h"
27 #include "chrome/browser/sync/glue/password_model_associator.h"
28 #include "chrome/browser/sync/glue/preference_data_type_controller.h"
29 #include "chrome/browser/sync/glue/search_engine_data_type_controller.h"
30 #include "chrome/browser/sync/glue/session_change_processor.h"
31 #include "chrome/browser/sync/glue/session_data_type_controller.h"
32 #include "chrome/browser/sync/glue/session_model_associator.h"
33 #include "chrome/browser/sync/glue/shared_change_processor.h"
34 #include "chrome/browser/sync/glue/sync_backend_host.h"
35 #include "chrome/browser/sync/glue/syncable_service_adapter.h"
36 #include "chrome/browser/sync/glue/theme_change_processor.h"
37 #include "chrome/browser/sync/glue/theme_data_type_controller.h"
38 #include "chrome/browser/sync/glue/theme_model_associator.h"
39 #include "chrome/browser/sync/glue/typed_url_change_processor.h"
40 #include "chrome/browser/sync/glue/typed_url_data_type_controller.h"
41 #include "chrome/browser/sync/glue/typed_url_model_associator.h"
42 #include "chrome/browser/sync/profile_sync_factory_impl.h"
43 #include "chrome/browser/sync/profile_sync_service.h"
44 #include "chrome/browser/sync/signin_manager.h"
45 #include "chrome/browser/webdata/autocomplete_syncable_service.h"
46 #include "chrome/browser/webdata/autofill_profile_syncable_service.h"
47 #include "chrome/browser/webdata/web_data_service.h"
48 #include "chrome/common/chrome_switches.h"
49 #include "chrome/common/pref_names.h"
50 #include "content/public/browser/browser_thread.h"
51
52 using browser_sync::AppDataTypeController;
53 using browser_sync::AppNotificationDataTypeController;
54 using browser_sync::AutofillDataTypeController;
55 using browser_sync::AutofillProfileDataTypeController;
56 using browser_sync::BookmarkChangeProcessor;
57 using browser_sync::BookmarkDataTypeController;
58 using browser_sync::BookmarkModelAssociator;
59 using browser_sync::DataTypeController;
60 using browser_sync::DataTypeManager;
61 using browser_sync::DataTypeManagerImpl;
62 using browser_sync::ExtensionDataTypeController;
63 using browser_sync::ExtensionSettingDataTypeController;
64 using browser_sync::GenericChangeProcessor;
65 using browser_sync::PasswordChangeProcessor;
66 using browser_sync::PasswordDataTypeController;
67 using browser_sync::PasswordModelAssociator;
68 using browser_sync::PreferenceDataTypeController;
69 using browser_sync::SearchEngineDataTypeController;
70 using browser_sync::SessionChangeProcessor;
71 using browser_sync::SessionDataTypeController;
72 using browser_sync::SessionModelAssociator;
73 using browser_sync::SharedChangeProcessor;
74 using browser_sync::SyncableServiceAdapter;
75 using browser_sync::SyncBackendHost;
76 using browser_sync::ThemeChangeProcessor;
77 using browser_sync::ThemeDataTypeController;
78 using browser_sync::ThemeModelAssociator;
79 using browser_sync::TypedUrlChangeProcessor;
80 using browser_sync::TypedUrlDataTypeController;
81 using browser_sync::TypedUrlModelAssociator;
82 using browser_sync::UnrecoverableErrorHandler;
83 using content::BrowserThread;
84
85 ProfileSyncFactoryImpl::ProfileSyncFactoryImpl(Profile* profile,
86 CommandLine* command_line)
87 : profile_(profile),
88 command_line_(command_line) {
89 }
90
91 ProfileSyncService* ProfileSyncFactoryImpl::CreateProfileSyncService(
92 const std::string& cros_user) {
93
94 ProfileSyncService* pss = new ProfileSyncService(
95 this, profile_, new SigninManager(), cros_user);
96 return pss;
97 }
98
99 void ProfileSyncFactoryImpl::RegisterDataTypes(ProfileSyncService* pss) {
100 // App sync is enabled by default. Register unless explicitly
101 // disabled.
102 if (!command_line_->HasSwitch(switches::kDisableSyncApps)) {
103 pss->RegisterDataTypeController(
104 new AppDataTypeController(this, profile_, pss));
105 }
106
107 // Autofill sync is enabled by default. Register unless explicitly
108 // disabled.
109 if (!command_line_->HasSwitch(switches::kDisableSyncAutofill)) {
110 pss->RegisterDataTypeController(
111 new AutofillDataTypeController(this, profile_));
112 }
113
114 // Bookmark sync is enabled by default. Register unless explicitly
115 // disabled.
116 if (!command_line_->HasSwitch(switches::kDisableSyncBookmarks)) {
117 pss->RegisterDataTypeController(
118 new BookmarkDataTypeController(this, profile_, pss));
119 }
120
121 // Extension sync is enabled by default. Register unless explicitly
122 // disabled.
123 if (!command_line_->HasSwitch(switches::kDisableSyncExtensions)) {
124 pss->RegisterDataTypeController(
125 new ExtensionDataTypeController(this, profile_, pss));
126 }
127
128 // Password sync is enabled by default. Register unless explicitly
129 // disabled.
130 if (!command_line_->HasSwitch(switches::kDisableSyncPasswords)) {
131 pss->RegisterDataTypeController(
132 new PasswordDataTypeController(this, profile_));
133 }
134
135 // Preference sync is enabled by default. Register unless explicitly
136 // disabled.
137 if (!command_line_->HasSwitch(switches::kDisableSyncPreferences)) {
138 pss->RegisterDataTypeController(
139 new PreferenceDataTypeController(this, profile_, pss));
140 }
141
142 // Theme sync is enabled by default. Register unless explicitly disabled.
143 if (!command_line_->HasSwitch(switches::kDisableSyncThemes)) {
144 pss->RegisterDataTypeController(
145 new ThemeDataTypeController(this, profile_, pss));
146 }
147
148 // TypedUrl sync is enabled by default. Register unless explicitly disabled,
149 // or if saving history is disabled.
150 if (!profile_->GetPrefs()->GetBoolean(prefs::kSavingBrowserHistoryDisabled) &&
151 !command_line_->HasSwitch(switches::kDisableSyncTypedUrls)) {
152 pss->RegisterDataTypeController(
153 new TypedUrlDataTypeController(this, profile_));
154 }
155
156 // Search Engine sync is enabled by default. Register only if explicitly
157 // disabled.
158 if (!command_line_->HasSwitch(switches::kDisableSyncSearchEngines)) {
159 pss->RegisterDataTypeController(
160 new SearchEngineDataTypeController(this, profile_, pss));
161 }
162
163 // Session sync is disabled by default. Register only if explicitly
164 // enabled.
165 if (command_line_->HasSwitch(switches::kEnableSyncTabs)) {
166 pss->RegisterDataTypeController(
167 new SessionDataTypeController(this, profile_, pss));
168 }
169
170 // Extension setting sync is disabled by default. Register only if
171 // explicitly enabled.
172 if (command_line_->HasSwitch(switches::kEnableSyncExtensionSettings)) {
173 pss->RegisterDataTypeController(
174 new ExtensionSettingDataTypeController(
175 syncable::EXTENSION_SETTINGS, this, profile_, pss));
176 pss->RegisterDataTypeController(
177 new ExtensionSettingDataTypeController(
178 syncable::APP_SETTINGS, this, profile_, pss));
179 }
180
181 if (!command_line_->HasSwitch(switches::kDisableSyncAutofillProfile)) {
182 pss->RegisterDataTypeController(
183 new AutofillProfileDataTypeController(this, profile_));
184 }
185
186 // App notifications sync is enabled by default. Register only if
187 // explicitly disabled.
188 if (!command_line_->HasSwitch(switches::kDisableSyncAppNotifications)) {
189 pss->RegisterDataTypeController(
190 new AppNotificationDataTypeController(this, profile_, pss));
191 }
192 }
193
194 DataTypeManager* ProfileSyncFactoryImpl::CreateDataTypeManager(
195 SyncBackendHost* backend,
196 const DataTypeController::TypeMap* controllers) {
197 return new DataTypeManagerImpl(backend, controllers);
198 }
199
200 browser_sync::GenericChangeProcessor*
201 ProfileSyncFactoryImpl::CreateGenericChangeProcessor(
202 ProfileSyncService* profile_sync_service,
203 browser_sync::UnrecoverableErrorHandler* error_handler,
204 const base::WeakPtr<SyncableService>& local_service) {
205 sync_api::UserShare* user_share = profile_sync_service->GetUserShare();
206 return new GenericChangeProcessor(error_handler,
207 local_service,
208 user_share);
209 }
210
211 browser_sync::SharedChangeProcessor* ProfileSyncFactoryImpl::
212 CreateSharedChangeProcessor() {
213 return new SharedChangeProcessor();
214 }
215
216 ProfileSyncFactory::SyncComponents
217 ProfileSyncFactoryImpl::CreateAppSyncComponents(
218 ProfileSyncService* profile_sync_service,
219 UnrecoverableErrorHandler* error_handler) {
220 base::WeakPtr<SyncableService> app_sync_service =
221 profile_sync_service->profile()->GetExtensionService()->AsWeakPtr();
222 sync_api::UserShare* user_share = profile_sync_service->GetUserShare();
223 GenericChangeProcessor* change_processor =
224 new GenericChangeProcessor(error_handler, app_sync_service, user_share);
225 browser_sync::SyncableServiceAdapter* sync_service_adapter =
226 new browser_sync::SyncableServiceAdapter(syncable::APPS,
227 app_sync_service,
228 change_processor);
229 return SyncComponents(sync_service_adapter, change_processor);
230 }
231
232 base::WeakPtr<SyncableService>
233 ProfileSyncFactoryImpl::GetAutofillProfileSyncableService(
234 WebDataService* web_data_service) const {
235 return web_data_service->GetAutofillProfileSyncableService()->AsWeakPtr();
236 }
237
238 base::WeakPtr<SyncableService>
239 ProfileSyncFactoryImpl::GetAutocompleteSyncableService(
240 WebDataService* web_data_service) const {
241 return web_data_service->GetAutocompleteSyncableService()->AsWeakPtr();
242 }
243
244 ProfileSyncFactory::SyncComponents
245 ProfileSyncFactoryImpl::CreateBookmarkSyncComponents(
246 ProfileSyncService* profile_sync_service,
247 UnrecoverableErrorHandler* error_handler) {
248 BookmarkModel* bookmark_model =
249 profile_sync_service->profile()->GetBookmarkModel();
250 sync_api::UserShare* user_share = profile_sync_service->GetUserShare();
251 BookmarkModelAssociator* model_associator =
252 new BookmarkModelAssociator(bookmark_model,
253 user_share,
254 error_handler);
255 BookmarkChangeProcessor* change_processor =
256 new BookmarkChangeProcessor(model_associator,
257 error_handler);
258 return SyncComponents(model_associator, change_processor);
259 }
260
261 ProfileSyncFactory::SyncComponents
262 ProfileSyncFactoryImpl::CreateExtensionOrAppSettingSyncComponents(
263 syncable::ModelType type,
264 SyncableService* settings_service,
265 ProfileSyncService* profile_sync_service,
266 UnrecoverableErrorHandler* error_handler) {
267 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
268 DCHECK(type == syncable::EXTENSION_SETTINGS ||
269 type == syncable::APP_SETTINGS);
270 sync_api::UserShare* user_share = profile_sync_service->GetUserShare();
271 GenericChangeProcessor* change_processor =
272 new GenericChangeProcessor(error_handler,
273 settings_service->AsWeakPtr(),
274 user_share);
275 browser_sync::SyncableServiceAdapter* sync_service_adapter =
276 new browser_sync::SyncableServiceAdapter(type,
277 settings_service,
278 change_processor);
279 return SyncComponents(sync_service_adapter, change_processor);
280 }
281
282 ProfileSyncFactory::SyncComponents
283 ProfileSyncFactoryImpl::CreateExtensionSyncComponents(
284 ProfileSyncService* profile_sync_service,
285 UnrecoverableErrorHandler* error_handler) {
286 base::WeakPtr<SyncableService> extension_sync_service =
287 profile_sync_service->profile()->GetExtensionService()->AsWeakPtr();
288 sync_api::UserShare* user_share = profile_sync_service->GetUserShare();
289 GenericChangeProcessor* change_processor =
290 new GenericChangeProcessor(error_handler,
291 extension_sync_service,
292 user_share);
293 browser_sync::SyncableServiceAdapter* sync_service_adapter =
294 new browser_sync::SyncableServiceAdapter(syncable::EXTENSIONS,
295 extension_sync_service,
296 change_processor);
297 return SyncComponents(sync_service_adapter, change_processor);
298 }
299
300 ProfileSyncFactory::SyncComponents
301 ProfileSyncFactoryImpl::CreatePasswordSyncComponents(
302 ProfileSyncService* profile_sync_service,
303 PasswordStore* password_store,
304 UnrecoverableErrorHandler* error_handler) {
305 PasswordModelAssociator* model_associator =
306 new PasswordModelAssociator(profile_sync_service,
307 password_store);
308 PasswordChangeProcessor* change_processor =
309 new PasswordChangeProcessor(model_associator,
310 password_store,
311 error_handler);
312 return SyncComponents(model_associator, change_processor);
313 }
314
315 ProfileSyncFactory::SyncComponents
316 ProfileSyncFactoryImpl::CreatePreferenceSyncComponents(
317 ProfileSyncService* profile_sync_service,
318 UnrecoverableErrorHandler* error_handler) {
319 base::WeakPtr<SyncableService> pref_sync_service =
320 profile_->GetPrefs()->GetSyncableService()->AsWeakPtr();
321 sync_api::UserShare* user_share = profile_sync_service->GetUserShare();
322 GenericChangeProcessor* change_processor =
323 new GenericChangeProcessor(error_handler,
324 pref_sync_service,
325 user_share);
326 SyncableServiceAdapter* sync_service_adapter =
327 new SyncableServiceAdapter(syncable::PREFERENCES,
328 pref_sync_service,
329 change_processor);
330 return SyncComponents(sync_service_adapter, change_processor);
331 }
332
333 ProfileSyncFactory::SyncComponents
334 ProfileSyncFactoryImpl::CreateThemeSyncComponents(
335 ProfileSyncService* profile_sync_service,
336 UnrecoverableErrorHandler* error_handler) {
337 ThemeModelAssociator* model_associator =
338 new ThemeModelAssociator(profile_sync_service);
339 ThemeChangeProcessor* change_processor =
340 new ThemeChangeProcessor(error_handler);
341 return SyncComponents(model_associator, change_processor);
342 }
343
344 ProfileSyncFactory::SyncComponents
345 ProfileSyncFactoryImpl::CreateTypedUrlSyncComponents(
346 ProfileSyncService* profile_sync_service,
347 history::HistoryBackend* history_backend,
348 browser_sync::UnrecoverableErrorHandler* error_handler) {
349 TypedUrlModelAssociator* model_associator =
350 new TypedUrlModelAssociator(profile_sync_service,
351 history_backend);
352 TypedUrlChangeProcessor* change_processor =
353 new TypedUrlChangeProcessor(profile_,
354 model_associator,
355 history_backend,
356 error_handler);
357 return SyncComponents(model_associator, change_processor);
358 }
359
360 ProfileSyncFactory::SyncComponents
361 ProfileSyncFactoryImpl::CreateSessionSyncComponents(
362 ProfileSyncService* profile_sync_service,
363 UnrecoverableErrorHandler* error_handler) {
364 SessionModelAssociator* model_associator =
365 new SessionModelAssociator(profile_sync_service);
366 SessionChangeProcessor* change_processor =
367 new SessionChangeProcessor(error_handler, model_associator);
368 return SyncComponents(model_associator, change_processor);
369 }
370
371 ProfileSyncFactory::SyncComponents
372 ProfileSyncFactoryImpl::CreateSearchEngineSyncComponents(
373 ProfileSyncService* profile_sync_service,
374 UnrecoverableErrorHandler* error_handler) {
375 base::WeakPtr<SyncableService> se_sync_service =
376 TemplateURLServiceFactory::GetForProfile(profile_)->AsWeakPtr();
377 DCHECK(se_sync_service);
378 sync_api::UserShare* user_share = profile_sync_service->GetUserShare();
379 GenericChangeProcessor* change_processor =
380 new GenericChangeProcessor(error_handler,
381 se_sync_service,
382 user_share);
383 SyncableServiceAdapter* sync_service_adapter =
384 new SyncableServiceAdapter(syncable::SEARCH_ENGINES,
385 se_sync_service,
386 change_processor);
387 return SyncComponents(sync_service_adapter, change_processor);
388 }
389
390 ProfileSyncFactory::SyncComponents
391 ProfileSyncFactoryImpl::CreateAppNotificationSyncComponents(
392 ProfileSyncService* profile_sync_service,
393 browser_sync::UnrecoverableErrorHandler* error_handler) {
394 base::WeakPtr<SyncableService> notif_sync_service =
395 profile_->GetExtensionService()->app_notification_manager()->AsWeakPtr();
396 DCHECK(notif_sync_service);
397 sync_api::UserShare* user_share = profile_sync_service->GetUserShare();
398 GenericChangeProcessor* change_processor =
399 new GenericChangeProcessor(error_handler,
400 notif_sync_service,
401 user_share);
402 SyncableServiceAdapter* sync_service_adapter =
403 new SyncableServiceAdapter(syncable::APP_NOTIFICATIONS,
404 notif_sync_service,
405 change_processor);
406 return SyncComponents(sync_service_adapter, change_processor);
407 }
OLDNEW
« no previous file with comments | « chrome/browser/sync/profile_sync_factory_impl.h ('k') | chrome/browser/sync/profile_sync_factory_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698