| 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 base::Callback; | 123 using content::BrowserThread; |
| 124 using base::WeakPtr; | |
| 125 #if BUILDFLAG(ENABLE_EXTENSIONS) | 124 #if BUILDFLAG(ENABLE_EXTENSIONS) |
| 126 using browser_sync::ExtensionDataTypeController; | 125 using browser_sync::ExtensionDataTypeController; |
| 127 using browser_sync::ExtensionSettingDataTypeController; | 126 using browser_sync::ExtensionSettingDataTypeController; |
| 128 #endif // BUILDFLAG(ENABLE_EXTENSIONS) | 127 #endif // BUILDFLAG(ENABLE_EXTENSIONS) |
| 129 using browser_sync::SearchEngineDataTypeController; | 128 using browser_sync::SearchEngineDataTypeController; |
| 130 using content::BrowserThread; | |
| 131 using syncer::AsyncDirectoryTypeController; | 129 using syncer::AsyncDirectoryTypeController; |
| 132 using syncer::SyncableService; | |
| 133 | |
| 134 using ServiceProvider = syncer::SyncClient::ServiceProvider; | |
| 135 | 130 |
| 136 namespace browser_sync { | 131 namespace browser_sync { |
| 137 | 132 |
| 138 namespace { | 133 namespace { |
| 139 | |
| 140 #if defined(OS_WIN) | 134 #if defined(OS_WIN) |
| 141 const base::FilePath::CharType kLoopbackServerBackendFilename[] = | 135 const base::FilePath::CharType kLoopbackServerBackendFilename[] = |
| 142 FILE_PATH_LITERAL("profile.pb"); | 136 FILE_PATH_LITERAL("profile.pb"); |
| 143 #endif // defined(OS_WIN) | 137 #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 | |
| 192 } // namespace | 138 } // namespace |
| 193 | 139 |
| 194 // Chrome implementation of SyncSessionsClient. Needs to be in a separate class | 140 // Chrome implementation of SyncSessionsClient. Needs to be in a separate class |
| 195 // due to possible multiple inheritance issues, wherein ChromeSyncClient might | 141 // due to possible multiple inheritance issues, wherein ChromeSyncClient might |
| 196 // inherit from other interfaces with same methods. | 142 // inherit from other interfaces with same methods. |
| 197 class SyncSessionsClientImpl : public sync_sessions::SyncSessionsClient { | 143 class SyncSessionsClientImpl : public sync_sessions::SyncSessionsClient { |
| 198 public: | 144 public: |
| 199 explicit SyncSessionsClientImpl(Profile* profile) : profile_(profile) { | 145 explicit SyncSessionsClientImpl(Profile* profile) : profile_(profile) { |
| 200 window_delegates_getter_.reset( | 146 window_delegates_getter_.reset( |
| 201 #if defined(OS_ANDROID) | 147 #if defined(OS_ANDROID) |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 | 292 |
| 347 favicon::FaviconService* ChromeSyncClient::GetFaviconService() { | 293 favicon::FaviconService* ChromeSyncClient::GetFaviconService() { |
| 348 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 294 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 349 return FaviconServiceFactory::GetForProfile( | 295 return FaviconServiceFactory::GetForProfile( |
| 350 profile_, ServiceAccessType::IMPLICIT_ACCESS); | 296 profile_, ServiceAccessType::IMPLICIT_ACCESS); |
| 351 } | 297 } |
| 352 | 298 |
| 353 history::HistoryService* ChromeSyncClient::GetHistoryService() { | 299 history::HistoryService* ChromeSyncClient::GetHistoryService() { |
| 354 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 300 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 355 return HistoryServiceFactory::GetForProfile( | 301 return HistoryServiceFactory::GetForProfile( |
| 356 profile_, ServiceAccessType::IMPLICIT_ACCESS); | 302 profile_, ServiceAccessType::EXPLICIT_ACCESS); |
| 357 } | 303 } |
| 358 | 304 |
| 359 bool ChromeSyncClient::HasPasswordStore() { | 305 bool ChromeSyncClient::HasPasswordStore() { |
| 360 return password_store_ != nullptr; | 306 return password_store_ != nullptr; |
| 361 } | 307 } |
| 362 | 308 |
| 363 autofill::PersonalDataManager* ChromeSyncClient::GetPersonalDataManager() { | 309 autofill::PersonalDataManager* ChromeSyncClient::GetPersonalDataManager() { |
| 364 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 310 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 365 return autofill::PersonalDataManagerFactory::GetForProfile(profile_); | 311 return autofill::PersonalDataManagerFactory::GetForProfile(profile_); |
| 366 } | 312 } |
| 367 | 313 |
| 368 base::Closure ChromeSyncClient::GetPasswordStateChangedCallback() { | 314 base::Closure ChromeSyncClient::GetPasswordStateChangedCallback() { |
| 369 return base::Bind( | 315 return base::Bind( |
| 370 &PasswordStoreFactory::OnPasswordsSyncedStatePotentiallyChanged, | 316 &PasswordStoreFactory::OnPasswordsSyncedStatePotentiallyChanged, |
| 371 base::Unretained(profile_)); | 317 base::Unretained(profile_)); |
| 372 } | 318 } |
| 373 | 319 |
| 374 syncer::SyncApiComponentFactory::RegisterDataTypesMethod | 320 syncer::SyncApiComponentFactory::RegisterDataTypesMethod |
| 375 ChromeSyncClient::GetRegisterPlatformTypesCallback() { | 321 ChromeSyncClient::GetRegisterPlatformTypesCallback() { |
| 376 return base::Bind( | 322 return base::Bind( |
| 377 #if defined(OS_ANDROID) | 323 #if defined(OS_ANDROID) |
| 378 &ChromeSyncClient::RegisterAndroidDataTypes, | 324 &ChromeSyncClient::RegisterAndroidDataTypes, |
| 379 #else // defined(OS_ANDROID) | 325 #else |
| 380 &ChromeSyncClient::RegisterDesktopDataTypes, | 326 &ChromeSyncClient::RegisterDesktopDataTypes, |
| 381 #endif // defined(OS_ANDROID) | 327 #endif // defined(OS_ANDROID) |
| 382 weak_ptr_factory_.GetWeakPtr()); | 328 weak_ptr_factory_.GetWeakPtr()); |
| 383 } | 329 } |
| 384 | 330 |
| 385 BookmarkUndoService* ChromeSyncClient::GetBookmarkUndoServiceIfExists() { | 331 BookmarkUndoService* ChromeSyncClient::GetBookmarkUndoServiceIfExists() { |
| 386 return BookmarkUndoServiceFactory::GetForProfileIfExists(profile_); | 332 return BookmarkUndoServiceFactory::GetForProfileIfExists(profile_); |
| 387 } | 333 } |
| 388 | 334 |
| 389 invalidation::InvalidationService* ChromeSyncClient::GetInvalidationService() { | 335 invalidation::InvalidationService* ChromeSyncClient::GetInvalidationService() { |
| 390 invalidation::ProfileInvalidationProvider* provider = | 336 invalidation::ProfileInvalidationProvider* provider = |
| 391 invalidation::ProfileInvalidationProviderFactory::GetForProfile(profile_); | 337 invalidation::ProfileInvalidationProviderFactory::GetForProfile(profile_); |
| 392 if (provider) | 338 if (provider) |
| 393 return provider->GetInvalidationService(); | 339 return provider->GetInvalidationService(); |
| 394 return nullptr; | 340 return nullptr; |
| 395 } | 341 } |
| 396 | 342 |
| 397 scoped_refptr<syncer::ExtensionsActivity> | 343 scoped_refptr<syncer::ExtensionsActivity> |
| 398 ChromeSyncClient::GetExtensionsActivity() { | 344 ChromeSyncClient::GetExtensionsActivity() { |
| 399 return extensions_activity_monitor_.GetExtensionsActivity(); | 345 return extensions_activity_monitor_.GetExtensionsActivity(); |
| 400 } | 346 } |
| 401 | 347 |
| 402 sync_sessions::SyncSessionsClient* ChromeSyncClient::GetSyncSessionsClient() { | 348 sync_sessions::SyncSessionsClient* ChromeSyncClient::GetSyncSessionsClient() { |
| 403 return sync_sessions_client_.get(); | 349 return sync_sessions_client_.get(); |
| 404 } | 350 } |
| 405 | 351 |
| 406 ServiceProvider ChromeSyncClient::GetSyncableServiceForType( | 352 base::WeakPtr<syncer::SyncableService> |
| 407 syncer::ModelType type) { | 353 ChromeSyncClient::GetSyncableServiceForType(syncer::ModelType type) { |
| 408 DCHECK_CURRENTLY_ON(BrowserThread::UI); | |
| 409 if (!profile_) { // For tests. | 354 if (!profile_) { // For tests. |
| 410 return WrapInProvider(nullptr); | 355 return base::WeakPtr<syncer::SyncableService>(); |
| 411 } | 356 } |
| 412 switch (type) { | 357 switch (type) { |
| 413 case syncer::DEVICE_INFO: | 358 case syncer::DEVICE_INFO: |
| 414 return WrapInProvider(ProfileSyncServiceFactory::GetForProfile(profile_) | 359 return ProfileSyncServiceFactory::GetForProfile(profile_) |
| 415 ->GetDeviceInfoSyncableService()); | 360 ->GetDeviceInfoSyncableService() |
| 361 ->AsWeakPtr(); |
| 416 case syncer::PREFERENCES: | 362 case syncer::PREFERENCES: |
| 363 return PrefServiceSyncableFromProfile(profile_) |
| 364 ->GetSyncableService(syncer::PREFERENCES) |
| 365 ->AsWeakPtr(); |
| 417 case syncer::PRIORITY_PREFERENCES: | 366 case syncer::PRIORITY_PREFERENCES: |
| 418 return WrapInProvider( | 367 return PrefServiceSyncableFromProfile(profile_) |
| 419 PrefServiceSyncableFromProfile(profile_)->GetSyncableService(type)); | 368 ->GetSyncableService(syncer::PRIORITY_PREFERENCES) |
| 369 ->AsWeakPtr(); |
| 420 case syncer::AUTOFILL: | 370 case syncer::AUTOFILL: |
| 421 case syncer::AUTOFILL_PROFILE: | 371 case syncer::AUTOFILL_PROFILE: |
| 422 case syncer::AUTOFILL_WALLET_DATA: | 372 case syncer::AUTOFILL_WALLET_DATA: |
| 423 case syncer::AUTOFILL_WALLET_METADATA: { | 373 case syncer::AUTOFILL_WALLET_METADATA: { |
| 424 if (!web_data_service_) { | 374 if (!web_data_service_) |
| 425 return WrapInProvider(nullptr); | 375 return base::WeakPtr<syncer::SyncableService>(); |
| 426 } else if (type == syncer::AUTOFILL) { | 376 if (type == syncer::AUTOFILL) { |
| 427 return WrapInWeakPtrCallback(base::Bind( | 377 return autofill::AutocompleteSyncableService::FromWebDataService( |
| 428 &autofill::AutocompleteSyncableService::FromWebDataService, | 378 web_data_service_.get())->AsWeakPtr(); |
| 429 base::RetainedRef(web_data_service_))); | |
| 430 } else if (type == syncer::AUTOFILL_PROFILE) { | 379 } else if (type == syncer::AUTOFILL_PROFILE) { |
| 431 return WrapInWeakPtrCallback(base::Bind( | 380 return autofill::AutofillProfileSyncableService::FromWebDataService( |
| 432 &autofill::AutofillProfileSyncableService::FromWebDataService, | 381 web_data_service_.get())->AsWeakPtr(); |
| 433 base::RetainedRef(web_data_service_))); | |
| 434 } else if (type == syncer::AUTOFILL_WALLET_METADATA) { | 382 } else if (type == syncer::AUTOFILL_WALLET_METADATA) { |
| 435 return WrapInWeakPtrCallback( | 383 return autofill::AutofillWalletMetadataSyncableService:: |
| 436 base::Bind(&autofill::AutofillWalletMetadataSyncableService:: | 384 FromWebDataService(web_data_service_.get())->AsWeakPtr(); |
| 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_))); | |
| 443 } | 385 } |
| 386 return autofill::AutofillWalletSyncableService::FromWebDataService( |
| 387 web_data_service_.get())->AsWeakPtr(); |
| 444 } | 388 } |
| 445 case syncer::SEARCH_ENGINES: | 389 case syncer::SEARCH_ENGINES: |
| 446 return WrapInProvider(TemplateURLServiceFactory::GetForProfile(profile_)); | 390 return TemplateURLServiceFactory::GetForProfile(profile_)->AsWeakPtr(); |
| 447 #if BUILDFLAG(ENABLE_EXTENSIONS) | 391 #if BUILDFLAG(ENABLE_EXTENSIONS) |
| 448 case syncer::APPS: | 392 case syncer::APPS: |
| 449 case syncer::EXTENSIONS: | 393 case syncer::EXTENSIONS: |
| 450 return WrapInProvider(ExtensionSyncService::Get(profile_)); | 394 return ExtensionSyncService::Get(profile_)->AsWeakPtr(); |
| 451 case syncer::APP_SETTINGS: | 395 case syncer::APP_SETTINGS: |
| 452 case syncer::EXTENSION_SETTINGS: | 396 case syncer::EXTENSION_SETTINGS: |
| 453 return extensions::settings_sync_util::GetSyncableServiceProvider( | 397 return extensions::settings_sync_util::GetSyncableService(profile_, type) |
| 454 profile_, type); | 398 ->AsWeakPtr(); |
| 455 #endif // BUILDFLAG(ENABLE_EXTENSIONS) | 399 #endif // BUILDFLAG(ENABLE_EXTENSIONS) |
| 456 #if BUILDFLAG(ENABLE_APP_LIST) | 400 #if BUILDFLAG(ENABLE_APP_LIST) |
| 457 case syncer::APP_LIST: | 401 case syncer::APP_LIST: |
| 458 return WrapInProvider( | 402 return app_list::AppListSyncableServiceFactory::GetForProfile(profile_)-> |
| 459 app_list::AppListSyncableServiceFactory::GetForProfile(profile_)); | 403 AsWeakPtr(); |
| 460 #endif // BUILDFLAG(ENABLE_APP_LIST) | 404 #endif // BUILDFLAG(ENABLE_APP_LIST) |
| 461 #if !defined(OS_ANDROID) | 405 #if !defined(OS_ANDROID) |
| 462 case syncer::THEMES: | 406 case syncer::THEMES: |
| 463 return WrapInProvider(ThemeServiceFactory::GetForProfile(profile_) | 407 return ThemeServiceFactory::GetForProfile(profile_)-> |
| 464 ->GetThemeSyncableService()); | 408 GetThemeSyncableService()->AsWeakPtr(); |
| 465 #endif // !defined(OS_ANDROID) | 409 #endif // !defined(OS_ANDROID) |
| 466 case syncer::HISTORY_DELETE_DIRECTIVES: | 410 case syncer::HISTORY_DELETE_DIRECTIVES: { |
| 467 return WrapInProvider(GetHistoryService()); | 411 history::HistoryService* history = GetHistoryService(); |
| 412 return history ? history->AsWeakPtr() |
| 413 : base::WeakPtr<history::HistoryService>(); |
| 414 } |
| 468 case syncer::TYPED_URLS: { | 415 case syncer::TYPED_URLS: { |
| 469 history::HistoryService* history = GetHistoryService(); | 416 // We request history service with explicit access here because this |
| 470 return WrapInProvider(history ? history->GetTypedUrlSyncableService() | 417 // codepath is executed on backend thread while HistoryServiceFactory |
| 471 : nullptr); | 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(); |
| 472 } | 425 } |
| 473 #if BUILDFLAG(ENABLE_SPELLCHECK) | 426 #if BUILDFLAG(ENABLE_SPELLCHECK) |
| 474 case syncer::DICTIONARY: | 427 case syncer::DICTIONARY: |
| 475 return WrapInProvider(SpellcheckServiceFactory::GetForContext(profile_) | 428 return SpellcheckServiceFactory::GetForContext(profile_)-> |
| 476 ->GetCustomDictionary()); | 429 GetCustomDictionary()->AsWeakPtr(); |
| 477 #endif // BUILDFLAG(ENABLE_SPELLCHECK) | 430 #endif // BUILDFLAG(ENABLE_SPELLCHECK) |
| 478 case syncer::FAVICON_IMAGES: | 431 case syncer::FAVICON_IMAGES: |
| 479 case syncer::FAVICON_TRACKING: | 432 case syncer::FAVICON_TRACKING: { |
| 480 return WrapInProvider(ProfileSyncServiceFactory::GetForProfile(profile_) | 433 sync_sessions::FaviconCache* favicons = |
| 481 ->GetFaviconCache()); | 434 ProfileSyncServiceFactory::GetForProfile(profile_)->GetFaviconCache(); |
| 435 return favicons ? favicons->AsWeakPtr() |
| 436 : base::WeakPtr<syncer::SyncableService>(); |
| 437 } |
| 482 #if BUILDFLAG(ENABLE_SUPERVISED_USERS) | 438 #if BUILDFLAG(ENABLE_SUPERVISED_USERS) |
| 483 case syncer::SUPERVISED_USER_SETTINGS: | 439 case syncer::SUPERVISED_USER_SETTINGS: |
| 484 return WrapInProvider( | 440 return SupervisedUserSettingsServiceFactory::GetForProfile(profile_)-> |
| 485 SupervisedUserSettingsServiceFactory::GetForProfile(profile_)); | 441 AsWeakPtr(); |
| 486 #if !defined(OS_ANDROID) | 442 #if !defined(OS_ANDROID) |
| 487 case syncer::SUPERVISED_USERS: | 443 case syncer::SUPERVISED_USERS: |
| 488 return WrapInProvider( | 444 return SupervisedUserSyncServiceFactory::GetForProfile(profile_)-> |
| 489 SupervisedUserSyncServiceFactory::GetForProfile(profile_)); | 445 AsWeakPtr(); |
| 490 case syncer::SUPERVISED_USER_SHARED_SETTINGS: | 446 case syncer::SUPERVISED_USER_SHARED_SETTINGS: |
| 491 return WrapInProvider( | 447 return SupervisedUserSharedSettingsServiceFactory::GetForBrowserContext( |
| 492 SupervisedUserSharedSettingsServiceFactory::GetForBrowserContext( | 448 profile_)->AsWeakPtr(); |
| 493 profile_)); | |
| 494 #endif // !defined(OS_ANDROID) | 449 #endif // !defined(OS_ANDROID) |
| 495 case syncer::SUPERVISED_USER_WHITELISTS: | 450 case syncer::SUPERVISED_USER_WHITELISTS: |
| 496 return WrapInProvider( | 451 return SupervisedUserServiceFactory::GetForProfile(profile_) |
| 497 SupervisedUserServiceFactory::GetForProfile(profile_) | 452 ->GetWhitelistService() |
| 498 ->GetWhitelistService()); | 453 ->AsWeakPtr(); |
| 499 #endif // BUILDFLAG(ENABLE_SUPERVISED_USERS) | 454 #endif // BUILDFLAG(ENABLE_SUPERVISED_USERS) |
| 500 case syncer::ARTICLES: { | 455 case syncer::ARTICLES: { |
| 501 dom_distiller::DomDistillerService* distiller_service = | 456 dom_distiller::DomDistillerService* service = |
| 502 dom_distiller::DomDistillerServiceFactory::GetForBrowserContext( | 457 dom_distiller::DomDistillerServiceFactory::GetForBrowserContext( |
| 503 profile_); | 458 profile_); |
| 504 return WrapInProvider(distiller_service | 459 if (service) |
| 505 ? distiller_service->GetSyncableService() | 460 return service->GetSyncableService()->AsWeakPtr(); |
| 506 : nullptr); | 461 return base::WeakPtr<syncer::SyncableService>(); |
| 507 } | 462 } |
| 508 case syncer::SESSIONS: | 463 case syncer::SESSIONS: { |
| 509 return WrapInProvider(ProfileSyncServiceFactory::GetForProfile(profile_) | 464 return ProfileSyncServiceFactory::GetForProfile(profile_)-> |
| 510 ->GetSessionsSyncableService()); | 465 GetSessionsSyncableService()->AsWeakPtr(); |
| 511 case syncer::PASSWORDS: | 466 } |
| 467 case syncer::PASSWORDS: { |
| 512 return password_store_.get() | 468 return password_store_.get() |
| 513 ? base::Bind(&password_manager::PasswordStore:: | 469 ? password_store_->GetPasswordSyncableService() |
| 514 GetPasswordSyncableService, | 470 : base::WeakPtr<syncer::SyncableService>(); |
| 515 base::RetainedRef(password_store_)) | 471 } |
| 516 : WrapInProvider(nullptr); | |
| 517 #if defined(OS_CHROMEOS) | 472 #if defined(OS_CHROMEOS) |
| 518 case syncer::WIFI_CREDENTIALS: | 473 case syncer::WIFI_CREDENTIALS: |
| 519 return WrapInProvider( | 474 return sync_wifi::WifiCredentialSyncableServiceFactory:: |
| 520 sync_wifi::WifiCredentialSyncableServiceFactory::GetForBrowserContext( | 475 GetForBrowserContext(profile_) |
| 521 profile_)); | 476 ->AsWeakPtr(); |
| 522 case syncer::ARC_PACKAGE: | 477 case syncer::ARC_PACKAGE: |
| 523 return WrapInProvider(arc::ArcPackageSyncableService::Get(profile_)); | 478 return arc::ArcPackageSyncableService::Get(profile_)->AsWeakPtr(); |
| 524 #endif // defined(OS_CHROMEOS) | 479 #endif // defined(OS_CHROMEOS) |
| 525 default: | 480 default: |
| 526 // The following datatypes still need to be transitioned to the | 481 // The following datatypes still need to be transitioned to the |
| 527 // syncer::SyncableService API: | 482 // syncer::SyncableService API: |
| 528 // Bookmarks | 483 // Bookmarks |
| 529 NOTREACHED(); | 484 NOTREACHED(); |
| 530 return WrapInProvider(nullptr); | 485 return base::WeakPtr<syncer::SyncableService>(); |
| 531 } | 486 } |
| 532 } | 487 } |
| 533 | 488 |
| 534 WeakPtr<syncer::ModelTypeSyncBridge> | 489 base::WeakPtr<syncer::ModelTypeSyncBridge> |
| 535 ChromeSyncClient::GetSyncBridgeForModelType(syncer::ModelType type) { | 490 ChromeSyncClient::GetSyncBridgeForModelType(syncer::ModelType type) { |
| 536 switch (type) { | 491 switch (type) { |
| 537 case syncer::DEVICE_INFO: | 492 case syncer::DEVICE_INFO: |
| 538 return ProfileSyncServiceFactory::GetForProfile(profile_) | 493 return ProfileSyncServiceFactory::GetForProfile(profile_) |
| 539 ->GetDeviceInfoSyncBridge() | 494 ->GetDeviceInfoSyncBridge() |
| 540 ->AsWeakPtr(); | 495 ->AsWeakPtr(); |
| 541 case syncer::READING_LIST: | 496 case syncer::READING_LIST: |
| 542 // Reading List is only supported on iOS at the moment. | 497 // Reading List is only supported on iOS at the moment. |
| 543 NOTREACHED(); | 498 NOTREACHED(); |
| 544 return WeakPtr<syncer::ModelTypeSyncBridge>(); | 499 return base::WeakPtr<syncer::ModelTypeSyncBridge>(); |
| 545 case syncer::AUTOFILL: | 500 case syncer::AUTOFILL: |
| 546 return autofill::AutocompleteSyncBridge::FromWebDataService( | 501 return autofill::AutocompleteSyncBridge::FromWebDataService( |
| 547 web_data_service_.get()); | 502 web_data_service_.get()); |
| 548 #if defined(OS_CHROMEOS) | 503 #if defined(OS_CHROMEOS) |
| 549 case syncer::PRINTERS: | 504 case syncer::PRINTERS: |
| 550 return chromeos::PrintersManagerFactory::GetForBrowserContext(profile_) | 505 return chromeos::PrintersManagerFactory::GetForBrowserContext(profile_) |
| 551 ->GetSyncBridge() | 506 ->GetSyncBridge() |
| 552 ->AsWeakPtr(); | 507 ->AsWeakPtr(); |
| 553 #endif // defined(OS_CHROMEOS) | 508 #endif // defined(OS_CHROMEOS) |
| 554 default: | 509 default: |
| 555 NOTREACHED(); | 510 NOTREACHED(); |
| 556 return WeakPtr<syncer::ModelTypeSyncBridge>(); | 511 return base::WeakPtr<syncer::ModelTypeSyncBridge>(); |
| 557 } | 512 } |
| 558 } | 513 } |
| 559 | 514 |
| 560 scoped_refptr<syncer::ModelSafeWorker> | 515 scoped_refptr<syncer::ModelSafeWorker> |
| 561 ChromeSyncClient::CreateModelWorkerForGroup(syncer::ModelSafeGroup group) { | 516 ChromeSyncClient::CreateModelWorkerForGroup(syncer::ModelSafeGroup group) { |
| 562 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 517 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 563 switch (group) { | 518 switch (group) { |
| 564 case syncer::GROUP_DB: | 519 case syncer::GROUP_DB: |
| 565 return new syncer::BrowserThreadModelWorker( | 520 return new syncer::BrowserThreadModelWorker( |
| 566 BrowserThread::GetTaskRunnerForThread(BrowserThread::DB), | 521 BrowserThread::GetTaskRunnerForThread(BrowserThread::DB), |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 747 sync_service->RegisterDataTypeController( | 702 sync_service->RegisterDataTypeController( |
| 748 base::MakeUnique<SupervisedUserSyncDataTypeController>( | 703 base::MakeUnique<SupervisedUserSyncDataTypeController>( |
| 749 syncer::SUPERVISED_USER_SETTINGS, error_callback, this, profile_)); | 704 syncer::SUPERVISED_USER_SETTINGS, error_callback, this, profile_)); |
| 750 sync_service->RegisterDataTypeController( | 705 sync_service->RegisterDataTypeController( |
| 751 base::MakeUnique<SupervisedUserSyncDataTypeController>( | 706 base::MakeUnique<SupervisedUserSyncDataTypeController>( |
| 752 syncer::SUPERVISED_USER_WHITELISTS, error_callback, this, profile_)); | 707 syncer::SUPERVISED_USER_WHITELISTS, error_callback, this, profile_)); |
| 753 #endif // BUILDFLAG(ENABLE_SUPERVISED_USERS) | 708 #endif // BUILDFLAG(ENABLE_SUPERVISED_USERS) |
| 754 } | 709 } |
| 755 | 710 |
| 756 } // namespace browser_sync | 711 } // namespace browser_sync |
| OLD | NEW |