Supervised user import: Listen for profile creation/deletion
[chromium-blink-merge.git] / sync / protocol / proto_value_conversions.h
blob8aa02adda1348b84ab2f3adde9944ed95e0b7a75
1 // Copyright 2012 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.
5 // Keep this file in sync with the .proto files in this directory.
7 #ifndef SYNC_PROTOCOL_PROTO_VALUE_CONVERSIONS_H_
8 #define SYNC_PROTOCOL_PROTO_VALUE_CONVERSIONS_H_
10 #include "sync/base/sync_export.h"
12 namespace base {
13 class DictionaryValue;
16 namespace sync_pb {
17 class AppListSpecifics;
18 class AppNotification;
19 class AppNotificationSettings;
20 class AppSettingSpecifics;
21 class AppSpecifics;
22 class ArticleSpecifics;
23 class AttachmentIdProto;
24 class AutofillProfileSpecifics;
25 class AutofillSpecifics;
26 class AutofillWalletSpecifics;
27 class BookmarkSpecifics;
28 class ClientConfigParams;
29 class ClientToServerMessage;
30 class ClientToServerResponse;
31 class CollapsedInfo;
32 class DatatypeAssociationStats;
33 class DebugEventInfo;
34 class DebugInfo;
35 class DeviceInfoSpecifics;
36 class DeviceInformation;
37 class DictionarySpecifics;
38 class EncryptedData;
39 class EntitySpecifics;
40 class EverythingDirective;
41 class ExperimentsSpecifics;
42 class ExtensionSettingSpecifics;
43 class ExtensionSpecifics;
44 class FaviconImageSpecifics;
45 class FaviconTrackingSpecifics;
46 class GlobalIdDirective;
47 class HistoryDeleteDirectiveSpecifics;
48 class KeystoreEncryptionFlagsSpecifics;
49 class LinkedAppIconInfo;
50 class Media;
51 class ManagedUserSettingSpecifics;
52 class ManagedUserSharedSettingSpecifics;
53 class ManagedUserSpecifics;
54 class ManagedUserWhitelistSpecifics;
55 class NavigationRedirect;
56 class NigoriSpecifics;
57 class PasswordSpecifics;
58 class PasswordSpecificsData;
59 class PreferenceSpecifics;
60 class PriorityPreferenceSpecifics;
61 class SearchEngineSpecifics;
62 class SessionHeader;
63 class SessionSpecifics;
64 class SessionTab;
65 class SessionWindow;
66 class SimpleCollapsedLayout;
67 class SyncCycleCompletedEventInfo;
68 class SyncEntity;
69 class SyncedNotificationAppInfoSpecifics;
70 class SyncedNotificationSpecifics;
71 class TabNavigation;
72 class Target;
73 class ThemeSpecifics;
74 class TimeRangeDirective;
75 class TypedUrlSpecifics;
76 class WalletMaskedCreditCard;
77 class WalletPostalAddress;
78 class WifiCredentialSpecifics;
79 } // namespace sync_pb
81 // Utility functions to convert sync protocol buffers to dictionaries.
82 // Each protocol field is mapped to a key of the same name. Repeated
83 // fields are mapped to array values and sub-messages are mapped to
84 // sub-dictionary values.
86 // TODO(akalin): Add has_* information.
88 // TODO(akalin): Improve enum support.
90 namespace syncer {
92 // Ownership of all returned DictionaryValues are transferred to the
93 // caller.
95 // TODO(akalin): Perhaps extend this to decrypt?
96 SYNC_EXPORT_PRIVATE base::DictionaryValue* EncryptedDataToValue(
97 const sync_pb::EncryptedData& encrypted_data);
99 // Sub-protocol of AppListSpecifics.
100 SYNC_EXPORT_PRIVATE base::DictionaryValue* AppListSpecificsToValue(
101 const sync_pb::AppListSpecifics& proto);
103 // Sub-protocols of AppSpecifics.
104 SYNC_EXPORT_PRIVATE base::DictionaryValue* AppSettingsToValue(
105 const sync_pb::AppNotificationSettings& app_notification_settings);
107 SYNC_EXPORT_PRIVATE base::DictionaryValue* LinkedAppIconInfoToValue(
108 const sync_pb::LinkedAppIconInfo& linked_app_icon_info);
110 // Sub-protocols of SessionSpecifics.
112 SYNC_EXPORT_PRIVATE base::DictionaryValue* SessionHeaderToValue(
113 const sync_pb::SessionHeader& session_header);
115 SYNC_EXPORT_PRIVATE base::DictionaryValue* SessionTabToValue(
116 const sync_pb::SessionTab& session_tab);
118 SYNC_EXPORT_PRIVATE base::DictionaryValue* SessionWindowToValue(
119 const sync_pb::SessionWindow& session_window);
121 SYNC_EXPORT_PRIVATE base::DictionaryValue* TabNavigationToValue(
122 const sync_pb::TabNavigation& tab_navigation);
124 SYNC_EXPORT_PRIVATE base::DictionaryValue* NavigationRedirectToValue(
125 const sync_pb::NavigationRedirect& navigation_redirect);
127 // Sub-protocol of PasswordSpecifics.
129 SYNC_EXPORT_PRIVATE base::DictionaryValue* PasswordSpecificsDataToValue(
130 const sync_pb::PasswordSpecificsData& password_specifics_data);
132 // Sub-protocol of NigoriSpecifics.
134 base::DictionaryValue* DeviceInformationToValue(
135 const sync_pb::DeviceInformation& device_information);
137 // Sub-protocol of HistoryDeleteDirectiveSpecifics.
139 base::DictionaryValue* GlobalIdDirectiveToValue(
140 const sync_pb::GlobalIdDirective& global_id_directive);
142 base::DictionaryValue* TimeRangeDirectiveToValue(
143 const sync_pb::TimeRangeDirective& time_range_directive);
145 // Sub-protocol of Experiments.
147 base::DictionaryValue* KeystoreEncryptionToValue(
148 const sync_pb::KeystoreEncryptionFlagsSpecifics& proto);
150 SYNC_EXPORT_PRIVATE base::DictionaryValue* SessionSpecificsToValue(
151 const sync_pb::SessionSpecifics& session_specifics);
153 // Main *SpecificsToValue functions.
155 SYNC_EXPORT_PRIVATE base::DictionaryValue* AppNotificationToValue(
156 const sync_pb::AppNotification& app_notification_specifics);
158 base::DictionaryValue* AppSettingSpecificsToValue(
159 const sync_pb::AppSettingSpecifics& app_setting_specifics);
161 SYNC_EXPORT_PRIVATE base::DictionaryValue* AppSpecificsToValue(
162 const sync_pb::AppSpecifics& app_specifics);
164 SYNC_EXPORT_PRIVATE base::DictionaryValue* ArticleSpecificsToValue(
165 const sync_pb::ArticleSpecifics& article_specifics);
167 SYNC_EXPORT_PRIVATE base::DictionaryValue* AutofillSpecificsToValue(
168 const sync_pb::AutofillSpecifics& autofill_specifics);
170 SYNC_EXPORT_PRIVATE base::DictionaryValue* AutofillProfileSpecificsToValue(
171 const sync_pb::AutofillProfileSpecifics& autofill_profile_specifics);
173 SYNC_EXPORT_PRIVATE base::DictionaryValue* AutofillWalletSpecificsToValue(
174 const sync_pb::AutofillWalletSpecifics& autofill_wallet_specifics);
176 SYNC_EXPORT_PRIVATE base::DictionaryValue* BookmarkSpecificsToValue(
177 const sync_pb::BookmarkSpecifics& bookmark_specifics);
179 SYNC_EXPORT_PRIVATE base::DictionaryValue* DeviceInfoSpecificsToValue(
180 const sync_pb::DeviceInfoSpecifics& device_info_specifics);
182 SYNC_EXPORT_PRIVATE base::DictionaryValue* DictionarySpecificsToValue(
183 const sync_pb::DictionarySpecifics& dictionary_specifics);
185 SYNC_EXPORT_PRIVATE base::DictionaryValue* ExperimentsSpecificsToValue(
186 const sync_pb::ExperimentsSpecifics& proto);
188 SYNC_EXPORT_PRIVATE base::DictionaryValue* PriorityPreferenceSpecificsToValue(
189 const sync_pb::PriorityPreferenceSpecifics& proto);
191 SYNC_EXPORT_PRIVATE base::DictionaryValue* ExtensionSettingSpecificsToValue(
192 const sync_pb::ExtensionSettingSpecifics& extension_setting_specifics);
194 SYNC_EXPORT_PRIVATE base::DictionaryValue* ExtensionSpecificsToValue(
195 const sync_pb::ExtensionSpecifics& extension_specifics);
197 SYNC_EXPORT_PRIVATE base::DictionaryValue* FaviconImageSpecificsToValue(
198 const sync_pb::FaviconImageSpecifics& favicon_image_specifics);
200 SYNC_EXPORT_PRIVATE base::DictionaryValue* FaviconTrackingSpecificsToValue(
201 const sync_pb::FaviconTrackingSpecifics& favicon_tracking_specifics);
203 SYNC_EXPORT base::DictionaryValue* HistoryDeleteDirectiveSpecificsToValue(
204 const sync_pb::HistoryDeleteDirectiveSpecifics&
205 history_delete_directive_specifics);
207 SYNC_EXPORT_PRIVATE base::DictionaryValue* ManagedUserSettingSpecificsToValue(
208 const sync_pb::ManagedUserSettingSpecifics& managed_user_setting_specifics);
210 SYNC_EXPORT_PRIVATE base::DictionaryValue* ManagedUserSpecificsToValue(
211 const sync_pb::ManagedUserSpecifics& managed_user_specifics);
213 SYNC_EXPORT_PRIVATE base::DictionaryValue*
214 ManagedUserSharedSettingSpecificsToValue(
215 const sync_pb::ManagedUserSharedSettingSpecifics&
216 managed_user_shared_setting_specifics);
218 SYNC_EXPORT_PRIVATE base::DictionaryValue* ManagedUserWhitelistSpecificsToValue(
219 const sync_pb::ManagedUserWhitelistSpecifics&
220 managed_user_whitelist_specifics);
222 SYNC_EXPORT_PRIVATE base::DictionaryValue* MediaToValue(
223 const sync_pb::Media& media);
225 SYNC_EXPORT_PRIVATE base::DictionaryValue* NigoriSpecificsToValue(
226 const sync_pb::NigoriSpecifics& nigori_specifics);
228 SYNC_EXPORT_PRIVATE base::DictionaryValue* PasswordSpecificsToValue(
229 const sync_pb::PasswordSpecifics& password_specifics);
231 SYNC_EXPORT_PRIVATE base::DictionaryValue* PreferenceSpecificsToValue(
232 const sync_pb::PreferenceSpecifics& password_specifics);
234 SYNC_EXPORT_PRIVATE base::DictionaryValue*
235 SyncedNotificationAppInfoSpecificsToValue(
236 const sync_pb::SyncedNotificationAppInfoSpecifics&
237 synced_notification_specifics);
239 SYNC_EXPORT_PRIVATE base::DictionaryValue* SyncedNotificationSpecificsToValue(
240 const sync_pb::SyncedNotificationSpecifics&
241 synced_notification_specifics);
243 SYNC_EXPORT_PRIVATE base::DictionaryValue* SearchEngineSpecificsToValue(
244 const sync_pb::SearchEngineSpecifics& search_engine_specifics);
246 SYNC_EXPORT_PRIVATE base::DictionaryValue* ThemeSpecificsToValue(
247 const sync_pb::ThemeSpecifics& theme_specifics);
249 SYNC_EXPORT_PRIVATE base::DictionaryValue* TypedUrlSpecificsToValue(
250 const sync_pb::TypedUrlSpecifics& typed_url_specifics);
252 SYNC_EXPORT_PRIVATE base::DictionaryValue* WalletMaskedCreditCardToValue(
253 const sync_pb::WalletMaskedCreditCard& wallet_masked_card);
255 SYNC_EXPORT_PRIVATE base::DictionaryValue* WalletPostalAddressToValue(
256 const sync_pb::WalletPostalAddress& wallet_postal_address);
258 SYNC_EXPORT_PRIVATE base::DictionaryValue* WifiCredentialSpecificsToValue(
259 const sync_pb::WifiCredentialSpecifics& wifi_credential_specifics);
261 // Any present extensions are mapped to sub-dictionary values with the
262 // key equal to the extension name.
263 SYNC_EXPORT_PRIVATE base::DictionaryValue* EntitySpecificsToValue(
264 const sync_pb::EntitySpecifics& specifics);
266 SYNC_EXPORT_PRIVATE base::DictionaryValue* SyncEntityToValue(
267 const sync_pb::SyncEntity& entity,
268 bool include_specifics);
270 SYNC_EXPORT_PRIVATE base::DictionaryValue* ClientToServerMessageToValue(
271 const sync_pb::ClientToServerMessage& proto,
272 bool include_specifics);
274 SYNC_EXPORT_PRIVATE base::DictionaryValue* ClientToServerResponseToValue(
275 const sync_pb::ClientToServerResponse& proto,
276 bool include_specifics);
278 base::DictionaryValue* DatatypeAssociationStatsToValue(
279 const sync_pb::DatatypeAssociationStats& proto);
281 base::DictionaryValue* DebugEventInfoToValue(
282 const sync_pb::DebugEventInfo& proto);
284 base::DictionaryValue* DebugInfoToValue(
285 const sync_pb::DebugInfo& proto);
287 base::DictionaryValue* SyncCycleCompletedEventInfoToValue(
288 const sync_pb::SyncCycleCompletedEventInfo& proto);
290 base::DictionaryValue* ClientConfigParamsToValue(
291 const sync_pb::ClientConfigParams& proto);
293 SYNC_EXPORT_PRIVATE base::DictionaryValue* AttachmentIdProtoToValue(
294 const sync_pb::AttachmentIdProto& proto);
296 } // namespace syncer
298 #endif // SYNC_PROTOCOL_PROTO_VALUE_CONVERSIONS_H_