chromium/components/sync/protocol/proto_visitors.h

// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_SYNC_PROTOCOL_PROTO_VISITORS_H_
#define COMPONENTS_SYNC_PROTOCOL_PROTO_VISITORS_H_

#include "components/sync/base/data_type.h"
#include "components/sync/protocol/app_list_specifics.pb.h"
#include "components/sync/protocol/app_setting_specifics.pb.h"
#include "components/sync/protocol/app_specifics.pb.h"
#include "components/sync/protocol/arc_package_specifics.pb.h"
#include "components/sync/protocol/autofill_offer_specifics.pb.h"
#include "components/sync/protocol/autofill_specifics.pb.h"
#include "components/sync/protocol/autofill_wallet_credential_specifics.pb.h"
#include "components/sync/protocol/autofill_wallet_usage_specifics.pb.h"
#include "components/sync/protocol/bookmark_specifics.pb.h"
#include "components/sync/protocol/collaboration_group_specifics.pb.h"
#include "components/sync/protocol/contact_info_specifics.pb.h"
#include "components/sync/protocol/cookie_specifics.pb.h"
#include "components/sync/protocol/data_type_progress_marker.pb.h"
#include "components/sync/protocol/data_type_state.pb.h"
#include "components/sync/protocol/deletion_origin.pb.h"
#include "components/sync/protocol/dictionary_specifics.pb.h"
#include "components/sync/protocol/encryption.pb.h"
#include "components/sync/protocol/entity_metadata.pb.h"
#include "components/sync/protocol/entity_specifics.pb.h"
#include "components/sync/protocol/extension_setting_specifics.pb.h"
#include "components/sync/protocol/extension_specifics.pb.h"
#include "components/sync/protocol/history_delete_directive_specifics.pb.h"
#include "components/sync/protocol/history_specifics.pb.h"
#include "components/sync/protocol/nigori_local_data.pb.h"
#include "components/sync/protocol/nigori_specifics.pb.h"
#include "components/sync/protocol/note_entity.pb.h"
#include "components/sync/protocol/os_preference_specifics.pb.h"
#include "components/sync/protocol/os_priority_preference_specifics.pb.h"
#include "components/sync/protocol/password_sharing_invitation_specifics.pb.h"
#include "components/sync/protocol/password_specifics.pb.h"
#include "components/sync/protocol/persisted_entity_data.pb.h"
#include "components/sync/protocol/plus_address_setting_specifics.pb.h"
#include "components/sync/protocol/plus_address_specifics.pb.h"
#include "components/sync/protocol/power_bookmark_specifics.pb.h"
#include "components/sync/protocol/preference_specifics.pb.h"
#include "components/sync/protocol/printer_specifics.pb.h"
#include "components/sync/protocol/printers_authorization_server_specifics.pb.h"
#include "components/sync/protocol/priority_preference_specifics.pb.h"
#include "components/sync/protocol/product_comparison_specifics.pb.h"
#include "components/sync/protocol/proto_enum_conversions.h"
#include "components/sync/protocol/proto_value_conversions.h"
#include "components/sync/protocol/reading_list_specifics.pb.h"
#include "components/sync/protocol/saved_tab_group_specifics.pb.h"
#include "components/sync/protocol/search_engine_specifics.pb.h"
#include "components/sync/protocol/send_tab_to_self_specifics.pb.h"
#include "components/sync/protocol/session_specifics.pb.h"
#include "components/sync/protocol/shared_tab_group_data_specifics.pb.h"
#include "components/sync/protocol/sharing_message_specifics.pb.h"
#include "components/sync/protocol/sync.pb.h"
#include "components/sync/protocol/sync_entity.pb.h"
#include "components/sync/protocol/sync_invalidations_payload.pb.h"
#include "components/sync/protocol/tab_group_attribution_metadata.pb.h"
#include "components/sync/protocol/theme_specifics.pb.h"
#include "components/sync/protocol/typed_url_specifics.pb.h"
#include "components/sync/protocol/unencrypted_sharing_message.pb.h"
#include "components/sync/protocol/unique_position.pb.h"
#include "components/sync/protocol/user_consent_specifics.pb.h"
#include "components/sync/protocol/user_event_specifics.pb.h"
#include "components/sync/protocol/web_apk_specifics.pb.h"
#include "components/sync/protocol/web_app_specifics.pb.h"
#include "components/sync/protocol/webauthn_credential_specifics.pb.h"
#include "components/sync/protocol/workspace_desk_specifics.pb.h"

// This file implements VisitProtoFields() functions for sync protos.
//
// VisitProtoFields(visitor, proto) calls |visitor| for each field in
// |proto|. When called, |visitor| gets passed |proto|, field name and
// field value.
//
// VisitProtoFields() used to implement two distinctive features:
// 1. Serialization into base::Value::Dict
// 2. Proto memory usage estimation
//
// To achieve that it's very important for VisitProtoFields() to be free
// of any logic. It must just call visitor for each field in a proto.
//
// Logic (like clobbering sensitive fields) must be implemented in visitors.
// For example see how ToValueVisitor (from proto_value_conversions.cc)
// implements various customizations.

