OLD | NEW |
1 // Copyright 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 <stddef.h> |
| 9 #include <stdint.h> |
| 10 |
8 #include <string> | 11 #include <string> |
9 #include <vector> | 12 #include <vector> |
10 | 13 |
11 #include "base/basictypes.h" | |
12 #include "base/gtest_prod_util.h" | 14 #include "base/gtest_prod_util.h" |
| 15 #include "base/macros.h" |
13 #include "base/memory/scoped_ptr.h" | 16 #include "base/memory/scoped_ptr.h" |
14 #include "base/time/time.h" | 17 #include "base/time/time.h" |
15 #include "sync/api/attachments/attachment.h" | 18 #include "sync/api/attachments/attachment.h" |
16 #include "sync/base/sync_export.h" | 19 #include "sync/base/sync_export.h" |
17 #include "sync/internal_api/public/base/model_type.h" | 20 #include "sync/internal_api/public/base/model_type.h" |
18 #include "sync/protocol/sync.pb.h" | 21 #include "sync/protocol/sync.pb.h" |
19 #include "url/gurl.h" | 22 #include "url/gurl.h" |
20 | 23 |
21 // Forward declarations of internal class types so that sync API objects | 24 // Forward declarations of internal class types so that sync API objects |
22 // may have opaque pointers to these types. | 25 // may have opaque pointers to these types. |
(...skipping 20 matching lines...) Expand all Loading... |
43 | 46 |
44 class BaseTransaction; | 47 class BaseTransaction; |
45 | 48 |
46 namespace syncable { | 49 namespace syncable { |
47 class BaseTransaction; | 50 class BaseTransaction; |
48 class Entry; | 51 class Entry; |
49 class Id; | 52 class Id; |
50 } | 53 } |
51 | 54 |
52 // A valid BaseNode will never have an ID of zero. | 55 // A valid BaseNode will never have an ID of zero. |
53 static const int64 kInvalidId = 0; | 56 static const int64_t kInvalidId = 0; |
54 | 57 |
55 // BaseNode wraps syncable::Entry, and corresponds to a single object's state. | 58 // BaseNode wraps syncable::Entry, and corresponds to a single object's state. |
56 // This, like syncable::Entry, is intended for use on the stack. A valid | 59 // This, like syncable::Entry, is intended for use on the stack. A valid |
57 // transaction is necessary to create a BaseNode or any of its children. | 60 // transaction is necessary to create a BaseNode or any of its children. |
58 // Unlike syncable::Entry, a sync API BaseNode is identified primarily by its | 61 // Unlike syncable::Entry, a sync API BaseNode is identified primarily by its |
59 // int64 metahandle, which we call an ID here. | 62 // int64_t metahandle, which we call an ID here. |
60 class SYNC_EXPORT BaseNode { | 63 class SYNC_EXPORT BaseNode { |
61 public: | 64 public: |
62 // Enumerates the possible outcomes of trying to initialize a sync node. | 65 // Enumerates the possible outcomes of trying to initialize a sync node. |
63 enum InitByLookupResult { | 66 enum InitByLookupResult { |
64 INIT_OK, | 67 INIT_OK, |
65 // Could not find an entry matching the lookup criteria. | 68 // Could not find an entry matching the lookup criteria. |
66 INIT_FAILED_ENTRY_NOT_GOOD, | 69 INIT_FAILED_ENTRY_NOT_GOOD, |
67 // Found an entry, but it is already deleted. | 70 // Found an entry, but it is already deleted. |
68 INIT_FAILED_ENTRY_IS_DEL, | 71 INIT_FAILED_ENTRY_IS_DEL, |
69 // Found an entry, but was unable to decrypt. | 72 // Found an entry, but was unable to decrypt. |
70 INIT_FAILED_DECRYPT_IF_NECESSARY, | 73 INIT_FAILED_DECRYPT_IF_NECESSARY, |
71 // A precondition was not met for calling init, such as legal input | 74 // A precondition was not met for calling init, such as legal input |
72 // arguments. | 75 // arguments. |
73 INIT_FAILED_PRECONDITION, | 76 INIT_FAILED_PRECONDITION, |
74 }; | 77 }; |
75 | 78 |
76 // All subclasses of BaseNode must provide a way to initialize themselves by | 79 // All subclasses of BaseNode must provide a way to initialize themselves by |
77 // doing an ID lookup. Returns false on failure. An invalid or deleted | 80 // doing an ID lookup. Returns false on failure. An invalid or deleted |
78 // ID will result in failure. | 81 // ID will result in failure. |
79 virtual InitByLookupResult InitByIdLookup(int64 id) = 0; | 82 virtual InitByLookupResult InitByIdLookup(int64_t id) = 0; |
80 | 83 |
81 // All subclasses of BaseNode must also provide a way to initialize themselves | 84 // All subclasses of BaseNode must also provide a way to initialize themselves |
82 // by doing a client tag lookup. Returns false on failure. A deleted node | 85 // by doing a client tag lookup. Returns false on failure. A deleted node |
83 // will return FALSE. | 86 // will return FALSE. |
84 virtual InitByLookupResult InitByClientTagLookup( | 87 virtual InitByLookupResult InitByClientTagLookup( |
85 ModelType model_type, | 88 ModelType model_type, |
86 const std::string& tag) = 0; | 89 const std::string& tag) = 0; |
87 | 90 |
88 // Each object is identified by a 64-bit id (internally, the syncable | 91 // Each object is identified by a 64-bit id (internally, the syncable |
89 // metahandle). These ids are strictly local handles. They will persist | 92 // metahandle). These ids are strictly local handles. They will persist |
90 // on this client, but the same object on a different client may have a | 93 // on this client, but the same object on a different client may have a |
91 // different ID value. | 94 // different ID value. |
92 virtual int64 GetId() const; | 95 virtual int64_t GetId() const; |
93 | 96 |
94 // Returns the modification time of the object. | 97 // Returns the modification time of the object. |
95 base::Time GetModificationTime() const; | 98 base::Time GetModificationTime() const; |
96 | 99 |
97 // Nodes are hierarchically arranged into a single-rooted tree. | 100 // Nodes are hierarchically arranged into a single-rooted tree. |
98 // InitByRootLookup on ReadNode allows access to the root. GetParentId is | 101 // InitByRootLookup on ReadNode allows access to the root. GetParentId is |
99 // how you find a node's parent. | 102 // how you find a node's parent. |
100 int64 GetParentId() const; | 103 int64_t GetParentId() const; |
101 | 104 |
102 // Nodes are either folders or not. This corresponds to the IS_DIR property | 105 // Nodes are either folders or not. This corresponds to the IS_DIR property |
103 // of syncable::Entry. | 106 // of syncable::Entry. |
104 bool GetIsFolder() const; | 107 bool GetIsFolder() const; |
105 | 108 |
106 // Specifies whether node is a permanent folder. This is true when | 109 // Specifies whether node is a permanent folder. This is true when |
107 // UNIQUE_SERVER_TAG property of syncable::Entry is non-empty. | 110 // UNIQUE_SERVER_TAG property of syncable::Entry is non-empty. |
108 bool GetIsPermanentFolder() const; | 111 bool GetIsPermanentFolder() const; |
109 | 112 |
110 // Returns the title of the object. | 113 // Returns the title of the object. |
(...skipping 21 matching lines...) Expand all Loading... |
132 // data. Can only be called if GetModelType() == TYPED_URLS. | 135 // data. Can only be called if GetModelType() == TYPED_URLS. |
133 const sync_pb::TypedUrlSpecifics& GetTypedUrlSpecifics() const; | 136 const sync_pb::TypedUrlSpecifics& GetTypedUrlSpecifics() const; |
134 | 137 |
135 // Getter specific to the EXPERIMENTS datatype. Returns protobuf | 138 // Getter specific to the EXPERIMENTS datatype. Returns protobuf |
136 // data. Can only be called if GetModelType() == EXPERIMENTS. | 139 // data. Can only be called if GetModelType() == EXPERIMENTS. |
137 const sync_pb::ExperimentsSpecifics& GetExperimentsSpecifics() const; | 140 const sync_pb::ExperimentsSpecifics& GetExperimentsSpecifics() const; |
138 | 141 |
139 const sync_pb::EntitySpecifics& GetEntitySpecifics() const; | 142 const sync_pb::EntitySpecifics& GetEntitySpecifics() const; |
140 | 143 |
141 // Returns the local external ID associated with the node. | 144 // Returns the local external ID associated with the node. |
142 int64 GetExternalId() const; | 145 int64_t GetExternalId() const; |
143 | 146 |
144 // Returns the internal syncable ID associated with the node. | 147 // Returns the internal syncable ID associated with the node. |
145 const syncable::Id& GetSyncId() const; | 148 const syncable::Id& GetSyncId() const; |
146 | 149 |
147 // Returns true iff this node has children. | 150 // Returns true iff this node has children. |
148 bool HasChildren() const; | 151 bool HasChildren() const; |
149 | 152 |
150 // Return the ID of the node immediately before this in the sibling order. | 153 // Return the ID of the node immediately before this in the sibling order. |
151 // For the first node in the ordering, return 0. | 154 // For the first node in the ordering, return 0. |
152 int64 GetPredecessorId() const; | 155 int64_t GetPredecessorId() const; |
153 | 156 |
154 // Return the ID of the node immediately after this in the sibling order. | 157 // Return the ID of the node immediately after this in the sibling order. |
155 // For the last node in the ordering, return 0. | 158 // For the last node in the ordering, return 0. |
156 int64 GetSuccessorId() const; | 159 int64_t GetSuccessorId() const; |
157 | 160 |
158 // Return the ID of the first child of this node. If this node has no | 161 // Return the ID of the first child of this node. If this node has no |
159 // children, return 0. | 162 // children, return 0. |
160 int64 GetFirstChildId() const; | 163 int64_t GetFirstChildId() const; |
161 | 164 |
162 // Returns the IDs of the children of this node. | 165 // Returns the IDs of the children of this node. |
163 // If this type supports user-defined positions the returned IDs will be in | 166 // If this type supports user-defined positions the returned IDs will be in |
164 // the correct order. | 167 // the correct order. |
165 void GetChildIds(std::vector<int64>* result) const; | 168 void GetChildIds(std::vector<int64_t>* result) const; |
166 | 169 |
167 // Returns the total number of nodes including and beneath this node. | 170 // Returns the total number of nodes including and beneath this node. |
168 // Recursively iterates through all children. | 171 // Recursively iterates through all children. |
169 int GetTotalNodeCount() const; | 172 int GetTotalNodeCount() const; |
170 | 173 |
171 // Returns this item's position within its parent. | 174 // Returns this item's position within its parent. |
172 // Do not call this function on items that do not support positioning | 175 // Do not call this function on items that do not support positioning |
173 // (ie. non-bookmarks). | 176 // (ie. non-bookmarks). |
174 int GetPositionIndex() const; | 177 int GetPositionIndex() const; |
175 | 178 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 | 236 |
234 // Same as |unencrypted_data_|, but for legacy password encryption. | 237 // Same as |unencrypted_data_|, but for legacy password encryption. |
235 scoped_ptr<sync_pb::PasswordSpecificsData> password_data_; | 238 scoped_ptr<sync_pb::PasswordSpecificsData> password_data_; |
236 | 239 |
237 DISALLOW_COPY_AND_ASSIGN(BaseNode); | 240 DISALLOW_COPY_AND_ASSIGN(BaseNode); |
238 }; | 241 }; |
239 | 242 |
240 } // namespace syncer | 243 } // namespace syncer |
241 | 244 |
242 #endif // SYNC_INTERNAL_API_PUBLIC_BASE_NODE_H_ | 245 #endif // SYNC_INTERNAL_API_PUBLIC_BASE_NODE_H_ |
OLD | NEW |