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

Unified Diff: ios/chrome/browser/sync/ios_chrome_sync_client.mm

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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ios/chrome/browser/sync/ios_chrome_sync_client.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/chrome/browser/sync/ios_chrome_sync_client.mm
diff --git a/ios/chrome/browser/sync/ios_chrome_sync_client.mm b/ios/chrome/browser/sync/ios_chrome_sync_client.mm
index 7309de7c4f8c9d76a0452ae7f3ea4de60ace94c7..0a61212fbd82bb293e4ff6f5903cbff556298840 100644
--- a/ios/chrome/browser/sync/ios_chrome_sync_client.mm
+++ b/ios/chrome/browser/sync/ios_chrome_sync_client.mm
@@ -69,45 +69,7 @@
#error "This file requires ARC support."
#endif
-using autofill::AutocompleteSyncableService;
-using autofill::AutofillProfileSyncableService;
-using autofill::AutofillWalletMetadataSyncableService;
-using autofill::AutofillWalletSyncableService;
-using base::Callback;
-using base::WeakPtr;
-using syncer::SyncableService;
-
-using ServiceProvider = syncer::SyncClient::ServiceProvider;
-
namespace {
-
-template <typename T>
-T Trampoline(T arg) {
- return arg;
-}
-
-template <typename T>
-Callback<T()> WrapInCallback(T arg) {
- return base::Bind(&Trampoline<T>, arg);
-}
-
-WeakPtr<SyncableService> ServiceAsWeakPtr(SyncableService* ptr) {
- return ptr ? ptr->AsWeakPtr() : WeakPtr<SyncableService>();
-}
-
-ServiceProvider WrapInProvider(SyncableService* service) {
- return WrapInCallback(ServiceAsWeakPtr(service));
-}
-
-template <typename T>
-WeakPtr<SyncableService> CallbackResultAsWeakPtr(Callback<T()> callback) {
- return ServiceAsWeakPtr(callback.Run());
-}
-
-template <typename T>
-ServiceProvider WrapInWeakPtrCallback(Callback<T()> callback) {
- return base::Bind(&CallbackResultAsWeakPtr<T>, callback);
-}
// iOS implementation of SyncSessionsClient. Needs to be in a separate class
// due to possible multiple inheritance issues, wherein IOSChromeSyncClient
@@ -300,78 +262,87 @@
return sync_sessions_client_.get();
}
-ServiceProvider IOSChromeSyncClient::GetSyncableServiceForType(
- syncer::ModelType type) {
+base::WeakPtr<syncer::SyncableService>
+IOSChromeSyncClient::GetSyncableServiceForType(syncer::ModelType type) {
switch (type) {
case syncer::DEVICE_INFO:
- return WrapInProvider(
- IOSChromeProfileSyncServiceFactory::GetForBrowserState(browser_state_)
- ->GetDeviceInfoSyncableService());
+ return IOSChromeProfileSyncServiceFactory::GetForBrowserState(
+ browser_state_)
+ ->GetDeviceInfoSyncableService()
+ ->AsWeakPtr();
case syncer::PREFERENCES:
+ return browser_state_->GetSyncablePrefs()
+ ->GetSyncableService(syncer::PREFERENCES)
+ ->AsWeakPtr();
case syncer::PRIORITY_PREFERENCES:
- return WrapInProvider(
- browser_state_->GetSyncablePrefs()->GetSyncableService(type));
+ return browser_state_->GetSyncablePrefs()
+ ->GetSyncableService(syncer::PRIORITY_PREFERENCES)
+ ->AsWeakPtr();
case syncer::AUTOFILL:
case syncer::AUTOFILL_PROFILE:
case syncer::AUTOFILL_WALLET_DATA:
case syncer::AUTOFILL_WALLET_METADATA: {
if (!web_data_service_)
- return WrapInProvider(nullptr);
+ return base::WeakPtr<syncer::SyncableService>();
if (type == syncer::AUTOFILL) {
- return WrapInWeakPtrCallback(
- base::Bind(&AutocompleteSyncableService::FromWebDataService,
- base::RetainedRef(web_data_service_)));
+ return autofill::AutocompleteSyncableService::FromWebDataService(
+ web_data_service_.get())
+ ->AsWeakPtr();
} else if (type == syncer::AUTOFILL_PROFILE) {
- return WrapInWeakPtrCallback(
- base::Bind(&AutofillProfileSyncableService::FromWebDataService,
- base::RetainedRef(web_data_service_)));
+ return autofill::AutofillProfileSyncableService::FromWebDataService(
+ web_data_service_.get())
+ ->AsWeakPtr();
} else if (type == syncer::AUTOFILL_WALLET_METADATA) {
- return WrapInWeakPtrCallback(base::Bind(
- &AutofillWalletMetadataSyncableService::FromWebDataService,
- base::RetainedRef(web_data_service_)));
+ return autofill::AutofillWalletMetadataSyncableService::
+ FromWebDataService(web_data_service_.get())
+ ->AsWeakPtr();
}
- return WrapInWeakPtrCallback(
- base::Bind(&AutofillWalletSyncableService::FromWebDataService,
- base::RetainedRef(web_data_service_)));
+ return autofill::AutofillWalletSyncableService::FromWebDataService(
+ web_data_service_.get())
+ ->AsWeakPtr();
}
case syncer::HISTORY_DELETE_DIRECTIVES: {
- return WrapInProvider(ios::HistoryServiceFactory::GetForBrowserState(
- browser_state_, ServiceAccessType::EXPLICIT_ACCESS));
+ history::HistoryService* history =
+ ios::HistoryServiceFactory::GetForBrowserState(
+ browser_state_, ServiceAccessType::EXPLICIT_ACCESS);
+ return history ? history->AsWeakPtr()
+ : base::WeakPtr<history::HistoryService>();
}
case syncer::TYPED_URLS: {
history::HistoryService* history =
ios::HistoryServiceFactory::GetForBrowserState(
browser_state_, ServiceAccessType::EXPLICIT_ACCESS);
- return WrapInProvider(history ? history->GetTypedUrlSyncableService()
- : nullptr);
+ return history ? history->GetTypedUrlSyncableService()->AsWeakPtr()
+ : base::WeakPtr<syncer::SyncableService>();
}
case syncer::FAVICON_IMAGES:
case syncer::FAVICON_TRACKING: {
- return WrapInProvider(
+ sync_sessions::FaviconCache* favicons =
IOSChromeProfileSyncServiceFactory::GetForBrowserState(browser_state_)
- ->GetFaviconCache());
+ ->GetFaviconCache();
+ return favicons ? favicons->AsWeakPtr()
+ : base::WeakPtr<syncer::SyncableService>();
}
case syncer::ARTICLES: {
// DomDistillerService is used in iOS ReadingList. The distilled articles
// are saved separately and must not be synced.
// Add a not reached to avoid having ARTICLES sync be enabled silently.
NOTREACHED();
- return WrapInProvider(nullptr);
+ return base::WeakPtr<syncer::SyncableService>();
}
case syncer::SESSIONS: {
- return WrapInProvider(
- IOSChromeProfileSyncServiceFactory::GetForBrowserState(browser_state_)
- ->GetSessionsSyncableService());
+ return IOSChromeProfileSyncServiceFactory::GetForBrowserState(
+ browser_state_)
+ ->GetSessionsSyncableService()
+ ->AsWeakPtr();
}
case syncer::PASSWORDS: {
- return password_store_ ? base::Bind(&password_manager::PasswordStore::
- GetPasswordSyncableService,
- base::RetainedRef(password_store_))
- : WrapInProvider(nullptr);
+ return password_store_ ? password_store_->GetPasswordSyncableService()
+ : base::WeakPtr<syncer::SyncableService>();
}
default:
NOTREACHED();
- return WrapInProvider(nullptr);
+ return base::WeakPtr<syncer::SyncableService>();
}
}
« no previous file with comments | « ios/chrome/browser/sync/ios_chrome_sync_client.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698