#define VISIT_

// Generic version, calls visitor.Visit(). Handles almost everything except
// for special cases below.
#define VISIT

// 'bytes' protobuf type maps to std::string, and is indistinguishable
// from 'string' type. To solve that 'bytes' fields are special cased to
// call visitor.VisitBytes().
#define VISIT_BYTES

// We could use template magic (std::is_enum) to handle enums, but that would
// complicate visitors, and besides we already have special case for 'bytes',
// so just add one more special case. Calls visitor.VisitEnum().
#define VISIT_ENUM

// Repeated fields are always present, so there are no 'has_<field>' methods.
// This macro unconditionally calls visitor.Visit().
#define VISIT_REP

// Repeated fields are always present, so there are no 'has_<field>' methods.
// This macro unconditionally calls visitor.VisitBytes().
#define VISIT_REP_BYTES(field)

// Values that are secrets do not have their contents reported in debugging
// output, only their lengths, but are still counted for things like memory
// estimation.
#define VISIT_SECRET(field)

#define VISIT_PROTO_FIELDS(proto)

namespace syncer {

VISIT_PROTO_FIELDS(const sync_pb::AppListSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::AppNotificationSettings& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::AppSettingSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::AppSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ArcPackageSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::AutofillOfferSpecifics& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::AutofillOfferSpecifics::CardLinkedOfferData& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::AutofillOfferSpecifics::PromoCodeOfferData& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::AutofillOfferSpecifics::DisplayStrings& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::AutofillOfferSpecifics::PercentageReward& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::AutofillOfferSpecifics::FixedAmountReward& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::AutofillProfileSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::AutofillSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::AutofillWalletCredentialSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::AutofillWalletUsageSpecifics& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::AutofillWalletUsageSpecifics::VirtualCardUsageData& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::AutofillWalletSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::BookmarkSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ChromiumExtensionsActivity& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::CollaborationGroupSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ComparisonData& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ProductComparison& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ProductComparisonItem& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ProductComparisonSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ContactInfoSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ContactInfoSpecifics::Observation& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ContactInfoSpecifics::TokenMetadata& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ContactInfoSpecifics::StringToken& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::CookieSpecifics& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::CookieSpecifics::SerializedCookiePartitionKey& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::CustomNudgeDelay& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ClientCommand& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ClientConfigParams& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ClientStatus& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ClientToServerMessage& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ClientToServerResponse& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ClientToServerResponse::Error& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::CommitMessage& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::CommitResponse& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::CommitResponse::EntryResponse& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::DataTypeContext& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::DataTypeProgressMarker& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::GarbageCollectionDirective& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::GarbageCollectionDirective::CollaborationGarbageCollection&
        proto) {}

VISIT_PROTO_FIELDS(const sync_pb::DebugEventInfo& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::DebugInfo& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::DeletionOrigin& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::DeviceInfoSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::FeatureSpecificFields& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SharingSpecificFields& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PhoneAsASecurityKeySpecificFields& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ChromeVersionInfo& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::GooglePlayServicesVersionInfo& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::DictionarySpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::EncryptedData& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::EntityMetadata& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::EntityMetadata::CollaborationMetadata& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::EntitySpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ExtensionSettingSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ExtensionSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::GetUpdateTriggers& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::GetUpdatesCallerInfo& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::GetUpdatesMessage& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::GetUpdatesResponse& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::GlobalIdDirective& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::HistoryDeleteDirectiveSpecifics& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::IncomingPasswordSharingInvitationSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::InvalidationSpecificFields& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::LinkedAppIconInfo& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ManagedUserSettingSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::MetaInfo& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::DataTypeState& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::DataTypeState::Invalidation& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::NavigationRedirect& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ReplacedNavigation& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::CryptographerData& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::CrossUserSharingKeys& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::CustomPassphraseKeyDerivationParams& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::NigoriModel& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::NigoriLocalData& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::CrossUserSharingPublicKey& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::CrossUserSharingPrivateKey& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::NigoriSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::WebauthnCredentialSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::HistorySpecifics::PageTransition& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::HistorySpecifics::RedirectEntry& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::HistorySpecifics::Category& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::HistorySpecifics& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::TrustedVaultAutoUpgradeExperimentGroup& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::NigoriSpecifics::TrustedVaultDebugInfo& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::OsPreferenceSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::OsPriorityPreferenceSpecifics& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::OutgoingPasswordSharingInvitationSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PasswordSharingInvitationData& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::PasswordSharingInvitationData::PasswordGroupData& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::PasswordSharingInvitationData::PasswordGroupElementData&
        proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PasswordSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PasswordSpecificsData& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PasswordIssues& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PasswordIssues_PasswordIssue& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PasswordSpecificsData_Notes& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PasswordSpecificsData_Notes_Note& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PasswordSpecificsMetadata& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PowerBookmarkSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PowerEntity& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::NoteEntity& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PersistedEntityData& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PlusAddressSettingSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PlusAddressSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PlusEmail& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PreferenceSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PrinterPPDReference& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PrinterSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PrintersAuthorizationServerSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PriorityPreferenceSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ReadingListSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SavedTabGroupSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SavedTabGroup& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SavedTabGroupTab& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::AttributionMetadata& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::AttributionMetadata::Attribution& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::AttributionMetadata::Attribution::AttributionDeviceInfo&
        proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SearchEngineSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SendTabToSelfPush& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SendTabToSelfPush::Image& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SendTabToSelfSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SessionHeader& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SessionSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SessionTab& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SessionWindow& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SharedTabGroup& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SharedTab& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SharedTabGroupDataSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SharingMessageSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SharingMessageSpecifics::
                       ChannelConfiguration::FCMChannelConfiguration& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SharingMessageSpecifics::
                       ChannelConfiguration::ChimeChannelConfiguration& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::SharingMessageSpecifics::ChannelConfiguration& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SyncCycleCompletedEventInfo& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SyncEntity& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SyncEntity::CollaborationMetadata& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::SyncEntity::CollaborationMetadata::AttributionMetadata&
        proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SyncEntity::CollaborationMetadata::
                       AttributionMetadata::Attribution& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::SyncEntity::CollaborationMetadata::AttributionMetadata::
        Attribution::AttributionUserInfo& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SyncInvalidationsPayload& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::SyncInvalidationsPayload::DataTypeInvalidation& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::SecurityEventSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::GaiaPasswordReuse& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::GaiaPasswordReuse::PasswordReuseDetected& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::GaiaPasswordReuse::PasswordReuseDetected::SafeBrowsingStatus&
        proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::GaiaPasswordReuse::PasswordReuseDialogInteraction& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::GaiaPasswordReuse::PasswordReuseLookup& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::UserDisplayInfo& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::UserInfo& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::UserEventSpecifics::GaiaPasswordCaptured& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::UserEventSpecifics::FlocIdComputed& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::TabNavigation& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ThemeSpecifics& proto) {}
VISIT_PROTO_FIELDS(const sync_pb::ThemeSpecifics::AutogeneratedTheme& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ThemeSpecifics::UserColorTheme& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ThemeSpecifics::Empty& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::ThemeSpecifics::NtpCustomBackground& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::TimeRangeDirective& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::UrlDirective& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::TypeHint& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::TypedUrlSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::UnencryptedSharingMessage& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::UniquePosition& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::UserConsentSpecifics& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::UserConsentTypes::ArcBackupAndRestoreConsent& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::UserConsentTypes::ArcGoogleLocationServiceConsent& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::UserConsentTypes::ArcPlayTermsOfServiceConsent& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::UserConsentTypes::AssistantActivityControlConsent& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::UserConsentTypes::SyncConsent& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::UserConsentTypes::UnifiedConsent& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::UserConsentTypes::AccountPasswordsConsent& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::UserConsentTypes::RecorderSpeakerLabelConsent& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::UserEventSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::UserEventSpecifics::Test& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::CloudTokenData& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PaymentInstrument& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::BankAccountDetails& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::EwalletDetails& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::DeviceDetails& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::CardBenefit& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::CardBenefit_FlatRateBenefit& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::CardBenefit_CategoryBenefit& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::CardBenefit_MerchantBenefit& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::CardIssuer& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::WalletMaskedCreditCard& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::WalletMetadataSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::WalletPostalAddress& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::PaymentsCustomerData& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::WalletCreditCardCloudTokenData& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::WalletMaskedIban& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::WebApkIconInfo& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::WebApkSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::WebAppIconInfo& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::WebAppSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::WifiConfigurationSpecifics::
                       ProxyConfiguration::ManualProxyConfiguration& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::WifiConfigurationSpecifics::ProxyConfiguration& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::WifiConfigurationSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::WorkspaceDeskSpecifics& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::WorkspaceDeskSpecifics::App& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::WorkspaceDeskSpecifics::AppOneOf& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::WorkspaceDeskSpecifics::BrowserAppWindow& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::WorkspaceDeskSpecifics::BrowserAppWindow::BrowserAppTab&
        proto) {}

VISIT_PROTO_FIELDS(const sync_pb::WorkspaceDeskSpecifics::ChromeApp& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::WorkspaceDeskSpecifics::Desk& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::WorkspaceDeskSpecifics::ProgressiveWebApp& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::WorkspaceDeskSpecifics::WindowBound& proto) {}

VISIT_PROTO_FIELDS(const sync_pb::WorkspaceDeskSpecifics::ArcApp& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::WorkspaceDeskSpecifics::ArcApp::WindowSize& proto) {}

VISIT_PROTO_FIELDS(
    const sync_pb::WorkspaceDeskSpecifics::BrowserAppWindow::TabGroup& proto) {}

}  // namespace syncer

#undef VISIT_
#undef VISIT_BYTES
#undef VISIT_ENUM
#undef VISIT
#undef VISIT_REP

#endif  // COMPONENTS_SYNC_PROTOCOL_PROTO_VISITORS_H_