| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/browser_sync/profile_sync_components_factory_impl.h" | 5 #include "components/browser_sync/profile_sync_components_factory_impl.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/debug/dump_without_crashing.h" | 9 #include "base/debug/dump_without_crashing.h" |
| 10 #include "base/feature_list.h" | 10 #include "base/feature_list.h" |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 #include "components/sync_bookmarks/bookmark_model_associator.h" | 45 #include "components/sync_bookmarks/bookmark_model_associator.h" |
| 46 #include "components/sync_sessions/session_data_type_controller.h" | 46 #include "components/sync_sessions/session_data_type_controller.h" |
| 47 #include "google_apis/gaia/oauth2_token_service.h" | 47 #include "google_apis/gaia/oauth2_token_service.h" |
| 48 #include "google_apis/gaia/oauth2_token_service_request.h" | 48 #include "google_apis/gaia/oauth2_token_service_request.h" |
| 49 #include "net/url_request/url_request_context_getter.h" | 49 #include "net/url_request/url_request_context_getter.h" |
| 50 | 50 |
| 51 using bookmarks::BookmarkModel; | 51 using bookmarks::BookmarkModel; |
| 52 using sync_bookmarks::BookmarkChangeProcessor; | 52 using sync_bookmarks::BookmarkChangeProcessor; |
| 53 using sync_bookmarks::BookmarkDataTypeController; | 53 using sync_bookmarks::BookmarkDataTypeController; |
| 54 using sync_bookmarks::BookmarkModelAssociator; | 54 using sync_bookmarks::BookmarkModelAssociator; |
| 55 using syncer::DataTypeController; | 55 using sync_driver::DataTypeController; |
| 56 using syncer::DataTypeManager; | 56 using sync_driver::DataTypeManager; |
| 57 using syncer::DataTypeManagerImpl; | 57 using sync_driver::DataTypeManagerImpl; |
| 58 using syncer::DataTypeManagerObserver; | 58 using sync_driver::DataTypeManagerObserver; |
| 59 using syncer::DeviceInfoDataTypeController; | 59 using sync_driver::DeviceInfoDataTypeController; |
| 60 using syncer::ProxyDataTypeController; | 60 using sync_driver::ProxyDataTypeController; |
| 61 using syncer::UIDataTypeController; | 61 using sync_driver::UIDataTypeController; |
| 62 using syncer::UIModelTypeController; | 62 using sync_driver_v2::UIModelTypeController; |
| 63 using sync_sessions::SessionDataTypeController; | 63 using sync_sessions::SessionDataTypeController; |
| 64 | 64 |
| 65 namespace browser_sync { | 65 namespace browser_sync { |
| 66 | 66 |
| 67 namespace { | 67 namespace { |
| 68 | 68 |
| 69 syncer::ModelTypeSet GetDisabledTypesFromCommandLine( | 69 syncer::ModelTypeSet GetDisabledTypesFromCommandLine( |
| 70 const base::CommandLine& command_line) { | 70 const base::CommandLine& command_line) { |
| 71 syncer::ModelTypeSet disabled_types; | 71 syncer::ModelTypeSet disabled_types; |
| 72 std::string disabled_types_str = | 72 std::string disabled_types_str = |
| (...skipping 11 matching lines...) Expand all Loading... |
| 84 // Used to gate syncing preferences, see crbug.com/374865 for more information. | 84 // Used to gate syncing preferences, see crbug.com/374865 for more information. |
| 85 // Has always been on for desktop/ChromeOS, so default to on. This feature is | 85 // Has always been on for desktop/ChromeOS, so default to on. This feature is |
| 86 // mainly to give us a kill switch should something go wrong with starting to | 86 // mainly to give us a kill switch should something go wrong with starting to |
| 87 // sync prefs on mobile. | 87 // sync prefs on mobile. |
| 88 const base::Feature kSyncPreferencesFeature{"SyncPreferences", | 88 const base::Feature kSyncPreferencesFeature{"SyncPreferences", |
| 89 base::FEATURE_ENABLED_BY_DEFAULT}; | 89 base::FEATURE_ENABLED_BY_DEFAULT}; |
| 90 | 90 |
| 91 } // namespace | 91 } // namespace |
| 92 | 92 |
| 93 ProfileSyncComponentsFactoryImpl::ProfileSyncComponentsFactoryImpl( | 93 ProfileSyncComponentsFactoryImpl::ProfileSyncComponentsFactoryImpl( |
| 94 syncer::SyncClient* sync_client, | 94 sync_driver::SyncClient* sync_client, |
| 95 version_info::Channel channel, | 95 version_info::Channel channel, |
| 96 const std::string& version, | 96 const std::string& version, |
| 97 bool is_tablet, | 97 bool is_tablet, |
| 98 const base::CommandLine& command_line, | 98 const base::CommandLine& command_line, |
| 99 const char* history_disabled_pref, | 99 const char* history_disabled_pref, |
| 100 const GURL& sync_service_url, | 100 const GURL& sync_service_url, |
| 101 const scoped_refptr<base::SingleThreadTaskRunner>& ui_thread, | 101 const scoped_refptr<base::SingleThreadTaskRunner>& ui_thread, |
| 102 const scoped_refptr<base::SingleThreadTaskRunner>& db_thread, | 102 const scoped_refptr<base::SingleThreadTaskRunner>& db_thread, |
| 103 OAuth2TokenService* token_service, | 103 OAuth2TokenService* token_service, |
| 104 net::URLRequestContextGetter* url_request_context_getter, | 104 net::URLRequestContextGetter* url_request_context_getter, |
| (...skipping 13 matching lines...) Expand all Loading... |
| 118 web_data_service_(web_data_service), | 118 web_data_service_(web_data_service), |
| 119 password_store_(password_store), | 119 password_store_(password_store), |
| 120 weak_factory_(this) { | 120 weak_factory_(this) { |
| 121 DCHECK(token_service_); | 121 DCHECK(token_service_); |
| 122 DCHECK(url_request_context_getter_); | 122 DCHECK(url_request_context_getter_); |
| 123 } | 123 } |
| 124 | 124 |
| 125 ProfileSyncComponentsFactoryImpl::~ProfileSyncComponentsFactoryImpl() {} | 125 ProfileSyncComponentsFactoryImpl::~ProfileSyncComponentsFactoryImpl() {} |
| 126 | 126 |
| 127 void ProfileSyncComponentsFactoryImpl::RegisterDataTypes( | 127 void ProfileSyncComponentsFactoryImpl::RegisterDataTypes( |
| 128 syncer::SyncService* sync_service, | 128 sync_driver::SyncService* sync_service, |
| 129 const RegisterDataTypesMethod& register_platform_types_method) { | 129 const RegisterDataTypesMethod& register_platform_types_method) { |
| 130 syncer::ModelTypeSet disabled_types = | 130 syncer::ModelTypeSet disabled_types = |
| 131 GetDisabledTypesFromCommandLine(command_line_); | 131 GetDisabledTypesFromCommandLine(command_line_); |
| 132 syncer::ModelTypeSet enabled_types = | 132 syncer::ModelTypeSet enabled_types = |
| 133 GetEnabledTypesFromCommandLine(command_line_); | 133 GetEnabledTypesFromCommandLine(command_line_); |
| 134 RegisterCommonDataTypes(sync_service, disabled_types, enabled_types); | 134 RegisterCommonDataTypes(sync_service, disabled_types, enabled_types); |
| 135 if (!register_platform_types_method.is_null()) | 135 if (!register_platform_types_method.is_null()) |
| 136 register_platform_types_method.Run(sync_service, disabled_types, | 136 register_platform_types_method.Run(sync_service, disabled_types, |
| 137 enabled_types); | 137 enabled_types); |
| 138 } | 138 } |
| 139 | 139 |
| 140 void ProfileSyncComponentsFactoryImpl::RegisterCommonDataTypes( | 140 void ProfileSyncComponentsFactoryImpl::RegisterCommonDataTypes( |
| 141 syncer::SyncService* sync_service, | 141 sync_driver::SyncService* sync_service, |
| 142 syncer::ModelTypeSet disabled_types, | 142 syncer::ModelTypeSet disabled_types, |
| 143 syncer::ModelTypeSet enabled_types) { | 143 syncer::ModelTypeSet enabled_types) { |
| 144 base::Closure error_callback = | 144 base::Closure error_callback = |
| 145 base::Bind(&syncer::ChromeReportUnrecoverableError, channel_); | 145 base::Bind(&ChromeReportUnrecoverableError, channel_); |
| 146 | 146 |
| 147 // TODO(stanisc): can DEVICE_INFO be one of disabled datatypes? | 147 // TODO(stanisc): can DEVICE_INFO be one of disabled datatypes? |
| 148 if (base::FeatureList::IsEnabled(switches::kSyncUSSDeviceInfo)) { | 148 if (base::FeatureList::IsEnabled(switches::kSyncUSSDeviceInfo)) { |
| 149 // Use an error callback that always uploads a stacktrace if it can to help | 149 // Use an error callback that always uploads a stacktrace if it can to help |
| 150 // get USS as stable as possible. | 150 // get USS as stable as possible. |
| 151 sync_service->RegisterDataTypeController( | 151 sync_service->RegisterDataTypeController( |
| 152 base::MakeUnique<UIModelTypeController>( | 152 base::MakeUnique<UIModelTypeController>( |
| 153 syncer::DEVICE_INFO, base::Bind(&base::debug::DumpWithoutCrashing), | 153 syncer::DEVICE_INFO, base::Bind(&base::debug::DumpWithoutCrashing), |
| 154 sync_client_)); | 154 sync_client_)); |
| 155 } else { | 155 } else { |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 sync_service->RegisterDataTypeController( | 280 sync_service->RegisterDataTypeController( |
| 281 base::MakeUnique<UIDataTypeController>(syncer::ARTICLES, error_callback, | 281 base::MakeUnique<UIDataTypeController>(syncer::ARTICLES, error_callback, |
| 282 sync_client_)); | 282 sync_client_)); |
| 283 } | 283 } |
| 284 } | 284 } |
| 285 | 285 |
| 286 DataTypeManager* ProfileSyncComponentsFactoryImpl::CreateDataTypeManager( | 286 DataTypeManager* ProfileSyncComponentsFactoryImpl::CreateDataTypeManager( |
| 287 const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>& | 287 const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>& |
| 288 debug_info_listener, | 288 debug_info_listener, |
| 289 const DataTypeController::TypeMap* controllers, | 289 const DataTypeController::TypeMap* controllers, |
| 290 const syncer::DataTypeEncryptionHandler* encryption_handler, | 290 const sync_driver::DataTypeEncryptionHandler* encryption_handler, |
| 291 syncer::SyncBackendHost* backend, | 291 SyncBackendHost* backend, |
| 292 DataTypeManagerObserver* observer) { | 292 DataTypeManagerObserver* observer) { |
| 293 return new DataTypeManagerImpl(debug_info_listener, controllers, | 293 return new DataTypeManagerImpl(debug_info_listener, controllers, |
| 294 encryption_handler, backend, observer); | 294 encryption_handler, backend, observer); |
| 295 } | 295 } |
| 296 | 296 |
| 297 syncer::SyncBackendHost* | 297 SyncBackendHost* ProfileSyncComponentsFactoryImpl::CreateSyncBackendHost( |
| 298 ProfileSyncComponentsFactoryImpl::CreateSyncBackendHost( | |
| 299 const std::string& name, | 298 const std::string& name, |
| 300 invalidation::InvalidationService* invalidator, | 299 invalidation::InvalidationService* invalidator, |
| 301 const base::WeakPtr<syncer::SyncPrefs>& sync_prefs, | 300 const base::WeakPtr<sync_driver::SyncPrefs>& sync_prefs, |
| 302 const base::FilePath& sync_folder) { | 301 const base::FilePath& sync_folder) { |
| 303 return new syncer::SyncBackendHostImpl(name, sync_client_, ui_thread_, | 302 return new SyncBackendHostImpl(name, sync_client_, ui_thread_, invalidator, |
| 304 invalidator, sync_prefs, sync_folder); | 303 sync_prefs, sync_folder); |
| 305 } | 304 } |
| 306 | 305 |
| 307 std::unique_ptr<syncer::LocalDeviceInfoProvider> | 306 std::unique_ptr<sync_driver::LocalDeviceInfoProvider> |
| 308 ProfileSyncComponentsFactoryImpl::CreateLocalDeviceInfoProvider() { | 307 ProfileSyncComponentsFactoryImpl::CreateLocalDeviceInfoProvider() { |
| 309 return base::MakeUnique<syncer::LocalDeviceInfoProviderImpl>( | 308 return base::MakeUnique<LocalDeviceInfoProviderImpl>(channel_, version_, |
| 310 channel_, version_, is_tablet_); | 309 is_tablet_); |
| 311 } | 310 } |
| 312 | 311 |
| 313 class TokenServiceProvider | 312 class TokenServiceProvider |
| 314 : public OAuth2TokenServiceRequest::TokenServiceProvider { | 313 : public OAuth2TokenServiceRequest::TokenServiceProvider { |
| 315 public: | 314 public: |
| 316 TokenServiceProvider( | 315 TokenServiceProvider( |
| 317 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, | 316 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
| 318 OAuth2TokenService* token_service); | 317 OAuth2TokenService* token_service); |
| 319 | 318 |
| 320 // OAuth2TokenServiceRequest::TokenServiceProvider implementation. | 319 // OAuth2TokenServiceRequest::TokenServiceProvider implementation. |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 388 base::TimeDelta::FromMinutes(30); | 387 base::TimeDelta::FromMinutes(30); |
| 389 const base::TimeDelta max_backoff_delay = base::TimeDelta::FromHours(4); | 388 const base::TimeDelta max_backoff_delay = base::TimeDelta::FromHours(4); |
| 390 std::unique_ptr<syncer::AttachmentService> attachment_service( | 389 std::unique_ptr<syncer::AttachmentService> attachment_service( |
| 391 new syncer::AttachmentServiceImpl( | 390 new syncer::AttachmentServiceImpl( |
| 392 std::move(attachment_store), std::move(attachment_uploader), | 391 std::move(attachment_store), std::move(attachment_uploader), |
| 393 std::move(attachment_downloader), delegate, initial_backoff_delay, | 392 std::move(attachment_downloader), delegate, initial_backoff_delay, |
| 394 max_backoff_delay)); | 393 max_backoff_delay)); |
| 395 return attachment_service; | 394 return attachment_service; |
| 396 } | 395 } |
| 397 | 396 |
| 398 syncer::SyncApiComponentFactory::SyncComponents | 397 sync_driver::SyncApiComponentFactory::SyncComponents |
| 399 ProfileSyncComponentsFactoryImpl::CreateBookmarkSyncComponents( | 398 ProfileSyncComponentsFactoryImpl::CreateBookmarkSyncComponents( |
| 400 syncer::SyncService* sync_service, | 399 sync_driver::SyncService* sync_service, |
| 401 std::unique_ptr<syncer::DataTypeErrorHandler> error_handler) { | 400 std::unique_ptr<syncer::DataTypeErrorHandler> error_handler) { |
| 402 BookmarkModel* bookmark_model = | 401 BookmarkModel* bookmark_model = |
| 403 sync_service->GetSyncClient()->GetBookmarkModel(); | 402 sync_service->GetSyncClient()->GetBookmarkModel(); |
| 404 syncer::UserShare* user_share = sync_service->GetUserShare(); | 403 syncer::UserShare* user_share = sync_service->GetUserShare(); |
| 405 // TODO(akalin): We may want to propagate this switch up eventually. | 404 // TODO(akalin): We may want to propagate this switch up eventually. |
| 406 #if defined(OS_ANDROID) || defined(OS_IOS) | 405 #if defined(OS_ANDROID) || defined(OS_IOS) |
| 407 const bool kExpectMobileBookmarksFolder = true; | 406 const bool kExpectMobileBookmarksFolder = true; |
| 408 #else | 407 #else |
| 409 const bool kExpectMobileBookmarksFolder = false; | 408 const bool kExpectMobileBookmarksFolder = false; |
| 410 #endif | 409 #endif |
| 411 BookmarkModelAssociator* model_associator = new BookmarkModelAssociator( | 410 BookmarkModelAssociator* model_associator = new BookmarkModelAssociator( |
| 412 bookmark_model, sync_service->GetSyncClient(), user_share, | 411 bookmark_model, sync_service->GetSyncClient(), user_share, |
| 413 error_handler->Copy(), kExpectMobileBookmarksFolder); | 412 error_handler->Copy(), kExpectMobileBookmarksFolder); |
| 414 BookmarkChangeProcessor* change_processor = | 413 BookmarkChangeProcessor* change_processor = |
| 415 new BookmarkChangeProcessor(sync_service->GetSyncClient(), | 414 new BookmarkChangeProcessor(sync_service->GetSyncClient(), |
| 416 model_associator, std::move(error_handler)); | 415 model_associator, std::move(error_handler)); |
| 417 return SyncComponents(model_associator, change_processor); | 416 return SyncComponents(model_associator, change_processor); |
| 418 } | 417 } |
| 419 | 418 |
| 420 // static | 419 // static |
| 421 void ProfileSyncComponentsFactoryImpl::OverridePrefsForUssTest(bool use_uss) { | 420 void ProfileSyncComponentsFactoryImpl::OverridePrefsForUssTest(bool use_uss) { |
| 422 override_prefs_controller_to_uss_for_test_ = use_uss; | 421 override_prefs_controller_to_uss_for_test_ = use_uss; |
| 423 } | 422 } |
| 424 | 423 |
| 425 bool ProfileSyncComponentsFactoryImpl:: | 424 bool ProfileSyncComponentsFactoryImpl:: |
| 426 override_prefs_controller_to_uss_for_test_ = false; | 425 override_prefs_controller_to_uss_for_test_ = false; |
| 427 | 426 |
| 428 } // namespace browser_sync | 427 } // namespace browser_sync |
| OLD | NEW |