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