//
// DO NOT MODIFY THIS FILE DIRECTLY!
// IT IS GENERATED BY generate_policy_source.py
// FROM gen/chrome/app/policy/policy_templates.json
//

#ifndef COMPONENTS_POLICY_POLICY_CONSTANTS_MUTABLE_H_
#define COMPONENTS_POLICY_POLICY_CONSTANTS_MUTABLE_H_

#include <cstdint>
#include <string>

#include "components/policy/core/common/policy_details.h"
#include "components/policy/core/common/policy_map.h"

namespace enterprise_management {
class BooleanPolicyProto;
class CloudPolicySettings;
class IntegerPolicyProto;
class StringListPolicyProto;
class StringPolicyProto;
}

namespace em = enterprise_management;

namespace policy::internal {
struct SchemaData;
}

namespace policy::test {

#if BUILDFLAG(IS_CHROMEOS)
// Sets default profile policies values for enterprise users.
void SetEnterpriseUsersProfileDefaults(PolicyMap* policy_map);
// Sets default system-wide policies values for enterprise users.
void SetEnterpriseUsersSystemWideDefaults(PolicyMap* policy_map);
// Sets all default values for enterprise users.
void SetEnterpriseUsersDefaults(PolicyMap* policy_map);
#endif

// Returns the PolicyDetails for |policy| if |policy| is a known
// Chrome policy, otherwise returns nullptr.
const PolicyDetails* GetChromePolicyDetails(
const std::string& policy);

// Returns the schema data of the Chrome policy schema.
const policy::internal::SchemaData* GetChromeSchemaData();

// Key names for the policy settings.
namespace key {

extern const char kAIModeSettings[];
extern const char kAccessControlAllowMethodsInCORSPreflightSpecConformant[];
extern const char kAccessibilityPerformanceFilteringAllowed[];
extern const char kAdditionalDnsQueryTypesEnabled[];
extern const char kAdsSettingForIntrusiveAdsSites[];
extern const char kAllHttpAuthSchemesAllowedForOrigins[];
extern const char kAllowBackForwardCacheForCacheControlNoStorePageEnabled[];
extern const char kAllowDeletingBrowserHistory[];
extern const char kAllowSocketPoolSizeRandomizationForProxies[];
extern const char kAllowWebAuthnWithBrokenTlsCerts[];
extern const char kAllowedDomainsForApps[];
extern const char kAllowedDomainsForAppsList[];
extern const char kAlternateErrorPagesEnabled[];
extern const char kAndroidEntraSsoEnabled[];
extern const char kAuthAndroidNegotiateAccountType[];
extern const char kAuthNegotiateDelegateAllowlist[];
extern const char kAuthSchemes[];
extern const char kAuthServerAllowlist[];
extern const char kAutoFillEnabled[];
extern const char kAutoSelectCertificateForUrls[];
extern const char kAutofillAddressEnabled[];
extern const char kAutofillCreditCardEnabled[];
extern const char kAutofillPredictionSettings[];
extern const char kAutofillSettings[];
extern const char kAutomaticDownloadsAllowedForUrls[];
extern const char kAutomaticDownloadsBlockedForUrls[];
extern const char kAutomaticFullscreenAllowedForUrls[];
extern const char kAutomaticFullscreenBlockedForUrls[];
extern const char kAutoplayAllowed[];
extern const char kAutoplayAllowlist[];
extern const char kBackForwardCacheEnabled[];
extern const char kBackForwardCacheForWebSocketsAllowed[];
extern const char kBlockExternalExtensions[];
extern const char kBlockThirdPartyCookies[];
extern const char kBookmarkBarEnabled[];
extern const char kBrowserSignin[];
extern const char kBrowsingDataLifetime[];
extern const char kBuiltInDnsClientEnabled[];
extern const char kCACertificates[];
extern const char kCACertificatesWithConstraints[];
extern const char kCADistrustedCertificates[];
extern const char kCAHintCertificates[];
extern const char kCAPlatformIntegrationEnabled[];
extern const char kCORSNonWildcardRequestHeadersSupport[];
extern const char kCacheEncryptionEnabled[];
extern const char kCertificateTransparencyEnforcementDisabledForCas[];
extern const char kCertificateTransparencyEnforcementDisabledForUrls[];
extern const char kChromeDataRegionSetting[];
extern const char kChromeForTestingAllowed[];
extern const char kChromeVariations[];
extern const char kClearWindowNameForNewBrowsingContextGroup[];
extern const char kClipboardAllowedForUrls[];
extern const char kClipboardBlockedForUrls[];
extern const char kCloudExtensionRequestEnabled[];
extern const char kCloudManagementEnrollmentToken[];
extern const char kCloudPolicyOverridesPlatformPolicy[];
extern const char kCloudProfileReportingEnabled[];
extern const char kCloudReportingEnabled[];
extern const char kCloudReportingUploadFrequency[];
extern const char kCloudUserPolicyMerge[];
extern const char kCloudUserPolicyOverridesCloudMachinePolicy[];
extern const char kCoalesceH2ConnectionsWithClientCertificatesForHosts[];
extern const char kComponentUpdatesEnabled[];
extern const char kContextualSearchEnabled[];
extern const char kCookiesAllowedForUrls[];
extern const char kCookiesBlockedForUrls[];
extern const char kCookiesSessionOnlyForUrls[];
extern const char kCpuPerformanceTierOverride[];
extern const char kDataControlsRules[];
extern const char kDataURLWhitespacePreservationEnabled[];
extern const char kDataUrlInSvgUseEnabled[];
extern const char kDataUrlInWebWorkerOpaqueOriginEnabled[];
extern const char kDefaultAutomaticDownloadsSetting[];
extern const char kDefaultClipboardSetting[];
extern const char kDefaultCookiesSetting[];
extern const char kDefaultGeolocationSetting[];
extern const char kDefaultIdleDetectionSetting[];
extern const char kDefaultImagesSetting[];
extern const char kDefaultJavaScriptJitSetting[];
extern const char kDefaultJavaScriptOptimizerSetting[];
extern const char kDefaultJavaScriptSetting[];
extern const char kDefaultNotificationsSetting[];
extern const char kDefaultPopupsSetting[];
extern const char kDefaultSearchProviderAlternateURLs[];
extern const char kDefaultSearchProviderEnabled[];
extern const char kDefaultSearchProviderEncodings[];
extern const char kDefaultSearchProviderImageURL[];
extern const char kDefaultSearchProviderImageURLPostParams[];
extern const char kDefaultSearchProviderName[];
extern const char kDefaultSearchProviderSearchURL[];
extern const char kDefaultSearchProviderSearchURLPostParams[];
extern const char kDefaultSearchProviderSuggestURL[];
extern const char kDefaultSearchProviderSuggestURLPostParams[];
extern const char kDefaultSensorsSetting[];
extern const char kDefaultSerialGuardSetting[];
extern const char kDefaultWebBluetoothGuardSetting[];
extern const char kDefaultWebHidGuardSetting[];
extern const char kDefaultWebUsbGuardSetting[];
extern const char kDeveloperToolsAvailability[];
extern const char kDeveloperToolsAvailabilityAllowlist[];
extern const char kDeveloperToolsAvailabilityBlocklist[];
extern const char kDisableAuthNegotiateCnameLookup[];
extern const char kDisableSafeBrowsingProceedAnyway[];
extern const char kDisableScreenshots[];
extern const char kDnsOverHttpsMode[];
extern const char kDnsOverHttpsTemplates[];
extern const char kDomainReliabilityAllowed[];
extern const char kDownloadRestrictions[];
extern const char kEditBookmarksEnabled[];
extern const char kEnableExperimentalPolicies[];
extern const char kEnableMediaRouter[];
extern const char kEncryptedClientHelloEnabled[];
extern const char kEnterpriseAuthenticationAppLinkPolicy[];
extern const char kEnterpriseHardwarePlatformAPIEnabled[];
extern const char kEnterpriseRealTimeUrlCheckMode[];
extern const char kExplicitlyAllowedNetworkPorts[];
extern const char kExtensionAllowedTypes[];
extern const char kExtensionDOMActivityLoggingEnabled[];
extern const char kExtensionDeveloperModeSettings[];
extern const char kExtensionInstallAllowlist[];
extern const char kExtensionInstallBlocklist[];
extern const char kExtensionInstallCloudPolicyChecksEnabled[];
extern const char kExtensionInstallForcelist[];
extern const char kExtensionInstallSources[];
extern const char kExtensionSettings[];
extern const char kExtensionUnpublishedAvailability[];
extern const char kFeedbackSurveysEnabled[];
extern const char kFindAndFillWithGeminiSettings[];
extern const char kFindsSettings[];
extern const char kForceBrowserSignin[];
extern const char kForceGoogleSafeSearch[];
extern const char kForcePermissionPolicyUnloadDefaultEnabled[];
extern const char kForceSafeSearch[];
extern const char kForceYouTubeRestrict[];
extern const char kForceYouTubeSafetyMode[];
extern const char kGeminiActOnWebAllowedForURLs[];
extern const char kGeminiActOnWebBlockedForURLs[];
extern const char kGeminiActOnWebSettings[];
extern const char kGeminiSettings[];
extern const char kGenAILocalFoundationalModelSettings[];
extern const char kGenAiDefaultSettings[];
extern const char kGeolocationBlockedForUrls[];
extern const char kGloballyScopeHTTPAuthCacheEnabled[];
extern const char kHSTSPolicyBypassList[];
extern const char kHappyEyeballsV3Enabled[];
extern const char kHistoryClustersVisible[];
extern const char kHomepageIsNewTabPage[];
extern const char kHomepageLocation[];
extern const char kHttpAllowlist[];
extern const char kHttpsOnlyMode[];
extern const char kHttpsUpgradesEnabled[];
extern const char kIPv6ReachabilityOverrideEnabled[];
extern const char kIdleDetectionAllowedForUrls[];
extern const char kIdleDetectionBlockedForUrls[];
extern const char kIdleTimeout[];
extern const char kIdleTimeoutActions[];
extern const char kImagesAllowedForUrls[];
extern const char kImagesBlockedForUrls[];
extern const char kIncognitoEnabled[];
extern const char kIncognitoModeAvailability[];
extern const char kIncognitoModeUrlAllowlist[];
extern const char kIncognitoModeUrlBlocklist[];
extern const char kInsecureFormsWarningsEnabled[];
extern const char kIntensiveWakeUpThrottlingEnabled[];
extern const char kIntranetRedirectBehavior[];
extern const char kIsolateOrigins[];
extern const char kIsolateOriginsAndroid[];
extern const char kIsolateOriginsShortlist[];
extern const char kIsolatedModeSettings[];
extern const char kJavaScriptAllowedForUrls[];
extern const char kJavaScriptBlockedForUrls[];
extern const char kJavaScriptJitAllowedForSites[];
extern const char kJavaScriptJitBlockedForSites[];
extern const char kJavaScriptOptimizerAllowedForSites[];
extern const char kJavaScriptOptimizerBlockedForSites[];
extern const char kJavascriptEnabled[];
extern const char kLegacyCookieScopeEnabled[];
extern const char kLegacyCookieScopeEnabledForDomainList[];
extern const char kLegacyTechReportAllowlist[];
extern const char kLensCameraAssistedSearchEnabled[];
extern const char kListenToThisPageEnabled[];
extern const char kLocalNetworkAccessAllowedForUrls[];
extern const char kLocalNetworkAccessBlockedForUrls[];
extern const char kLocalNetworkAccessIpAddressSpaceOverrides[];
extern const char kLocalNetworkAccessPermissionsPolicyDefaultEnabled[];
extern const char kLocalNetworkAccessRestrictionsTemporaryOptOut[];
extern const char kLocalNetworkAllowedForUrls[];
extern const char kLocalNetworkBlockedForUrls[];
extern const char kLookalikeWarningAllowlistDomains[];
extern const char kLoopbackNetworkAllowedForUrls[];
extern const char kLoopbackNetworkBlockedForUrls[];
extern const char kManagedBookmarks[];
extern const char kMandatoryExtensionsForIncognitoNavigation[];
extern const char kMaxConnectionsPerProxy[];
extern const char kMaxConnectionsPerProxyForWebSocket[];
extern const char kMetricsReportingEnabled[];
extern const char kNTPContentSuggestionsEnabled[];
extern const char kNTPCustomBackgroundEnabled[];
extern const char kNetworkPredictionOptions[];
extern const char kNewTabPageLocation[];
extern const char kNotificationsAllowedForUrls[];
extern const char kNotificationsBlockedForUrls[];
extern const char kNtlmV2Enabled[];
extern const char kOnFileDownloadedEnterpriseConnector[];
extern const char kOnNetworkRequestEnterpriseConnector[];
extern const char kOnSecurityEventEnterpriseConnector[];
extern const char kOutOfProcessSystemDnsResolutionEnabled[];
extern const char kOverrideSecurityRestrictionsOnInsecureOrigin[];
extern const char kPartitionedBlobUrlUsage[];
extern const char kPasswordLeakDetectionEnabled[];
extern const char kPasswordManagerEnabled[];
extern const char kPasswordSharingEnabled[];
extern const char kPaymentMethodQueryEnabled[];
extern const char kPolicyAtomicGroupsEnabled[];
extern const char kPolicyDictionaryMultipleSourceMergeList[];
extern const char kPolicyListMultipleSourceMergeList[];
extern const char kPolicyTestPageEnabled[];
extern const char kPopupsAllowedForUrls[];
extern const char kPopupsBlockedForUrls[];
extern const char kPreciseGeolocationAllowedForUrls[];
extern const char kPreferSlowCiphers[];
extern const char kPreferSlowKexAlgorithms[];
extern const char kPrefetchWithServiceWorkerEnabled[];
extern const char kPrintingEnabled[];
extern const char kPrivacySandboxAdMeasurementEnabled[];
extern const char kPrivacySandboxAdTopicsEnabled[];
extern const char kPrivacySandboxPromptEnabled[];
extern const char kPrivacySandboxSiteEnabledAdsEnabled[];
extern const char kPromptForDownloadLocation[];
extern const char kProtectedContentIdentifiersAllowed[];
extern const char kProvisionManagedClientCertificateForBrowser[];
extern const char kProvisionManagedClientCertificateForUser[];
extern const char kProxyBypassList[];
extern const char kProxyMode[];
extern const char kProxyOverrideRules[];
extern const char kProxyPacUrl[];
extern const char kProxyProvisioningDomains[];
extern const char kProxyServer[];
extern const char kProxyServerMode[];
extern const char kProxySettings[];
extern const char kQRCodeGeneratorEnabled[];
extern const char kReduceAcceptLanguageEnabled[];
extern const char kRestrictAccountsToPatterns[];
extern const char kRestrictBackgroundFetchFromServiceWorkerEnabled[];
extern const char kSSLErrorOverrideAllowed[];
extern const char kSSLErrorOverrideAllowedForOrigins[];
extern const char kSaasUsageReportingDomainUrlsForBrowsers[];
extern const char kSaasUsageReportingDomainUrlsForProfiles[];
extern const char kSafeBrowsingAllowlistDomains[];
extern const char kSafeBrowsingEnabled[];
extern const char kSafeBrowsingExtendedReportingEnabled[];
extern const char kSafeBrowsingProtectionLevel[];
extern const char kSafeBrowsingProxiedRealTimeChecksAllowed[];
extern const char kSafeSitesFilterBehavior[];
extern const char kSameOriginTabCaptureAllowedByOrigins[];
extern const char kSavingBrowserHistoryDisabled[];
extern const char kScreenCaptureAllowed[];
extern const char kScreenCaptureAllowedByOrigins[];
extern const char kScrollToTextFragmentEnabled[];
extern const char kSearchContentSharingSettings[];
extern const char kSearchSuggestEnabled[];
extern const char kSensorsAllowedForUrls[];
extern const char kSensorsBlockedForUrls[];
extern const char kSerialAllowAllPortsForUrls[];
extern const char kSerialAllowUsbDevicesForUrls[];
extern const char kSerialAskForUrls[];
extern const char kSerialBlockedForUrls[];
extern const char kServiceWorkerAutoPreloadEnabled[];
extern const char kServiceWorkerToControlSrcdocIframeEnabled[];
extern const char kSharedWorkerBlobURLFixEnabled[];
extern const char kSharedWorkerExtendedLifetimeEnabled[];
extern const char kShoppingListEnabled[];
extern const char kShowFullUrlsInAddressBar[];
extern const char kShowHomeButton[];
extern const char kSigninAllowed[];
extern const char kSitePerProcessAndroid[];
extern const char kStandardizedBrowserZoomEnabled[];
extern const char kStaticStorageQuotaEnabled[];
extern const char kStrictMimetypeCheckForWorkerScriptsEnabled[];
extern const char kSuppressDifferentOriginSubframeDialogs[];
extern const char kSyncDisabled[];
extern const char kSyncTypesListDisabled[];
extern const char kTLS13EarlyDataEnabled[];
extern const char kTabCaptureAllowedByOrigins[];
extern const char kTabCompareSettings[];
extern const char kTabGroupSharingSettings[];
extern const char kThirdPartyAiChatSettings[];
extern const char kThirdPartyPasswordManagersAllowed[];
extern const char kTosDialogBehavior[];
extern const char kTranslateEnabled[];
extern const char kURLAllowlist[];
extern const char kURLBlocklist[];
extern const char kUrlKeyedAnonymizedDataCollectionEnabled[];
extern const char kUrlKeyedMetricsAllowed[];
extern const char kUserFeedbackAllowed[];
extern const char kUserSecurityAuthenticatedReporting[];
extern const char kUserSecuritySignalsReporting[];
extern const char kVariationsRestrictParameter[];
extern const char kVirtualKeyboardResizesLayoutByDefault[];
extern const char kWebAudioOutputBufferingEnabled[];
extern const char kWebAuthenticationRemoteDesktopAllowedOrigins[];
extern const char kWebHidAllowAllDevicesForUrls[];
extern const char kWebHidAllowDevicesForUrls[];
extern const char kWebHidAllowDevicesWithHidUsagesForUrls[];
extern const char kWebHidAskForUrls[];
extern const char kWebHidBlockedForUrls[];
extern const char kWebRtcEventLogCollectionAllowed[];
extern const char kWebRtcUdpPortRange[];
extern const char kWebUsbAllowDevicesForUrls[];
extern const char kWebUsbAskForUrls[];
extern const char kWebUsbBlockedForUrls[];
extern const char kWebXRImmersiveArEnabled[];
extern const char kWindowCaptureAllowedByOrigins[];
extern const char kXSLTEnabled[];

}  // namespace key

// Group names for the policy settings.
namespace group {

extern const char kActiveDirectoryManagement[];
extern const char kAttestation[];
extern const char kAutomaticDownloadsSettings[];
extern const char kBrowserIdle[];
extern const char kBrowserSwitcher[];
extern const char kCloudReporting[];
extern const char kControlledFrameSettings[];
extern const char kCookiesSettings[];
extern const char kDateAndTime[];
extern const char kDefaultSearchProvider[];
extern const char kDeviceAttributesSettings[];
extern const char kDirectSocketsSettings[];
extern const char kDisplay[];
extern const char kDrive[];
extern const char kExtensions[];
extern const char kFloatingSso[];
extern const char kGeolocationSettings[];
extern const char kGoogleCast[];
extern const char kHomepage[];
extern const char kImageSettings[];
extern const char kJavascriptSettings[];
extern const char kKerberosPrefilledConfig[];
extern const char kKeygenSettings[];
extern const char kKiosk[];
extern const char kLegacyCookieScopeSettings[];
extern const char kLegacySameSiteCookieBehaviorSettings[];
extern const char kLocalFontsSettings[];
extern const char kLocalNetworkAccessSettings[];
extern const char kLoginScreenOrigins[];
extern const char kNativeMessaging[];
extern const char kNetworkFileShares[];
extern const char kNotificationsSettings[];
extern const char kPasswordManager[];
extern const char kPasswordProtection[];
extern const char kPinUnlock[];
extern const char kPluginVm[];
extern const char kPluginsSettings[];
extern const char kPopupsSettings[];
extern const char kPrivacySandbox[];
extern const char kPrivateNetworkRequestSettings[];
extern const char kProfileSeparation[];
extern const char kProtectedContent[];
extern const char kProxy[];
extern const char kQuickUnlock[];
extern const char kRemoteAccess[];
extern const char kRestoreOnStartup[];
extern const char kSAML[];
extern const char kSafeBrowsing[];
extern const char kScreenCaptureSettings[];
extern const char kSensorsSettings[];
extern const char kSkyVaultSettings[];
extern const char kSmartCardConnectSettings[];
extern const char kSocketPoolSizeSettings[];
extern const char kSupervisedUsers[];
extern const char kUserAndDeviceReporting[];
extern const char kWebPrintingSettings[];
extern const char kWebRtc[];
extern const char kWebUsbSettings[];
extern const char kWiFi[];
extern const char kWindowManagementSettings[];

}  // namespace group

struct AtomicGroup {
  const short id;
  const char* policy_group;
  const char* const* policies;
};

extern const AtomicGroup kPolicyAtomicGroupMappings[];

extern const size_t kPolicyAtomicGroupMappingsLength;

// Arrays of metapolicies.
namespace metapolicy {

extern const char* const kMerge[3];
extern const char* const kPrecedence[2];

}  // namespace metapolicy

// The policies that are considered only if the user is part of an AD
// domain on Windows, managed on Mac, or enrolled in Chrome Enterprise Core.
base::span<const char* const> GetSensitivePolicies();

enum class StringPolicyType {
  STRING,
  JSON,
  EXTERNAL,
};

// Read/write access to the protobufs of all supported boolean user policies.
struct BooleanPolicyAccess {
  const char* policy_key;
  bool per_profile;
  bool (*has_proto)(const em::CloudPolicySettings& policy);
  const em::BooleanPolicyProto& (*get_proto)(
      const em::CloudPolicySettings& policy);
  em::BooleanPolicyProto* (*get_proto_mutable)(
      em::CloudPolicySettings& policy);
};
extern const std::array<BooleanPolicyAccess, 123> kBooleanPolicyAccess;

// Read/write access to the protobufs of all supported integer user policies.
struct IntegerPolicyAccess {
  const char* policy_key;
  bool per_profile;
  bool (*has_proto)(const em::CloudPolicySettings& policy);
  const em::IntegerPolicyProto& (*get_proto)(
      const em::CloudPolicySettings& policy);
  em::IntegerPolicyProto* (*get_proto_mutable)(
      em::CloudPolicySettings& policy);
};
extern const std::array<IntegerPolicyAccess, 55> kIntegerPolicyAccess;

// Read/write access to the protobufs of all supported string user policies.
struct StringPolicyAccess {
  const char* policy_key;
  bool per_profile;
  bool (*has_proto)(const em::CloudPolicySettings& policy);
  const em::StringPolicyProto& (*get_proto)(
      const em::CloudPolicySettings& policy);
  em::StringPolicyProto* (*get_proto_mutable)(
      em::CloudPolicySettings& policy);
  const StringPolicyType type;
};
extern const std::array<StringPolicyAccess, 46> kStringPolicyAccess;

// Read/write access to the protobufs of all supported stringlist user policies.
struct StringListPolicyAccess {
  const char* policy_key;
  bool per_profile;
  bool (*has_proto)(const em::CloudPolicySettings& policy);
  const em::StringListPolicyProto& (*get_proto)(
      const em::CloudPolicySettings& policy);
  em::StringListPolicyProto* (*get_proto_mutable)(
      em::CloudPolicySettings& policy);
};
extern const std::array<StringListPolicyAccess, 90> kStringListPolicyAccess;

constexpr int64_t kDevicePolicyExternalDataResourceCacheSize = 0;

}  // namespace policy::test

#endif  // COMPONENTS_POLICY_POLICY_CONSTANTS_MUTABLE_H_
