| // Copyright 2024 The Chromium Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| // | |
| // Sync protocol datatype extension for shared tab groups and tabs. | |
| // 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; | |
| // copybara:uncomment_begin(google-only) | |
| // import "components/sync/protocol/sync_collaboration_attribution.proto"; | |
| // copybara:uncomment_end | |
| import "components/sync/protocol/unique_position.proto"; | |
| // LINT.IfChange(SharedTabGroupDataSpecifics) | |
| // IMPORTANT: please update | |
| // shared_tab_group_data_specifics_full_proto_unittest.cc if you change any | |
| // sync_collaboration_attribution FieldOptions. | |
| message SharedTabGroupDataSpecifics { | |
| // Unique identifier for this entity. | |
| optional string guid = 1; | |
| oneof entity { | |
| SharedTabGroup tab_group = 3; | |
| SharedTab tab = 4; | |
| } | |
| optional int64 update_time_windows_epoch_micros = 5; | |
| // A mechanism to identify the client version that wrote this specifics. | |
| // Designed to aid business logic when reading newly added fields that | |
| // didn't exist in older clients. | |
| // The client version must be incremented whenever a new field is added to the | |
| // specifics. | |
| optional int32 version = 6; | |
| reserved 2; | |
| } | |
| message SharedTabGroup { | |
| // The displayed title of the group, shown on the tab group. | |
| optional string title = 1 | |
| // copybara:uncomment_begin(google-only) | |
| // [(sync_collaboration_attribution) = { | |
| // attribution_type: LAST_MODIFIED_BY_USER | |
| // name: "tab_group_title" | |
| // }] | |
| // copybara:uncomment_end | |
| ; | |
| // These colors map to tab_groups::TabGroupColorId. They DO NOT match the enum | |
| // integer values due to "kGrey" being in the "Unspecified" field. | |
| enum Color { | |
| UNSPECIFIED = 0; | |
| GREY = 1; | |
| BLUE = 2; | |
| RED = 3; | |
| YELLOW = 4; | |
| GREEN = 5; | |
| PINK = 6; | |
| PURPLE = 7; | |
| CYAN = 8; | |
| ORANGE = 9; | |
| } | |
| // The color of the tab group, mapped to tab_groups::TabGroupColorId. | |
| optional Color color = 2 | |
| // copybara:uncomment_begin(google-only) | |
| // [(sync_collaboration_attribution) = { | |
| // attribution_type: LAST_MODIFIED_BY_USER | |
| // name: "tab_group_color" | |
| // }] | |
| // copybara:uncomment_end | |
| ; | |
| // Saved tab group GUID from which this shared tab group was created. | |
| optional string originating_tab_group_guid = 3; | |
| } | |
| message SharedTab { | |
| // The URL of the page. | |
| optional string url = 1 | |
| // copybara:uncomment_begin(google-only) | |
| // [(sync_collaboration_attribution) = { | |
| // attribution_type: LAST_MODIFIED_BY_USER | |
| // name: "tab_url" | |
| // }] | |
| // copybara:uncomment_end | |
| ; | |
| // The title of the page. | |
| optional string title = 2 | |
| // copybara:uncomment_begin(google-only) | |
| // [(sync_collaboration_attribution) = { | |
| // attribution_type: LAST_MODIFIED_BY_USER | |
| // name: "tab_title" | |
| // }] | |
| // copybara:uncomment_end | |
| ; | |
| // The GUID of the SharedTabGroup this is a member of. | |
| optional string shared_tab_group_guid = 4; | |
| // The UniquePosition within a SharedTabGroup. | |
| optional UniquePosition unique_position = 5; | |
| reserved 3; | |
| reserved "favicon_url"; | |
| } | |
| // LINT.ThenChange(//components/saved_tab_groups/internal/shared_tab_group_data_sync_bridge.cc:TrimAllSupportedFieldsFromRemoteSpecifics) |