OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "chrome/browser/sync/chrome_sync_client.h" | 5 #include "chrome/browser/sync/chrome_sync_client.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 #include "chrome/browser/chromeos/arc/arc_util.h" | 113 #include "chrome/browser/chromeos/arc/arc_util.h" |
114 #include "chrome/browser/chromeos/printing/printers_manager.h" | 114 #include "chrome/browser/chromeos/printing/printers_manager.h" |
115 #include "chrome/browser/chromeos/printing/printers_manager_factory.h" | 115 #include "chrome/browser/chromeos/printing/printers_manager_factory.h" |
116 #include "chrome/browser/chromeos/printing/printers_sync_bridge.h" | 116 #include "chrome/browser/chromeos/printing/printers_sync_bridge.h" |
117 #include "chrome/browser/ui/app_list/arc/arc_package_sync_data_type_controller.h
" | 117 #include "chrome/browser/ui/app_list/arc/arc_package_sync_data_type_controller.h
" |
118 #include "chrome/browser/ui/app_list/arc/arc_package_syncable_service.h" | 118 #include "chrome/browser/ui/app_list/arc/arc_package_syncable_service.h" |
119 #include "components/sync_wifi/wifi_credential_syncable_service.h" | 119 #include "components/sync_wifi/wifi_credential_syncable_service.h" |
120 #include "components/sync_wifi/wifi_credential_syncable_service_factory.h" | 120 #include "components/sync_wifi/wifi_credential_syncable_service_factory.h" |
121 #endif // defined(OS_CHROMEOS) | 121 #endif // defined(OS_CHROMEOS) |
122 | 122 |
123 using content::BrowserThread; | 123 using base::Callback; |
| 124 using base::WeakPtr; |
124 #if BUILDFLAG(ENABLE_EXTENSIONS) | 125 #if BUILDFLAG(ENABLE_EXTENSIONS) |
125 using browser_sync::ExtensionDataTypeController; | 126 using browser_sync::ExtensionDataTypeController; |
126 using browser_sync::ExtensionSettingDataTypeController; | 127 using browser_sync::ExtensionSettingDataTypeController; |
127 #endif // BUILDFLAG(ENABLE_EXTENSIONS) | 128 #endif // BUILDFLAG(ENABLE_EXTENSIONS) |
128 using browser_sync::SearchEngineDataTypeController; | 129 using browser_sync::SearchEngineDataTypeController; |
| 130 using content::BrowserThread; |
129 using syncer::AsyncDirectoryTypeController; | 131 using syncer::AsyncDirectoryTypeController; |
| 132 using syncer::SyncableService; |
| 133 |
| 134 using ServiceProvider = syncer::SyncClient::ServiceProvider; |
130 | 135 |
131 namespace browser_sync { | 136 namespace browser_sync { |
132 | 137 |
133 namespace { | 138 namespace { |
| 139 |
134 #if defined(OS_WIN) | 140 #if defined(OS_WIN) |
135 const base::FilePath::CharType kLoopbackServerBackendFilename[] = | 141 const base::FilePath::CharType kLoopbackServerBackendFilename[] = |
136 FILE_PATH_LITERAL("profile.pb"); | 142 FILE_PATH_LITERAL("profile.pb"); |
137 #endif // defined(OS_WIN) | 143 #endif // defined(OS_WIN) |
| 144 |
| 145 // The following are a set of functions to facilitate returning SyncableServices |
| 146 // and SyncBridges. Non-UI model types sometimes have difficulties providing a |
| 147 // WeakPtr to their integration object on the UI thread. By instead returning a |
| 148 // Callback we are able to give model types a little bit of flexibility. |
| 149 |
| 150 // The preferred and simpler approach is to to retrieve your corresponding |
| 151 // WeakPtr on the UI thread, which is where GetSyncableServiceForType() and |
| 152 // GetSyncBridgeForModelType() are invoked. A simple Callback that just captures |
| 153 // the WeakPtr can easy be returned. Trampoline() is all that's really required |
| 154 // for this, with WrapInCallback() and WrapInProvider() adding syntactic sugar. |
| 155 // All UI thread model types should be able to follow this pattern. |
| 156 |
| 157 // The other approach is capturing an intermediate thread safe object that is |
| 158 // subsequently used on the model thread. Most model types that follow this |
| 159 // pattern do things a little bit uniquely, but a common problem is not having |
| 160 // a method that's going to return exactly the right type. For example, needing |
| 161 // to up-cast or grab a WeakPtr after the model type specific functions are run |
| 162 // in a Callback. |
| 163 |
| 164 template <typename T> |
| 165 T Trampoline(T arg) { |
| 166 return arg; |
| 167 } |
| 168 |
| 169 template <typename T> |
| 170 Callback<T()> WrapInCallback(T arg) { |
| 171 return base::Bind(&Trampoline<T>, arg); |
| 172 } |
| 173 |
| 174 WeakPtr<SyncableService> ServiceAsWeakPtr(SyncableService* ptr) { |
| 175 return ptr ? ptr->AsWeakPtr() : WeakPtr<SyncableService>(); |
| 176 } |
| 177 |
| 178 ServiceProvider WrapInProvider(SyncableService* service) { |
| 179 return WrapInCallback(ServiceAsWeakPtr(service)); |
| 180 } |
| 181 |
| 182 template <typename T> |
| 183 WeakPtr<SyncableService> CallbackResultAsWeakPtr(Callback<T()> callback) { |
| 184 return ServiceAsWeakPtr(callback.Run()); |
| 185 } |
| 186 |
| 187 template <typename T> |
| 188 ServiceProvider WrapInWeakPtrCallback(Callback<T()> callback) { |
| 189 return base::Bind(&CallbackResultAsWeakPtr<T>, callback); |
| 190 } |
| 191 |
138 } // namespace | 192 } // namespace |
139 | 193 |
140 // Chrome implementation of SyncSessionsClient. Needs to be in a separate class | 194 // Chrome implementation of SyncSessionsClient. Needs to be in a separate class |
141 // due to possible multiple inheritance issues, wherein ChromeSyncClient might | 195 // due to possible multiple inheritance issues, wherein ChromeSyncClient might |
142 // inherit from other interfaces with same methods. | 196 // inherit from other interfaces with same methods. |
143 class SyncSessionsClientImpl : public sync_sessions::SyncSessionsClient { | 197 class SyncSessionsClientImpl : public sync_sessions::SyncSessionsClient { |
144 public: | 198 public: |
145 explicit SyncSessionsClientImpl(Profile* profile) : profile_(profile) { | 199 explicit SyncSessionsClientImpl(Profile* profile) : profile_(profile) { |
146 window_delegates_getter_.reset( | 200 window_delegates_getter_.reset( |
147 #if defined(OS_ANDROID) | 201 #if defined(OS_ANDROID) |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
292 | 346 |
293 favicon::FaviconService* ChromeSyncClient::GetFaviconService() { | 347 favicon::FaviconService* ChromeSyncClient::GetFaviconService() { |
294 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 348 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
295 return FaviconServiceFactory::GetForProfile( | 349 return FaviconServiceFactory::GetForProfile( |
296 profile_, ServiceAccessType::IMPLICIT_ACCESS); | 350 profile_, ServiceAccessType::IMPLICIT_ACCESS); |
297 } | 351 } |
298 | 352 |
299 history::HistoryService* ChromeSyncClient::GetHistoryService() { | 353 history::HistoryService* ChromeSyncClient::GetHistoryService() { |
300 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 354 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
301 return HistoryServiceFactory::GetForProfile( | 355 return HistoryServiceFactory::GetForProfile( |
302 profile_, ServiceAccessType::EXPLICIT_ACCESS); | 356 profile_, ServiceAccessType::IMPLICIT_ACCESS); |
303 } | 357 } |
304 | 358 |
305 bool ChromeSyncClient::HasPasswordStore() { | 359 bool ChromeSyncClient::HasPasswordStore() { |
306 return password_store_ != nullptr; | 360 return password_store_ != nullptr; |
307 } | 361 } |
308 | 362 |
309 autofill::PersonalDataManager* ChromeSyncClient::GetPersonalDataManager() { | 363 autofill::PersonalDataManager* ChromeSyncClient::GetPersonalDataManager() { |
310 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 364 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
311 return autofill::PersonalDataManagerFactory::GetForProfile(profile_); | 365 return autofill::PersonalDataManagerFactory::GetForProfile(profile_); |
312 } | 366 } |
313 | 367 |
314 base::Closure ChromeSyncClient::GetPasswordStateChangedCallback() { | 368 base::Closure ChromeSyncClient::GetPasswordStateChangedCallback() { |
315 return base::Bind( | 369 return base::Bind( |
316 &PasswordStoreFactory::OnPasswordsSyncedStatePotentiallyChanged, | 370 &PasswordStoreFactory::OnPasswordsSyncedStatePotentiallyChanged, |
317 base::Unretained(profile_)); | 371 base::Unretained(profile_)); |
318 } | 372 } |
319 | 373 |
320 syncer::SyncApiComponentFactory::RegisterDataTypesMethod | 374 syncer::SyncApiComponentFactory::RegisterDataTypesMethod |
321 ChromeSyncClient::GetRegisterPlatformTypesCallback() { | 375 ChromeSyncClient::GetRegisterPlatformTypesCallback() { |
322 return base::Bind( | 376 return base::Bind( |
323 #if defined(OS_ANDROID) | 377 #if defined(OS_ANDROID) |
324 &ChromeSyncClient::RegisterAndroidDataTypes, | 378 &ChromeSyncClient::RegisterAndroidDataTypes, |
325 #else | 379 #else // defined(OS_ANDROID) |
326 &ChromeSyncClient::RegisterDesktopDataTypes, | 380 &ChromeSyncClient::RegisterDesktopDataTypes, |
327 #endif // defined(OS_ANDROID) | 381 #endif // defined(OS_ANDROID) |
328 weak_ptr_factory_.GetWeakPtr()); | 382 weak_ptr_factory_.GetWeakPtr()); |
329 } | 383 } |
330 | 384 |
331 BookmarkUndoService* ChromeSyncClient::GetBookmarkUndoServiceIfExists() { | 385 BookmarkUndoService* ChromeSyncClient::GetBookmarkUndoServiceIfExists() { |
332 return BookmarkUndoServiceFactory::GetForProfileIfExists(profile_); | 386 return BookmarkUndoServiceFactory::GetForProfileIfExists(profile_); |
333 } | 387 } |
334 | 388 |
335 invalidation::InvalidationService* ChromeSyncClient::GetInvalidationService() { | 389 invalidation::InvalidationService* ChromeSyncClient::GetInvalidationService() { |
336 invalidation::ProfileInvalidationProvider* provider = | 390 invalidation::ProfileInvalidationProvider* provider = |
337 invalidation::ProfileInvalidationProviderFactory::GetForProfile(profile_); | 391 invalidation::ProfileInvalidationProviderFactory::GetForProfile(profile_); |
338 if (provider) | 392 if (provider) |
339 return provider->GetInvalidationService(); | 393 return provider->GetInvalidationService(); |
340 return nullptr; | 394 return nullptr; |
341 } | 395 } |
342 | 396 |
343 scoped_refptr<syncer::ExtensionsActivity> | 397 scoped_refptr<syncer::ExtensionsActivity> |
344 ChromeSyncClient::GetExtensionsActivity() { | 398 ChromeSyncClient::GetExtensionsActivity() { |
345 return extensions_activity_monitor_.GetExtensionsActivity(); | 399 return extensions_activity_monitor_.GetExtensionsActivity(); |
346 } | 400 } |
347 | 401 |
348 sync_sessions::SyncSessionsClient* ChromeSyncClient::GetSyncSessionsClient() { | 402 sync_sessions::SyncSessionsClient* ChromeSyncClient::GetSyncSessionsClient() { |
349 return sync_sessions_client_.get(); | 403 return sync_sessions_client_.get(); |
350 } | 404 } |
351 | 405 |
352 base::WeakPtr<syncer::SyncableService> | 406 ServiceProvider ChromeSyncClient::GetSyncableServiceForType( |
353 ChromeSyncClient::GetSyncableServiceForType(syncer::ModelType type) { | 407 syncer::ModelType type) { |
| 408 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
354 if (!profile_) { // For tests. | 409 if (!profile_) { // For tests. |
355 return base::WeakPtr<syncer::SyncableService>(); | 410 return WrapInProvider(nullptr); |
356 } | 411 } |
357 switch (type) { | 412 switch (type) { |
358 case syncer::DEVICE_INFO: | 413 case syncer::DEVICE_INFO: |
359 return ProfileSyncServiceFactory::GetForProfile(profile_) | 414 return WrapInProvider(ProfileSyncServiceFactory::GetForProfile(profile_) |
360 ->GetDeviceInfoSyncableService() | 415 ->GetDeviceInfoSyncableService()); |
361 ->AsWeakPtr(); | |
362 case syncer::PREFERENCES: | 416 case syncer::PREFERENCES: |
363 return PrefServiceSyncableFromProfile(profile_) | |
364 ->GetSyncableService(syncer::PREFERENCES) | |
365 ->AsWeakPtr(); | |
366 case syncer::PRIORITY_PREFERENCES: | 417 case syncer::PRIORITY_PREFERENCES: |
367 return PrefServiceSyncableFromProfile(profile_) | 418 return WrapInProvider( |
368 ->GetSyncableService(syncer::PRIORITY_PREFERENCES) | 419 PrefServiceSyncableFromProfile(profile_)->GetSyncableService(type)); |
369 ->AsWeakPtr(); | |
370 case syncer::AUTOFILL: | 420 case syncer::AUTOFILL: |
371 case syncer::AUTOFILL_PROFILE: | 421 case syncer::AUTOFILL_PROFILE: |
372 case syncer::AUTOFILL_WALLET_DATA: | 422 case syncer::AUTOFILL_WALLET_DATA: |
373 case syncer::AUTOFILL_WALLET_METADATA: { | 423 case syncer::AUTOFILL_WALLET_METADATA: { |
374 if (!web_data_service_) | 424 if (!web_data_service_) { |
375 return base::WeakPtr<syncer::SyncableService>(); | 425 return WrapInProvider(nullptr); |
376 if (type == syncer::AUTOFILL) { | 426 } else if (type == syncer::AUTOFILL) { |
377 return autofill::AutocompleteSyncableService::FromWebDataService( | 427 return WrapInWeakPtrCallback(base::Bind( |
378 web_data_service_.get())->AsWeakPtr(); | 428 &autofill::AutocompleteSyncableService::FromWebDataService, |
| 429 base::RetainedRef(web_data_service_))); |
379 } else if (type == syncer::AUTOFILL_PROFILE) { | 430 } else if (type == syncer::AUTOFILL_PROFILE) { |
380 return autofill::AutofillProfileSyncableService::FromWebDataService( | 431 return WrapInWeakPtrCallback(base::Bind( |
381 web_data_service_.get())->AsWeakPtr(); | 432 &autofill::AutofillProfileSyncableService::FromWebDataService, |
| 433 base::RetainedRef(web_data_service_))); |
382 } else if (type == syncer::AUTOFILL_WALLET_METADATA) { | 434 } else if (type == syncer::AUTOFILL_WALLET_METADATA) { |
383 return autofill::AutofillWalletMetadataSyncableService:: | 435 return WrapInWeakPtrCallback( |
384 FromWebDataService(web_data_service_.get())->AsWeakPtr(); | 436 base::Bind(&autofill::AutofillWalletMetadataSyncableService:: |
| 437 FromWebDataService, |
| 438 base::RetainedRef(web_data_service_))); |
| 439 } else { |
| 440 return WrapInWeakPtrCallback(base::Bind( |
| 441 &autofill::AutofillWalletSyncableService::FromWebDataService, |
| 442 base::RetainedRef(web_data_service_))); |
385 } | 443 } |
386 return autofill::AutofillWalletSyncableService::FromWebDataService( | |
387 web_data_service_.get())->AsWeakPtr(); | |
388 } | 444 } |
389 case syncer::SEARCH_ENGINES: | 445 case syncer::SEARCH_ENGINES: |
390 return TemplateURLServiceFactory::GetForProfile(profile_)->AsWeakPtr(); | 446 return WrapInProvider(TemplateURLServiceFactory::GetForProfile(profile_)); |
391 #if BUILDFLAG(ENABLE_EXTENSIONS) | 447 #if BUILDFLAG(ENABLE_EXTENSIONS) |
392 case syncer::APPS: | 448 case syncer::APPS: |
393 case syncer::EXTENSIONS: | 449 case syncer::EXTENSIONS: |
394 return ExtensionSyncService::Get(profile_)->AsWeakPtr(); | 450 return WrapInProvider(ExtensionSyncService::Get(profile_)); |
395 case syncer::APP_SETTINGS: | 451 case syncer::APP_SETTINGS: |
396 case syncer::EXTENSION_SETTINGS: | 452 case syncer::EXTENSION_SETTINGS: |
397 return extensions::settings_sync_util::GetSyncableService(profile_, type) | 453 return extensions::settings_sync_util::GetSyncableServiceProvider( |
398 ->AsWeakPtr(); | 454 profile_, type); |
399 #endif // BUILDFLAG(ENABLE_EXTENSIONS) | 455 #endif // BUILDFLAG(ENABLE_EXTENSIONS) |
400 #if BUILDFLAG(ENABLE_APP_LIST) | 456 #if BUILDFLAG(ENABLE_APP_LIST) |
401 case syncer::APP_LIST: | 457 case syncer::APP_LIST: |
402 return app_list::AppListSyncableServiceFactory::GetForProfile(profile_)-> | 458 return WrapInProvider( |
403 AsWeakPtr(); | 459 app_list::AppListSyncableServiceFactory::GetForProfile(profile_)); |
404 #endif // BUILDFLAG(ENABLE_APP_LIST) | 460 #endif // BUILDFLAG(ENABLE_APP_LIST) |
405 #if !defined(OS_ANDROID) | 461 #if !defined(OS_ANDROID) |
406 case syncer::THEMES: | 462 case syncer::THEMES: |
407 return ThemeServiceFactory::GetForProfile(profile_)-> | 463 return WrapInProvider(ThemeServiceFactory::GetForProfile(profile_) |
408 GetThemeSyncableService()->AsWeakPtr(); | 464 ->GetThemeSyncableService()); |
409 #endif // !defined(OS_ANDROID) | 465 #endif // !defined(OS_ANDROID) |
410 case syncer::HISTORY_DELETE_DIRECTIVES: { | 466 case syncer::HISTORY_DELETE_DIRECTIVES: |
| 467 return WrapInProvider(GetHistoryService()); |
| 468 case syncer::TYPED_URLS: { |
411 history::HistoryService* history = GetHistoryService(); | 469 history::HistoryService* history = GetHistoryService(); |
412 return history ? history->AsWeakPtr() | 470 return WrapInProvider(history ? history->GetTypedUrlSyncableService() |
413 : base::WeakPtr<history::HistoryService>(); | 471 : nullptr); |
414 } | |
415 case syncer::TYPED_URLS: { | |
416 // We request history service with explicit access here because this | |
417 // codepath is executed on backend thread while HistoryServiceFactory | |
418 // checks preference value in implicit mode and PrefService expectes calls | |
419 // only from UI thread. | |
420 history::HistoryService* history = HistoryServiceFactory::GetForProfile( | |
421 profile_, ServiceAccessType::EXPLICIT_ACCESS); | |
422 if (!history) | |
423 return base::WeakPtr<history::TypedUrlSyncableService>(); | |
424 return history->GetTypedUrlSyncableService()->AsWeakPtr(); | |
425 } | 472 } |
426 #if BUILDFLAG(ENABLE_SPELLCHECK) | 473 #if BUILDFLAG(ENABLE_SPELLCHECK) |
427 case syncer::DICTIONARY: | 474 case syncer::DICTIONARY: |
428 return SpellcheckServiceFactory::GetForContext(profile_)-> | 475 return WrapInProvider(SpellcheckServiceFactory::GetForContext(profile_) |
429 GetCustomDictionary()->AsWeakPtr(); | 476 ->GetCustomDictionary()); |
430 #endif // BUILDFLAG(ENABLE_SPELLCHECK) | 477 #endif // BUILDFLAG(ENABLE_SPELLCHECK) |
431 case syncer::FAVICON_IMAGES: | 478 case syncer::FAVICON_IMAGES: |
432 case syncer::FAVICON_TRACKING: { | 479 case syncer::FAVICON_TRACKING: |
433 sync_sessions::FaviconCache* favicons = | 480 return WrapInProvider(ProfileSyncServiceFactory::GetForProfile(profile_) |
434 ProfileSyncServiceFactory::GetForProfile(profile_)->GetFaviconCache(); | 481 ->GetFaviconCache()); |
435 return favicons ? favicons->AsWeakPtr() | |
436 : base::WeakPtr<syncer::SyncableService>(); | |
437 } | |
438 #if BUILDFLAG(ENABLE_SUPERVISED_USERS) | 482 #if BUILDFLAG(ENABLE_SUPERVISED_USERS) |
439 case syncer::SUPERVISED_USER_SETTINGS: | 483 case syncer::SUPERVISED_USER_SETTINGS: |
440 return SupervisedUserSettingsServiceFactory::GetForProfile(profile_)-> | 484 return WrapInProvider( |
441 AsWeakPtr(); | 485 SupervisedUserSettingsServiceFactory::GetForProfile(profile_)); |
442 #if !defined(OS_ANDROID) | 486 #if !defined(OS_ANDROID) |
443 case syncer::SUPERVISED_USERS: | 487 case syncer::SUPERVISED_USERS: |
444 return SupervisedUserSyncServiceFactory::GetForProfile(profile_)-> | 488 return WrapInProvider( |
445 AsWeakPtr(); | 489 SupervisedUserSyncServiceFactory::GetForProfile(profile_)); |
446 case syncer::SUPERVISED_USER_SHARED_SETTINGS: | 490 case syncer::SUPERVISED_USER_SHARED_SETTINGS: |
447 return SupervisedUserSharedSettingsServiceFactory::GetForBrowserContext( | 491 return WrapInProvider( |
448 profile_)->AsWeakPtr(); | 492 SupervisedUserSharedSettingsServiceFactory::GetForBrowserContext( |
| 493 profile_)); |
449 #endif // !defined(OS_ANDROID) | 494 #endif // !defined(OS_ANDROID) |
450 case syncer::SUPERVISED_USER_WHITELISTS: | 495 case syncer::SUPERVISED_USER_WHITELISTS: |
451 return SupervisedUserServiceFactory::GetForProfile(profile_) | 496 return WrapInProvider( |
452 ->GetWhitelistService() | 497 SupervisedUserServiceFactory::GetForProfile(profile_) |
453 ->AsWeakPtr(); | 498 ->GetWhitelistService()); |
454 #endif // BUILDFLAG(ENABLE_SUPERVISED_USERS) | 499 #endif // BUILDFLAG(ENABLE_SUPERVISED_USERS) |
455 case syncer::ARTICLES: { | 500 case syncer::ARTICLES: { |
456 dom_distiller::DomDistillerService* service = | 501 dom_distiller::DomDistillerService* distiller_service = |
457 dom_distiller::DomDistillerServiceFactory::GetForBrowserContext( | 502 dom_distiller::DomDistillerServiceFactory::GetForBrowserContext( |
458 profile_); | 503 profile_); |
459 if (service) | 504 return WrapInProvider(distiller_service |
460 return service->GetSyncableService()->AsWeakPtr(); | 505 ? distiller_service->GetSyncableService() |
461 return base::WeakPtr<syncer::SyncableService>(); | 506 : nullptr); |
462 } | 507 } |
463 case syncer::SESSIONS: { | 508 case syncer::SESSIONS: |
464 return ProfileSyncServiceFactory::GetForProfile(profile_)-> | 509 return WrapInProvider(ProfileSyncServiceFactory::GetForProfile(profile_) |
465 GetSessionsSyncableService()->AsWeakPtr(); | 510 ->GetSessionsSyncableService()); |
466 } | 511 case syncer::PASSWORDS: |
467 case syncer::PASSWORDS: { | |
468 return password_store_.get() | 512 return password_store_.get() |
469 ? password_store_->GetPasswordSyncableService() | 513 ? base::Bind(&password_manager::PasswordStore:: |
470 : base::WeakPtr<syncer::SyncableService>(); | 514 GetPasswordSyncableService, |
471 } | 515 base::RetainedRef(password_store_)) |
| 516 : WrapInProvider(nullptr); |
472 #if defined(OS_CHROMEOS) | 517 #if defined(OS_CHROMEOS) |
473 case syncer::WIFI_CREDENTIALS: | 518 case syncer::WIFI_CREDENTIALS: |
474 return sync_wifi::WifiCredentialSyncableServiceFactory:: | 519 return WrapInProvider( |
475 GetForBrowserContext(profile_) | 520 sync_wifi::WifiCredentialSyncableServiceFactory::GetForBrowserContext( |
476 ->AsWeakPtr(); | 521 profile_)); |
477 case syncer::ARC_PACKAGE: | 522 case syncer::ARC_PACKAGE: |
478 return arc::ArcPackageSyncableService::Get(profile_)->AsWeakPtr(); | 523 return WrapInProvider(arc::ArcPackageSyncableService::Get(profile_)); |
479 #endif // defined(OS_CHROMEOS) | 524 #endif // defined(OS_CHROMEOS) |
480 default: | 525 default: |
481 // The following datatypes still need to be transitioned to the | 526 // The following datatypes still need to be transitioned to the |
482 // syncer::SyncableService API: | 527 // syncer::SyncableService API: |
483 // Bookmarks | 528 // Bookmarks |
484 NOTREACHED(); | 529 NOTREACHED(); |
485 return base::WeakPtr<syncer::SyncableService>(); | 530 return WrapInProvider(nullptr); |
486 } | 531 } |
487 } | 532 } |
488 | 533 |
489 base::WeakPtr<syncer::ModelTypeSyncBridge> | 534 WeakPtr<syncer::ModelTypeSyncBridge> |
490 ChromeSyncClient::GetSyncBridgeForModelType(syncer::ModelType type) { | 535 ChromeSyncClient::GetSyncBridgeForModelType(syncer::ModelType type) { |
491 switch (type) { | 536 switch (type) { |
492 case syncer::DEVICE_INFO: | 537 case syncer::DEVICE_INFO: |
493 return ProfileSyncServiceFactory::GetForProfile(profile_) | 538 return ProfileSyncServiceFactory::GetForProfile(profile_) |
494 ->GetDeviceInfoSyncBridge() | 539 ->GetDeviceInfoSyncBridge() |
495 ->AsWeakPtr(); | 540 ->AsWeakPtr(); |
496 case syncer::READING_LIST: | 541 case syncer::READING_LIST: |
497 // Reading List is only supported on iOS at the moment. | 542 // Reading List is only supported on iOS at the moment. |
498 NOTREACHED(); | 543 NOTREACHED(); |
499 return base::WeakPtr<syncer::ModelTypeSyncBridge>(); | 544 return WeakPtr<syncer::ModelTypeSyncBridge>(); |
500 case syncer::AUTOFILL: | 545 case syncer::AUTOFILL: |
501 return autofill::AutocompleteSyncBridge::FromWebDataService( | 546 return autofill::AutocompleteSyncBridge::FromWebDataService( |
502 web_data_service_.get()); | 547 web_data_service_.get()); |
503 #if defined(OS_CHROMEOS) | 548 #if defined(OS_CHROMEOS) |
504 case syncer::PRINTERS: | 549 case syncer::PRINTERS: |
505 return chromeos::PrintersManagerFactory::GetForBrowserContext(profile_) | 550 return chromeos::PrintersManagerFactory::GetForBrowserContext(profile_) |
506 ->GetSyncBridge() | 551 ->GetSyncBridge() |
507 ->AsWeakPtr(); | 552 ->AsWeakPtr(); |
508 #endif // defined(OS_CHROMEOS) | 553 #endif // defined(OS_CHROMEOS) |
509 default: | 554 default: |
510 NOTREACHED(); | 555 NOTREACHED(); |
511 return base::WeakPtr<syncer::ModelTypeSyncBridge>(); | 556 return WeakPtr<syncer::ModelTypeSyncBridge>(); |
512 } | 557 } |
513 } | 558 } |
514 | 559 |
515 scoped_refptr<syncer::ModelSafeWorker> | 560 scoped_refptr<syncer::ModelSafeWorker> |
516 ChromeSyncClient::CreateModelWorkerForGroup(syncer::ModelSafeGroup group) { | 561 ChromeSyncClient::CreateModelWorkerForGroup(syncer::ModelSafeGroup group) { |
517 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 562 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
518 switch (group) { | 563 switch (group) { |
519 case syncer::GROUP_DB: | 564 case syncer::GROUP_DB: |
520 return new syncer::BrowserThreadModelWorker( | 565 return new syncer::BrowserThreadModelWorker( |
521 BrowserThread::GetTaskRunnerForThread(BrowserThread::DB), | 566 BrowserThread::GetTaskRunnerForThread(BrowserThread::DB), |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
702 sync_service->RegisterDataTypeController( | 747 sync_service->RegisterDataTypeController( |
703 base::MakeUnique<SupervisedUserSyncDataTypeController>( | 748 base::MakeUnique<SupervisedUserSyncDataTypeController>( |
704 syncer::SUPERVISED_USER_SETTINGS, error_callback, this, profile_)); | 749 syncer::SUPERVISED_USER_SETTINGS, error_callback, this, profile_)); |
705 sync_service->RegisterDataTypeController( | 750 sync_service->RegisterDataTypeController( |
706 base::MakeUnique<SupervisedUserSyncDataTypeController>( | 751 base::MakeUnique<SupervisedUserSyncDataTypeController>( |
707 syncer::SUPERVISED_USER_WHITELISTS, error_callback, this, profile_)); | 752 syncer::SUPERVISED_USER_WHITELISTS, error_callback, this, profile_)); |
708 #endif // BUILDFLAG(ENABLE_SUPERVISED_USERS) | 753 #endif // BUILDFLAG(ENABLE_SUPERVISED_USERS) |
709 } | 754 } |
710 | 755 |
711 } // namespace browser_sync | 756 } // namespace browser_sync |
OLD | NEW |