chromium/components/sync/protocol/entity_specifics.proto

// Copyright 2021 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";

option optimize_for = LITE_RUNTIME;

package sync_pb;

import "components/sync/protocol/encryption.proto";
import "components/sync/protocol/app_list_specifics.proto";
import "components/sync/protocol/app_setting_specifics.proto";
import "components/sync/protocol/app_specifics.proto";
import "components/sync/protocol/arc_package_specifics.proto";
import "components/sync/protocol/autofill_specifics.proto";
import "components/sync/protocol/autofill_offer_specifics.proto";
import "components/sync/protocol/autofill_wallet_credential_specifics.proto";
import "components/sync/protocol/autofill_wallet_usage_specifics.proto";
import "components/sync/protocol/bookmark_specifics.proto";
import "components/sync/protocol/collaboration_group_specifics.proto";
import "components/sync/protocol/product_comparison_specifics.proto";
import "components/sync/protocol/contact_info_specifics.proto";
import "components/sync/protocol/cookie_specifics.proto";
import "components/sync/protocol/device_info_specifics.proto";
import "components/sync/protocol/dictionary_specifics.proto";
import "components/sync/protocol/experiments_specifics.proto";
import "components/sync/protocol/extension_setting_specifics.proto";
import "components/sync/protocol/extension_specifics.proto";
import "components/sync/protocol/favicon_image_specifics.proto";
import "components/sync/protocol/favicon_tracking_specifics.proto";
import "components/sync/protocol/history_delete_directive_specifics.proto";
import "components/sync/protocol/history_specifics.proto";
import "components/sync/protocol/managed_user_setting_specifics.proto";
import "components/sync/protocol/managed_user_shared_setting_specifics.proto";
import "components/sync/protocol/nigori_specifics.proto";
import "components/sync/protocol/os_preference_specifics.proto";
import "components/sync/protocol/os_priority_preference_specifics.proto";
import "components/sync/protocol/password_sharing_invitation_specifics.proto";
import "components/sync/protocol/password_specifics.proto";
import "components/sync/protocol/plus_address_setting_specifics.proto";
import "components/sync/protocol/plus_address_specifics.proto";
import "components/sync/protocol/power_bookmark_specifics.proto";
import "components/sync/protocol/preference_specifics.proto";
import "components/sync/protocol/printer_specifics.proto";
import "components/sync/protocol/printers_authorization_server_specifics.proto";
import "components/sync/protocol/priority_preference_specifics.proto";
import "components/sync/protocol/reading_list_specifics.proto";
import "components/sync/protocol/saved_tab_group_specifics.proto";
import "components/sync/protocol/search_engine_specifics.proto";
import "components/sync/protocol/security_event_specifics.proto";
import "components/sync/protocol/send_tab_to_self_specifics.proto";
import "components/sync/protocol/session_specifics.proto";
import "components/sync/protocol/shared_tab_group_data_specifics.proto";
import "components/sync/protocol/sharing_message_specifics.proto";
import "components/sync/protocol/theme_specifics.proto";
import "components/sync/protocol/typed_url_specifics.proto";
import "components/sync/protocol/user_consent_specifics.proto";
import "components/sync/protocol/user_event_specifics.proto";
import "components/sync/protocol/web_apk_specifics.proto";
import "components/sync/protocol/web_app_specifics.proto";
import "components/sync/protocol/webauthn_credential_specifics.proto";
import "components/sync/protocol/wifi_configuration_specifics.proto";
import "components/sync/protocol/workspace_desk_specifics.proto";

