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"
13 class DictionaryValue
;
17 class AppListSpecifics
;
18 class AppNotification
;
19 class AppNotificationSettings
;
20 class AppSettingSpecifics
;
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
;
32 class DatatypeAssociationStats
;
35 class DeviceInfoSpecifics
;
36 class DeviceInformation
;
37 class DictionarySpecifics
;
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
;
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
;
63 class SessionSpecifics
;
66 class SimpleCollapsedLayout
;
67 class SyncCycleCompletedEventInfo
;
69 class SyncedNotificationAppInfoSpecifics
;
70 class SyncedNotificationSpecifics
;
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.
92 // Ownership of all returned DictionaryValues are transferred to the
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_