| OLD | NEW |
| (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 } | |
| OLD | NEW |