diff --git a/ios/chrome/browser/autocomplete/autocomplete_provider_client_impl.cc b/ios/chrome/browser/autocomplete/autocomplete_provider_client_impl.cc index dd70a62299200e..a40bc528e24c2f 100644 --- a/ios/chrome/browser/autocomplete/autocomplete_provider_client_impl.cc +++ b/ios/chrome/browser/autocomplete/autocomplete_provider_client_impl.cc @@ -7,7 +7,6 @@ #include "base/prefs/pref_service.h" #include "base/strings/utf_string_conversions.h" #include "components/bookmarks/common/bookmark_pref_names.h" -#include "components/browser_sync/browser/profile_sync_service.h" #include "components/history/core/browser/history_service.h" #include "components/keyed_service/core/service_access_type.h" #include "components/omnibox/browser/autocomplete_classifier.h" @@ -21,8 +20,8 @@ #include "ios/chrome/browser/history/top_sites_factory.h" #include "ios/chrome/browser/pref_names.h" #include "ios/chrome/browser/search_engines/template_url_service_factory.h" -#include "ios/chrome/browser/sync/ios_chrome_profile_sync_service_factory.h" #include "ios/public/provider/chrome/browser/browser_state/chrome_browser_state.h" +#include "ios/public/provider/chrome/browser/keyed_service_provider.h" AutocompleteProviderClientImpl::AutocompleteProviderClientImpl( ios::ChromeBrowserState* browser_state) @@ -139,7 +138,8 @@ bool AutocompleteProviderClientImpl::BookmarkBarIsVisible() const { bool AutocompleteProviderClientImpl::TabSyncEnabledAndUnencrypted() const { return sync_driver::IsTabSyncEnabledAndUnencrypted( - IOSChromeProfileSyncServiceFactory::GetForBrowserState(browser_state_), + ios::GetKeyedServiceProvider()->GetSyncServiceForBrowserState( + browser_state_), browser_state_->GetPrefs()); } diff --git a/ios/chrome/browser/history/web_history_service_factory.cc b/ios/chrome/browser/history/web_history_service_factory.cc index 27c1ddb31287cf..aee3a494db2ba3 100644 --- a/ios/chrome/browser/history/web_history_service_factory.cc +++ b/ios/chrome/browser/history/web_history_service_factory.cc @@ -6,7 +6,6 @@ #include "base/memory/singleton.h" #include "base/prefs/pref_service.h" -#include "components/browser_sync/browser/profile_sync_service.h" #include "components/history/core/browser/web_history_service.h" #include "components/keyed_service/ios/browser_state_dependency_manager.h" #include "components/signin/core/browser/profile_oauth2_token_service.h" @@ -14,8 +13,8 @@ #include "components/sync_driver/sync_service.h" #include "ios/chrome/browser/signin/oauth2_token_service_factory.h" #include "ios/chrome/browser/signin/signin_manager_factory.h" -#include "ios/chrome/browser/sync/ios_chrome_profile_sync_service_factory.h" #include "ios/public/provider/chrome/browser/browser_state/chrome_browser_state.h" +#include "ios/public/provider/chrome/browser/keyed_service_provider.h" #include "net/url_request/url_request_context_getter.h" namespace ios { @@ -25,7 +24,7 @@ namespace { // false otherwise. bool IsHistorySyncEnabled(ios::ChromeBrowserState* browser_state) { sync_driver::SyncService* sync_service = - IOSChromeProfileSyncServiceFactory::GetForBrowserState(browser_state); + GetKeyedServiceProvider()->GetSyncServiceForBrowserState(browser_state); return sync_service && sync_service->IsSyncActive() && sync_service->GetActiveDataTypes().Has( syncer::HISTORY_DELETE_DIRECTIVES); @@ -54,7 +53,8 @@ WebHistoryServiceFactory::WebHistoryServiceFactory() : BrowserStateKeyedServiceFactory( "WebHistoryService", BrowserStateDependencyManager::GetInstance()) { - DependsOn(IOSChromeProfileSyncServiceFactory::GetInstance()); + ios::KeyedServiceProvider* provider = ios::GetKeyedServiceProvider(); + DependsOn(provider->GetSyncServiceFactory()); DependsOn(OAuth2TokenServiceFactory::GetInstance()); DependsOn(ios::SigninManagerFactory::GetInstance()); } diff --git a/ios/chrome/browser/passwords/ios_chrome_password_store_factory.cc b/ios/chrome/browser/passwords/ios_chrome_password_store_factory.cc index 259e28d8af43a6..fe82ae78946d15 100644 --- a/ios/chrome/browser/passwords/ios_chrome_password_store_factory.cc +++ b/ios/chrome/browser/passwords/ios_chrome_password_store_factory.cc @@ -6,7 +6,6 @@ #include "base/command_line.h" #include "base/memory/singleton.h" -#include "components/browser_sync/browser/profile_sync_service.h" #include "components/keyed_service/core/service_access_type.h" #include "components/keyed_service/ios/browser_state_dependency_manager.h" #include "components/password_manager/core/browser/affiliated_match_helper.h" @@ -18,9 +17,9 @@ #include "components/sync_driver/sync_service.h" #include "ios/chrome/browser/browser_state/browser_state_otr_helper.h" #include "ios/chrome/browser/sync/glue/sync_start_util.h" -#include "ios/chrome/browser/sync/ios_chrome_profile_sync_service_factory.h" #include "ios/chrome/browser/web_data_service_factory.h" #include "ios/public/provider/chrome/browser/browser_state/chrome_browser_state.h" +#include "ios/public/provider/chrome/browser/keyed_service_provider.h" #include "ios/web/public/web_thread.h" // static @@ -49,7 +48,7 @@ void IOSChromePasswordStoreFactory::OnPasswordsSyncedStatePotentiallyChanged( scoped_refptr password_store = GetForBrowserState(browser_state, ServiceAccessType::EXPLICIT_ACCESS); sync_driver::SyncService* sync_service = - IOSChromeProfileSyncServiceFactory::GetForBrowserStateIfExists( + ios::GetKeyedServiceProvider()->GetSyncServiceForBrowserStateIfExists( browser_state); net::URLRequestContextGetter* request_context_getter = browser_state->GetRequestContext(); diff --git a/ios/chrome/browser/sync/glue/sync_start_util.cc b/ios/chrome/browser/sync/glue/sync_start_util.cc index 0ac61b9dfaf084..22123a3f982d00 100644 --- a/ios/chrome/browser/sync/glue/sync_start_util.cc +++ b/ios/chrome/browser/sync/glue/sync_start_util.cc @@ -7,12 +7,11 @@ #include "base/bind.h" #include "base/files/file_path.h" #include "base/location.h" -#include "components/browser_sync/browser/profile_sync_service.h" #include "components/sync_driver/sync_service.h" #include "ios/chrome/browser/application_context.h" -#include "ios/chrome/browser/sync/ios_chrome_profile_sync_service_factory.h" #include "ios/public/provider/chrome/browser/browser_state/chrome_browser_state.h" #include "ios/public/provider/chrome/browser/browser_state/chrome_browser_state_manager.h" +#include "ios/public/provider/chrome/browser/keyed_service_provider.h" #include "ios/web/public/web_thread.h" namespace ios { @@ -36,7 +35,8 @@ void StartSyncOnUIThread(const base::FilePath& browser_state_path, } sync_driver::SyncService* sync_service = - IOSChromeProfileSyncServiceFactory::GetForBrowserState(browser_state); + ios::GetKeyedServiceProvider()->GetSyncServiceForBrowserState( + browser_state); if (!sync_service) { DVLOG(2) << "No SyncService for browser state, can't start sync."; return; diff --git a/ios/chrome/browser/sync/ios_chrome_sync_client.cc b/ios/chrome/browser/sync/ios_chrome_sync_client.cc index ea64a8277d2942..e683c481e2536e 100644 --- a/ios/chrome/browser/sync/ios_chrome_sync_client.cc +++ b/ios/chrome/browser/sync/ios_chrome_sync_client.cc @@ -45,13 +45,13 @@ #include "ios/chrome/browser/pref_names.h" #include "ios/chrome/browser/signin/oauth2_token_service_factory.h" #include "ios/chrome/browser/sync/glue/sync_start_util.h" -#include "ios/chrome/browser/sync/ios_chrome_profile_sync_service_factory.h" #include "ios/chrome/browser/sync/sessions/ios_chrome_local_session_event_router.h" #include "ios/chrome/browser/undo/bookmark_undo_service_factory.h" #include "ios/chrome/browser/web_data_service_factory.h" #include "ios/chrome/common/channel_info.h" #include "ios/public/provider/chrome/browser/browser_state/chrome_browser_state.h" #include "ios/public/provider/chrome/browser/chrome_browser_provider.h" +#include "ios/public/provider/chrome/browser/keyed_service_provider.h" #include "ios/web/public/web_thread.h" #include "sync/internal_api/public/engine/passive_model_worker.h" #include "sync/util/extensions_activity.h" @@ -248,8 +248,9 @@ base::WeakPtr IOSChromeSyncClient::GetSyncableServiceForType(syncer::ModelType type) { switch (type) { case syncer::DEVICE_INFO: - return IOSChromeProfileSyncServiceFactory::GetForBrowserState( - browser_state_) + return static_cast( + ios::GetKeyedServiceProvider()->GetSyncServiceForBrowserState( + browser_state_)) ->GetDeviceInfoSyncableService() ->AsWeakPtr(); case syncer::PREFERENCES: @@ -293,7 +294,9 @@ IOSChromeSyncClient::GetSyncableServiceForType(syncer::ModelType type) { case syncer::FAVICON_IMAGES: case syncer::FAVICON_TRACKING: { browser_sync::FaviconCache* favicons = - IOSChromeProfileSyncServiceFactory::GetForBrowserState(browser_state_) + static_cast( + ios::GetKeyedServiceProvider()->GetSyncServiceForBrowserState( + browser_state_)) ->GetFaviconCache(); return favicons ? favicons->AsWeakPtr() : base::WeakPtr(); @@ -307,8 +310,9 @@ IOSChromeSyncClient::GetSyncableServiceForType(syncer::ModelType type) { return base::WeakPtr(); } case syncer::SESSIONS: { - return IOSChromeProfileSyncServiceFactory::GetForBrowserState( - browser_state_) + return static_cast( + ios::GetKeyedServiceProvider()->GetSyncServiceForBrowserState( + browser_state_)) ->GetSessionsSyncableService() ->AsWeakPtr(); } diff --git a/ios/chrome/browser/sync/sync_setup_service_factory.cc b/ios/chrome/browser/sync/sync_setup_service_factory.cc index 56ce86fc85eefe..89ae6aa198a3de 100644 --- a/ios/chrome/browser/sync/sync_setup_service_factory.cc +++ b/ios/chrome/browser/sync/sync_setup_service_factory.cc @@ -5,11 +5,10 @@ #include "ios/chrome/browser/sync/sync_setup_service_factory.h" #include "base/memory/singleton.h" -#include "components/browser_sync/browser/profile_sync_service.h" #include "components/keyed_service/ios/browser_state_dependency_manager.h" -#include "ios/chrome/browser/sync/ios_chrome_profile_sync_service_factory.h" #include "ios/chrome/browser/sync/sync_setup_service.h" #include "ios/public/provider/chrome/browser/browser_state/chrome_browser_state.h" +#include "ios/public/provider/chrome/browser/keyed_service_provider.h" // static SyncSetupService* SyncSetupServiceFactory::GetForBrowserState( @@ -34,7 +33,7 @@ SyncSetupServiceFactory::SyncSetupServiceFactory() : BrowserStateKeyedServiceFactory( "SyncSetupService", BrowserStateDependencyManager::GetInstance()) { - DependsOn(IOSChromeProfileSyncServiceFactory::GetInstance()); + DependsOn(ios::GetKeyedServiceProvider()->GetSyncServiceFactory()); } SyncSetupServiceFactory::~SyncSetupServiceFactory() { @@ -45,6 +44,7 @@ scoped_ptr SyncSetupServiceFactory::BuildServiceInstanceFor( ios::ChromeBrowserState* browser_state = ios::ChromeBrowserState::FromBrowserState(context); return make_scoped_ptr(new SyncSetupService( - IOSChromeProfileSyncServiceFactory::GetForBrowserState(browser_state), + ios::GetKeyedServiceProvider()->GetSyncServiceForBrowserState( + browser_state), browser_state->GetPrefs())); } diff --git a/ios/chrome/browser/ui/webui/sync_internals/sync_internals_message_handler.cc b/ios/chrome/browser/ui/webui/sync_internals/sync_internals_message_handler.cc index 7bc997a119b1d7..354f7d82f2175c 100644 --- a/ios/chrome/browser/ui/webui/sync_internals/sync_internals_message_handler.cc +++ b/ios/chrome/browser/ui/webui/sync_internals/sync_internals_message_handler.cc @@ -7,14 +7,13 @@ #include #include "base/logging.h" -#include "components/browser_sync/browser/profile_sync_service.h" #include "components/signin/core/browser/signin_manager.h" #include "components/sync_driver/about_sync_util.h" #include "components/sync_driver/sync_service.h" #include "ios/chrome/browser/signin/signin_manager_factory.h" -#include "ios/chrome/browser/sync/ios_chrome_profile_sync_service_factory.h" #include "ios/chrome/common/channel_info.h" #include "ios/public/provider/chrome/browser/browser_state/chrome_browser_state.h" +#include "ios/public/provider/chrome/browser/keyed_service_provider.h" #include "ios/public/provider/web/web_ui_ios.h" #include "ios/web/public/web_thread.h" #include "sync/internal_api/public/events/protocol_event.h" @@ -232,6 +231,6 @@ void SyncInternalsMessageHandler::SendAboutInfo() { sync_driver::SyncService* SyncInternalsMessageHandler::GetSyncService() { ios::ChromeBrowserState* browser_state = ios::ChromeBrowserState::FromWebUIIOS(web_ui()); - return IOSChromeProfileSyncServiceFactory::GetForBrowserState( + return ios::GetKeyedServiceProvider()->GetSyncServiceForBrowserState( browser_state->GetOriginalChromeBrowserState()); } diff --git a/ios/public/provider/chrome/browser/keyed_service_provider.cc b/ios/public/provider/chrome/browser/keyed_service_provider.cc index f112f4e805fe91..004821085a26ba 100644 --- a/ios/public/provider/chrome/browser/keyed_service_provider.cc +++ b/ios/public/provider/chrome/browser/keyed_service_provider.cc @@ -29,6 +29,7 @@ KeyedServiceProvider::~KeyedServiceProvider() { } void KeyedServiceProvider::AssertKeyedFactoriesBuilt() { + GetSyncServiceFactory(); } } // namespace ios diff --git a/ios/public/provider/chrome/browser/keyed_service_provider.h b/ios/public/provider/chrome/browser/keyed_service_provider.h index 141bf15aa3ab57..13bd7f3d058b74 100644 --- a/ios/public/provider/chrome/browser/keyed_service_provider.h +++ b/ios/public/provider/chrome/browser/keyed_service_provider.h @@ -10,6 +10,10 @@ class KeyedServiceBaseFactory; enum class ServiceAccessType; +namespace sync_driver { +class SyncService; +} + namespace ios { class ChromeBrowserState; @@ -31,6 +35,18 @@ class KeyedServiceProvider { // correct. void AssertKeyedFactoriesBuilt(); + // Returns the sync_driver::SyncService factory for dependencies. + virtual KeyedServiceBaseFactory* GetSyncServiceFactory() = 0; + + // Returns an instance of sync_driver::SyncService tied to |browser_state|. + virtual sync_driver::SyncService* GetSyncServiceForBrowserState( + ChromeBrowserState* browser_state) = 0; + + // Returns an instance of sync_driver::SyncService tied to |browser_state| if + // there is one created already. + virtual sync_driver::SyncService* GetSyncServiceForBrowserStateIfExists( + ChromeBrowserState* browser_state) = 0; + private: DISALLOW_COPY_AND_ASSIGN(KeyedServiceProvider); }; diff --git a/ios/public/test/test_keyed_service_provider.cc b/ios/public/test/test_keyed_service_provider.cc index 2d7020446749c0..030eff8c5a3aec 100644 --- a/ios/public/test/test_keyed_service_provider.cc +++ b/ios/public/test/test_keyed_service_provider.cc @@ -66,4 +66,20 @@ TestKeyedServiceProvider::TestKeyedServiceProvider() { TestKeyedServiceProvider::~TestKeyedServiceProvider() { } +KeyedServiceBaseFactory* TestKeyedServiceProvider::GetSyncServiceFactory() { + return FakeSyncServiceFactory::GetInstance(); +} + +sync_driver::SyncService* +TestKeyedServiceProvider::GetSyncServiceForBrowserState( + ChromeBrowserState* browser_state) { + return FakeSyncServiceFactory::GetForBrowserState(browser_state); +} + +sync_driver::SyncService* +TestKeyedServiceProvider::GetSyncServiceForBrowserStateIfExists( + ChromeBrowserState* browser_state) { + return FakeSyncServiceFactory::GetForBrowserStateIfExists(browser_state); +} + } // namespace ios diff --git a/ios/public/test/test_keyed_service_provider.h b/ios/public/test/test_keyed_service_provider.h index 69859b13782c0c..9a34fd1c2d15a1 100644 --- a/ios/public/test/test_keyed_service_provider.h +++ b/ios/public/test/test_keyed_service_provider.h @@ -15,6 +15,13 @@ class TestKeyedServiceProvider : public KeyedServiceProvider { TestKeyedServiceProvider(); ~TestKeyedServiceProvider() override; + // KeyedServiceProvider implementation: + KeyedServiceBaseFactory* GetSyncServiceFactory() override; + sync_driver::SyncService* GetSyncServiceForBrowserState( + ChromeBrowserState* browser_state) override; + sync_driver::SyncService* GetSyncServiceForBrowserStateIfExists( + ChromeBrowserState* browser_state) override; + private: DISALLOW_COPY_AND_ASSIGN(TestKeyedServiceProvider); };