1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
|
// Copyright (c) 2011 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 CHROME_BROWSER_SYNC_PROFILE_SYNC_FACTORY_H__
#define CHROME_BROWSER_SYNC_PROFILE_SYNC_FACTORY_H__
#pragma once
#include <string>
#include <utility>
#include "base/task.h"
#include "chrome/browser/sync/glue/change_processor.h"
#include "chrome/browser/sync/glue/data_type_controller.h"
#include "chrome/browser/sync/glue/model_associator.h"
#include "chrome/browser/sync/unrecoverable_error_handler.h"
class PasswordStore;
class ProfileSyncService;
class SyncableService;
class WebDataService;
namespace browser_sync {
class DataTypeManager;
class GenericChangeProcessor;
class SharedChangeProcessor;
class SyncBackendHost;
class UnrecoverableErrorHandler;
}
namespace history {
class HistoryBackend;
};
// Factory class for all profile sync related classes.
class ProfileSyncFactory {
public:
// The various factory methods for the data type model associators
// and change processors all return this struct. This is needed
// because the change processors typically require a type-specific
// model associator at construction time.
//
// Note: This interface is deprecated in favor of the SyncableService API.
// New datatypes that do not live on the UI thread should directly return a
// weak pointer to a SyncableService. All others continue to return
// SyncComponents. It is safe to assume that the factory methods below are
// called on the same thread in which the datatype resides.
//
// TODO(zea): Have all datatypes using the new API switch to returning
// SyncableService weak pointers instead of SyncComponents (crbug.com/100114).
struct SyncComponents {
browser_sync::AssociatorInterface* model_associator;
browser_sync::ChangeProcessor* change_processor;
SyncComponents(browser_sync::AssociatorInterface* ma,
browser_sync::ChangeProcessor* cp)
: model_associator(ma), change_processor(cp) {}
};
virtual ~ProfileSyncFactory() {}
// Instantiates a new ProfileSyncService. The return pointer is owned by the
// caller.
virtual ProfileSyncService* CreateProfileSyncService(
const std::string& cros_user) = 0;
// Creates and registers enabled datatypes with the provided
// ProfileSyncService.
virtual void RegisterDataTypes(ProfileSyncService* pss) = 0;
// Instantiates a new DataTypeManager with a SyncBackendHost and a
// list of data type controllers. The return pointer is owned by
// the caller.
virtual browser_sync::DataTypeManager* CreateDataTypeManager(
browser_sync::SyncBackendHost* backend,
const browser_sync::DataTypeController::TypeMap* controllers) = 0;
// Creating this in the factory helps us mock it out in testing.
virtual browser_sync::GenericChangeProcessor* CreateGenericChangeProcessor(
ProfileSyncService* profile_sync_service,
browser_sync::UnrecoverableErrorHandler* error_handler,
const base::WeakPtr<SyncableService>& local_service) = 0;
virtual browser_sync::SharedChangeProcessor*
CreateSharedChangeProcessor() = 0;
// Instantiates both a model associator and change processor for the
// app data type. The pointers in the return struct are
// owned by the caller.
virtual SyncComponents CreateAppSyncComponents(
ProfileSyncService* profile_sync_service,
browser_sync::UnrecoverableErrorHandler* error_handler) = 0;
// Returns a weak pointer to the SyncableService associated with the datatype.
// The SyncableService is not owned by Sync, but by the backend service
// itself.
virtual base::WeakPtr<SyncableService> GetAutofillProfileSyncableService(
WebDataService* web_data_service) const = 0;
// Returns a weak pointer to the SyncableService associated with the datatype.
// The SyncableService is not owned by Sync, but by the backend service
// itself.
virtual base::WeakPtr<SyncableService> GetAutocompleteSyncableService(
WebDataService* web_data_service) const = 0;
// Instantiates both a model associator and change processor for the
// bookmark data type. The pointers in the return struct are owned
// by the caller.
virtual SyncComponents CreateBookmarkSyncComponents(
ProfileSyncService* profile_sync_service,
browser_sync::UnrecoverableErrorHandler* error_handler) = 0;
// Instantiates both a model associator and change processor for the
// extension or app setting data type. The pointers in the return struct are
// owned by the caller.
virtual SyncComponents CreateExtensionOrAppSettingSyncComponents(
// Either EXTENSION_SETTINGS or APP_SETTINGS.
syncable::ModelType type,
SyncableService* settings_service,
ProfileSyncService* profile_sync_service,
browser_sync::UnrecoverableErrorHandler* error_handler) = 0;
// Instantiates both a model associator and change processor for the
// extension data type. The pointers in the return struct are
// owned by the caller.
virtual SyncComponents CreateExtensionSyncComponents(
ProfileSyncService* profile_sync_service,
browser_sync::UnrecoverableErrorHandler* error_handler) = 0;
// Instantiates both a model associator and change processor for the
// password data type. The pointers in the return struct are
// owned by the caller.
virtual SyncComponents CreatePasswordSyncComponents(
ProfileSyncService* profile_sync_service,
PasswordStore* password_store,
browser_sync::UnrecoverableErrorHandler* error_handler) = 0;
// Instantiates both a model associator and change processor for the
// preference data type. The pointers in the return struct are
// owned by the caller.
virtual SyncComponents CreatePreferenceSyncComponents(
ProfileSyncService* profile_sync_service,
browser_sync::UnrecoverableErrorHandler* error_handler) = 0;
// Instantiates both a model associator and change processor for the
// theme data type. The pointers in the return struct are
// owned by the caller.
virtual SyncComponents CreateThemeSyncComponents(
ProfileSyncService* profile_sync_service,
browser_sync::UnrecoverableErrorHandler* error_handler) = 0;
// Instantiates both a model associator and change processor for the
// typed_url data type. The pointers in the return struct are owned
// by the caller.
virtual SyncComponents CreateTypedUrlSyncComponents(
ProfileSyncService* profile_sync_service,
history::HistoryBackend* history_backend,
browser_sync::UnrecoverableErrorHandler* error_handler) = 0;
// Instantiates both a model associator and change processor for the
// session data type. The pointers in the return struct are
// owned by the caller.
virtual SyncComponents CreateSessionSyncComponents(
ProfileSyncService* profile_sync_service,
browser_sync::UnrecoverableErrorHandler* error_handler) = 0;
// Instantiates both a model associator and change processor for the search
// engine data type. The pointers in the return struct are owned by the
// caller.
virtual SyncComponents CreateSearchEngineSyncComponents(
ProfileSyncService* profile_sync_service,
browser_sync::UnrecoverableErrorHandler* error_handler) = 0;
// Instantiates both a model associator and change processor for the app
// notification data type. The pointers in the return struct are owned by the
// caller.
virtual SyncComponents CreateAppNotificationSyncComponents(
ProfileSyncService* profile_sync_service,
browser_sync::UnrecoverableErrorHandler* error_handler) = 0;
};
#endif // CHROME_BROWSER_SYNC_PROFILE_SYNC_FACTORY_H__
|