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