blob: c8b25ea6a1137744130ac3e3b9aa3007bcbd9e1e [file] [log] [blame]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
syntax = "proto2";
option java_multiple_files = true;
option java_package = "org.chromium.components.sync.protocol";
package sync_pb;
import "google/protobuf/descriptor.proto";
// Configuration for per-field attribution in collaborative Sync data types.
// Attaching this as an option to a field within a Sync entity's proto
// definition (e.g., in a SharedTab or SharedTabGroup) enables the tracking of
// metadata related to cross-user collaboration, such as which user last
// modified that specific field.
message SyncCollaborationAttribution {
enum AttributionType {
// Default value. No attribution tracking for this field.
NONE = 0;
// Track the user who last modified this field.
LAST_MODIFIED_BY_USER = 1;
}
// Specifies the type of attribution to be applied to the annotated field.
optional AttributionType attribution_type = 1;
// A stable identifier for the annotated field, used to distinguish it from
// other fields within the same Chrome Sync data type message that also
// have attribution annotations. This identifier is used to associate
// attribution information (like the last modifier) with this specific field
// of the Sync Entity.
//
// This name is also used in the metadata of SyncEntity that are sent to
// clients, such that the client code key to find the related attribution
// data.
//
// Because of this, the name MUST be unique across all fields annotated with
// `sync_collaboration_attribution` within a single EntitySpecifics. For
// example, all `name` values within `SharedTabGroupData` must be distinct.
//
// Recommended format: `lower_snake_case`.
// Examples: "tab_group_title", "tab_url", "tab_group_color".
optional string name = 2;
}
extend google.protobuf.FieldOptions {
// IMPORTANT: the extension number needs to be declared. See
// go/extension-declaration-reserved-numbers for more information.
optional SyncCollaborationAttribution sync_collaboration_attribution =
535801565;
}