12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- // Copyright 2015 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- // If you change or add any fields in this file, update proto_visitors.h and
- // potentially proto_enum_conversions.{h, cc}.
- syntax = "proto2";
- option java_multiple_files = true;
- option java_package = "org.chromium.components.sync.protocol";
- option optimize_for = LITE_RUNTIME;
- package sync_pb;
- import "components/sync/protocol/entity_specifics.proto";
- import "components/sync/protocol/unique_position.proto";
- // Sync proto to store entity metadata in model type storage.
- message EntityMetadata {
- // A hash based on the client tag and model type.
- // Used for various map lookups. Should always be available.
- // Sent to the server as SyncEntity::client_defined_unique_tag.
- optional string client_tag_hash = 1;
- // The entity's server-assigned ID.
- //
- // Prior to the item's first commit, we leave this value as an empty string.
- // The initial ID for a newly created item has to meet certain uniqueness
- // requirements, and we handle those on the sync thread.
- optional string server_id = 2;
- // Whether or not the entity is deleted.
- optional bool is_deleted = 3;
- // A version number used to track in-progress commits. Each local change
- // increments this number.
- optional int64 sequence_number = 4;
- // The sequence number of the last item known to be successfully committed.
- optional int64 acked_sequence_number = 5;
- // The server version on which this item is based.
- //
- // If there are no local changes, this is the version of the entity as we see
- // it here.
- //
- // If there are local changes, this is the version of the entity on which
- // those changes are based.
- optional int64 server_version = 6 [default = -1];
- // Entity creation and modification timestamps. Assigned by the client and
- // synced by the server, though the server usually doesn't bother to inspect
- // their values. They are encoded as milliseconds since the Unix epoch.
- optional int64 creation_time = 7;
- optional int64 modification_time = 8;
- // A hash of the current entity specifics value. Used to detect whether
- // entity's specifics value has changed without having to keep specifics in
- // memory.
- optional string specifics_hash = 9;
- // A hash of the last specifics known by both the client and server. Used to
- // detect when local commits and remote updates are just for encryption. This
- // value will be the empty string only in the following cases: the entity is
- // in sync with the server, has never been synced, or is deleted.
- optional string base_specifics_hash = 10;
- // Used for positioning entities among their siblings. Relevant only for data
- // types that support positions (e.g bookmarks). Refer to its definition in
- // unique_position.proto for more information about its internal
- // representation.
- optional UniquePosition unique_position = 11;
- // Used only for bookmarks. It's analogous to |specifics_hash| but it
- // exclusively hashes the content of the favicon image, as represented in
- // proto field BookmarkSpecifics.favicon, using base::PersistentHash().
- optional fixed32 bookmark_favicon_hash = 12;
- // Last specifics known by both the client and server. Used during commits to
- // the server in order to prevent data loss caused by older clients dealing
- // with unknown proto fields (fields that were introduced later). Datatypes
- // (ModelTypeSyncBridge) may implement logic to trim down (or fully clear)
- // this proto prior to caching, to avoid the memory and I/O overhead of
- // dealing with an extra copy of the data. Introduced in M101.
- optional EntitySpecifics possibly_trimmed_base_specifics = 13;
- }
|