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 12namespace base { 13class DictionaryValue; 14} 15 16namespace sync_pb { 17class AppListSpecifics; 18class AppNotification; 19class AppNotificationSettings; 20class AppSettingSpecifics; 21class AppSpecifics; 22class ArticleSpecifics; 23class AttachmentIdProto; 24class AutofillProfileSpecifics; 25class AutofillSpecifics; 26class BookmarkSpecifics; 27class ClientConfigParams; 28class ClientToServerMessage; 29class ClientToServerResponse; 30class CoalescedSyncedNotification; 31class CollapsedInfo; 32class DatatypeAssociationStats; 33class DebugEventInfo; 34class DebugInfo; 35class DeviceInfoSpecifics; 36class DeviceInformation; 37class DictionarySpecifics; 38class EncryptedData; 39class EntitySpecifics; 40class EverythingDirective; 41class ExperimentsSpecifics; 42class ExtensionSettingSpecifics; 43class ExtensionSpecifics; 44class FaviconImageSpecifics; 45class FaviconTrackingSpecifics; 46class GlobalIdDirective; 47class HistoryDeleteDirectiveSpecifics; 48class KeystoreEncryptionFlagsSpecifics; 49class Media; 50class ManagedUserSettingSpecifics; 51class ManagedUserSharedSettingSpecifics; 52class ManagedUserSpecifics; 53class NavigationRedirect; 54class NigoriSpecifics; 55class PasswordSpecifics; 56class PasswordSpecificsData; 57class PreferenceSpecifics; 58class PriorityPreferenceSpecifics; 59class SearchEngineSpecifics; 60class SessionHeader; 61class SessionSpecifics; 62class SessionTab; 63class SessionWindow; 64class SimpleCollapsedLayout; 65class SyncCycleCompletedEventInfo; 66class SyncEntity; 67class SyncedNotification; 68class SyncedNotificationAction; 69class SyncedNotificationAppInfo; 70class SyncedNotificationAppInfoSpecifics; 71class SyncedNotificationDestination; 72class SyncedNotificationImage; 73class SyncedNotificationProfileImage; 74class SyncedNotificationRenderInfo; 75class SyncedNotificationSpecifics; 76class TabNavigation; 77class Target; 78class ThemeSpecifics; 79class TimeRangeDirective; 80class 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 92namespace syncer { 93 94// Ownership of all returned DictionaryValues are transferred to the 95// caller. 96 97// TODO(akalin): Perhaps extend this to decrypt? 98SYNC_EXPORT_PRIVATE base::DictionaryValue* EncryptedDataToValue( 99 const sync_pb::EncryptedData& encrypted_data); 100 101// Sub-protocol of AppListSpecifics. 102SYNC_EXPORT_PRIVATE base::DictionaryValue* AppListSpecificsToValue( 103 const sync_pb::AppListSpecifics& proto); 104 105// Sub-protocol of AppSpecifics. 106SYNC_EXPORT_PRIVATE base::DictionaryValue* AppSettingsToValue( 107 const sync_pb::AppNotificationSettings& app_notification_settings); 108 109// Sub-protocols of SessionSpecifics. 110 111SYNC_EXPORT_PRIVATE base::DictionaryValue* SessionHeaderToValue( 112 const sync_pb::SessionHeader& session_header); 113 114SYNC_EXPORT_PRIVATE base::DictionaryValue* SessionTabToValue( 115 const sync_pb::SessionTab& session_tab); 116 117SYNC_EXPORT_PRIVATE base::DictionaryValue* SessionWindowToValue( 118 const sync_pb::SessionWindow& session_window); 119 120SYNC_EXPORT_PRIVATE base::DictionaryValue* TabNavigationToValue( 121 const sync_pb::TabNavigation& tab_navigation); 122 123SYNC_EXPORT_PRIVATE base::DictionaryValue* NavigationRedirectToValue( 124 const sync_pb::NavigationRedirect& navigation_redirect); 125 126// Sub-protocol of PasswordSpecifics. 127 128SYNC_EXPORT_PRIVATE base::DictionaryValue* PasswordSpecificsDataToValue( 129 const sync_pb::PasswordSpecificsData& password_specifics_data); 130 131// Sub-protocol of NigoriSpecifics. 132 133base::DictionaryValue* DeviceInformationToValue( 134 const sync_pb::DeviceInformation& device_information); 135 136// Sub-protocol of HistoryDeleteDirectiveSpecifics. 137 138base::DictionaryValue* GlobalIdDirectiveToValue( 139 const sync_pb::GlobalIdDirective& global_id_directive); 140 141base::DictionaryValue* TimeRangeDirectiveToValue( 142 const sync_pb::TimeRangeDirective& time_range_directive); 143 144// Sub-protocol of Experiments. 145 146base::DictionaryValue* KeystoreEncryptionToValue( 147 const sync_pb::KeystoreEncryptionFlagsSpecifics& proto); 148 149// Sub protocols of SyncedNotifications. 150 151base::DictionaryValue* SimpleCollapsedLayoutToValue( 152 const sync_pb::SimpleCollapsedLayout& proto); 153 154base::DictionaryValue* CollapsedInfoToValue( 155 const sync_pb::CollapsedInfo& proto); 156 157base::DictionaryValue* RenderInfoToValue( 158 const sync_pb::SyncedNotificationRenderInfo& proto); 159 160base::DictionaryValue* CoalescedNotificationToValue( 161 const sync_pb::CoalescedSyncedNotification& proto); 162 163base::DictionaryValue* SyncedNotificationActionToValue( 164 const sync_pb::SyncedNotificationAction& action); 165 166base::DictionaryValue* SyncedNotificationDestinationToValue( 167 const sync_pb::SyncedNotificationDestination& destination); 168 169base::DictionaryValue* SyncedNotificationToValue( 170 const sync_pb::SyncedNotification& notification); 171 172SYNC_EXPORT_PRIVATE base::DictionaryValue* SessionSpecificsToValue( 173 const sync_pb::SessionSpecifics& session_specifics); 174 175SYNC_EXPORT_PRIVATE base::DictionaryValue* SyncedNotificationImageToValue( 176 const sync_pb::SyncedNotificationImage& image); 177 178SYNC_EXPORT_PRIVATE base::DictionaryValue* 179 SyncedNotificationProfileImageToValue( 180 const sync_pb::SyncedNotificationProfileImage& image); 181 182SYNC_EXPORT_PRIVATE base::DictionaryValue* TargetToValue( 183 const sync_pb::Target& target); 184 185// Main *SpecificsToValue functions. 186 187SYNC_EXPORT_PRIVATE base::DictionaryValue* AppNotificationToValue( 188 const sync_pb::AppNotification& app_notification_specifics); 189 190base::DictionaryValue* AppSettingSpecificsToValue( 191 const sync_pb::AppSettingSpecifics& app_setting_specifics); 192 193SYNC_EXPORT_PRIVATE base::DictionaryValue* AppSpecificsToValue( 194 const sync_pb::AppSpecifics& app_specifics); 195 196SYNC_EXPORT_PRIVATE base::DictionaryValue* ArticleSpecificsToValue( 197 const sync_pb::ArticleSpecifics& article_specifics); 198 199SYNC_EXPORT_PRIVATE base::DictionaryValue* AutofillSpecificsToValue( 200 const sync_pb::AutofillSpecifics& autofill_specifics); 201 202SYNC_EXPORT_PRIVATE base::DictionaryValue* AutofillProfileSpecificsToValue( 203 const sync_pb::AutofillProfileSpecifics& autofill_profile_specifics); 204 205SYNC_EXPORT_PRIVATE base::DictionaryValue* BookmarkSpecificsToValue( 206 const sync_pb::BookmarkSpecifics& bookmark_specifics); 207 208SYNC_EXPORT_PRIVATE base::DictionaryValue* DeviceInfoSpecificsToValue( 209 const sync_pb::DeviceInfoSpecifics& device_info_specifics); 210 211SYNC_EXPORT_PRIVATE base::DictionaryValue* DictionarySpecificsToValue( 212 const sync_pb::DictionarySpecifics& dictionary_specifics); 213 214SYNC_EXPORT_PRIVATE base::DictionaryValue* ExperimentsSpecificsToValue( 215 const sync_pb::ExperimentsSpecifics& proto); 216 217SYNC_EXPORT_PRIVATE base::DictionaryValue* PriorityPreferenceSpecificsToValue( 218 const sync_pb::PriorityPreferenceSpecifics& proto); 219 220SYNC_EXPORT_PRIVATE base::DictionaryValue* ExtensionSettingSpecificsToValue( 221 const sync_pb::ExtensionSettingSpecifics& extension_setting_specifics); 222 223SYNC_EXPORT_PRIVATE base::DictionaryValue* ExtensionSpecificsToValue( 224 const sync_pb::ExtensionSpecifics& extension_specifics); 225 226SYNC_EXPORT_PRIVATE base::DictionaryValue* FaviconImageSpecificsToValue( 227 const sync_pb::FaviconImageSpecifics& favicon_image_specifics); 228 229SYNC_EXPORT_PRIVATE base::DictionaryValue* FaviconTrackingSpecificsToValue( 230 const sync_pb::FaviconTrackingSpecifics& favicon_tracking_specifics); 231 232SYNC_EXPORT base::DictionaryValue* HistoryDeleteDirectiveSpecificsToValue( 233 const sync_pb::HistoryDeleteDirectiveSpecifics& 234 history_delete_directive_specifics); 235 236SYNC_EXPORT_PRIVATE base::DictionaryValue* ManagedUserSettingSpecificsToValue( 237 const sync_pb::ManagedUserSettingSpecifics& managed_user_setting_specifics); 238 239SYNC_EXPORT_PRIVATE base::DictionaryValue* ManagedUserSpecificsToValue( 240 const sync_pb::ManagedUserSpecifics& managed_user_specifics); 241 242SYNC_EXPORT_PRIVATE base::DictionaryValue* 243 ManagedUserSharedSettingSpecificsToValue( 244 const sync_pb::ManagedUserSharedSettingSpecifics& 245 managed_user_shared_setting_specifics); 246 247SYNC_EXPORT_PRIVATE base::DictionaryValue* MediaToValue( 248 const sync_pb::Media& media); 249 250SYNC_EXPORT_PRIVATE base::DictionaryValue* NigoriSpecificsToValue( 251 const sync_pb::NigoriSpecifics& nigori_specifics); 252 253SYNC_EXPORT_PRIVATE base::DictionaryValue* PasswordSpecificsToValue( 254 const sync_pb::PasswordSpecifics& password_specifics); 255 256SYNC_EXPORT_PRIVATE base::DictionaryValue* PreferenceSpecificsToValue( 257 const sync_pb::PreferenceSpecifics& password_specifics); 258 259SYNC_EXPORT_PRIVATE base::DictionaryValue* 260 SyncedNotificationAppInfoSpecificsToValue( 261 const sync_pb::SyncedNotificationAppInfoSpecifics& 262 synced_notification_specifics); 263 264SYNC_EXPORT_PRIVATE base::DictionaryValue* SyncedNotificationSpecificsToValue( 265 const sync_pb::SyncedNotificationSpecifics& 266 synced_notification_specifics); 267 268SYNC_EXPORT_PRIVATE base::DictionaryValue* SearchEngineSpecificsToValue( 269 const sync_pb::SearchEngineSpecifics& search_engine_specifics); 270 271SYNC_EXPORT_PRIVATE base::DictionaryValue* ThemeSpecificsToValue( 272 const sync_pb::ThemeSpecifics& theme_specifics); 273 274SYNC_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. 279SYNC_EXPORT_PRIVATE base::DictionaryValue* EntitySpecificsToValue( 280 const sync_pb::EntitySpecifics& specifics); 281 282SYNC_EXPORT_PRIVATE base::DictionaryValue* SyncEntityToValue( 283 const sync_pb::SyncEntity& entity, 284 bool include_specifics); 285 286SYNC_EXPORT_PRIVATE base::DictionaryValue* ClientToServerMessageToValue( 287 const sync_pb::ClientToServerMessage& proto, 288 bool include_specifics); 289 290SYNC_EXPORT_PRIVATE base::DictionaryValue* ClientToServerResponseToValue( 291 const sync_pb::ClientToServerResponse& proto, 292 bool include_specifics); 293 294base::DictionaryValue* DatatypeAssociationStatsToValue( 295 const sync_pb::DatatypeAssociationStats& proto); 296 297base::DictionaryValue* DebugEventInfoToValue( 298 const sync_pb::DebugEventInfo& proto); 299 300base::DictionaryValue* DebugInfoToValue( 301 const sync_pb::DebugInfo& proto); 302 303base::DictionaryValue* SyncCycleCompletedEventInfoToValue( 304 const sync_pb::SyncCycleCompletedEventInfo& proto); 305 306base::DictionaryValue* ClientConfigParamsToValue( 307 const sync_pb::ClientConfigParams& proto); 308 309SYNC_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