| // 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) |