proto_value_conversions.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  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. #ifndef COMPONENTS_SYNC_PROTOCOL_PROTO_VALUE_CONVERSIONS_H_
  5. #define COMPONENTS_SYNC_PROTOCOL_PROTO_VALUE_CONVERSIONS_H_
  6. #include <memory>
  7. namespace base {
  8. class DictionaryValue;
  9. }
  10. namespace sync_pb {
  11. class AppListSpecifics;
  12. class AppSettingSpecifics;
  13. class AppSpecifics;
  14. class ArcPackageSpecifics;
  15. class AutofillProfileSpecifics;
  16. class AutofillSpecifics;
  17. class AutofillOfferSpecifics;
  18. class AutofillWalletSpecifics;
  19. class BookmarkSpecifics;
  20. class ClientConfigParams;
  21. class ClientToServerMessage;
  22. class ClientToServerResponse;
  23. class ContactInfoSpecifics;
  24. class DebugEventInfo;
  25. class DebugInfo;
  26. class DeviceInfoSpecifics;
  27. class DictionarySpecifics;
  28. class EncryptedData;
  29. class EntityMetadata;
  30. class EntitySpecifics;
  31. class ExtensionSettingSpecifics;
  32. class ExtensionSpecifics;
  33. class HistoryDeleteDirectiveSpecifics;
  34. class HistorySpecifics;
  35. class LinkedAppIconInfo;
  36. class ManagedUserSettingSpecifics;
  37. class NavigationRedirect;
  38. class NigoriSpecifics;
  39. class OsPreferenceSpecifics;
  40. class OsPriorityPreferenceSpecifics;
  41. class PasswordSpecifics;
  42. class PasswordSpecificsData;
  43. class PaymentsCustomerData;
  44. class PreferenceSpecifics;
  45. class PrinterPPDReference;
  46. class PrinterSpecifics;
  47. class PrintersAuthorizationServerSpecifics;
  48. class PriorityPreferenceSpecifics;
  49. class ReadingListSpecifics;
  50. class SearchEngineSpecifics;
  51. class SecurityEventSpecifics;
  52. class SendTabToSelfSpecifics;
  53. class SessionHeader;
  54. class SessionSpecifics;
  55. class SessionTab;
  56. class SessionWindow;
  57. class SharingMessageSpecifics;
  58. class SyncCycleCompletedEventInfo;
  59. class SyncEntity;
  60. class TabNavigation;
  61. class ThemeSpecifics;
  62. class TimeRangeDirective;
  63. class TypedUrlSpecifics;
  64. class UrlDirective;
  65. class UserConsentSpecifics;
  66. class UserEventSpecifics;
  67. class WalletCreditCardCloudTokenData;
  68. class WalletMaskedCreditCard;
  69. class WalletMetadataSpecifics;
  70. class WalletPostalAddress;
  71. class WebAppSpecifics;
  72. class WifiConfigurationSpecifics;
  73. class WorkspaceDeskSpecifics;
  74. } // namespace sync_pb
  75. // Keep this file in sync with the .proto files in this directory.
  76. //
  77. // Utility functions to convert sync protocol buffers to dictionaries.
  78. // Each protocol field is mapped to a key of the same name. Repeated
  79. // fields are mapped to array values and sub-messages are mapped to
  80. // sub-dictionary values.
  81. namespace syncer {
  82. std::unique_ptr<base::DictionaryValue> AppListSpecificsToValue(
  83. const sync_pb::AppListSpecifics& proto);
  84. std::unique_ptr<base::DictionaryValue> AppSettingSpecificsToValue(
  85. const sync_pb::AppSettingSpecifics& app_setting_specifics);
  86. std::unique_ptr<base::DictionaryValue> AppSpecificsToValue(
  87. const sync_pb::AppSpecifics& app_specifics);
  88. std::unique_ptr<base::DictionaryValue> ArcPackageSpecificsToValue(
  89. const sync_pb::ArcPackageSpecifics& proto);
  90. std::unique_ptr<base::DictionaryValue> AutofillOfferSpecificsToValue(
  91. const sync_pb::AutofillOfferSpecifics& autofill_offer_specifics);
  92. std::unique_ptr<base::DictionaryValue> AutofillProfileSpecificsToValue(
  93. const sync_pb::AutofillProfileSpecifics& autofill_profile_specifics);
  94. std::unique_ptr<base::DictionaryValue> AutofillSpecificsToValue(
  95. const sync_pb::AutofillSpecifics& autofill_specifics);
  96. std::unique_ptr<base::DictionaryValue> AutofillWalletSpecificsToValue(
  97. const sync_pb::AutofillWalletSpecifics& autofill_wallet_specifics);
  98. std::unique_ptr<base::DictionaryValue> BookmarkSpecificsToValue(
  99. const sync_pb::BookmarkSpecifics& bookmark_specifics);
  100. std::unique_ptr<base::DictionaryValue> ClientConfigParamsToValue(
  101. const sync_pb::ClientConfigParams& proto);
  102. std::unique_ptr<base::DictionaryValue> ContactInfoSpecificsToValue(
  103. const sync_pb::ContactInfoSpecifics& proto);
  104. std::unique_ptr<base::DictionaryValue> DebugEventInfoToValue(
  105. const sync_pb::DebugEventInfo& proto);
  106. std::unique_ptr<base::DictionaryValue> DebugInfoToValue(
  107. const sync_pb::DebugInfo& proto);
  108. std::unique_ptr<base::DictionaryValue> DeviceInfoSpecificsToValue(
  109. const sync_pb::DeviceInfoSpecifics& device_info_specifics);
  110. std::unique_ptr<base::DictionaryValue> DictionarySpecificsToValue(
  111. const sync_pb::DictionarySpecifics& dictionary_specifics);
  112. std::unique_ptr<base::DictionaryValue> EncryptedDataToValue(
  113. const sync_pb::EncryptedData& encrypted_data);
  114. std::unique_ptr<base::DictionaryValue> EntityMetadataToValue(
  115. const sync_pb::EntityMetadata& metadata);
  116. std::unique_ptr<base::DictionaryValue> EntitySpecificsToValue(
  117. const sync_pb::EntitySpecifics& specifics);
  118. std::unique_ptr<base::DictionaryValue> ExtensionSettingSpecificsToValue(
  119. const sync_pb::ExtensionSettingSpecifics& extension_setting_specifics);
  120. std::unique_ptr<base::DictionaryValue> ExtensionSpecificsToValue(
  121. const sync_pb::ExtensionSpecifics& extension_specifics);
  122. std::unique_ptr<base::DictionaryValue> HistoryDeleteDirectiveSpecificsToValue(
  123. const sync_pb::HistoryDeleteDirectiveSpecifics&
  124. history_delete_directive_specifics);
  125. std::unique_ptr<base::DictionaryValue> HistorySpecificsToValue(
  126. const sync_pb::HistorySpecifics& history_specifics);
  127. std::unique_ptr<base::DictionaryValue> LinkedAppIconInfoToValue(
  128. const sync_pb::LinkedAppIconInfo& linked_app_icon_info);
  129. std::unique_ptr<base::DictionaryValue> ManagedUserSettingSpecificsToValue(
  130. const sync_pb::ManagedUserSettingSpecifics& managed_user_setting_specifics);
  131. std::unique_ptr<base::DictionaryValue> NavigationRedirectToValue(
  132. const sync_pb::NavigationRedirect& navigation_redirect);
  133. std::unique_ptr<base::DictionaryValue> NigoriSpecificsToValue(
  134. const sync_pb::NigoriSpecifics& nigori_specifics);
  135. std::unique_ptr<base::DictionaryValue> OsPreferenceSpecificsToValue(
  136. const sync_pb::OsPreferenceSpecifics& specifics);
  137. std::unique_ptr<base::DictionaryValue> OsPriorityPreferenceSpecificsToValue(
  138. const sync_pb::OsPriorityPreferenceSpecifics& specifics);
  139. std::unique_ptr<base::DictionaryValue> PasswordSpecificsToValue(
  140. const sync_pb::PasswordSpecifics& password_specifics);
  141. std::unique_ptr<base::DictionaryValue> PasswordSpecificsDataToValue(
  142. const sync_pb::PasswordSpecificsData& password_specifics_data);
  143. std::unique_ptr<base::DictionaryValue> PaymentsCustomerDataToValue(
  144. const sync_pb::PaymentsCustomerData& payments_customer_data);
  145. std::unique_ptr<base::DictionaryValue> PreferenceSpecificsToValue(
  146. const sync_pb::PreferenceSpecifics& password_specifics);
  147. std::unique_ptr<base::DictionaryValue> PrinterPPDReferenceToValue(
  148. const sync_pb::PrinterPPDReference& proto);
  149. std::unique_ptr<base::DictionaryValue> PrinterSpecificsToValue(
  150. const sync_pb::PrinterSpecifics& printer_specifics);
  151. std::unique_ptr<base::DictionaryValue>
  152. PrintersAuthorizationServerSpecificsToValue(
  153. const sync_pb::PrintersAuthorizationServerSpecifics&
  154. printers_authorization_server_specifics);
  155. std::unique_ptr<base::DictionaryValue> PriorityPreferenceSpecificsToValue(
  156. const sync_pb::PriorityPreferenceSpecifics& proto);
  157. std::unique_ptr<base::DictionaryValue> ReadingListSpecificsToValue(
  158. const sync_pb::ReadingListSpecifics& proto);
  159. std::unique_ptr<base::DictionaryValue> SearchEngineSpecificsToValue(
  160. const sync_pb::SearchEngineSpecifics& search_engine_specifics);
  161. std::unique_ptr<base::DictionaryValue> SendTabToSelfSpecificsToValue(
  162. const sync_pb::SendTabToSelfSpecifics& send_tab_specifics);
  163. std::unique_ptr<base::DictionaryValue> SecurityEventSpecificsToValue(
  164. const sync_pb::SecurityEventSpecifics& security_event_specifics);
  165. std::unique_ptr<base::DictionaryValue> SessionHeaderToValue(
  166. const sync_pb::SessionHeader& session_header);
  167. std::unique_ptr<base::DictionaryValue> SessionSpecificsToValue(
  168. const sync_pb::SessionSpecifics& session_specifics);
  169. std::unique_ptr<base::DictionaryValue> SessionTabToValue(
  170. const sync_pb::SessionTab& session_tab);
  171. std::unique_ptr<base::DictionaryValue> SessionWindowToValue(
  172. const sync_pb::SessionWindow& session_window);
  173. std::unique_ptr<base::DictionaryValue> SharingMessageSpecificsToValue(
  174. const sync_pb::SharingMessageSpecifics& sharing_message_specifics);
  175. std::unique_ptr<base::DictionaryValue> SyncCycleCompletedEventInfoToValue(
  176. const sync_pb::SyncCycleCompletedEventInfo& proto);
  177. std::unique_ptr<base::DictionaryValue> TabNavigationToValue(
  178. const sync_pb::TabNavigation& tab_navigation);
  179. std::unique_ptr<base::DictionaryValue> ThemeSpecificsToValue(
  180. const sync_pb::ThemeSpecifics& theme_specifics);
  181. std::unique_ptr<base::DictionaryValue> TimeRangeDirectiveToValue(
  182. const sync_pb::TimeRangeDirective& time_range_directive);
  183. std::unique_ptr<base::DictionaryValue> TypedUrlSpecificsToValue(
  184. const sync_pb::TypedUrlSpecifics& typed_url_specifics);
  185. std::unique_ptr<base::DictionaryValue> UrlDirectiveToValue(
  186. const sync_pb::UrlDirective& time_range_directive);
  187. std::unique_ptr<base::DictionaryValue> UserConsentSpecificsToValue(
  188. const sync_pb::UserConsentSpecifics& user_consent_specifics);
  189. std::unique_ptr<base::DictionaryValue> UserEventSpecificsToValue(
  190. const sync_pb::UserEventSpecifics& user_event_specifics);
  191. std::unique_ptr<base::DictionaryValue> WalletCreditCardCloudTokenDataToValue(
  192. const sync_pb::WalletCreditCardCloudTokenData& cloud_token_data);
  193. std::unique_ptr<base::DictionaryValue> WalletMaskedCreditCardToValue(
  194. const sync_pb::WalletMaskedCreditCard& wallet_masked_card);
  195. std::unique_ptr<base::DictionaryValue> WalletMetadataSpecificsToValue(
  196. const sync_pb::WalletMetadataSpecifics& wallet_metadata_specifics);
  197. std::unique_ptr<base::DictionaryValue> WalletPostalAddressToValue(
  198. const sync_pb::WalletPostalAddress& wallet_postal_address);
  199. std::unique_ptr<base::DictionaryValue> WebAppSpecificsToValue(
  200. const sync_pb::WebAppSpecifics& web_app_specifics);
  201. std::unique_ptr<base::DictionaryValue> WifiConfigurationSpecificsToValue(
  202. const sync_pb::WifiConfigurationSpecifics& wifi_configuration_specifics);
  203. std::unique_ptr<base::DictionaryValue> WorkspaceDeskSpecificsToValue(
  204. const sync_pb::WorkspaceDeskSpecifics& workspace_desk_specifics);
  205. // ToValue functions that allow omitting specifics and other fields.
  206. struct ProtoValueConversionOptions {
  207. // Whether to include specifics.
  208. bool include_specifics = true;
  209. // Whether to include default values which are set in GetUpdateTriggers.
  210. bool include_full_get_update_triggers = true;
  211. };
  212. std::unique_ptr<base::DictionaryValue> ClientToServerMessageToValue(
  213. const sync_pb::ClientToServerMessage& proto,
  214. const ProtoValueConversionOptions& options);
  215. std::unique_ptr<base::DictionaryValue> ClientToServerResponseToValue(
  216. const sync_pb::ClientToServerResponse& proto,
  217. const ProtoValueConversionOptions& options);
  218. std::unique_ptr<base::DictionaryValue> SyncEntityToValue(
  219. const sync_pb::SyncEntity& entity,
  220. const ProtoValueConversionOptions& options);
  221. } // namespace syncer
  222. #endif // COMPONENTS_SYNC_PROTOCOL_PROTO_VALUE_CONVERSIONS_H_