Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / sync / protocol / proto_value_conversions.h
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.
4
5 // Keep this file in sync with the .proto files in this directory.
6
7 #ifndef SYNC_PROTOCOL_PROTO_VALUE_CONVERSIONS_H_
8 #define SYNC_PROTOCOL_PROTO_VALUE_CONVERSIONS_H_
9
10 #include "sync/base/sync_export.h"
11
12 namespace base {
13 class DictionaryValue;
14 }
15
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 BookmarkSpecifics;
27 class ClientConfigParams;
28 class ClientToServerMessage;
29 class ClientToServerResponse;
30 class CoalescedSyncedNotification;
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 Media;
50 class ManagedUserSettingSpecifics;
51 class ManagedUserSharedSettingSpecifics;
52 class ManagedUserSpecifics;
53 class NavigationRedirect;
54 class NigoriSpecifics;
55 class PasswordSpecifics;
56 class PasswordSpecificsData;
57 class PreferenceSpecifics;
58 class PriorityPreferenceSpecifics;
59 class SearchEngineSpecifics;
60 class SessionHeader;
61 class SessionSpecifics;
62 class SessionTab;
63 class SessionWindow;
64 class SimpleCollapsedLayout;
65 class SyncCycleCompletedEventInfo;
66 class SyncedNotification;
67 class SyncedNotificationAction;
68 class SyncedNotificationAppInfo;
69 class SyncedNotificationAppInfoSpecifics;
70 class SyncedNotificationDestination;
71 class SyncedNotificationImage;
72 class SyncedNotificationProfileImage;
73 class SyncedNotificationRenderInfo;
74 class SyncedNotificationSpecifics;
75 class TabNavigation;
76 class Target;
77 class ThemeSpecifics;
78 class TimeRangeDirective;
79 class TypedUrlSpecifics;
80 }  // namespace sync_pb
81
82 // Utility functions to convert sync protocol buffers to dictionaries.
83 // Each protocol field is mapped to a key of the same name.  Repeated
84 // fields are mapped to array values and sub-messages are mapped to
85 // sub-dictionary values.
86 //
87 // TODO(akalin): Add has_* information.
88 //
89 // TODO(akalin): Improve enum support.
90
91 namespace syncer {
92
93 // Ownership of all returned DictionaryValues are transferred to the
94 // caller.
95
96 // TODO(akalin): Perhaps extend this to decrypt?
97 SYNC_EXPORT_PRIVATE base::DictionaryValue* EncryptedDataToValue(
98     const sync_pb::EncryptedData& encrypted_data);
99
100 // Sub-protocol of AppListSpecifics.
101 SYNC_EXPORT_PRIVATE base::DictionaryValue* AppListSpecificsToValue(
102     const sync_pb::AppListSpecifics& proto);
103
104 // Sub-protocol of AppSpecifics.
105 SYNC_EXPORT_PRIVATE base::DictionaryValue* AppSettingsToValue(
106     const sync_pb::AppNotificationSettings& app_notification_settings);
107
108 // Sub-protocols of SessionSpecifics.
109
110 SYNC_EXPORT_PRIVATE base::DictionaryValue* SessionHeaderToValue(
111     const sync_pb::SessionHeader& session_header);
112
113 SYNC_EXPORT_PRIVATE base::DictionaryValue* SessionTabToValue(
114     const sync_pb::SessionTab& session_tab);
115
116 SYNC_EXPORT_PRIVATE base::DictionaryValue* SessionWindowToValue(
117     const sync_pb::SessionWindow& session_window);
118
119 SYNC_EXPORT_PRIVATE base::DictionaryValue* TabNavigationToValue(
120     const sync_pb::TabNavigation& tab_navigation);
121
122 SYNC_EXPORT_PRIVATE base::DictionaryValue* NavigationRedirectToValue(
123     const sync_pb::NavigationRedirect& navigation_redirect);
124
125 // Sub-protocol of PasswordSpecifics.
126
127 SYNC_EXPORT_PRIVATE base::DictionaryValue* PasswordSpecificsDataToValue(
128     const sync_pb::PasswordSpecificsData& password_specifics_data);
129
130 // Sub-protocol of NigoriSpecifics.
131
132 base::DictionaryValue* DeviceInformationToValue(
133     const sync_pb::DeviceInformation& device_information);
134
135 // Sub-protocol of HistoryDeleteDirectiveSpecifics.
136
137 base::DictionaryValue* GlobalIdDirectiveToValue(
138     const sync_pb::GlobalIdDirective& global_id_directive);
139
140 base::DictionaryValue* TimeRangeDirectiveToValue(
141     const sync_pb::TimeRangeDirective& time_range_directive);
142
143 // Sub-protocol of Experiments.
144
145 base::DictionaryValue* KeystoreEncryptionToValue(
146     const sync_pb::KeystoreEncryptionFlagsSpecifics& proto);
147
148 // Sub protocols of SyncedNotifications.
149
150 base::DictionaryValue* SimpleCollapsedLayoutToValue(
151     const sync_pb::SimpleCollapsedLayout& proto);
152
153 base::DictionaryValue* CollapsedInfoToValue(
154     const sync_pb::CollapsedInfo& proto);
155
156 base::DictionaryValue* RenderInfoToValue(
157     const sync_pb::SyncedNotificationRenderInfo& proto);
158
159 base::DictionaryValue* CoalescedNotificationToValue(
160     const sync_pb::CoalescedSyncedNotification& proto);
161
162 base::DictionaryValue* SyncedNotificationActionToValue(
163     const sync_pb::SyncedNotificationAction& action);
164
165 base::DictionaryValue* SyncedNotificationDestinationToValue(
166     const sync_pb::SyncedNotificationDestination& destination);
167
168 base::DictionaryValue* SyncedNotificationToValue(
169     const sync_pb::SyncedNotification& notification);
170
171 SYNC_EXPORT_PRIVATE base::DictionaryValue* SessionSpecificsToValue(
172     const sync_pb::SessionSpecifics& session_specifics);
173
174 SYNC_EXPORT_PRIVATE base::DictionaryValue* SyncedNotificationImageToValue(
175     const sync_pb::SyncedNotificationImage& image);
176
177 SYNC_EXPORT_PRIVATE base::DictionaryValue*
178     SyncedNotificationProfileImageToValue(
179         const sync_pb::SyncedNotificationProfileImage& image);
180
181 SYNC_EXPORT_PRIVATE base::DictionaryValue* TargetToValue(
182     const sync_pb::Target& target);
183
184 // Main *SpecificsToValue functions.
185
186 SYNC_EXPORT_PRIVATE base::DictionaryValue* AppNotificationToValue(
187     const sync_pb::AppNotification& app_notification_specifics);
188
189 base::DictionaryValue* AppSettingSpecificsToValue(
190     const sync_pb::AppSettingSpecifics& app_setting_specifics);
191
192 SYNC_EXPORT_PRIVATE base::DictionaryValue* AppSpecificsToValue(
193     const sync_pb::AppSpecifics& app_specifics);
194
195 SYNC_EXPORT_PRIVATE base::DictionaryValue* ArticleSpecificsToValue(
196     const sync_pb::ArticleSpecifics& article_specifics);
197
198 SYNC_EXPORT_PRIVATE base::DictionaryValue* AutofillSpecificsToValue(
199     const sync_pb::AutofillSpecifics& autofill_specifics);
200
201 SYNC_EXPORT_PRIVATE base::DictionaryValue* AutofillProfileSpecificsToValue(
202     const sync_pb::AutofillProfileSpecifics& autofill_profile_specifics);
203
204 SYNC_EXPORT_PRIVATE base::DictionaryValue* BookmarkSpecificsToValue(
205     const sync_pb::BookmarkSpecifics& bookmark_specifics);
206
207 SYNC_EXPORT_PRIVATE base::DictionaryValue* DeviceInfoSpecificsToValue(
208     const sync_pb::DeviceInfoSpecifics& device_info_specifics);
209
210 SYNC_EXPORT_PRIVATE base::DictionaryValue* DictionarySpecificsToValue(
211     const sync_pb::DictionarySpecifics& dictionary_specifics);
212
213 SYNC_EXPORT_PRIVATE base::DictionaryValue* ExperimentsSpecificsToValue(
214     const sync_pb::ExperimentsSpecifics& proto);
215
216 SYNC_EXPORT_PRIVATE base::DictionaryValue* PriorityPreferenceSpecificsToValue(
217     const sync_pb::PriorityPreferenceSpecifics& proto);
218
219 SYNC_EXPORT_PRIVATE base::DictionaryValue* ExtensionSettingSpecificsToValue(
220     const sync_pb::ExtensionSettingSpecifics& extension_setting_specifics);
221
222 SYNC_EXPORT_PRIVATE base::DictionaryValue* ExtensionSpecificsToValue(
223     const sync_pb::ExtensionSpecifics& extension_specifics);
224
225 SYNC_EXPORT_PRIVATE base::DictionaryValue* FaviconImageSpecificsToValue(
226     const sync_pb::FaviconImageSpecifics& favicon_image_specifics);
227
228 SYNC_EXPORT_PRIVATE base::DictionaryValue* FaviconTrackingSpecificsToValue(
229     const sync_pb::FaviconTrackingSpecifics& favicon_tracking_specifics);
230
231 SYNC_EXPORT base::DictionaryValue* HistoryDeleteDirectiveSpecificsToValue(
232     const sync_pb::HistoryDeleteDirectiveSpecifics&
233         history_delete_directive_specifics);
234
235 SYNC_EXPORT_PRIVATE base::DictionaryValue* ManagedUserSettingSpecificsToValue(
236     const sync_pb::ManagedUserSettingSpecifics& managed_user_setting_specifics);
237
238 SYNC_EXPORT_PRIVATE base::DictionaryValue* ManagedUserSpecificsToValue(
239     const sync_pb::ManagedUserSpecifics& managed_user_specifics);
240
241 SYNC_EXPORT_PRIVATE base::DictionaryValue*
242     ManagedUserSharedSettingSpecificsToValue(
243         const sync_pb::ManagedUserSharedSettingSpecifics&
244             managed_user_shared_setting_specifics);
245
246 SYNC_EXPORT_PRIVATE base::DictionaryValue* MediaToValue(
247     const sync_pb::Media& media);
248
249 SYNC_EXPORT_PRIVATE base::DictionaryValue* NigoriSpecificsToValue(
250     const sync_pb::NigoriSpecifics& nigori_specifics);
251
252 SYNC_EXPORT_PRIVATE base::DictionaryValue* PasswordSpecificsToValue(
253     const sync_pb::PasswordSpecifics& password_specifics);
254
255 SYNC_EXPORT_PRIVATE base::DictionaryValue* PreferenceSpecificsToValue(
256     const sync_pb::PreferenceSpecifics& password_specifics);
257
258 SYNC_EXPORT_PRIVATE base::DictionaryValue*
259     SyncedNotificationAppInfoSpecificsToValue(
260         const sync_pb::SyncedNotificationAppInfoSpecifics&
261         synced_notification_specifics);
262
263 SYNC_EXPORT_PRIVATE base::DictionaryValue* SyncedNotificationSpecificsToValue(
264     const sync_pb::SyncedNotificationSpecifics&
265     synced_notification_specifics);
266
267 SYNC_EXPORT_PRIVATE base::DictionaryValue* SearchEngineSpecificsToValue(
268     const sync_pb::SearchEngineSpecifics& search_engine_specifics);
269
270 SYNC_EXPORT_PRIVATE base::DictionaryValue* ThemeSpecificsToValue(
271     const sync_pb::ThemeSpecifics& theme_specifics);
272
273 SYNC_EXPORT_PRIVATE base::DictionaryValue* TypedUrlSpecificsToValue(
274     const sync_pb::TypedUrlSpecifics& typed_url_specifics);
275
276 // Any present extensions are mapped to sub-dictionary values with the
277 // key equal to the extension name.
278 SYNC_EXPORT_PRIVATE base::DictionaryValue* EntitySpecificsToValue(
279     const sync_pb::EntitySpecifics& specifics);
280
281 SYNC_EXPORT_PRIVATE base::DictionaryValue* ClientToServerMessageToValue(
282     const sync_pb::ClientToServerMessage& proto,
283     bool include_specifics);
284
285 SYNC_EXPORT_PRIVATE base::DictionaryValue* ClientToServerResponseToValue(
286     const sync_pb::ClientToServerResponse& proto,
287     bool include_specifics);
288
289 base::DictionaryValue* DatatypeAssociationStatsToValue(
290     const sync_pb::DatatypeAssociationStats& proto);
291
292 base::DictionaryValue* DebugEventInfoToValue(
293     const sync_pb::DebugEventInfo& proto);
294
295 base::DictionaryValue* DebugInfoToValue(
296     const sync_pb::DebugInfo& proto);
297
298 base::DictionaryValue* SyncCycleCompletedEventInfoToValue(
299     const sync_pb::SyncCycleCompletedEventInfo& proto);
300
301 base::DictionaryValue* ClientConfigParamsToValue(
302     const sync_pb::ClientConfigParams& proto);
303
304 SYNC_EXPORT_PRIVATE base::DictionaryValue* AttachmentIdProtoToValue(
305     const sync_pb::AttachmentIdProto& proto);
306
307 }  // namespace syncer
308
309 #endif  // SYNC_PROTOCOL_PROTO_VALUE_CONVERSIONS_H_