| 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 | 
|---|