message EntitySpecifics {
  // If a datatype is encrypted, this field will contain the encrypted
  // original EntitySpecifics. The extension for the datatype will continue
  // to exist, but contain only the default values.
  // Note that currently passwords employ their own legacy encryption scheme and
  // do not use this field.
  optional EncryptedData encrypted = 1;

  // To add new datatype-specific fields to the protocol, extend
  // EntitySpecifics.  First, pick a non-colliding tag number by
  // picking a Cr-Commit-Position of one of your past commits
  // to src.chromium.org.  Then, in a different protocol buffer
  // definition, define your message type, and add an optional field
  // to the list below using the unique tag value you selected.
  //
  //  optional MyDatatypeSpecifics my_datatype = 32222;
  //
  // where:
  //   - 32222 is the non-colliding tag number you picked earlier.
  //   - MyDatatypeSpecifics is the type (probably a message type defined
  //     in your new .proto file) that you want to associate with each
  //     object of the new datatype.
  //   - my_datatype is the field identifier you'll use to access the
  //     datatype specifics from the code.
  //
  // Server implementations are obligated to preserve the contents of
  // EntitySpecifics when it contains unrecognized fields.  In this
  // way, it is possible to add new datatype fields without having
  // to update the server.
  //
  // Note: The tag selection process is based on legacy versions of the
  // protocol which used protobuf extensions. We have kept the process
  // consistent as the old values cannot change.  The 5+ digit nature of the
  // tags also makes them recognizable (individually and collectively) from
  // noise in logs and debugging contexts, and creating a divergent subset of
  // tags would only make things a bit more confusing.

  oneof specifics_variant {
    AutofillSpecifics autofill = 31729;
    BookmarkSpecifics bookmark = 32904;
    PreferenceSpecifics preference = 37702;
    ThemeSpecifics theme = 41210;
    PasswordSpecifics password = 45873;
    NigoriSpecifics nigori = 47745;
    ExtensionSpecifics extension = 48119;
    AppSpecifics app = 48364;
    SessionSpecifics session = 50119;
    AutofillProfileSpecifics autofill_profile = 63951;
    SearchEngineSpecifics search_engine = 88610;
    ExtensionSettingSpecifics extension_setting = 96159;
    AppSettingSpecifics app_setting = 103656;
    HistoryDeleteDirectiveSpecifics history_delete_directive = 150251;
    DeviceInfoSpecifics device_info = 154522;
    PriorityPreferenceSpecifics priority_preference = 163425;
    DictionarySpecifics dictionary = 170540;
    ManagedUserSettingSpecifics managed_user_setting = 186662;
    AppListSpecifics app_list = 229170;
    AutofillWalletSpecifics autofill_wallet = 306270;
    WalletMetadataSpecifics wallet_metadata = 330441;
    ArcPackageSpecifics arc_package = 340906;
    PrinterSpecifics printer = 410745;
    ReadingListSpecifics reading_list = 411028;
    UserEventSpecifics user_event = 455206;
    UserConsentSpecifics user_consent = 556014;
    SendTabToSelfSpecifics send_tab_to_self = 601980;
    SecurityEventSpecifics security_event = 600372;
    WebApkSpecifics web_apk = 1117170;
    WebAppSpecifics web_app = 673225;
    WifiConfigurationSpecifics wifi_configuration = 662827;
    OsPreferenceSpecifics os_preference = 702141;
    OsPriorityPreferenceSpecifics os_priority_preference = 703915;
    SharingMessageSpecifics sharing_message = 728866;
    AutofillOfferSpecifics autofill_offer = 774329;
    WorkspaceDeskSpecifics workspace_desk = 874841;
    WebauthnCredentialSpecifics webauthn_credential = 895275;
    HistorySpecifics history = 963985;
    PrintersAuthorizationServerSpecifics printers_authorization_server = 974304;
    SavedTabGroupSpecifics saved_tab_group = 1004874;
    AutofillWalletUsageSpecifics autofill_wallet_usage = 1033580;
    ContactInfoSpecifics contact_info = 1034378;
    PowerBookmarkSpecifics power_bookmark = 1073150;
    IncomingPasswordSharingInvitationSpecifics
        incoming_password_sharing_invitation = 1141935;
    OutgoingPasswordSharingInvitationSpecifics
        outgoing_password_sharing_invitation = 1142081;
    AutofillWalletCredentialSpecifics autofill_wallet_credential = 1164238;
    SharedTabGroupDataSpecifics shared_tab_group_data = 1239418;
    CollaborationGroupSpecifics collaboration_group = 1259076;
    ProductComparisonSpecifics product_comparison = 1329438;
    PlusAddressSpecifics plus_address = 1267844;
    CookieSpecifics cookie = 1281100;
    PlusAddressSettingSpecifics plus_address_setting = 1303742;
    // When adding a new type, follow the docs below and keep this comment as
    // the last entry.
    // https://www.chromium.org/developers/design-documents/sync/integration-checklist/

    // No-longer-supported data types, in various stages of removal.
    // TODO(crbug.com/40881888): Eventually, these should all become "reserved"
    // fields, or at least use "EmptySpecifics". But some of them are still
    // needed by the server, e.g. to support older clients.
    EmptySpecifics app_notification = 45184 [deprecated = true];
    EmptySpecifics synced_notification = 153108 [deprecated = true];
    EmptySpecifics synced_notification_app_info = 235816 [deprecated = true];
    ExperimentsSpecifics experiments = 161496 [deprecated = true];
    FaviconTrackingSpecifics favicon_tracking = 181534 [deprecated = true];
    FaviconImageSpecifics favicon_image = 182019 [deprecated = true];
    EmptySpecifics managed_user = 194582 [deprecated = true];
    ManagedUserSharedSettingSpecifics managed_user_shared_setting = 202026
        [deprecated = true];
    EmptySpecifics managed_user_allowlist = 306060 [deprecated = true];
    TypedUrlSpecifics typed_url = 40781 [deprecated = true];
  }
  reserved 218175;
  reserved "wifi_credential";
  reserved 223759;
  reserved "article";
  reserved 545005;
  reserved "mountain_share";
  reserved 1026052;
  reserved "segmentation";
}

message EmptySpecifics {}