chromium/components/sync/protocol/shared_tab_group_data_specifics.proto

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

import "components/sync/protocol/unique_position.proto";

message SharedTabGroupDataSpecifics {
  // Unique identifier for this entity.
  optional string guid = 1;

  // TODO(b/319521964): consider to rename and add a comment to clarify the
  // content.
  optional string last_modification_author = 2;

  oneof entity {
    SharedTabGroup tab_group = 3;
    SharedTab tab = 4;
  }

  optional int64 update_time_windows_epoch_micros = 5;
}

message SharedTabGroup {
  // The displayed title of the group, shown on the tab group.
  optional string title = 1;

  // 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;
}

message SharedTab {
  // The URL of the page.
  optional string url = 1;
  // The title of the page.
  optional string title = 2;
  // The URL to the favicon of the page.
  optional string favicon_url = 3;
  // 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;
}