blob: 66674be168cda1e67c76b7a539d09eabda732e98 [file] [log] [blame]
zea5758a242015-08-18 05:06:201// Copyright 2015 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_SYNC_CHROME_SYNC_CLIENT_H__
6#define CHROME_BROWSER_SYNC_CHROME_SYNC_CLIENT_H__
7
maxbogue7e006db2016-10-03 19:48:288#include <memory>
skym8508454d2016-03-05 01:03:049#include <vector>
10
zeaf09345c2015-10-27 05:29:5011#include "base/macros.h"
Peter Kasting2ef489c2017-07-22 19:11:4012#include "base/single_thread_task_runner.h"
maxbogueaff7d9d2015-10-26 22:45:5113#include "chrome/browser/sync/glue/extensions_activity_monitor.h"
maxbogue455a57e32016-08-14 00:08:3214#include "components/sync/driver/sync_client.h"
Mikel Astiz53131342018-07-19 08:59:5815#include "components/sync/model/model_type_store_service.h"
maxbogueaff7d9d2015-10-26 22:45:5116
zea9276f212015-08-29 01:35:0317class Profile;
18
maxboguebe7410fa2015-12-10 20:42:5819namespace autofill {
20class AutofillWebDataService;
21}
22
23namespace password_manager {
24class PasswordStore;
25}
26
maxbogue7e006db2016-10-03 19:48:2827namespace syncer {
skym8508454d2016-03-05 01:03:0428class DeviceInfoTracker;
zea9276f212015-08-29 01:35:0329class SyncApiComponentFactory;
30class SyncService;
31}
zea5758a242015-08-18 05:06:2032
33namespace browser_sync {
34
maxbogue7e006db2016-10-03 19:48:2835class ChromeSyncClient : public syncer::SyncClient {
zea5758a242015-08-18 05:06:2036 public:
zeaead1f432015-11-18 02:29:5137 explicit ChromeSyncClient(Profile* profile);
zea5758a242015-08-18 05:06:2038 ~ChromeSyncClient() override;
39
Mikel Astizc015c9c2018-09-12 19:58:3740 void Initialize();
41
zea5758a242015-08-18 05:06:2042 // SyncClient implementation.
maxbogue7e006db2016-10-03 19:48:2843 syncer::SyncService* GetSyncService() override;
zea5758a242015-08-18 05:06:2044 PrefService* GetPrefService() override;
pastarmovj8b8b5e32017-03-01 14:45:3145 base::FilePath GetLocalSyncBackendFolder() override;
Mikel Astiz53131342018-07-19 08:59:5846 syncer::ModelTypeStoreService* GetModelTypeStoreService() override;
zea5758a242015-08-18 05:06:2047 bookmarks::BookmarkModel* GetBookmarkModel() override;
blundellde2169a2015-10-08 11:43:3348 favicon::FaviconService* GetFaviconService() override;
zea5758a242015-08-18 05:06:2049 history::HistoryService* GetHistoryService() override;
Mikel Astiz0889b2be2018-09-25 16:20:4150 sync_sessions::SessionSyncService* GetSessionSyncService() override;
maxbogue00f04a82017-01-06 19:18:5351 bool HasPasswordStore() override;
blundell1b3206c2015-10-23 09:42:3152 base::Closure GetPasswordStateChangedCallback() override;
Mikel Astizc6bb671f2018-05-31 23:16:4953 syncer::DataTypeController::TypeVector CreateDataTypeControllers(
54 syncer::LocalDeviceInfoProvider* local_device_info_provider) override;
zea5758a242015-08-18 05:06:2055 autofill::PersonalDataManager* GetPersonalDataManager() override;
blundelld551be12015-11-05 11:21:2256 invalidation::InvalidationService* GetInvalidationService() override;
blundellde2169a2015-10-08 11:43:3357 BookmarkUndoService* GetBookmarkUndoServiceIfExists() override;
maxbogueaff7d9d2015-10-26 22:45:5158 scoped_refptr<syncer::ExtensionsActivity> GetExtensionsActivity() override;
skyma56dd492017-04-06 19:20:2759 base::WeakPtr<syncer::SyncableService> GetSyncableServiceForType(
60 syncer::ModelType type) override;
Jan Krcal801ab7f2018-04-24 17:03:5061 base::WeakPtr<syncer::ModelTypeControllerDelegate>
62 GetControllerDelegateForModelType(syncer::ModelType type) override;
maxbogue26624b12015-10-22 17:34:0263 scoped_refptr<syncer::ModelSafeWorker> CreateModelWorkerForGroup(
fdorayea7a7ec2016-11-07 16:35:0864 syncer::ModelSafeGroup group) override;
maxbogue7e006db2016-10-03 19:48:2865 syncer::SyncApiComponentFactory* GetSyncApiComponentFactory() override;
zea5758a242015-08-18 05:06:2066
zeaead1f432015-11-18 02:29:5167 // Helpers for overriding getters in tests.
zeaead1f432015-11-18 02:29:5168 void SetSyncApiComponentFactoryForTesting(
maxbogue7e006db2016-10-03 19:48:2869 std::unique_ptr<syncer::SyncApiComponentFactory> component_factory);
blundellfec1e6f62015-11-04 13:39:5270
skym8508454d2016-03-05 01:03:0471 // Iterates over all of the profiles that have been loaded so far, and
72 // extracts their tracker if present. If some profiles don't have trackers, no
73 // indication is given in the passed vector.
74 static void GetDeviceInfoTrackers(
maxbogue7e006db2016-10-03 19:48:2875 std::vector<const syncer::DeviceInfoTracker*>* trackers);
skym8508454d2016-03-05 01:03:0476
zea5758a242015-08-18 05:06:2077 private:
zeaead1f432015-11-18 02:29:5178 Profile* const profile_;
79
zeade27874a52015-09-30 01:36:4580 // The sync api component factory in use by this client.
maxbogue7e006db2016-10-03 19:48:2881 std::unique_ptr<syncer::SyncApiComponentFactory> component_factory_;
zeaa39c1a62015-08-19 18:36:4282
83 // Members that must be fetched on the UI thread but accessed on their
84 // respective backend threads.
Florian Uunkbb7ccd82018-07-20 15:53:3685 scoped_refptr<autofill::AutofillWebDataService> profile_web_data_service_;
86 scoped_refptr<autofill::AutofillWebDataService> account_web_data_service_;
zeaa39c1a62015-08-19 18:36:4287 scoped_refptr<password_manager::PasswordStore> password_store_;
zea9276f212015-08-29 01:35:0388
Peter Kasting2ef489c2017-07-22 19:11:4089 // The task runner for the |web_data_service_|, if any.
Florian Uunkbb7ccd82018-07-20 15:53:3690 scoped_refptr<base::SingleThreadTaskRunner> web_data_service_thread_;
Peter Kasting2ef489c2017-07-22 19:11:4091
maxbogueaff7d9d2015-10-26 22:45:5192 // Generates and monitors the ExtensionsActivity object used by sync.
93 ExtensionsActivityMonitor extensions_activity_monitor_;
zeaf09345c2015-10-27 05:29:5094
zeaf09345c2015-10-27 05:29:5095 DISALLOW_COPY_AND_ASSIGN(ChromeSyncClient);
zea5758a242015-08-18 05:06:2096};
97
98} // namespace browser_sync
99
100#endif // CHROME_BROWSER_SYNC_CHROME_SYNC_CLIENT_H__