• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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 CHROME_BROWSER_SYNC_PROTOCOL_PROTO_VALUE_CONVERSIONS_H_
8 #define CHROME_BROWSER_SYNC_PROTOCOL_PROTO_VALUE_CONVERSIONS_H_
9 #pragma once
10 
11 class DictionaryValue;
12 
13 namespace sync_pb {
14 class AppSpecifics;
15 class AutofillCreditCardSpecifics;
16 class AutofillProfileSpecifics;
17 class AutofillSpecifics;
18 class BookmarkSpecifics;
19 class EncryptedData;
20 class EntitySpecifics;
21 class ExtensionSpecifics;
22 class NigoriSpecifics;
23 class PasswordSpecifics;
24 class PasswordSpecificsData;
25 class PreferenceSpecifics;
26 class SessionHeader;
27 class SessionSpecifics;
28 class SessionTab;
29 class SessionWindow;
30 class TabNavigation;
31 class ThemeSpecifics;
32 class TypedUrlSpecifics;
33 }  // namespace sync_pb
34 
35 // Utility functions to convert sync protocol buffers to dictionaries.
36 // Each protocol field is mapped to a key of the same name.  Repeated
37 // fields are mapped to array values and sub-messages are mapped to
38 // sub-dictionary values.
39 //
40 // TODO(akalin): Add has_* information.
41 //
42 // TODO(akalin): Improve enum support.
43 
44 namespace browser_sync {
45 
46 // Ownership of all returned DictionaryValues are transferred to the
47 // caller.
48 
49 // TODO(akalin): Perhaps extend this to decrypt?
50 DictionaryValue* EncryptedDataToValue(
51     const sync_pb::EncryptedData& encrypted_data);
52 
53 // Sub-protocols of SessionSpecifics.
54 
55 DictionaryValue* SessionHeaderToValue(
56     const sync_pb::SessionHeader& session_header);
57 
58 DictionaryValue* SessionTabToValue(
59     const sync_pb::SessionTab& session_tab);
60 
61 DictionaryValue* SessionWindowToValue(
62     const sync_pb::SessionWindow& session_window);
63 
64 DictionaryValue* TabNavigationToValue(
65     const sync_pb::TabNavigation& tab_navigation);
66 
67 // Sub-protocol of PasswordSpecifics.
68 
69 DictionaryValue* PasswordSpecificsDataToValue(
70     const sync_pb::PasswordSpecificsData& password_specifics_data);
71 
72 // Main *SpecificsToValue functions.
73 
74 DictionaryValue* AppSpecificsToValue(
75     const sync_pb::AppSpecifics& app_specifics);
76 
77 DictionaryValue* AutofillSpecificsToValue(
78     const sync_pb::AutofillSpecifics& autofill_specifics);
79 
80 DictionaryValue* AutofillCreditCardSpecificsToValue(
81     const sync_pb::AutofillCreditCardSpecifics&
82         autofill_credit_card_specifics);
83 
84 DictionaryValue* AutofillProfileSpecificsToValue(
85     const sync_pb::AutofillProfileSpecifics& autofill_profile_specifics);
86 
87 DictionaryValue* BookmarkSpecificsToValue(
88     const sync_pb::BookmarkSpecifics& bookmark_specifics);
89 
90 DictionaryValue* ExtensionSpecificsToValue(
91     const sync_pb::ExtensionSpecifics& extension_specifics);
92 
93 DictionaryValue* NigoriSpecificsToValue(
94     const sync_pb::NigoriSpecifics& nigori_specifics);
95 
96 DictionaryValue* PasswordSpecificsToValue(
97     const sync_pb::PasswordSpecifics& password_specifics);
98 
99 DictionaryValue* PreferenceSpecificsToValue(
100     const sync_pb::PreferenceSpecifics& password_specifics);
101 
102 DictionaryValue* SessionSpecificsToValue(
103     const sync_pb::SessionSpecifics& session_specifics);
104 
105 DictionaryValue* ThemeSpecificsToValue(
106     const sync_pb::ThemeSpecifics& theme_specifics);
107 
108 DictionaryValue* TypedUrlSpecificsToValue(
109     const sync_pb::TypedUrlSpecifics& typed_url_specifics);
110 
111 // Any present extensions are mapped to sub-dictionary values with the
112 // key equal to the extension name.
113 DictionaryValue* EntitySpecificsToValue(
114     const sync_pb::EntitySpecifics& entity_specifics);
115 
116 }  // namespace browser_sync
117 
118 #endif  // CHROME_BROWSER_SYNC_PROTOCOL_PROTO_VALUE_CONVERSIONS_H_
119