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 |