1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
// 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.
// 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;
// Represents the context of a URL shared within a group, including its various
// representations and metadata.
message SharedUrlContext {
enum Source {
// The source is not specified.
SOURCE_UNSPECIFIED = 0;
// The current URL shown in the Omnibox.
OMNIBOX = 1;
// The URL we received or sent through Chrome Sync.
FROM_SYNC = 2;
// The Canonical URL the client identified.
CANONICAL_URL = 3;
}
// A specific representation of a URL from a particular source.
message UrlRepresentation {
// Where this URL representation was received from.
optional Source source = 1;
// The URL, hash, or other unique identifier for this representation.
optional string value = 2;
// An optional version string to differentiate representations over time.
optional string version = 3;
}
// A list of all known representations for this URL. This allows different
// clients to find a common representation for identifying the page.
repeated UrlRepresentation representations = 1;
// The title of the web page this SharedUrlContext refers to.
optional string title = 2;
}
// Contains all the data for a user-authored comment, including its
// content, sorting key, and attribution.
message CommentData {
// The user-authored comment string, which may contain rich text.
optional string text = 1;
// Describes what a comment is about, such as a reply to another comment or a
// new comment on a specific target.
message Attribution {
// Identifies the target of a top-level comment.
message CommentTarget {
// The UUID of the `SharedUrlContext` specifics this comment is attached
// to.
optional string shared_url_context_uuid = 1;
// A link to a specific text fragment within the page (i.e., a "deep
// link").
message FragmentLink {
// The fragment part of the link, i.e. the #:~:text=... part of the
// link.
optional string fragment = 1;
// A string representation of the selected text to be used in previews.
optional string text_preview = 2;
}
// An optional link to a text fragment within the page.
optional FragmentLink link_fragment = 2;
}
// Identifies the parent comment this comment is a reply to.
message InReplyTo {
// The UUID of the parent comment.
optional string parent_id = 1;
}
// Defines whether the comment is a new thread or a reply.
oneof kind {
// The target if this is a new top-level comment.
CommentTarget top_level = 1;
// Metadata about the parent comment if this is a reply.
InReplyTo parent = 2;
}
}
// The attribution data for this comment, indicating what it refers to.
optional Attribution attribution = 2;
// Defines a key used for deterministically sorting comments in a distributed
// system. This ensures that all clients render comments in the same stable
// order, regardless of network timing or processing order. This is intended
// to be used together with the creation time of an entity to provide a
// strictly monotonically increasing ordering.
message OrderKey {
// A unique identifier for the device or client that authored the comment
// (e.g., a GUID). This serves as the main tie-breaker for comments with
// identical timestamps.
optional string device_guid = 1;
// A strictly monotonically increasing sequence number generated by the
// source device. Any sequence number is guaranteed to not be reused for the
// same source device. This provides a final, definitive ordering for
// comments created by the same source, even if they arrive out of order.
optional int64 local_sequence = 2;
}
// A key for deterministically sorting entities.
optional OrderKey order_key = 3;
}
// Represents a single entity in the commenting system, which can be either a
// user comment or a URL context object. This is the top-level message for a
// single comment-related sync entity.
message SharedCommentSpecifics {
// A unique identifier (UUID) for this entity.
optional string uuid = 1;
// A stable, permanent identifier for the collaboration context this entity
// belongs to. It serves as a permanent foreign key to group related data
// types (e.g., comments, tab groups) that belong to the same logical
// collaboration. This ID never changes, even if the underlying entity is
// shared or unshared, thus preventing data from being orphaned.
optional string context_id = 2;
// The highest SharedCommentSpecifics version supported by the client that
// wrote this entity.
optional int64 proto_version = 3;
// The main payload of this entity.
oneof entity {
// The content of a user-authored comment.
CommentData comment = 4;
// The context for a URL being commented on.
SharedUrlContext shared_url_context = 5;
}
}
|