Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(701)

Side by Side Diff: sync/protocol/sync.proto

Issue 11636006: WIP: The Bookmark Position Megapatch (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Various updates, including switch suffix to unique_client_tag style Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sync/protocol/bookmark_specifics.proto ('k') | sync/sync.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 // Sync protocol for communication between sync client and server. 5 // Sync protocol for communication between sync client and server.
6 6
7 // Update proto_value_conversions{.h,.cc,_unittest.cc} if you change 7 // Update proto_value_conversions{.h,.cc,_unittest.cc} if you change
8 // any fields in this file. 8 // any fields in this file.
9 9
10 syntax = "proto2"; 10 syntax = "proto2";
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 // the same parent. 216 // the same parent.
217 // 217 //
218 // Present in both GetUpdatesResponse and CommitMessage. 218 // Present in both GetUpdatesResponse and CommitMessage.
219 // 219 //
220 // In a CommitMessage context, server implementations may choose whether 220 // In a CommitMessage context, server implementations may choose whether
221 // to compute a position based on this field or based on 221 // to compute a position based on this field or based on
222 // |insert_after_item_id|. Clients should set both values so that they 222 // |insert_after_item_id|. Clients should set both values so that they
223 // result in a consistent ordering regardless of which choice the server 223 // result in a consistent ordering regardless of which choice the server
224 // makes. 224 // makes.
225 // 225 //
226 // This is deprecated: clients should set |ordinal_in_parent| 226 // This is deprecated: clients should set |unique_position|
227 // instead. But until the production servers fully support 227 // instead. But until the production servers fully support
228 // |ordinal_in_parent|, clients should set all three position fields 228 // |unique_position|, clients should set all three position fields
229 // (|position_in_parent|, |insert_after_item_id|, and 229 // (|position_in_parent|, |insert_after_item_id|, and
230 // |ordinal_in_parent| in commits) and continue to respect any 230 // |unique_position| in commits) and continue to respect any
231 // |position_in_parent| values returned by CommitResponses. 231 // |position_in_parent| values returned by CommitResponses.
232 // 232 //
233 // Similarly, when |ordinal_in_parent| is absent in a GetUpdates and 233 // Similarly, when |unique_position| is absent in a GetUpdates and
234 // |position_in_parent| is present, clients should continue to honor 234 // |position_in_parent| is present, clients should continue to honor
235 // the |position_in_parent| value (after transforming it as 235 // the |position_in_parent| value (after transforming it as
236 // described below). 236 // described below).
237 // 237 //
238 // When both |ordinal_in_parent| and |position_in_parent| are set, 238 // When both |unique_position| and |position_in_parent| are set, the first 8
239 // the first 8 bytes of |ordinal_in_parent| must be equal to the 239 // bytes of |unique_position| must be equal to the bytes of
240 // bytes of flip-sign-bit(|position_in_parent|) in big-endian order 240 // flip-sign-bit(|position_in_parent|) in big-endian order (MSB first). The
241 // (MSB first), and if those bytes are all zero, a 9th byte equal to 241 // |unique_position| verstion will also include trailing bytes that may
242 // 128 must be added. 242 // provide more precise position information, a suffix, and a "terminator"
243 // byte (0xFF).
243 optional int64 position_in_parent = 15; 244 optional int64 position_in_parent = 15;
244 245
245 // Contains the ID of the element (under the same parent) after which this 246 // Contains the ID of the element (under the same parent) after which this
246 // element resides. An empty string indicates that the element is the first 247 // element resides. An empty string indicates that the element is the first
247 // element in the parent. This value is used during commits to specify 248 // element in the parent. This value is used during commits to specify
248 // a relative position for a position change. In the context of 249 // a relative position for a position change. In the context of
249 // a GetUpdatesMessage, |position_in_parent| is used instead to 250 // a GetUpdatesMessage, |position_in_parent| is used instead to
250 // communicate position. 251 // communicate position.
251 // 252 //
252 // Present only in CommitMessage. 253 // Present only in CommitMessage.
253 // This is deprecated: see comment for |position_in_parent| above. 254 // This is deprecated: see comment for |position_in_parent| above.
254 optional string insert_after_item_id = 16; 255 optional string insert_after_item_id = 16;
255 256
256 // Arbitrary key/value pairs associated with this item. 257 // Arbitrary key/value pairs associated with this item.
257 // Present in both GetUpdatesResponse and CommitMessage. 258 // Present in both GetUpdatesResponse and CommitMessage.
258 // Deprecated. 259 // Deprecated.
259 // optional ExtendedAttributes extended_attributes = 17; 260 // optional ExtendedAttributes extended_attributes = 17;
260 261
261 // If true, indicates that this item has been (or should be) deleted. 262 // If true, indicates that this item has been (or should be) deleted.
262 // Present in both GetUpdatesResponse and CommitMessage. 263 // Present in both GetUpdatesResponse and CommitMessage.
263 optional bool deleted = 18 [default = false]; 264 optional bool deleted = 18 [default = false];
264 265
265 // A GUID that identifies the the sync client who initially committed 266 // A GUID that identifies the the sync client who initially committed
266 // this entity. This value corresponds to |cache_guid| in CommitMessage. 267 // this entity. This value corresponds to |cache_guid| in CommitMessage.
267 // This field, along with |originator_client_item_id|, can be used to 268 // This field, along with |originator_client_item_id|, can be used to
268 // reunite the original with its official committed version in the case 269 // reunite the original with its official committed version in the case
269 // where a client does not receive or process the commit response for 270 // where a client does not receive or process the commit response for
270 // some reason. 271 // some reason.
272 //
271 // Present only in GetUpdatesResponse. 273 // Present only in GetUpdatesResponse.
274 //
275 // This field is also used in determinging the unique identifier used in
276 // bookmarks' unique_position field. It is expected that the string consist
277 // of 16 bytes of data that have been base64 encoded.
272 optional string originator_cache_guid = 19; 278 optional string originator_cache_guid = 19;
273 279
274 // The local item id of this entry from the client that initially 280 // The local item id of this entry from the client that initially
275 // committed this entity. Typically a negative integer. 281 // committed this entity. Typically a negative integer.
276 // Present only in GetUpdatesResponse. 282 // Present only in GetUpdatesResponse.
283 //
284 // This field is also used in determinging the unique identifier used in
285 // bookmarks' unique_position field. It is expected that the ID be the string
286 // representation of a negative 64bit integer.
277 optional string originator_client_item_id = 20; 287 optional string originator_client_item_id = 20;
278 288
279 // Extensible container for datatype-specific data. 289 // Extensible container for datatype-specific data.
280 // This became available in version 23 of the protocol. 290 // This became available in version 23 of the protocol.
281 optional EntitySpecifics specifics = 21; 291 optional EntitySpecifics specifics = 21;
282 292
283 // Indicate whether this is a folder or not. Available in version 23+. 293 // Indicate whether this is a folder or not. Available in version 23+.
284 optional bool folder = 22 [default = false]; 294 optional bool folder = 22 [default = false];
285 295
286 // A client defined unique hash for this entity. 296 // A client defined unique hash for this entity.
(...skipping 18 matching lines...) Expand all
305 // 315 //
306 // May be present in CommitMessages for the initial creation of an entity. 316 // May be present in CommitMessages for the initial creation of an entity.
307 // If present in Commit updates for the entity, it will be ignored. 317 // If present in Commit updates for the entity, it will be ignored.
308 // 318 //
309 // Available in version 24+. 319 // Available in version 24+.
310 // 320 //
311 // May be returned in GetUpdatesMessage and sent up in CommitMessage. 321 // May be returned in GetUpdatesMessage and sent up in CommitMessage.
312 // 322 //
313 optional string client_defined_unique_tag = 23; 323 optional string client_defined_unique_tag = 23;
314 324
315 // Supplies an ordinal for this item, relative to other items with the 325 // This positioning system had a relatively short life. It was made obsolete
316 // same parent. Ordinals are ordered lexicographically bytewise. 326 // by |unique_position| before either the client or server made much of an
317 // Ordinals must be at least 8 bytes (for backwards compatibility), and 327 // attempt to support it.
318 // must not be all zeroes. 328 optional bytes ordinal_in_parent = 24;
329
330 // This is the fourth attempt at positioning.
319 // 331 //
320 // Clients should not make sure that each item they know of has a 332 // Unique positions are unique per-item, since they are guaranteed to
321 // unique ordinal-in-parent. However, updates from the server might 333 // include a fixed-length suffix. The last byte of a unique position
322 // break this invariant. In that case, among the items with the 334 // is always 0xFF, which is appended to the unique suffix.
323 // same ordinal-in-parent, a client should randomly pick one, and
324 // then perturb the ordinal-in-parents of all the other ones (within
325 // the bounds of the preceding and succeeding ordinal-in-parent)
326 // until they're unique; a byte of randomness per item should be
327 // more than enough.
328 // 335 //
329 // Available in version 31+. 336 // Prior to both the suffix and terminator is the position information. This
337 // sequence of bytes with arbitrary length are chosen such that this item
338 // compares to its siblings as desired.
330 // 339 //
331 // Present in both GetUpdatesResponse and CommitMessage. 340 // Present in both GetUpdatesResponse and CommitMessage, if the client client
341 // that wrote the item supports it. Older clients will not set this field, so
342 // the receiver will need to convert the |server_position_in_parent| value
343 // which will be present to a unique_position.
332 // 344 //
333 // In a CommitMessage context, server implementations may choose whether 345 // This field will not be set for items whose type ignores positioning.
334 // to compute a position based on this field, |position_in_parent|, or 346 // Clients will not attempt to read this field on the receipt of an item of a
335 // |insert_after_item_id|. Clients should set all values so that they 347 // type that ignores positioning.
336 // result in a consistent ordering regardless of which choice the server 348 optional bytes unique_position = 25;
337 // makes.
338 optional bytes ordinal_in_parent = 24;
339 }; 349 };
340 350
341 // This message contains diagnostic information used to correlate 351 // This message contains diagnostic information used to correlate
342 // commit-related traffic with extensions-related mutations to the 352 // commit-related traffic with extensions-related mutations to the
343 // data models in chromium. It plays no functional role in 353 // data models in chromium. It plays no functional role in
344 // processing this CommitMessage. 354 // processing this CommitMessage.
345 message ChromiumExtensionsActivity { 355 message ChromiumExtensionsActivity {
346 // The human-readable ID identifying the extension responsible 356 // The human-readable ID identifying the extension responsible
347 // for the traffic reported in this ChromiumExtensionsActivity. 357 // for the traffic reported in this ChromiumExtensionsActivity.
348 optional string extension_id = 1; 358 optional string extension_id = 1;
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
726 // is absent then the whole client (all datatypes) is throttled. 736 // is absent then the whole client (all datatypes) is throttled.
727 repeated int32 error_data_type_ids = 5; 737 repeated int32 error_data_type_ids = 5;
728 } 738 }
729 optional Error error = 13; 739 optional Error error = 13;
730 740
731 // The new per-client state for this client. If set, should be persisted and 741 // The new per-client state for this client. If set, should be persisted and
732 // sent with any subsequent ClientToServerMessages. 742 // sent with any subsequent ClientToServerMessages.
733 optional ChipBag new_bag_of_chips = 14; 743 optional ChipBag new_bag_of_chips = 14;
734 }; 744 };
735 745
OLDNEW
« no previous file with comments | « sync/protocol/bookmark_specifics.proto ('k') | sync/sync.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698