OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef SYNC_INTERNAL_API_PUBLIC_BASE_NODE_H_ | 5 #ifndef SYNC_INTERNAL_API_PUBLIC_BASE_NODE_H_ |
6 #define SYNC_INTERNAL_API_PUBLIC_BASE_NODE_H_ | 6 #define SYNC_INTERNAL_API_PUBLIC_BASE_NODE_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/basictypes.h" | 11 #include "base/basictypes.h" |
12 #include "base/gtest_prod_util.h" | 12 #include "base/gtest_prod_util.h" |
13 #include "base/memory/scoped_ptr.h" | 13 #include "base/memory/scoped_ptr.h" |
14 #include "base/time.h" | 14 #include "base/time.h" |
15 #include "googleurl/src/gurl.h" | 15 #include "googleurl/src/gurl.h" |
| 16 #include "sync/base/sync_export.h" |
16 #include "sync/internal_api/public/base/model_type.h" | 17 #include "sync/internal_api/public/base/model_type.h" |
17 #include "sync/protocol/sync.pb.h" | 18 #include "sync/protocol/sync.pb.h" |
18 | 19 |
19 // Forward declarations of internal class types so that sync API objects | 20 // Forward declarations of internal class types so that sync API objects |
20 // may have opaque pointers to these types. | 21 // may have opaque pointers to these types. |
21 namespace base { | 22 namespace base { |
22 class DictionaryValue; | 23 class DictionaryValue; |
23 } | 24 } |
24 | 25 |
25 namespace sync_pb { | 26 namespace sync_pb { |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 // by doing a client tag lookup. Returns false on failure. A deleted node | 80 // by doing a client tag lookup. Returns false on failure. A deleted node |
80 // will return FALSE. | 81 // will return FALSE. |
81 virtual InitByLookupResult InitByClientTagLookup( | 82 virtual InitByLookupResult InitByClientTagLookup( |
82 ModelType model_type, | 83 ModelType model_type, |
83 const std::string& tag) = 0; | 84 const std::string& tag) = 0; |
84 | 85 |
85 // Each object is identified by a 64-bit id (internally, the syncable | 86 // Each object is identified by a 64-bit id (internally, the syncable |
86 // metahandle). These ids are strictly local handles. They will persist | 87 // metahandle). These ids are strictly local handles. They will persist |
87 // on this client, but the same object on a different client may have a | 88 // on this client, but the same object on a different client may have a |
88 // different ID value. | 89 // different ID value. |
89 virtual int64 GetId() const; | 90 SYNC_EXPORT virtual int64 GetId() const; |
90 | 91 |
91 // Returns the modification time of the object. | 92 // Returns the modification time of the object. |
92 base::Time GetModificationTime() const; | 93 SYNC_EXPORT base::Time GetModificationTime() const; |
93 | 94 |
94 // Nodes are hierarchically arranged into a single-rooted tree. | 95 // Nodes are hierarchically arranged into a single-rooted tree. |
95 // InitByRootLookup on ReadNode allows access to the root. GetParentId is | 96 // InitByRootLookup on ReadNode allows access to the root. GetParentId is |
96 // how you find a node's parent. | 97 // how you find a node's parent. |
97 int64 GetParentId() const; | 98 SYNC_EXPORT int64 GetParentId() const; |
98 | 99 |
99 // Nodes are either folders or not. This corresponds to the IS_DIR property | 100 // Nodes are either folders or not. This corresponds to the IS_DIR property |
100 // of syncable::Entry. | 101 // of syncable::Entry. |
101 bool GetIsFolder() const; | 102 SYNC_EXPORT bool GetIsFolder() const; |
102 | 103 |
103 // Returns the title of the object. | 104 // Returns the title of the object. |
104 // Uniqueness of the title is not enforced on siblings -- it is not an error | 105 // Uniqueness of the title is not enforced on siblings -- it is not an error |
105 // for two children to share a title. | 106 // for two children to share a title. |
106 std::string GetTitle() const; | 107 SYNC_EXPORT std::string GetTitle() const; |
107 | 108 |
108 // Returns the model type of this object. The model type is set at node | 109 // Returns the model type of this object. The model type is set at node |
109 // creation time and is expected never to change. | 110 // creation time and is expected never to change. |
110 ModelType GetModelType() const; | 111 SYNC_EXPORT ModelType GetModelType() const; |
111 | 112 |
112 // Getter specific to the BOOKMARK datatype. Returns protobuf | 113 // Getter specific to the BOOKMARK datatype. Returns protobuf |
113 // data. Can only be called if GetModelType() == BOOKMARK. | 114 // data. Can only be called if GetModelType() == BOOKMARK. |
114 const sync_pb::BookmarkSpecifics& GetBookmarkSpecifics() const; | 115 SYNC_EXPORT const sync_pb::BookmarkSpecifics& GetBookmarkSpecifics() const; |
115 | 116 |
116 // Getter specific to the APPS datatype. Returns protobuf | 117 // Getter specific to the APPS datatype. Returns protobuf |
117 // data. Can only be called if GetModelType() == APPS. | 118 // data. Can only be called if GetModelType() == APPS. |
118 const sync_pb::AppSpecifics& GetAppSpecifics() const; | 119 const sync_pb::AppSpecifics& GetAppSpecifics() const; |
119 | 120 |
120 // Getter specific to the AUTOFILL datatype. Returns protobuf | 121 // Getter specific to the AUTOFILL datatype. Returns protobuf |
121 // data. Can only be called if GetModelType() == AUTOFILL. | 122 // data. Can only be called if GetModelType() == AUTOFILL. |
122 const sync_pb::AutofillSpecifics& GetAutofillSpecifics() const; | 123 const sync_pb::AutofillSpecifics& GetAutofillSpecifics() const; |
123 | 124 |
124 virtual const sync_pb::AutofillProfileSpecifics& | 125 virtual const sync_pb::AutofillProfileSpecifics& |
125 GetAutofillProfileSpecifics() const; | 126 GetAutofillProfileSpecifics() const; |
126 | 127 |
127 // Getter specific to the NIGORI datatype. Returns protobuf | 128 // Getter specific to the NIGORI datatype. Returns protobuf |
128 // data. Can only be called if GetModelType() == NIGORI. | 129 // data. Can only be called if GetModelType() == NIGORI. |
129 const sync_pb::NigoriSpecifics& GetNigoriSpecifics() const; | 130 const sync_pb::NigoriSpecifics& GetNigoriSpecifics() const; |
130 | 131 |
131 // Getter specific to the PASSWORD datatype. Returns protobuf | 132 // Getter specific to the PASSWORD datatype. Returns protobuf |
132 // data. Can only be called if GetModelType() == PASSWORD. | 133 // data. Can only be called if GetModelType() == PASSWORD. |
133 const sync_pb::PasswordSpecificsData& GetPasswordSpecifics() const; | 134 SYNC_EXPORT const sync_pb::PasswordSpecificsData& |
| 135 GetPasswordSpecifics() const; |
134 | 136 |
135 // Getter specific to the PREFERENCE datatype. Returns protobuf | 137 // Getter specific to the PREFERENCE datatype. Returns protobuf |
136 // data. Can only be called if GetModelType() == PREFERENCE. | 138 // data. Can only be called if GetModelType() == PREFERENCE. |
137 const sync_pb::PreferenceSpecifics& GetPreferenceSpecifics() const; | 139 const sync_pb::PreferenceSpecifics& GetPreferenceSpecifics() const; |
138 | 140 |
139 // Getter specific to the THEME datatype. Returns protobuf | 141 // Getter specific to the THEME datatype. Returns protobuf |
140 // data. Can only be called if GetModelType() == THEME. | 142 // data. Can only be called if GetModelType() == THEME. |
141 const sync_pb::ThemeSpecifics& GetThemeSpecifics() const; | 143 const sync_pb::ThemeSpecifics& GetThemeSpecifics() const; |
142 | 144 |
143 // Getter specific to the TYPED_URLS datatype. Returns protobuf | 145 // Getter specific to the TYPED_URLS datatype. Returns protobuf |
144 // data. Can only be called if GetModelType() == TYPED_URLS. | 146 // data. Can only be called if GetModelType() == TYPED_URLS. |
145 const sync_pb::TypedUrlSpecifics& GetTypedUrlSpecifics() const; | 147 SYNC_EXPORT const sync_pb::TypedUrlSpecifics& GetTypedUrlSpecifics() const; |
146 | 148 |
147 // Getter specific to the EXTENSIONS datatype. Returns protobuf | 149 // Getter specific to the EXTENSIONS datatype. Returns protobuf |
148 // data. Can only be called if GetModelType() == EXTENSIONS. | 150 // data. Can only be called if GetModelType() == EXTENSIONS. |
149 const sync_pb::ExtensionSpecifics& GetExtensionSpecifics() const; | 151 const sync_pb::ExtensionSpecifics& GetExtensionSpecifics() const; |
150 | 152 |
151 // Getter specific to the SESSIONS datatype. Returns protobuf | 153 // Getter specific to the SESSIONS datatype. Returns protobuf |
152 // data. Can only be called if GetModelType() == SESSIONS. | 154 // data. Can only be called if GetModelType() == SESSIONS. |
153 const sync_pb::SessionSpecifics& GetSessionSpecifics() const; | 155 SYNC_EXPORT const sync_pb::SessionSpecifics& GetSessionSpecifics() const; |
154 | 156 |
155 // Getter specific to the DEVICE_INFO datatype. Returns protobuf | 157 // Getter specific to the DEVICE_INFO datatype. Returns protobuf |
156 // data. Can only be called if GetModelType() == DEVICE_INFO. | 158 // data. Can only be called if GetModelType() == DEVICE_INFO. |
157 const sync_pb::DeviceInfoSpecifics& GetDeviceInfoSpecifics() const; | 159 SYNC_EXPORT const sync_pb::DeviceInfoSpecifics& |
| 160 GetDeviceInfoSpecifics() const; |
158 | 161 |
159 // Getter specific to the EXPERIMENTS datatype. Returns protobuf | 162 // Getter specific to the EXPERIMENTS datatype. Returns protobuf |
160 // data. Can only be called if GetModelType() == EXPERIMENTS. | 163 // data. Can only be called if GetModelType() == EXPERIMENTS. |
161 const sync_pb::ExperimentsSpecifics& GetExperimentsSpecifics() const; | 164 const sync_pb::ExperimentsSpecifics& GetExperimentsSpecifics() const; |
162 | 165 |
163 const sync_pb::EntitySpecifics& GetEntitySpecifics() const; | 166 SYNC_EXPORT const sync_pb::EntitySpecifics& GetEntitySpecifics() const; |
164 | 167 |
165 // Returns the local external ID associated with the node. | 168 // Returns the local external ID associated with the node. |
166 int64 GetExternalId() const; | 169 SYNC_EXPORT int64 GetExternalId() const; |
167 | 170 |
168 // Returns true iff this node has children. | 171 // Returns true iff this node has children. |
169 bool HasChildren() const; | 172 SYNC_EXPORT bool HasChildren() const; |
170 | 173 |
171 // Return the ID of the node immediately before this in the sibling order. | 174 // Return the ID of the node immediately before this in the sibling order. |
172 // For the first node in the ordering, return 0. | 175 // For the first node in the ordering, return 0. |
173 int64 GetPredecessorId() const; | 176 SYNC_EXPORT int64 GetPredecessorId() const; |
174 | 177 |
175 // Return the ID of the node immediately after this in the sibling order. | 178 // Return the ID of the node immediately after this in the sibling order. |
176 // For the last node in the ordering, return 0. | 179 // For the last node in the ordering, return 0. |
177 int64 GetSuccessorId() const; | 180 SYNC_EXPORT int64 GetSuccessorId() const; |
178 | 181 |
179 // Return the ID of the first child of this node. If this node has no | 182 // Return the ID of the first child of this node. If this node has no |
180 // children, return 0. | 183 // children, return 0. |
181 int64 GetFirstChildId() const; | 184 SYNC_EXPORT int64 GetFirstChildId() const; |
182 | 185 |
183 // Returns the total number of nodes including and beneath this node. | 186 // Returns the total number of nodes including and beneath this node. |
184 // Recursively iterates through all children. | 187 // Recursively iterates through all children. |
185 int GetTotalNodeCount() const; | 188 SYNC_EXPORT int GetTotalNodeCount() const; |
186 | 189 |
187 // These virtual accessors provide access to data members of derived classes. | 190 // These virtual accessors provide access to data members of derived classes. |
188 virtual const syncable::Entry* GetEntry() const = 0; | 191 virtual const syncable::Entry* GetEntry() const = 0; |
189 virtual const BaseTransaction* GetTransaction() const = 0; | 192 virtual const BaseTransaction* GetTransaction() const = 0; |
190 | 193 |
191 // Dumps a summary of node info into a DictionaryValue and returns it. | 194 // Dumps a summary of node info into a DictionaryValue and returns it. |
192 // Transfers ownership of the DictionaryValue to the caller. | 195 // Transfers ownership of the DictionaryValue to the caller. |
193 base::DictionaryValue* GetSummaryAsValue() const; | 196 base::DictionaryValue* GetSummaryAsValue() const; |
194 | 197 |
195 // Dumps all node details into a DictionaryValue and returns it. | 198 // Dumps all node details into a DictionaryValue and returns it. |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 | 249 |
247 // Same as |unencrypted_data_|, but for legacy password encryption. | 250 // Same as |unencrypted_data_|, but for legacy password encryption. |
248 scoped_ptr<sync_pb::PasswordSpecificsData> password_data_; | 251 scoped_ptr<sync_pb::PasswordSpecificsData> password_data_; |
249 | 252 |
250 DISALLOW_COPY_AND_ASSIGN(BaseNode); | 253 DISALLOW_COPY_AND_ASSIGN(BaseNode); |
251 }; | 254 }; |
252 | 255 |
253 } // namespace syncer | 256 } // namespace syncer |
254 | 257 |
255 #endif // SYNC_INTERNAL_API_PUBLIC_BASE_NODE_H_ | 258 #endif // SYNC_INTERNAL_API_PUBLIC_BASE_NODE_H_ |
OLD | NEW |