Home | History | Annotate | Download | only in protocol
      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