Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1037)

Side by Side Diff: chrome/browser/sync/chrome_sync_client.cc

Issue 2799653006: Revert of [Sync] Stop accessing BrowserContextKeyedServiceFactory on non-UI thread. (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698