// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef IOS_CHROME_BROWSER_SYNC_IOS_CHROME_SYNC_CLIENT_H__ #define IOS_CHROME_BROWSER_SYNC_IOS_CHROME_SYNC_CLIENT_H__ #include #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "components/sync_driver/sync_client.h" namespace autofill { class AutofillWebDataService; } namespace ios { class ChromeBrowserState; } namespace password_manager { class PasswordStore; } namespace sync_driver { class DeviceInfoTracker; class SyncApiComponentFactory; class SyncService; } class IOSChromeSyncClient : public sync_driver::SyncClient { public: explicit IOSChromeSyncClient(ios::ChromeBrowserState* browser_state); ~IOSChromeSyncClient() override; // SyncClient implementation. void Initialize() override; sync_driver::SyncService* GetSyncService() override; PrefService* GetPrefService() override; bookmarks::BookmarkModel* GetBookmarkModel() override; favicon::FaviconService* GetFaviconService() override; history::HistoryService* GetHistoryService() override; base::Closure GetPasswordStateChangedCallback() override; sync_driver::SyncApiComponentFactory::RegisterDataTypesMethod GetRegisterPlatformTypesCallback() override; autofill::PersonalDataManager* GetPersonalDataManager() override; invalidation::InvalidationService* GetInvalidationService() override; BookmarkUndoService* GetBookmarkUndoServiceIfExists() override; scoped_refptr GetExtensionsActivity() override; sync_sessions::SyncSessionsClient* GetSyncSessionsClient() override; base::WeakPtr GetSyncableServiceForType( syncer::ModelType type) override; base::WeakPtr GetModelTypeServiceForType( syncer::ModelType type) override; scoped_refptr CreateModelWorkerForGroup( syncer::ModelSafeGroup group, syncer::WorkerLoopDestructionObserver* observer) override; sync_driver::SyncApiComponentFactory* GetSyncApiComponentFactory() override; void SetSyncApiComponentFactoryForTesting( scoped_ptr component_factory); // Iterates over browser states and returns any trackers that can be found. static void GetDeviceInfoTrackers( std::vector* trackers); private: ios::ChromeBrowserState* const browser_state_; // The sync api component factory in use by this client. scoped_ptr component_factory_; // Members that must be fetched on the UI thread but accessed on their // respective backend threads. scoped_refptr web_data_service_; scoped_refptr password_store_; scoped_ptr sync_sessions_client_; const scoped_refptr dummy_extensions_activity_; base::WeakPtrFactory weak_ptr_factory_; DISALLOW_COPY_AND_ASSIGN(IOSChromeSyncClient); }; #endif // IOS_CHROME_BROWSER_SYNC_IOS_CHROME_SYNC_CLIENT_H__