// 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 go_package = "./sync_pb"; option java_multiple_files = true; option java_package = "org.chromium.components.sync.protocol"; option optimize_for = LITE_RUNTIME; package sync_pb; import "encryption.proto"; import "app_list_specifics.proto"; import "app_setting_specifics.proto"; import "app_specifics.proto"; import "arc_package_specifics.proto"; import "autofill_specifics.proto"; import "autofill_offer_specifics.proto"; import "autofill_wallet_credential_specifics.proto"; import "autofill_wallet_usage_specifics.proto"; import "bookmark_specifics.proto"; import "collaboration_group_specifics.proto"; import "compare_specifics.proto"; import "contact_info_specifics.proto"; import "device_info_specifics.proto"; import "dictionary_specifics.proto"; import "experiments_specifics.proto"; import "extension_setting_specifics.proto"; import "extension_specifics.proto"; import "favicon_image_specifics.proto"; import "favicon_tracking_specifics.proto"; import "history_delete_directive_specifics.proto"; import "history_specifics.proto"; import "managed_user_setting_specifics.proto"; import "managed_user_shared_setting_specifics.proto"; import "nigori_specifics.proto"; import "os_preference_specifics.proto"; import "os_priority_preference_specifics.proto"; import "password_sharing_invitation_specifics.proto"; import "password_specifics.proto"; import "plus_address_specifics.proto"; import "power_bookmark_specifics.proto"; import "preference_specifics.proto"; import "printer_specifics.proto"; import "printers_authorization_server_specifics.proto"; import "priority_preference_specifics.proto"; import "reading_list_specifics.proto"; import "saved_tab_group_specifics.proto"; import "search_engine_specifics.proto"; import "security_event_specifics.proto"; import "send_tab_to_self_specifics.proto"; import "segmentation_specifics.proto"; import "session_specifics.proto"; import "shared_tab_group_data_specifics.proto"; import "sharing_message_specifics.proto"; import "theme_specifics.proto"; import "typed_url_specifics.proto"; import "user_consent_specifics.proto"; import "user_event_specifics.proto"; import "web_apk_specifics.proto"; import "web_app_specifics.proto"; import "webauthn_credential_specifics.proto"; import "wifi_configuration_specifics.proto"; import "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; TypedUrlSpecifics typed_url = 40781; 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; SegmentationSpecifics segmentation = 1026052; 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; CompareSpecifics compare = 1329438; PlusAddressSpecifics plus_address = 1267844; // 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/1395003): 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]; } reserved 218175; reserved "wifi_credential"; reserved 223759; reserved "article"; reserved 545005; reserved "mountain_share"; } message EmptySpecifics {}