blob: f52eb2c251db195a2b4ba8b5a85ea5b05102f686 [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"
Marc Treib6c4db2982019-03-21 15:08:4212#include "base/sequenced_task_runner.h"
maxbogueaff7d9d2015-10-26 22:45:5113#include "chrome/browser/sync/glue/extensions_activity_monitor.h"
Mikel Astiz83b96632019-02-11 10:25:1714#include "components/browser_sync/browser_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 {
zea9276f212015-08-29 01:35:0328class SyncService;
29}
zea5758a242015-08-18 05:06:2030
31namespace browser_sync {
32
Mikel Astiz83b96632019-02-11 10:25:1733class ProfileSyncComponentsFactoryImpl;
34
35class ChromeSyncClient : public browser_sync::BrowserSyncClient {
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 Astiz83b96632019-02-11 10:25:1740 // BrowserSyncClient implementation.
zea5758a242015-08-18 05:06:2041 PrefService* GetPrefService() override;
pastarmovj8b8b5e32017-03-01 14:45:3142 base::FilePath GetLocalSyncBackendFolder() override;
Mikel Astiz53131342018-07-19 08:59:5843 syncer::ModelTypeStoreService* GetModelTypeStoreService() override;
Mikel Astiz7f0276f2019-01-23 15:36:3644 syncer::DeviceInfoSyncService* GetDeviceInfoSyncService() override;
zea5758a242015-08-18 05:06:2045 bookmarks::BookmarkModel* GetBookmarkModel() override;
blundellde2169a2015-10-08 11:43:3346 favicon::FaviconService* GetFaviconService() override;
zea5758a242015-08-18 05:06:2047 history::HistoryService* GetHistoryService() override;
Jeffrey Cohen13ad660122019-03-22 16:50:0048 send_tab_to_self::SendTabToSelfSyncService* GetSendTabToSelfSyncService()
49 override;
Mikel Astiz0889b2be2018-09-25 16:20:4150 sync_sessions::SessionSyncService* GetSessionSyncService() override;
blundell1b3206c2015-10-23 09:42:3151 base::Closure GetPasswordStateChangedCallback() override;
Mikel Astiz0b79a0a12018-12-13 08:54:0052 syncer::DataTypeController::TypeVector CreateDataTypeControllers(
53 syncer::SyncService* sync_service) override;
zea5758a242015-08-18 05:06:2054 autofill::PersonalDataManager* GetPersonalDataManager() override;
blundelld551be12015-11-05 11:21:2255 invalidation::InvalidationService* GetInvalidationService() override;
Mikel Astiz83b96632019-02-11 10:25:1756 BookmarkUndoService* GetBookmarkUndoService() override;
maxbogueaff7d9d2015-10-26 22:45:5157 scoped_refptr<syncer::ExtensionsActivity> GetExtensionsActivity() override;
skyma56dd492017-04-06 19:20:2758 base::WeakPtr<syncer::SyncableService> GetSyncableServiceForType(
59 syncer::ModelType type) override;
Jan Krcal801ab7f2018-04-24 17:03:5060 base::WeakPtr<syncer::ModelTypeControllerDelegate>
61 GetControllerDelegateForModelType(syncer::ModelType type) override;
maxbogue26624b12015-10-22 17:34:0262 scoped_refptr<syncer::ModelSafeWorker> CreateModelWorkerForGroup(
fdorayea7a7ec2016-11-07 16:35:0863 syncer::ModelSafeGroup group) override;
maxbogue7e006db2016-10-03 19:48:2864 syncer::SyncApiComponentFactory* GetSyncApiComponentFactory() override;
Marc Treib4569da6d992019-03-27 16:51:0965 syncer::SyncTypePreferenceProvider* GetPreferenceProvider() override;
zea5758a242015-08-18 05:06:2066
zea5758a242015-08-18 05:06:2067 private:
zeaead1f432015-11-18 02:29:5168 Profile* const profile_;
69
zeade27874a52015-09-30 01:36:4570 // The sync api component factory in use by this client.
Mikel Astiz83b96632019-02-11 10:25:1771 // TODO(crbug.com/915154): Revert to SyncApiComponentFactory once common
72 // controller creation is moved elsewhere.
73 std::unique_ptr<browser_sync::ProfileSyncComponentsFactoryImpl>
74 component_factory_;
zeaa39c1a62015-08-19 18:36:4275
76 // Members that must be fetched on the UI thread but accessed on their
77 // respective backend threads.
Florian Uunkbb7ccd82018-07-20 15:53:3678 scoped_refptr<autofill::AutofillWebDataService> profile_web_data_service_;
79 scoped_refptr<autofill::AutofillWebDataService> account_web_data_service_;
zeaa39c1a62015-08-19 18:36:4280 scoped_refptr<password_manager::PasswordStore> password_store_;
zea9276f212015-08-29 01:35:0381
Peter Kasting2ef489c2017-07-22 19:11:4082 // The task runner for the |web_data_service_|, if any.
Marc Treib6c4db2982019-03-21 15:08:4283 scoped_refptr<base::SequencedTaskRunner> web_data_service_thread_;
Peter Kasting2ef489c2017-07-22 19:11:4084
maxbogueaff7d9d2015-10-26 22:45:5185 // Generates and monitors the ExtensionsActivity object used by sync.
86 ExtensionsActivityMonitor extensions_activity_monitor_;
zeaf09345c2015-10-27 05:29:5087
zeaf09345c2015-10-27 05:29:5088 DISALLOW_COPY_AND_ASSIGN(ChromeSyncClient);
zea5758a242015-08-18 05:06:2089};
90
91} // namespace browser_sync
92
93#endif // CHROME_BROWSER_SYNC_CHROME_SYNC_CLIENT_H__