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

<!--
This file is used to generate a comprehensive list of Enterprise histograms
along with a detailed description for each histogram.

For best practices on writing histogram descriptions, see
https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md

Please follow the instructions in the OWNERS file in this directory to find a
reviewer. If no OWNERS file exists, please consider signing up at
go/reviewing-metrics (Googlers only), as all subdirectories are expected to
have an OWNERS file. As a last resort you can send the CL to
chromium-metrics-reviews@google.com.
-->

<histogram-configuration>

<histograms>

<variants name="AutoEnrollmentStates">
  <variant name="ConnectionError" summary="Connection error"/>
  <variant name="Disabled" summary="Disabled"/>
  <variant name="Enrollment" summary="Enrollment"/>
  <variant name="NoEnrollment" summary="No enrollment"/>
  <variant name="ServerError" summary="Server error"/>
  <variant name="StateKeysRetrievalError" summary="State keys retrieval error"/>
</variants>

<variants name="CertificateProvisioningOutcome">
  <variant name="Failure" summary="failed"/>
  <variant name="Success" summary="successful"/>
</variants>

<variants name="CertificateProvisioningScenario">
  <variant name="CertificateCreation" summary="certificate creation"/>
  <variant name="CertificateRenewal" summary="certificate renewal"/>
  <variant name="ExistingIdentity" summary="existing identity"/>
  <variant name="Unknown" summary="unknown"/>
</variants>

<variants name="CleanupHandler">
  <variant name="Browser"
      summary="Handler for open browser windows and browsing data"/>
  <variant name="Clipboard" summary="Handler for clipboard"/>
  <variant name="Extension" summary="Handler for extensions"/>
  <variant name="Files" summary="Handler for files"/>
  <variant name="Lacros" summary="Handler which calls cleanup on Lacros"/>
  <variant name="LacrosBrowser"
      summary="Handler for open browser windows and browsing data on Lacros"/>
  <variant name="LacrosExtension" summary="Handler for extensions on Lacros"/>
  <variant name="LacrosWebApp" summary="Handler for web apps on Lacros"/>
  <variant name="PinnedApps" summary="Handler for pinned apps"/>
  <variant name="PrintJobs" summary="Handler for print jobs"/>
  <variant name="WebApp" summary="Handler for web apps"/>
</variants>

<variants name="ClientCertificateUploadScenario">
  <variant name="CreateCertificate" summary="certificate creation"/>
</variants>

<variants name="ClientCertLevel">
  <variant name="Browser" summary="browser"/>
  <variant name="Profile" summary="profile"/>
</variants>

<variants name="ContentAnalysisProtocol">
  <variant name="Multipart"
      summary="Content analysis of user action is done with the Multipart
               protocol."/>
  <variant name="Resumable"
      summary="Content analysis of user action is done with the Resumable
               protocol."/>
</variants>

<variants name="ContentAnalysisRequestType">
  <variant name="ClipboardCopy" summary="Content analysis of copied data."/>
  <variant name="File"
      summary="Content analysis of uploaded or downloaded files."/>
  <variant name="NetworkRequest"
      summary="Content analysis of network requests."/>
  <variant name="Print" summary="Content analysis of printed pages."/>
  <variant name="Text" summary="Content analysis of pasted text."/>
</variants>

<!-- LINT.IfChange(DeepScanAccessPoint) -->

<variants name="DeepScanAccessPoint">
  <variant name="Actor" summary="Initiated from an actor/agent action"/>
  <variant name="Download" summary="Initiated from downloading 1+ file(s)"/>
  <variant name="DragAndDrop"
      summary="Initiated from drag-and-dropping text or 1+ file(s)"/>
  <variant name="FileTransfer"
      summary="Initiated from transferring 1+ file(s) in ChromeOS"/>
  <variant name="NetworkRequest" summary="Initiated from a network request"/>
  <variant name="Paste" summary="Initiated from pasting text"/>
  <variant name="Print" summary="Initiated from printing a page"/>
  <variant name="Upload" summary="Initiated from uploading 1+ file(s)"/>
</variants>

<!-- LINT.ThenChange(//components/enterprise/connectors/core/common.h:DeepScanAccessPoint) -->

<!-- LINT.IfChange(EncryptedCacheDecryptionSource) -->

<variants name="EncryptedCacheDecryptionSource">
  <variant name="EnsurePreviousNotLast"
      summary="decryption triggered by write padding check"/>
  <variant name="Read" summary="decryption triggered by client read"/>
  <variant name="Truncate"
      summary="decryption triggered by last chunk re-encryption on truncate"/>
  <variant name="Write"
      summary="decryption triggered by partial overwrite RMW"/>
</variants>

<!-- LINT.ThenChange(//services/network/enterprise/encryption/encrypted_cache_file.h:DecryptionSource) -->

<variants name="EncryptedCacheOperation">
  <variant name="Open"
      summary="Opening the file (checking header validity and initializing
               encryptor)"/>
  <variant name="Read" summary="Reading and decrypting a chunk"/>
  <variant name="Write" summary="Encrypting and writing a chunk"/>
</variants>

<variants name="Enterprise_CrdSessionType">
  <variant name="RemoteAccess"
      summary="A CRD session where the admin has exclusive control of the
               ChromeOs device."/>
  <variant name="RemoteSupport"
      summary="A CRD session where the admin and the local user share control
               of the ChromeOs device."/>
  <variant name="Unknown"
      summary="When the CRD session type couldn't be determined."/>
</variants>

<variants name="Enterprise_RemoteCommandType">
  <variant name=".BrowserClearBrowsingData" summary="Clear Browsing Data"/>
  <variant name=".BrowserExtensionUpdateCheck"
      summary="Extension Update Check"/>
  <variant name=".BrowserRotateAttestationCredential"
      summary="Rotate Attestation Credential"/>
  <variant name=".CommandEchoTest" summary="Command echo test"/>
  <variant name=".DeviceFetchStatus" summary="Fetch status"/>
  <variant name=".DeviceGetAvailableDiagnosticRoutines"
      summary="Get available diagnostic routines"/>
  <variant name=".DeviceGetDiagnosticRoutineUpdate"
      summary="Get diagnostic routine update"/>
  <variant name=".DeviceReboot" summary="Reboot"/>
  <variant name=".DeviceRefreshEnterpriseMachineCertificate"
      summary="Refresh enterprise machine certificate"/>
  <variant name=".DeviceRemotePowerwash" summary="Powerwash"/>
  <variant name=".DeviceResetEuicc" summary="Reset EUICC"/>
  <variant name=".DeviceRunDiagnosticRoutine" summary="Run diagnostic routine"/>
  <variant name=".DeviceScreenshot" summary="Screenshot"/>
  <variant name=".DeviceSetVolume" summary="Set volume"/>
  <variant name=".DeviceStartCrdSession" summary="Device start CRD session"/>
  <variant name=".DeviceWipeUsers" summary="Wipe users"/>
  <variant name=".FetchCrdAvailabilityInfo"
      summary="Fetch CRD availability info"/>
  <variant name=".FetchSupportPacket" summary="Fetch support packet"/>
  <variant name=".QueryGeolocation" summary="Query geolocation"/>
  <variant name=".UserArcCommand" summary="ARC command"/>
</variants>

<variants name="Enterprise_SkyVaultAction">
  <variant name="Camera" summary="camera"/>
  <variant name="Download" summary="download"/>
  <variant name="Migration" summary="migration"/>
  <variant name="ScreenCapture" summary="screen capture"/>
</variants>

<variants name="Enterprise_SkyVaultCloudProvider">
  <variant name="GoogleDrive" summary="Google Drive"/>
  <variant name="OneDrive" summary="Microsoft OneDrive"/>
</variants>

<variants name="Enterprise_SkyVaultMigrationDestination">
  <variant name="Delete" summary="Delete"/>
  <variant name="GoogleDrive" summary="Google Drive"/>
  <variant name="OneDrive" summary="Microsoft OneDrive"/>
</variants>

<variants name="Enterprise_UserSessionType">
  <variant name="AffiliatedUserSession"
      summary="The local user is affiliated to the organization."/>
  <variant name="AutoLaunchedKioskSession"
      summary="The local session is auto launched kiosk."/>
  <variant name="GuestSession"
      summary="The local guest session is not managed by an organization."/>
  <variant name="ManagedGuestSession"
      summary="The local guest session is managed by an organization."/>
  <variant name="ManuallyLaunchedKioskSession"
      summary="The local session is manually launched kiosk"/>
  <variant name="NoUserSession" summary="There is no user."/>
  <variant name="UnaffiliatedUserSession"
      summary="The local user is not affiliated to the organization."/>
  <variant name="UnknownUserSession" summary="user session is unknown."/>
</variants>

<variants name="EnterpriseAutoEnrollmentType">
  <variant name=".ForcedReenrollment" summary="Forced Re-Enrollment"/>
  <variant name=".InitialEnrollment" summary="Initial Enrollment Exchange"/>
</variants>

<variants name="EnterpriseDMServerRequest">
  <variant name=""/>
  <variant name=".AndroidManagementCheck" summary="Android Management Check.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".ApiAuthCodeFetch" summary="Api Auth Code Fetch.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".AttributeUpdate" summary="Attribute Update.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".AttributeUpdatePermission"
      summary="Attribute Update Permission.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".AutoEnrollment" summary="Auto Enrollment.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".BrowserUploadPublicKey" summary="Upload browser public key.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".CertBasedRegistration" summary="Cert Based Registration.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".CertProvisioningRequest"
      summary="Client Certificate Provisioning Request.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".CheckUserAccount" summary="Check User Account.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".ChromeDesktopReport" summary="Chrome Desktop Report.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".ChromeOsUserReport" summary="ChromeOs User Report.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".ChromeProfileReport" summary="Chrome Profile Report.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".DeviceStateRetrieval" summary="Device State Retrieval.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".GcmIdUpdate" summary="Gcm Id Update.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".GenerateChromeProfileChallenge"
      summary="Generate Chrome Profile Challenges..">
    <owner>hmare@google.com</owner>
    <owner>cbe-eng@google.com</owner>
  </variant>
  <variant name=".InitialEnrollmentStateRetrieval"
      summary="Initial Enrollment State Retrieval.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".Invalid" summary="Invalid.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".OidcRegistration" summary="Registration with OIDC response.">
    <owner>xzonghan@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".PolicyFetch" summary="Policy Fetch.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".PSMDeviceStateRequest" summary="PSM Device State Request.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".PublicSamlUserRequest" summary="Public SAML User Request.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".Registration" summary="Registration.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".RemoteCommands" summary="Remote Commands.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".TokenEnrollment" summary="Token Enrollment.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".Unregistration" summary="Unregistration.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".UploadAppInstallReport" summary="Upload App Install Report.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".UploadCertificate" summary="Upload Certificate.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".UploadEncryptedReport" summary="Upload Encrypted Report.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".UploadEuiccInfo" summary="Upload EUICC Report.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".UploadFmRegistrationToken"
      summary="Upload FM Registration Token.">
    <owner>asumaneev@google.com</owner>
    <owner>chromeos-commercial-remote-management@google.com</owner>
  </variant>
  <variant name=".UploadPolicyValidationReport"
      summary="Upload Policy Validation Report.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".UploadrealtimeReport" summary="Upload of real-time reports.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".UploadStatus" summary="Upload Status.">
    <owner>rbock@google.com</owner>
    <owner>zmin@chromium.org</owner>
  </variant>
  <variant name=".UserManagementStatusAndPolicies"
      summary="User Management Status And Policies.">
    <owner>ydago@chromium.org</owner>
    <owner>cbe-eng@google.com</owner>
  </variant>
</variants>

<variants name="EnterpriseReportingEventType">
  <variant name="All" summary="All events"/>
  <variant name="BrowserCrash" summary="Browser crash events"/>
  <variant name="BrowserLaunch" summary="Browser launch events"/>
  <variant name="DangerousDownload" summary="Dangerous download events"/>
  <variant name="ExtensionInstall" summary="Extension install events"/>
  <variant name="ExtensionTelemetry" summary="Extension telemetry events"/>
  <variant name="Interstitial" summary="Interstitial events"/>
  <variant name="Login" summary="Login events"/>
  <variant name="PasswordBreach" summary="Password breach events"/>
  <variant name="PasswordChanged" summary="Password changed events"/>
  <variant name="PasswordReuse" summary="Password reuse events"/>
  <variant name="SaasUsage" summary="Saas usage report events"/>
  <variant name="SensitiveData" summary="Sensitive data events"/>
  <variant name="Unknown" summary="Unknown/uncategorized events"/>
  <variant name="UnscannedFile" summary="Unscanned file events"/>
  <variant name="UrlFilteringInterstitial"
      summary="URL filtering interstitial events"/>
</variants>

<variants name="EnterpriseSignals">
  <variant name="AntiVirus" summary="antivirus"/>
  <variant name="FileSystemInfo" summary="file system information"/>
  <variant name="Hotfixes" summary="hotfixes"/>
  <variant name="SystemSettings" summary="system settings"/>
</variants>

<variants name="FileUploadEvent">
  <variant name="OnFileAttach" summary="File upload event"/>
  <variant name="OnFileDownload" summary="File download event"/>
  <variant name="OnFileTransfer" summary="File transfer event"/>
</variants>

<variants name="IdentityType">
  <variant name="Dasher-based" summary="google-backed 3P identity"/>
  <variant name="Dasherless" summary="non-google-backed 3P identity"/>
</variants>

<variants name="PolicyLevel">
  <variant name="Mandatory" summary="Mandatory Policy"/>
  <variant name="Recommended" summary="Recommended Policy"/>
</variants>

<variants name="PromotionPages">
  <variant name="Management" summary="chrome://management"/>
  <variant name="Policy" summary="chrome://policy"/>
</variants>

<variants name="ReportingScope">
  <variant name="Browser" summary="Browser-level reporting"/>
  <variant name="Profile" summary="Profile-level reporting"/>
</variants>

<variants name="ResumableRequestCheckType">
  <variant name="Content" summary="Content upload step of a Resumable request"/>
  <variant name="Metadata"
      summary="Metadata upload step of a Resumable request."/>
</variants>

<variants name="StateDeterminationDmRequestTypes">
  <variant name="PsmRlweOprf" summary="PSM RLWE OPRF"/>
  <variant name="PsmRlweQuery" summary="PSM RLWE Query"/>
  <variant name="State" summary="state"/>
</variants>

<variants name="StateDeterminationSteps">
  <variant name="OPRFRequest" summary="PSM OPRF request"/>
  <variant name="OwnershipCheck" summary="ownership check"/>
  <variant name="QueryRequest" summary="PSM Query request"/>
  <variant name="StateKeysRetrieval" summary="state keys retrieval"/>
  <variant name="StateRequest" summary="state request"/>
</variants>

<variants name="WmiSystemSignal">
  <variant name="AntiVirus" summary="AntiVirus info"/>
  <variant name="Hotfixes" summary="Hotfix info"/>
</variants>

<histogram name="Enterprise.AccountStatusCheckResult"
    enum="EnterpriseAccountStatus" expires_after="2026-12-20">
  <owner>dkuzmin@google.com</owner>
  <owner>cros-oobe@google.com</owner>
  <summary>
    Recorded when user enters their account on license packged device during
    enrollment process.
  </summary>
</histogram>

<histogram name="Enterprise.AndroidEntraSso.Duration.{Result}" units="ms"
    expires_after="2027-03-30">
  <owner>ssolarewicz@google.com</owner>
  <owner>cec-growth@google.com</owner>
  <summary>
    Records the duration of the Entra SSO authentication event on Android which
    finished {Result}. Time is measured from the moment the navigation is
    defered. This metric is emitted by enterprise_auth::EntraProviderAndroid
    just before the navigation is resumed.
  </summary>
  <token key="Result">
    <variant name="Failure" summary="unsuccessfully"/>
    <variant name="NoBroker"
        summary="by discovering that SSO is not supported on the given device"/>
    <variant name="Success" summary="successfully"/>
  </token>
</histogram>

<histogram name="Enterprise.AndroidEntraSso.FailureReason"
    enum="AndroidEntraSsoFailureReason" expires_after="2027-03-30">
  <owner>ssolarewicz@google.com</owner>
  <owner>cec-growth@google.com</owner>
  <summary>
    Records the reason of a failed authentication event for Entra SSO on
    Android. This metric is emitted by enterprise_auth::EntraProviderAndroid
    just before the navigation is resumed.
  </summary>
</histogram>

<histogram name="Enterprise.AndroidEntraSso.HeaderSkipReason"
    enum="AndroidEntraSsoHeaderSkipReason" expires_after="2027-03-30">
  <owner>ssolarewicz@google.com</owner>
  <owner>cec-growth@google.com</owner>
  <summary>
    If a header provided by the Android OS for the purpose of the Entra SSO
    authentication event is skipped, reason is emitted via this histogram. This
    metric is emitted by enterprise_auth::EntraProviderAndroid during parsing of
    the authentication headers.
  </summary>
</histogram>

<histogram name="Enterprise.AndroidEntraSso.Result"
    enum="AndroidEntraSsoResult" expires_after="2027-03-30">
  <owner>ssolarewicz@google.com</owner>
  <owner>cec-growth@google.com</owner>
  <summary>
    Records the outcome of the Entra SSO authentication event on Android. This
    metric is emitted by enterprise_auth::EntraProviderAndroid just before the
    navigation is resumed.
  </summary>
</histogram>

<histogram name="Enterprise.AttributesTPMConsistency"
    enum="EnterpriseAttributesTPMConsistencyType" expires_after="never">
<!-- expires-never: Needed for health check. -->

  <owner>igorcov@chromium.org</owner>
  <owner>vsavu@google.com</owner>
  <summary>
    Consistency between TPM lock state and absence/presence of install
    attributes at boot.
  </summary>
</histogram>

<histogram name="Enterprise.AutoEnrollmentControllerTimeout"
    enum="EnterpriseAutoEnrollmentControllerTimeoutReport"
    expires_after="2026-07-12">
  <owner>vsavu@google.com</owner>
  <owner>igorcov@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Count the number of timeouts and successes for AutoEnrollmentController.
  </summary>
</histogram>

<histogram name="Enterprise.AutoEnrollmentPrivateSetMembershipSuccessTime"
    units="ms" expires_after="2027-04-06">
  <owner>sergiyb@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Duration of the private set membership request to determine enrollment state
    of the device. Only recorded if it finished successfully.

    The histogram was expired (not recording data) from 2022-04-10 until
    2022-07-15.
  </summary>
</histogram>

<histogram
    name="Enterprise.AutoEnrollmentPsmDmServerRequestStatus{EnterpriseAutoEnrollmentType}"
    enum="EnterpriseDeviceManagementStatus" expires_after="2027-04-06">
  <owner>sergiyb@chromium.org</owner>
  <owner>igorcov@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Device management server request status for auto-enrollment PSM requests.
    {EnterpriseAutoEnrollmentType}

    The histogram was expired (not recording data) from 2021-10-31 until
    2021-11-09.
  </summary>
  <token key="EnterpriseAutoEnrollmentType"
      variants="EnterpriseAutoEnrollmentType">
    <variant name=""/>
  </token>
</histogram>

<histogram
    name="Enterprise.AutoEnrollmentPsmRequestNetworkErrorCode{EnterpriseAutoEnrollmentType}"
    enum="NetErrorCodes" expires_after="2027-04-06">
  <owner>sergiyb@chromium.org</owner>
  <owner>igorcov@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Network error code (if applicable) for auto-enrollment PSM requests.
    {EnterpriseAutoEnrollmentType}

    The histogram was expired (not recording data) from 2021-10-31 until
    2021-11-09.
  </summary>
  <token key="EnterpriseAutoEnrollmentType"
      variants="EnterpriseAutoEnrollmentType">
    <variant name=""/>
  </token>
</histogram>

<histogram
    name="Enterprise.AutoEnrollmentPsmResult{EnterpriseAutoEnrollmentType}"
    enum="PsmResult" expires_after="2027-03-09">
  <owner>sergiyb@chromium.org</owner>
  <owner>igorcov@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    All possible PSM protocol results after it has executed successfully or
    terminated due to an error or timeout. This request is used to determine the
    initial enrollment state of the device. {EnterpriseAutoEnrollmentType}

    The histogram was expired (not recording data) from 2021-10-31 until
    2021-11-09.
  </summary>
  <token key="EnterpriseAutoEnrollmentType"
      variants="EnterpriseAutoEnrollmentType">
    <variant name=""/>
  </token>
</histogram>

<histogram name="Enterprise.Boca.Spotlight.Crd.Result"
    enum="EnterpriseCrdSessionResultCode" expires_after="2026-10-25">
  <owner>caott@google.com</owner>
  <owner>cros-edu-eng@google.com</owner>
  <summary>
    Reports success/failure when a spotlight session in Boca app is attempted.
  </summary>
</histogram>

<histogram
    name="Enterprise.BrowserLaunchEvent.ProcessCreationToUploadLatency.{Scope}"
    units="ms" expires_after="2027-06-15">
  <owner>qiutanw@google.com</owner>
  <owner>chrome-enterprise-security@google.com</owner>
  <summary>
    Records the time elapsed from the browser process creation (launch time) to
    the successful upload of the browser launch event. Only recorded for
    successful uploads. Emitted by BrowserLaunchEventController when the upload
    callback returns success.
  </summary>
  <token key="Scope" variants="ReportingScope"/>
</histogram>

<histogram name="Enterprise.BrowserLaunchEvent.RetryCount.{Scope}"
    units="count" expires_after="2027-06-15">
  <owner>qiutanw@google.com</owner>
  <owner>chrome-enterprise-security@google.com</owner>
  <summary>
    Records the number of retries performed before a successful browser launch
    event upload. Emitted by BrowserLaunchEventController when the upload
    callback returns success.
  </summary>
  <token key="Scope" variants="ReportingScope"/>
</histogram>

<histogram name="Enterprise.BrowserLaunchEvent.SwitchCount.{Scope}"
    units="count" expires_after="2027-06-15">
  <owner>qiutanw@google.com</owner>
  <owner>chrome-enterprise-security@google.com</owner>
  <summary>
    Records the number of command-line switches reported in the browser launch
    event. Emitted by BrowserLaunchEventController when the event is collected
    at startup, regardless of upload success.
  </summary>
  <token key="Scope" variants="ReportingScope"/>
</histogram>

<histogram name="Enterprise.BrowserLaunchEvent.UploadResult.{Scope}"
    enum="EnterpriseReportingUploadResult" expires_after="2027-06-15">
  <owner>qiutanw@google.com</owner>
  <owner>chrome-enterprise-security@google.com</owner>
  <summary>
    Records the final outcome of the browser launch event upload process.
    Emitted by BrowserLaunchEventController when it either succeeds or gives up
    (due to permanent error or retry limit).
  </summary>
  <token key="Scope" variants="ReportingScope"/>
</histogram>

<histogram name="Enterprise.BrowserSigninIOS.SignedOutByPolicy"
    enum="BooleanHit" expires_after="2023-06-30">
  <owner>gujen@google.com</owner>
  <owner>goanuj@google.com</owner>
  <summary>
    Recorded when a signed-in user is automatically signed out of the browser
    due to the BrowserSignin policy being set to 0 (sign-in disabled) by their
    organization. The sample is always recorded as true.

    Warning: This histogram was expired from 2021-06-30 to 2022-11-30; data may
    be missing.
  </summary>
</histogram>

<histogram name="Enterprise.BrowserSigninIOS.SignInInterruptedByPolicy"
    enum="BooleanHit" expires_after="2023-06-30">
  <owner>gujen@google.com</owner>
  <owner>goanuj@google.com</owner>
  <summary>
    Recorded when a user is in the process of signing in to the browser, but is
    interrupted due to the BrowserSignin policy being set to 0 (sign-in
    disabled) by their organization. The sample is always recorded as true.

    Warning: This histogram was expired from 2021-06-30 to 2022-11-30; data may
    be missing.
  </summary>
</histogram>

<histogram name="Enterprise.CacheEncryptionPolicyEnabled" enum="BooleanEnabled"
    expires_after="2027-02-17">
  <owner>haihan@google.com</owner>
  <owner>valadkevich@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records whether the CacheEncryptionEnabled enterprise policy is enabled, or
    if the EnableCacheEncryptionForTesting flag is set. Logged during network
    context initialization when evaluating whether the HTTP cache should be
    encrypted. Useful for slicing Finch experiment data.
  </summary>
</histogram>

<histogram name="Enterprise.CBCMPolicyInvalidations"
    enum="EnterprisePolicyInvalidations" expires_after="2027-02-07">
  <owner>zmin@chromium.org</owner>
  <owner>cbe-eng@google.com</owner>
  <summary>
    Events for counting CBCM policy invalidations received with and without
    payloads. Invalidations indicate that a policy has been updated and should
    be refreshed. Payloads provide context about the policy update, but may be
    absent if dropped by the invalidation service.
  </summary>
</histogram>

<histogram name="Enterprise.CBCMPolicyRefresh" enum="EnterprisePolicyRefresh"
    expires_after="2027-02-07">
  <owner>zmin@chromium.org</owner>
  <owner>cbe-eng@google.com</owner>
  <summary>
    Events measuring effectiveness of refreshing CBCM policy when invalidations
    are received from a service. For each refresh, indicates whether the policy
    changed, and whether the policy was invalidated at the time of the refresh.
  </summary>
</histogram>

<histogram name="Enterprise.CBCMRealTimeReportEnqueue"
    enum="EnterpriseCloudReportingStatusCode" expires_after="2026-12-01">
  <owner>zmin@chromium.org</owner>
  <owner>src/chrome/browser/enterprise/reporting/OWNERS</owner>
  <summary>
    Recorded when real time report enter the queue. It indicates whether the
    report is pushed to the queue successfully or not.
  </summary>
</histogram>

<histogram name="Enterprise.CBCMRemoteCommand.Executed"
    enum="RemoteCommandExecutionStatus" expires_after="2026-11-01">
  <owner>nicolaso@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <owner>cbe-eng@google.com</owner>
  <summary>
    Events for counting status of executed CBCM remote commands. The metric
    includes only signed CBCM remote commands. Reports a final status of
    finished remote command (e.g. success, failure or termination).
  </summary>
</histogram>

<histogram name="Enterprise.CBCMRemoteCommand.Received"
    enum="RemoteCommandReceivedStatus" expires_after="2026-11-01">
  <owner>nicolaso@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <owner>cbe-eng@google.com</owner>
  <summary>
    Events for counting received CBCM remote commands. The metric includes
    signed CBCM remote commands, both valid and invalid. Valid remote command is
    counted by its type. Invalid remote command is counted by a reason why it is
    considered invalid (e.g. unknown type or duplication).
  </summary>
</histogram>

<histogram name="Enterprise.CBCMRemoteCommandInvalidations"
    enum="EnterprisePolicyInvalidations" expires_after="2026-11-01">
  <owner>nicolaso@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <owner>cbe-eng@google.com</owner>
  <summary>
    Events for counting CBCM remote commands invalidations received with and
    without payloads. Invalidations indicate that there is a remote command to
    execute. Payloads provide context about the remote commands update, but may
    be absent if dropped by the invalidation service.
  </summary>
</histogram>

<histogram name="Enterprise.CertificateStore.LevelDB.InitStatus.{Retry}"
    units="code" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the initialization status returned after initializing {Retry} a
    LevelDB database instance used by the managed client certificates store.
  </summary>
  <token key="Retry">
    <variant name="NoRetry" summary="without retry"/>
    <variant name="WithRetry" summary="with retry"/>
  </token>
</histogram>

<histogram name="Enterprise.ClientCertificate.Ash.CertificateImportError"
    enum="KcerError" expires_after="2028-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the Kcer error returned when importing a managed client certificate
    into the ChromeOS (Kcer) user token fails. Recorded on ChromeOS each time a
    certificate commit fails during client certificate provisioning.
  </summary>
</histogram>

<histogram name="Enterprise.ClientCertificate.Ash.GeneratedKeyInfoError"
    enum="KcerError" expires_after="2027-08-11">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the Kcer error returned when reading back the KeyInfo of a freshly
    generated ChromeOS client certificate key fails. The key itself was still
    generated successfully; only its hardware-backing state could not be
    confirmed, so it is reported as software-backed. See also
    Enterprise.ClientCertificate.Ash.KeyTaggingError, which is recorded
    immediately before this KeyInfo lookup in the same post-generation sequence.
    Managed-identity keys are generated at most once per profile: only when the
    profile has no usable persisted key, which in practice means once, the first
    time the policy provisions an identity. Certificate renewal reuses the
    existing key, so this is not recorded on a TLS handshake, navigation, or
    browser boot.
  </summary>
</histogram>

<histogram name="Enterprise.ClientCertificate.Ash.HardwareKeyGenerationError"
    enum="KcerError" expires_after="2028-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the Kcer error returned when hardware-backed (TPM) key generation
    fails and the ChromeOS client certificate provisioning flow falls back to a
    software key. Key generation is recorded at most once per profile: only when
    the profile has no usable persisted key, which in practice means once, the
    first time the policy provisions an identity. Certificate renewal reuses the
    existing key, so this is not recorded on a TLS handshake, navigation, or
    browser boot.
  </summary>
</histogram>

<histogram name="Enterprise.ClientCertificate.Ash.KeyRemovalError"
    enum="KcerError" expires_after="2028-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the Kcer error returned when removing a managed client certificate
    key (and its certificates) from the ChromeOS (Kcer) user token fails. Covers
    both the SPKI-targeted deletion and the browser enterprise client
    certificate key sweep. Recorded on ChromeOS each time a removal fails.
  </summary>
</histogram>

<histogram name="Enterprise.ClientCertificate.Ash.KeyTaggingError"
    enum="KcerError" expires_after="2028-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the Kcer error returned when tagging a freshly generated key as a
    browser enterprise client certificate key fails. Tagging is best-effort and
    does not abort provisioning, so this tracks how often the ownership metadata
    used for later cleanup/auditing ends up missing. Recorded at most once per
    profile (in practice, once, the first time the policy provisions an
    identity).
  </summary>
</histogram>

<histogram name="Enterprise.ClientCertificate.Ash.SoftwareKeyGenerationError"
    enum="KcerError" expires_after="2027-08-11">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the Kcer error returned when software-backed key generation fails
    after the hardware-backed generation attempt already failed. See also
    Enterprise.ClientCertificate.Ash.HardwareKeyGenerationError, which is always
    recorded first in this fallback path. Same cadence as that metric: recorded
    at most once per profile, only when the profile has no usable persisted key
    (in practice, once, the first time the policy provisions an identity); not
    recorded on certificate renewal, which reuses the existing key.
  </summary>
</histogram>

<histogram
    name="Enterprise.ClientCertificate.{Level}.CreateCertificate.Success.HasCert"
    enum="BooleanSuccess" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures whether the HTTP response body for the {Level} certificate creation
    request had a certificate or not.
  </summary>
  <token key="Level" variants="ClientCertLevel"/>
</histogram>

<histogram name="Enterprise.ClientCertificate.{Level}.CreatePrivateKey.Source"
    enum="CertificatePrivateKeySource" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the source of a private key creation after it was created (e.g.
    TPM-backed or not) as part of the client certificate provisioning flow for a
    {Level}.
  </summary>
  <token key="Level" variants="ClientCertLevel"/>
</histogram>

<histogram name="Enterprise.ClientCertificate.{Level}.IOS.ClientIdentityError"
    enum="ClientIdentityIOSError" expires_after="2027-01-02">
  <owner>antoli@google.com</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures a terminal error that occurred when trying to instantiate a
    SecIdentityRef for a {Level} level client certificate on iOS.
  </summary>
  <token key="Level" variants="ClientCertLevel"/>
</histogram>

<histogram
    name="Enterprise.ClientCertificate.{Level}.Provisioning.Cleanup.Success"
    enum="BooleanSuccess" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures whether the best-effort cleanup of managed key material, performed
    when the client certificate provisioning policy is disabled, succeeded for a
    {Level}. Recorded on ChromeOS each time the policy is observed disabled.
  </summary>
  <token key="Level" variants="ClientCertLevel"/>
</histogram>

<histogram name="Enterprise.ClientCertificate.{Level}.Provisioning.Error"
    enum="CertificateProvisioningError" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures a terminal error that occured when trying to provision a client
    certificate for a {Level}.
  </summary>
  <token key="Level" variants="ClientCertLevel"/>
</histogram>

<histogram name="Enterprise.ClientCertificate.{Level}.Provisioning.Store.Error"
    enum="CertificateStoreError" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures a terminal store error that occured when trying to provision a
    client certificate for a {Level}.
  </summary>
  <token key="Level" variants="ClientCertLevel"/>
</histogram>

<histogram
    name="Enterprise.ClientCertificate.{Level}.Provisioning.{ProvisioningScenario}.Outcome"
    enum="BooleanSuccess" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures whether the {ProvisioningScenario} provisioning scenario was
    successful or not for {Level} level client certificates.
  </summary>
  <token key="Level" variants="ClientCertLevel"/>
  <token key="ProvisioningScenario" variants="CertificateProvisioningScenario"/>
</histogram>

<histogram
    name="Enterprise.ClientCertificate.{Level}.Provisioning.{ProvisioningScenario}.{ProvisioningOutcome}.Latency"
    units="ms" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures how long a {ProvisioningOutcome} {ProvisioningScenario}
    provisioning scenario took for {Level} level client certificates.
  </summary>
  <token key="Level" variants="ClientCertLevel"/>
  <token key="ProvisioningScenario" variants="CertificateProvisioningScenario"/>
  <token key="ProvisioningOutcome" variants="CertificateProvisioningOutcome"/>
</histogram>

<histogram
    name="Enterprise.ClientCertificate.{Level}.{UploadScenario}.ClientError"
    enum="CertificateUploadClientError" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures a client error that occured when trying to upload a {Level}'s
    public key for {UploadScenario}.
  </summary>
  <token key="Level" variants="ClientCertLevel"/>
  <token key="UploadScenario" variants="ClientCertificateUploadScenario"/>
</histogram>

<histogram
    name="Enterprise.ClientCertificate.{Level}.{UploadScenario}.UploadCode"
    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the HTTP response code for the upload of a {Level}'s public key for
    {UploadScenario}.
  </summary>
  <token key="Level" variants="ClientCertLevel"/>
  <token key="UploadScenario" variants="ClientCertificateUploadScenario"/>
</histogram>

<histogram name="Enterprise.ClientCertificates.ClankKeySecurityLevel"
    enum="ClankClientCertificatesBrowserKeySecurityLevel"
    expires_after="2027-01-17">
  <owner>eliashomsi@google.com</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the security level of a private key created for client certificate
    provisioning on Android. This indicates if the key is software-backed,
    hardware-backed in a TEE, or secured by a StrongBox.
  </summary>
</histogram>

<histogram name="Enterprise.CloudExtensionRequestUpdated"
    enum="EnterpriseCloudExtensionRequestListUpdate" expires_after="2026-12-01">
  <owner>zmin@chromium.org</owner>
  <owner>src/chrome/browser/enterprise/reporting/OWNERS</owner>
  <summary>
    Recorded when cloud extension request pending list is updated. Note that
    when multiple requests are added or removed together, there will be only one
    event recorded.
  </summary>
</histogram>

<histogram name="Enterprise.CloudManagement.PolicyFetchingTime" units="ms"
    expires_after="2027-02-07">
  <owner>ftirelo@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    The amount of time for fetching cloud policies, measured from the moment the
    request object is created until the client receives the policy payload.
  </summary>
</histogram>

<histogram name="Enterprise.CloudManagementEnrollmentTokenLocation.Mac"
    enum="EnterpriseCloudManagementEnrollmentTokenLocationMac"
    expires_after="2026-12-01">
  <owner>zmin@chromium.org</owner>
  <owner>igorruvinov@chromium.org</owner>
  <summary>
    Records the enrollment token location when the token is loaded.
  </summary>
</histogram>

<histogram name="Enterprise.CloudPolicy.HasPreferenceMappingErrors"
    enum="Boolean" expires_after="2027-06-01">
  <owner>morez@google.com</owner>
  <owner>cbe-eng@google.com</owner>
  <summary>
    Recorded whenever policies are updated and mapped to browser preferences.
    Logs whether there were any errors mapping policy settings to standard
    browser preferences (e.g., invalid types, schema violations, deprecated
    values).
  </summary>
</histogram>

<histogram name="Enterprise.CloudPolicy.LocalCacheWriteStatus"
    enum="EnterpriseCloudPolicyLocalCacheWriteStatus"
    expires_after="2027-06-01">
  <owner>morez@google.com</owner>
  <owner>cbe-eng@google.com</owner>
  <summary>
    Recorded when the policy or signing key cache file is written to disk in the
    profile directory. Logs directory creation failure, file write failure, or
    success.
  </summary>
</histogram>

<histogram name="Enterprise.CloudPolicy.ProfileCanBeManagedForManagedUser"
    enum="Boolean" expires_after="2027-06-01">
  <owner>morez@google.com</owner>
  <owner>cbe-eng@google.com</owner>
  <summary>
    Recorded when a user is managed but profile cannot be managed. This
    generally indicates a bug in sign-in which has caused a bad state, where
    policies should be applied but are not. Android only.
  </summary>
</histogram>

<histogram name="Enterprise.CloudReporting.DroppedReportSize.{ReportType}"
    units="KB" expires_after="2027-06-01">
  <owner>morez@google.com</owner>
  <owner>cbe-eng@google.com</owner>
  <summary>
    Recorded when a {ReportType} report is dropped because its size exceeds the
    maximum report size limit allowed for upload. Logs the size of the dropped
    payload in KB.
  </summary>
  <token key="ReportType" variants="ReportingScope"/>
</histogram>

<histogram
    name="Enterprise.CloudReporting.ReportUploadLatency.{ReportType}{SecuritySignalsMode}"
    units="ms" expires_after="2027-06-01">
  <owner>morez@google.com</owner>
  <owner>cbe-eng@google.com</owner>
  <summary>
    The total processing wall-clock duration from the moment a {ReportType}
    report is triggered with security signals mode {SecuritySignalsMode} until
    it successfully finishes uploading or returns a final network error.
  </summary>
  <token key="ReportType" variants="ReportingScope"/>
  <token key="SecuritySignalsMode">
    <variant name="NoSignals" summary="No security signals attached"/>
    <variant name="SignalsAttached" summary="Security signals attached"/>
    <variant name="SignalsOnly" summary="Security signals only"/>
  </token>
</histogram>

<histogram name="Enterprise.CloudReporting.SchedulerOverrun" enum="Boolean"
    expires_after="2027-06-01">
  <owner>morez@google.com</owner>
  <owner>cbe-eng@google.com</owner>
  <summary>
    Fires a boolean metric on background startup periodic timer events. Logs
    true if the timer fired but a previous report generation task is still
    active, indicating that report generation/upload has overrun the cycle
    (e.g., due to retries or slow generation).
  </summary>
</histogram>

<histogram name="Enterprise.CloudReportingBasicRequestSize" units="KB"
    expires_after="2027-02-07">
  <owner>zmin@chromium.org</owner>
  <owner>pastarmovj@chromium.org</owner>
  <summary>
    The proto size of the basic Chrome browser cloud management reporting
    request. When a report is separated into multiple requests, all of them
    contain the basic request.
  </summary>
</histogram>

<histogram
    name="Enterprise.CloudReportingPolicyStatus.Profile.{SecuritySignalsMode}"
    enum="EnterpriseCloudReportingPolicyStatus" expires_after="2027-05-15">
  <owner>zmin@chromium.org</owner>
  <owner>cec-eng@google.com</owner>
  <summary>
    Records the policy status of the profile being reported in an enterprise
    profile report. Recorded when a profile report is going to be uploaded with
    security signals mode {SecuritySignalsMode}.
  </summary>
  <token key="SecuritySignalsMode">
    <variant name="NoSignals" summary="No security signals attached"/>
    <variant name="SignalsAttached" summary="Security signals attached"/>
    <variant name="SignalsOnly" summary="Security signals only"/>
  </token>
</histogram>

<histogram
    name="Enterprise.CloudReportingProfileCount.Profile.{SecuritySignalsMode}"
    units="profiles" expires_after="2027-05-15">
  <owner>zmin@chromium.org</owner>
  <owner>cec-eng@google.com</owner>
  <summary>
    Records the number of profiles being reported in an enterprise profile
    report. Recorded when a profile report is going to be uploaded with security
    signals mode {SecuritySignalsMode}.
  </summary>
  <token key="SecuritySignalsMode">
    <variant name="NoSignals" summary="No security signals attached"/>
    <variant name="SignalsAttached" summary="Security signals attached"/>
    <variant name="SignalsOnly" summary="Security signals only"/>
  </token>
</histogram>

<histogram name="Enterprise.CloudReportingReportGenerationError"
    enum="EnterpriseCloudReportingReportGenerationError"
    expires_after="2027-03-13">
  <owner>hmare@google.com</owner>
  <owner>cbe-eng@google.com</owner>
  <summary>
    The error status of an enterprise cloud report generation attempt.
  </summary>
</histogram>

<histogram name="Enterprise.CloudReportingRequestCount" units="requests"
    expires_after="2026-12-01">
  <owner>zmin@chromium.org</owner>
  <owner>pastarmovj@chromium.org</owner>
  <summary>
    The number of request for one Chrome browser cloud management report. A
    report is separated into multiple requests when it's too large.
  </summary>
</histogram>

<histogram name="Enterprise.CloudReportingRequestSize.{ReportType}" units="KB"
    expires_after="2026-12-01">
  <owner>zmin@chromium.org</owner>
  <owner>pastarmovj@chromium.org</owner>
  <summary>
    The proto size of each Chrome browser cloud management {ReportType}
    reporting request. It includes the requests which are more than 5MB and
    discarded.
  </summary>
  <token key="ReportType" variants="ReportingScope"/>
</histogram>

<histogram name="Enterprise.CloudReportingResponse"
    enum="EnterpriseCloudReportingResponse" expires_after="2027-02-07">
  <owner>zmin@chromium.org</owner>
  <owner>pastarmovj@chromium.org</owner>
  <summary>
    The upload result for each cloud reporting request. Note that there may be
    multiple requests per report. Also, one request may creates multiple data
    point due to retry.
  </summary>
</histogram>

<histogram name="Enterprise.CloudReportingUploadTrigger"
    enum="ReportSchedulerReportTrigger" expires_after="never">
<!-- expires-never: this provides a generally useful signal regarding enterprise report uploads. -->

  <owner>grt@chromium.org</owner>
  <owner>src/chrome/browser/enterprise/reporting/OWNERS</owner>
  <summary>
    The trigger detected by the ReportScheduler responsible that led to an
    attempt to upload an enterprise report.
  </summary>
</histogram>

<histogram name="Enterprise.CwsPromotionBannerEvent"
    enum="CwsPromotionBannerEvent" expires_after="2027-01-29">
  <owner>przybytniowska@google.com</owner>
  <owner>austinzzr@chromium.org</owner>
  <summary>
    It will be recorded when promotion banner is displayed or clicked on Chrome
    Web Store.
  </summary>
</histogram>

<histogram name="Enterprise.DataControls.DragAndDrop.EvaluationLatency"
    units="ms" expires_after="2027-02-09">
  <owner>rslan@google.com</owner>
  <owner>cep-se@google.com</owner>
  <summary>
    Records the time taken to evaluate the Data Controls policy verdict for a
    drag and drop operation. This is synchronous on the UI thread. Recorded when
    the policy evaluation finishes, immediately before the verdict is returned.
  </summary>
</histogram>

<histogram name="Enterprise.DataControls.DragAndDrop.Verdict"
    enum="DataControlsDragAndDropVerdict" expires_after="2027-02-09">
  <owner>rslan@google.com</owner>
  <owner>cep-se@google.com</owner>
  <summary>
    Records the verdict of the Data Controls policy check for a drag and drop
    operation. This is recorded when the kDataControlsDragEnforcement feature is
    enabled and the policy evaluation completes.
  </summary>
</histogram>

<histogram name="Enterprise.DataControls.GlicPaste.EvaluationLatency"
    units="ms" expires_after="2027-06-29">
  <owner>haihan@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records the time taken to evaluate the Data Controls policy verdict for a
    Glic paste operation. This is synchronous on the UI thread. Recorded when
    the policy evaluation finishes, immediately before the verdict is returned.
  </summary>
</histogram>

<histogram name="Enterprise.DataControls.GlicPaste.Verdict"
    enum="EnterpriseDlpPolicyLevel" expires_after="2027-06-29">
  <owner>haihan@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records the verdict of the Data Controls policy check for a Glic paste
    operation. Recorded when the policy evaluation completes.
  </summary>
</histogram>

<histogram name="Enterprise.DataControls.Paste.EvaluationLatency" units="ms"
    expires_after="2027-07-22">
  <owner>richardbadir@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records the time taken to evaluate Data Controls policy conditions for a
    clipboard paste operation. Recorded synchronously on the UI thread when
    GetPasteVerdict() finishes, immediately before returning the verdict.
  </summary>
</histogram>

<histogram name="Enterprise.DataControls.Screenshot.EvaluationLatency"
    units="ms" expires_after="2027-07-22">
  <owner>richardbadir@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records the time taken to evaluate Data Controls policy conditions for a
    screenshot check. Recorded synchronously on the UI thread when
    BlockScreenshots() finishes, immediately before returning the verdict.
  </summary>
</histogram>

<histogram name="Enterprise.DataControls.SearchWith.Verdict"
    enum="EnterpriseDlpPolicyLevel" expires_after="2027-05-11">
  <owner>anaercegovac@google.com</owner>
  <owner>cep-se@google.com</owner>
  <summary>
    Records the verdict of the Data Controls policy check for a user clicking
    the &quot;Search [Default Search Engine] with [selected text]&quot; button.
    Increases in 'WARN' counts within this histogram indicate potential data
    exfiltration being actioned by the policy. The 'BLOCK' bucket is expected to
    be empty since the 'Search' item is hidden for block verdicts.
  </summary>
</histogram>

<histogram name="Enterprise.DataCopied.DataSize" units="bytes"
    expires_after="2027-07-15">
  <owner>eliashomsi@google.com</owner>
  <owner>cbe-data-protection-eng@google.com</owner>
  <summary>
    Records the size (in bytes) of data that might have been scanned by the Copy
    Enterprise Connector. It is logged once per user action.
  </summary>
</histogram>

<histogram name="Enterprise.DataProtection.URLVerdictSource"
    enum="DataProtectionURLVerdictSource" expires_after="2027-01-24">
  <owner>alshawwa@chromium.org</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records where the realtime url lookup verdict is read from in the data
    protection navigation observer. It is logged once per navigation.
  </summary>
</histogram>

<histogram name="Enterprise.DataProtection.VerdictCacheEvent"
    enum="DataProtectionVerdictCacheEvent" expires_after="2027-01-24">
  <owner>alshawwa@chromium.org</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records where the realtime url lookup verdict was read from a scan request
    or the local cache.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceLocalAccountCount" units="accounts"
    expires_after="M130">
  <owner>igorcov@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>Logs the number of device local accounts on the device.</summary>
</histogram>

<histogram name="Enterprise.DeviceLocalAccountPolicyInvalidations2"
    enum="EnterprisePolicyInvalidations" expires_after="2027-01-24">
  <owner>asumaneev@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events for counting device local account policy invalidations received with
    and without payloads. Invalidations indicate that a policy has been updated
    and should be refreshed. Payloads provide context about the policy update,
    but may be absent if dropped by the invalidation service.

    As opposed to current histogram, Enterprise.DevicePolicyInvalidations2
    counts only events of device policy invalidations.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceLocalAccountPolicyRefresh3"
    enum="EnterprisePolicyRefresh" expires_after="2027-02-14">
  <owner>asumaneev@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events measuring effectiveness of refreshing device local account policy
    when invalidations are received from a service. For each refresh, indicates
    whether the policy changed, and whether the policy was invalidated at the
    time of the refresh.

    As opposed to current histogram, Enterprise.DevicePolicyRefresh3 counts only
    events of refreshing device policies.
  </summary>
</histogram>

<histogram name="Enterprise.DevicePolicyDeviceIdValidity2.{EnrollmentType}"
    enum="EnterprisePolicyDeviceIdValidity" expires_after="2026-07-09">
  <owner>igorcov@chromium.org</owner>
  <owner>emaxx@chromium.org</owner>
  <summary>
    On ChromeOS, the result of the device ID validation in the device policy
    blob compared to the device ID from install attributes. Emitted every time
    the device policy was loaded or stored successfully after additional check
    for the presence of DM Token is done. This allows to filter out the cases of
    enrollment recovery.
  </summary>
  <token key="EnrollmentType">
    <variant name="NewEnrollmentDemo"/>
    <variant name="NewEnrollmentEnterprise"/>
    <variant name="OldEnrollmentDemo"/>
    <variant name="OldEnrollmentEnterprise"/>
  </token>
</histogram>

<histogram name="Enterprise.DevicePolicyInvalidations2"
    enum="EnterprisePolicyInvalidations" expires_after="2026-06-28">
  <owner>asumaneev@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events for counting device policy invalidations received with and without
    payloads. Invalidations indicate that a policy has been updated and should
    be refreshed. Payloads provide context about the policy update, but may be
    absent if dropped by the invalidation service.

    As opposed to current histogram,
    Enterprise.DeviceLocalAccountPolicyInvalidations2 counts only events of
    device local account policy invalidations.
  </summary>
</histogram>

<histogram name="Enterprise.DevicePolicyRefresh3"
    enum="EnterprisePolicyRefresh" expires_after="2026-10-25">
  <owner>asumaneev@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events measuring effectiveness of refreshing device policy when
    invalidations are received from a service. For each refresh, indicates
    whether the policy changed, and whether the policy was invalidated at the
    time of the refresh.

    As opposed to current histogram, Enterprise.DeviceLocalAccountPolicyRefresh3
    counts only events of refreshing device local account policies.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceRemoteCommand.Crd.Result"
    enum="EnterpriseCrdSessionResultCode" expires_after="2027-01-24">
  <owner>macinashutosh@google.com</owner>
  <owner>chromeos-commercial-crd@google.com</owner>
  <summary>Reports success/failure when a session is attempted.</summary>
</histogram>

<histogram
    name="Enterprise.DeviceRemoteCommand.Crd.{Enterprise_CrdSessionType}.{Enterprise_UserSessionType}.Result"
    enum="EnterpriseCrdSessionResultCode" expires_after="2027-01-04">
  <owner>macinashutosh@google.com</owner>
  <owner>chromeos-commercial-crd@google.com</owner>
  <summary>
    Reports success/failure when a session is attempted for the
    {Enterprise_CrdSessionType} and {Enterprise_UserSessionType}
  </summary>
  <token key="Enterprise_CrdSessionType" variants="Enterprise_CrdSessionType"/>
  <token key="Enterprise_UserSessionType"
      variants="Enterprise_UserSessionType"/>
</histogram>

<histogram
    name="Enterprise.DeviceRemoteCommand.Executed{Enterprise_RemoteCommandType}"
    enum="RemoteCommandExecutionStatus" expires_after="2027-01-03">
  <owner>asumaneev@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events for counting status of executed device remote commands. The metric
    includes only signed device remote commands. Reports a final status of
    finished remote command (e.g. success, failure or termination).
    {Enterprise_RemoteCommandType}
  </summary>
  <token key="Enterprise_RemoteCommandType"
      variants="Enterprise_RemoteCommandType">
    <variant name=""/>
  </token>
</histogram>

<histogram name="Enterprise.DeviceRemoteCommand.FetchSupportPacket.Failure"
    enum="EnterpriseFetchSupportPacketFailureType" expires_after="2025-11-01">
  <owner>iremuguz@google.com</owner>
  <owner>chromeos-commercial-supportability@google.com</owner>
  <summary>
    Reports the failure reason of the FETCH_SUPPORT_PACKET remote command. It
    will be recorded by DeviceCommandFetchSupportPacketJob class when the
    command execution has completed with failure. It will indicate in which
    stage of execution had the failure (e.g. wrong command payload, error when
    exporting the generated support packet or enqueueing the LogUploadEvent to
    ReportQueue).
  </summary>
</histogram>

<histogram name="Enterprise.DeviceRemoteCommand.Received"
    enum="RemoteCommandReceivedStatus" expires_after="2027-01-03">
  <owner>asumaneev@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events for counting received device remote commands. The metric includes
    signed device remote commands, both valid and invalid. Valid remote command
    is counted by its type. Invalid remote command is counted by a reason why it
    is considered invalid (e.g. unknown type or duplication).
  </summary>
</histogram>

<histogram name="Enterprise.DeviceRemoteCommandInvalidations"
    enum="EnterprisePolicyInvalidations" expires_after="2027-01-03">
  <owner>asumaneev@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events for counting device remote commands invalidations received with and
    without payloads. Invalidations indicate that there is a remote command to
    execute. Payloads provide context about the remote commands update, but may
    be absent if dropped by the invalidation service.

    Metric is similar to Enterprise.DevicePolicyInvalidations2. Device local
    account scope does not exist for remote commands so there is no metric for
    remote commands similar to
    Enterprise.DeviceLocalAccountPolicyInvalidations2.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceSettings.MissingPolicyMitigated"
    enum="BooleanSuccess" expires_after="2025-12-01">
  <owner>rbock@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <owner>managed-devices@google.com</owner>
  <summary>
    Recorded every time policy file is missing or corrupted on Chrome OS. Should
    be compared to Enterprise.DeviceSettings.UpdatedStatus as happens only if
    status is STORE_NO_POLICY and device being not managed.

    Warning: this histogram was expired from 2024-12-01 to 2025-03-11. Data may
    be missing.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceSettings.UpdatedStatus2"
    enum="DeviceSettingsStatus2" expires_after="2026-12-16">
  <owner>rbock@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <owner>managed-devices@google.com</owner>
  <summary>
    Recorded every time as DeviceSettingsProvider updates its current state.
    Compared to Enterprise.DeviceSettings.UpdatedStatus contains the information
    about missing key on managed devices. Used to compare rate of
    Enterprise.DeviceSettings.MissingPolicyMitigated event.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceSignals.Collection.Certificates.Error"
    enum="DeviceSignalsCertificateCollectionError" expires_after="2027-07-14">
  <owner>hmare@chromium.org</owner>
  <owner>cbe-eng@google.com</owner>
  <summary>
    Captures specific errors encountered when collecting certificates during the
    device signals collection flow. Recorded for each matched certificate that
    fails at a specific step. Successful collection events are not recorded in
    this histogram.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceSignals.Collection.CrowdStrike.Error"
    enum="DeviceSignalsParsingError" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures an error that occurred while trying to get signals from the
    CrowdStrike agent.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceSignals.Collection.CrowdStrike.FromDataFile"
    enum="Boolean" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures whether the CrowdStrike identifiers were captured from the data
    file or not.
  </summary>
</histogram>

<histogram
    name="Enterprise.DeviceSignals.Collection.Failure.{Signal}.{ErrorType}Error"
    enum="DeviceSignalsSignalCollectionError" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the actual error whenever a {Signal} signal collection request
    failed with a {ErrorType} error.
  </summary>
  <token key="Signal" variants="EnterpriseSignals"/>
  <token key="ErrorType">
    <variant name="CollectionLevel" summary="collection-level"/>
    <variant name="TopLevel" summary="top-level"/>
  </token>
</histogram>

<histogram name="Enterprise.DeviceSignals.Collection.Request.{Signal}.Items"
    units="items" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the number of items as part of the {Signal} signal collection
    response. Recorded when the collection request was received. This histogram
    applies only to parameterized signals.
  </summary>
  <token key="Signal">
    <variant name="FileSystemInfo" summary="file system items"/>
    <variant name="SystemSettings" summary="system setting items"/>
  </token>
</histogram>

<histogram name="Enterprise.DeviceSignals.Collection.SignalsCount"
    units="signals" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the number of signals requested to be collected in one request.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceSignals.Collection.Success.{Signal}.Items"
    units="items" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the number of items collected in a {Signal} signal collection
    response. Recorded only when the collection request was successful and the
    signal value represents a collection.
  </summary>
  <token key="Signal" variants="EnterpriseSignals"/>
</histogram>

<histogram
    name="Enterprise.DeviceSignals.Collection.{Outcome}.{Signal}.Latency"
    units="ms" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the signal collection latency for the {Signal} signal. Recorded
    only when the collection {Outcome}.
  </summary>
  <token key="Outcome">
    <variant name="Failure" summary="failed"/>
    <variant name="Success" summary="succeeded"/>
  </token>
  <token key="Signal" variants="EnterpriseSignals"/>
</histogram>

<histogram name="Enterprise.DeviceSignals.Collection.{Signal}.Delta"
    units="items" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the number of delta between requested and returned items as part of
    the {Signal} signal collection response. Recorded when the collection
    request was completed. This histogram applies only to parameterized signals.
  </summary>
  <token key="Signal">
    <variant name="FileSystemInfo" summary="file system items"/>
    <variant name="SystemSettings" summary="system setting items"/>
  </token>
</histogram>

<histogram name="Enterprise.DeviceSignals.Collection.{Variant}"
    enum="DeviceSignalsSignalName" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Recorded whenever a device signal collection request {Variant} for a
    particular signal.
  </summary>
  <token key="Variant">
    <variant name="Failure" summary="failed"/>
    <variant name="Request" summary="was received"/>
    <variant name="Success" summary="was successful"/>
  </token>
</histogram>

<histogram name="Enterprise.DeviceSignals.HarmfulApps.Count" units="count"
    expires_after="2027-01-02">
  <owner>xzonghan@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Recorded the number of potentialy harmful apps when SafetyNet correctly
    collect this information.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceSignals.HarmfulApps.Result"
    enum="DeviceSignalsHarmfulAppsStatus" expires_after="2027-01-02">
  <owner>xzonghan@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Recorded the success status of SafetyNet API when collecting potentially
    harmful apps.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceSignals.SafetyNet.Latency" units="ms"
    expires_after="2027-01-02">
  <owner>mwalachowski@google.com</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Records the latency of the local IPC call to the Google Play Services
    SafetyNet Verify Apps API. Recorded each time Chrome Signal Sharing requests
    the verifiedApps and potentiallyHarmfulApps signals on Android. The
    measurement starts when the JNI call is initiated and ends when the callback
    is executed in C++.
  </summary>
</histogram>

<histogram
    name="Enterprise.DeviceSignals.SystemSignalsService.Disconnect.ItemsCount"
    units="items" expires_after="2027-01-02">
  <owner>hmare@google.com</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the number of pending request that were remaining during a system
    signals service disconnect.
  </summary>
</histogram>

<histogram
    name="Enterprise.DeviceSignals.SystemSignalsService.MissingPendingCallback"
    enum="Boolean" expires_after="2027-01-02">
  <owner>hmare@google.com</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures when the system signals service is running in another process.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceSignals.UserPermission"
    enum="DeviceSignalsUserPermission" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Recorded whenever a permission evaluation has been assessed for a particular
    user for whom device signals were requested.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceTrust.Attestation.Funnel"
    enum="DTAttestationFunnelStep" expires_after="2027-01-02">
  <owner>hmare@google.com</owner>
  <owner>seblalancette@chromium.org</owner>
  <summary>
    Various steps recorded when a device goes through the device trust connector
    attestation flow with a partner website.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceTrust.Attestation.ResponseLatency.{Variant}"
    units="ms" expires_after="2027-01-02">
  <owner>hmare@google.com</owner>
  <owner>seblalancette@chromium.org</owner>
  <summary>
    Latency of a {Variant} attestation step in the overarching Device Trust
    connector's attestation flow. This measures the amount of time required to
    generate and return a response to the given challenge, which is effectively
    the last step in the overall attestation flow.
  </summary>
  <token key="Variant">
    <variant name="Failure" summary="failed"/>
    <variant name="Success" summary="successful"/>
  </token>
</histogram>

<histogram name="Enterprise.DeviceTrust.Attestation.Result"
    enum="DTAttestationResult" expires_after="2027-01-02">
  <owner>hmare@google.com</owner>
  <owner>seblalancette@chromium.org</owner>
  <summary>
    Result of the attestation step in the overarching Device Trust connector's
    attestation flow. Logged whenever the attestation step finishes, success or
    failure, and right before the throttled request resumes.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceTrust.EnrollmentStatus"
    enum="DTEnrollmentStatus" expires_after="2027-01-02">
  <owner>lmasopust@google.com</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Recorded when a device starts the device trust attestation flow with a
    partner website. This captures the enrollment status of the device where the
    attestation flow is happening.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceTrust.Handshake.Result"
    enum="DTHandshakeResult" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Recorded when a Device Trust handshake was completed between the browser and
    a server. This captures either the success or specific failure of the
    overall flow.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceTrust.Inline.Attestation.PolicyLevel"
    enum="DTAttestationPolicyLevel" expires_after="2027-01-02">
  <owner>hmare@google.com</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Policy levels enabled for the Device Trust connector during the DTC inline
    flow process. The inline flow can occur during a user navigation, and the
    policy level determines the content of the attestation services' challenge
    response.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceTrust.Key.LoadPersistedKeyResult"
    enum="DTLoadPersistedKeyResult" expires_after="2027-01-02">
  <owner>seblalancette@google.com</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Recorded when a key loading attempt was made with an enum value representing
    either a successful attempt, or different possible errors.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceTrust.Key.Signing.Latency.{Variant}"
    units="ms" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Recorded every time a Device Trust {Variant} key is successfully used to
    sign a payload. Measures the signing latency in milliseconds.
  </summary>
  <token key="Variant">
    <variant name="Hardware" summary="hardware-backed"/>
    <variant name="OS" summary="OS-backed"/>
    <variant name="Unknown" summary="unknown"/>
  </token>
</histogram>

<histogram name="Enterprise.DeviceTrust.Key.TrustLevel" enum="DTKeyTrustLevel"
    expires_after="2027-01-02">
  <owner>hmare@google.com</owner>
  <owner>seblalancette@chromium.org</owner>
  <summary>
    Recorded every time a Device Trust signing key is successfully loaded from
    persistence. This captures what trust level this key has, which in turn
    gives insights into how it was created (e.g. via a TPM or not).
  </summary>
</histogram>

<histogram name="Enterprise.DeviceTrust.Key.Type" enum="DTKeyType"
    expires_after="2027-01-02">
  <owner>hmare@google.com</owner>
  <owner>seblalancette@chromium.org</owner>
  <summary>
    Recorded every time a Device Trust signing key is successfully loaded from
    persistence. This captures what algorithm this key was generated with.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceTrust.Key.{Variant}Result"
    enum="DTKeyRotationResult" expires_after="2027-01-02">
  <owner>hmare@google.com</owner>
  <owner>seblalancette@chromium.org</owner>
  <summary>
    Recorded every time the browser attempted to {Variant} a Device Trust
    signing key. This captures the result from this process.
  </summary>
  <token key="Variant">
    <variant name="Creation" summary="create (i.e. without nonce)"/>
    <variant name="Rotation" summary="rotate (i.e. with nonce)"/>
  </token>
</histogram>

<histogram name="Enterprise.DeviceTrust.KeyRotationCommand.Error"
    enum="DTKeyRotationCommandError" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Recorded when the browser received a failed response when triggering a
    Device Trust key rotation command. The browser will then attempt to
    categorize the failure using the given enum.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceTrust.KeyRotationCommand.Error.Hresult"
    enum="Hresult" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Recorded when the browser failed to trigger a Device Trust key rotation
    command through the updater for an unknown reason. This will capture the
    unknown HRESULT returned via the COM APIs.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceTrust.KeyRotationCommand.ExitCode"
    units="exit_code" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Recorded when the browser received a failed response when triggering a
    Device Trust key rotation command. The browser will then attempt to
    categorize the failure using the given enum.
  </summary>
</histogram>

<histogram
    name="Enterprise.DeviceTrust.Mac.KeychainOSStatus.{KeyType}.{Operation}"
    enum="MacSecurityFrameworkOSStatus" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>hmare@google.com</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Recorded when a failed OSStatus code is returned from a Keychain Services
    API for the {KeyType} keypair during a {Operation} operation.
  </summary>
  <token key="KeyType">
    <variant name="Permanent" summary="permanent"/>
    <variant name="Temporary" summary="temporary"/>
  </token>
  <token key="Operation">
    <variant name="Copy" summary="Copy"/>
    <variant name="Create" summary="Create"/>
    <variant name="Delete" summary="Delete"/>
    <variant name="ExportPublicKey" summary="ExportPublicKey"/>
    <variant name="SignPayload" summary="SignPayload"/>
    <variant name="Update" summary="Update"/>
  </token>
</histogram>

<histogram name="Enterprise.DeviceTrust.Mac.SecureEnclaveOperation.{KeyType}"
    enum="DTSecureEnclaveOperationStatus" expires_after="2027-01-02">
  <owner>hmare@google.com</owner>
  <owner>seblalancette@chromium.org</owner>
  <summary>
    Recorded when a device attempts to issue an API that interacts with the
    Secure Enclave signing key in the {KeyType} key storage.
  </summary>
  <token key="KeyType">
    <variant name="Permanent" summary="permanent"/>
    <variant name="Temporary" summary="temporary"/>
  </token>
</histogram>

<histogram name="Enterprise.DeviceTrust.ManagementService.Error"
    enum="DTManagementServiceError" expires_after="2027-01-02">
  <owner>hmare@google.com</owner>
  <owner>seblalancette@chromium.org</owner>
  <summary>
    Captures any terminal failures that occur in the Device Trust management
    service binary during the execution of a command (e.g. key rotation).
  </summary>
</histogram>

<histogram name="Enterprise.DeviceTrust.Origin" enum="DTOrigin"
    expires_after="2027-01-02">
  <owner>lmasopust@google.com</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Recorded when a device starts the device trust attestation flow with a
    partner website. This captures if the attestation flow was triggered inside
    of a session or on the login screen.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceTrust.Persistence.{Operation}.Error"
    enum="DTKeyPersistenceError" expires_after="2027-01-02">
  <owner>hmare@google.com</owner>
  <owner>seblalancette@chromium.org</owner>
  <summary>
    Captures any terminal failures that occur during the process of creating,
    storing, and loading a Device Trust signing key pair during a key rotation.
  </summary>
  <token key="Operation">
    <variant name="CheckPermission"
        summary="Operation that checks the permissions for accessing the key
                 storage"/>
    <variant name="CreateKeyPair"
        summary="Operation that creates a new signing key pair"/>
    <variant name="LoadKeyPair"
        summary="Operation that loads the key pair from the persistence
                 storage"/>
    <variant name="StoreKeyPair"
        summary="Operation that stores the key pair in persistence storage"/>
  </token>
</histogram>

<histogram name="Enterprise.DeviceTrust.PublicKeyUpload.URLLoaderNetError"
    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Net error recorded when a public key upload request failed to leave the
    client.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceTrust.RotateSigningKey.Tries" units="tries"
    expires_after="2027-01-02">
  <owner>hmare@google.com</owner>
  <owner>seblalancette@chromium.org</owner>
  <summary>
    Recorded when a device attempts to rotate its device trust signing key.
    Chrome will retry a fixed number of times until the operation either
    succeeds or fails. A value of 1 means the rotation worked on the first try.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceTrust.RotateSigningKey.{Nonce}.Status"
    enum="DeviceTrustKeyRotationStatus" expires_after="2027-01-02">
  <owner>hmare@google.com</owner>
  <owner>seblalancette@chromium.org</owner>
  <summary>
    Recorded when a device attempts to rotate its device trust signing key.
    {Nonce}
  </summary>
  <token key="Nonce">
    <variant name="NoNonce"
        summary="This occurs right after the device is enrolled with CBCM."/>
    <variant name="WithNonce"
        summary="This occurs when a device receives a command from the admin
                 console."/>
  </token>
</histogram>

<histogram name="Enterprise.DeviceTrust.RotateSigningKey.{Nonce}.UploadCode"
    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2027-01-02">
  <owner>hmare@google.com</owner>
  <owner>seblalancette@chromium.org</owner>
  <summary>
    HTTP status code of the key upload request recorded when a device attempts
    to rotate its device trust signing key. {Nonce}
  </summary>
  <token key="Nonce">
    <variant name="NoNonce"
        summary="This occurs right after the device is enrolled with CBCM."/>
    <variant name="WithNonce"
        summary="This occurs when a device receives a command from the admin
                 console."/>
  </token>
</histogram>

<histogram name="Enterprise.DeviceTrust.SignalsDecorator.Latency.{Variant}"
    units="ms" expires_after="2027-01-02">
  <owner>hmare@google.com</owner>
  <owner>seblalancette@chromium.org</owner>
  <summary>
    Latency recorded when the {Variant} decorator(s) finish collecting their
    signals. Captures the amount of time required to collect the signals under
    this scope.
  </summary>
  <token key="Variant">
    <variant name="Ash" summary="Ash"/>
    <variant name="Browser" summary="Browser (without cache)"/>
    <variant name="Common" summary="Common (without cache)"/>
    <variant name="Common.WithCache" summary="Common (with cache)"/>
    <variant name="Context" summary="Context"/>
    <variant name="Full" summary="full set of"/>
    <variant name="Win" summary="Windows"/>
  </token>
</histogram>

<histogram name="Enterprise.DeviceTrust.SyncSigningKey.ClientError"
    enum="DTSynchronizationError" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures any client-side errors that caused a key synchronization flow to
    fail.
  </summary>
</histogram>

<histogram name="Enterprise.DeviceTrust.SyncSigningKey.UploadCode"
    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    HTTP status code of the key upload request recorded when a device issues a
    key synchronization request.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.ActiveFileEventsCount" units="entries"
    expires_after="2027-08-23">
  <owner>accorsi@google.com</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Number of non-expired file events stored in the
    DlpFilesController::EventStorage. It is recorded each time an entry is added
    or updated.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.CaptureModeInitBlocked" enum="BooleanBlocked"
    expires_after="2027-02-10">
  <owner>poromov@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when capture mode initialization was blocked by Data Leak
    Prevention.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.CaptureModeInitWarned" enum="BooleanWarned"
    expires_after="2027-02-10">
  <owner>aidazolic@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when the user is warned by Data Leak Prevention before capture mode
    initialization.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.ClipboardReadBlocked" enum="BooleanBlocked"
    expires_after="2027-02-07">
  <owner>poromov@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Result of Data Leak Prevention evaluation for a data read from the
    clipboard.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.ConfidentialContentsCacheEvictedOnFull"
    enum="Boolean" expires_after="2027-08-01">
  <owner>aidazolic@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when an entry is evicted from DlpConfidentialContentsCache because
    the cache has reached its maximum size limit.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.ConfidentialContentsCount" units="entries"
    expires_after="2027-02-21">
  <owner>aidazolic@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Number of items stored in the DlpConfidentialContentsCache. It is recorded
    each time a new entry is cached.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.DataTransferControllerStarted" enum="Boolean"
    expires_after="2027-02-07">
  <owner>poromov@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when DataTransferController is initialized, meaning that all
    clipboard and drag-n-drop operations will be affected by Data Leak
    Prevention checks.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.DataTransferReportingTimeDiff" units="ms"
    expires_after="2026-12-01">
  <owner>poromov@google.com</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Time difference between current and the latest sent Data Leak Prevention
    reporting events for data transfers for which sources and destinations are
    the same.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.DlpPolicyPresent" enum="Boolean"
    expires_after="2027-02-07">
  <owner>poromov@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when non-empty Data Leak Prevention policy is present and due to
    that Data Leak Prevention infrastructure is initialized on the client.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.DragDropBlocked" enum="BooleanBlocked"
    expires_after="2027-02-07">
  <owner>poromov@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Result of Data Leak Prevention evaluation for a drag-n-drop operation.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.Errors.Adaptor"
    enum="EnterpriseDlpPolicyCrOSAdaptorError" expires_after="2026-12-01">
  <owner>accorsi@google.com</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when an error occurs during adaptor usage in the Data Leak
    Prevention daemon.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.Errors.DaemonInit"
    enum="EnterpriseDlpPolicyCrOSDaemonInitError" expires_after="2027-02-10">
  <owner>accorsi@google.com</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when an error occurs while performing initialization operations in
    the Data Leak Prevention daemon.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.Errors.Fanotify"
    enum="EnterpriseDlpPolicyCrOSFanotifyError" expires_after="2026-12-01">
  <owner>accorsi@google.com</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when an error occurs during fanotify usage in the Data Leak
    Prevention daemon.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.Errors.FileDatabase"
    enum="EnterpriseDlpPolicyCrOSFileDatabaseError" expires_after="2026-12-01">
  <owner>accorsi@google.com</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when an error occurs while performing database operations in the
    Data Leak Prevention daemon.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.Errors.FilesPolicySetup" enum="Boolean"
    expires_after="2027-01-03">
  <owner>accorsi@google.com</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Record whether an error occurs during the Data Leak Prevention files policy
    setup.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.Errors.ReportQueueNotReady" enum="Boolean"
    expires_after="2026-12-01">
  <owner>accorsi@google.com</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Record whether a Data Leak Prevention event is not reported because of
    report queue setup issues.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.FanotifyDeleteEventSupport" enum="Boolean"
    expires_after="2026-10-12">
  <owner>accorsi@google.com</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Record whether the kernel supports fanotify mark filesystem.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.FanotifyMarkFilesystemSupport" enum="Boolean"
    expires_after="2026-10-12">
  <owner>accorsi@google.com</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>Record whether the kernel supports fanotify delete events.</summary>
</histogram>

<histogram name="Enterprise.Dlp.FileActionBlocked2"
    enum="EnterpriseDlpPolicyFileAction" expires_after="2026-12-01">
  <owner>accorsi@google.com</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Records when a file action is blocked because of Data Leak Prevention policy
    Files restriction. Identifies which file action was blocked.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.FileActionBlockReviewed"
    enum="EnterpriseDlpPolicyFileAction" expires_after="2027-02-10">
  <owner>ayaelattar@google.com</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Records which file action blocked by Data Leak Prevention policy is
    reviewed.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.FileActionWarned2"
    enum="EnterpriseDlpPolicyFileAction" expires_after="2026-12-01">
  <owner>accorsi@google.com</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Records when a file action is warned because of Data Leak Prevention policy
    Files restriction. Identifies which file action was warned.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.FileActionWarnProceeded"
    enum="EnterpriseDlpPolicyFileAction" expires_after="2026-11-30">
  <owner>accorsi@google.com</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Records which file action was warned because of Data Leak Prevention policy
    restrictions and proceeded by the user.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.FileActionWarnReviewed"
    enum="EnterpriseDlpPolicyFileAction" expires_after="2027-02-10">
  <owner>ayaelattar@google.com</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Records which file action warning by Data Leak Prevention policy was
    reviewed.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.FileActionWarnTimedOut"
    enum="EnterpriseDlpPolicyFileAction" expires_after="2027-02-10">
  <owner>ayaelattar@google.com</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Records which file action was warned because of Data Leak Prevention policy
    and the warning timed out.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.FilesAppOpenTimedOut" enum="Boolean"
    expires_after="2026-12-01">
  <owner>aidazolic@google.com</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Records True when opening the Files App to show a Data Leak Prevention
    dialog times out, and False when it successfully opens.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.FilesBlockedCount" units="entries"
    expires_after="2027-02-07">
  <owner>ayaelattar@google.com</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Records the number of files blocked by Data Leak Prevention policy per file
    action.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.FilesDaemonStarted" enum="Boolean"
    expires_after="2027-01-03">
  <owner>poromov@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when Data Leak Prevention policy contains Files restrictions and
    DLP Files daemon is started because of that.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.FilesDefaultFileAccess"
    enum="EnterpriseDlpFileAccessDefaultAction" expires_after="2026-12-14">
  <owner>brinky@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Record if we were not able to pin a source URL to a file open request and
    have to fallback on the default behaviour.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.FilesUnknownAccessLevel"
    units="EnterpriseDlpPolicyLevel" expires_after="2026-12-28">
  <owner>poromov@google.com</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Records the resolved Data Leak Prevention file access level every time an
    unknown unauthorized access is being resolved over IsDlpPolicyMatched.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.FilesWarnedCount" units="entries"
    expires_after="2026-11-23">
  <owner>ayaelattar@google.com</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Records the number of files warned by Data Leak Prevention policy per file
    action.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.PrintingBlocked" enum="BooleanBlocked"
    expires_after="2027-02-01">
  <owner>poromov@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>Result of Data Leak Prevention evaluation for printing.</summary>
</histogram>

<histogram name="Enterprise.Dlp.PrintingWarned" enum="BooleanWarned"
    expires_after="2027-02-01">
  <owner>aidazolic@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when there is a &quot;warn&quot; level Data Leak Prevention
    evaluation for printing.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.PrintingWarnProceeded" enum="Boolean"
    expires_after="2027-02-01">
  <owner>aidazolic@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when the user proceeded with (True) or canceled (False) the action
    after a Data Leak Prevention warning for printing.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.PrintingWarnSilentProceeded" enum="Boolean"
    expires_after="2027-02-01">
  <owner>aidazolic@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when there is a &quot;warn&quot; level Data Leak Prevention
    evaluation for a screen share, but it is caused by the content that the user
    was already warned about and decided to proceed, so no new warning is shown
    and printing is silently allowed.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.PrivacyScreenEnforced" enum="BooleanForced"
    expires_after="2027-02-01">
  <owner>poromov@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when privacy screen was enforced by Data Leak Prevention.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.ReportedBlockLevelRestriction"
    enum="EnterpriseDlpPolicyRestriction" expires_after="2027-02-07">
  <owner>poromov@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when Data Leak Prevention event with &quot;block&quot; level was
    reported. Identifies which restriction was blocked and reported.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.ReportedEventStatus" enum="GoogleRpcCode"
    expires_after="2027-02-07">
  <owner>poromov@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Result of enqueueing Data Leak Prevention event to the reporting queue.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.ReportedReportLevelRestriction"
    enum="EnterpriseDlpPolicyRestriction" expires_after="2027-02-07">
  <owner>poromov@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when Data Leak Prevention event with &quot;report&quot; level was
    reported. Identifies which restriction was reported.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.ReportedWarnLevelRestriction"
    enum="EnterpriseDlpPolicyRestriction" expires_after="2027-03-22">
  <owner>poromov@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when Data Leak Prevention event with &quot;warn&quot; level was
    reported. Identifies which restriction was reported.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.ReportedWarnProceedLevelRestriction"
    enum="EnterpriseDlpPolicyRestriction" expires_after="2027-02-01">
  <owner>poromov@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when Data Leak Prevention event with &quot;warn&quot; level was
    reported after a user proceeded with a restricted action. Identifies which
    restriction was reported.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.RestrictionConfigured"
    enum="EnterpriseDlpPolicyRestriction" expires_after="2027-02-07">
  <owner>poromov@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Records which types of restrictions are present in Data Leak Prevention
    policy.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.SameFileEventTimeDiff" units="ms"
    expires_after="2027-02-01">
  <owner>accorsi@google.com</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Time difference between the current and the latest sent Data Leak Prevention
    file events for which inodes and destinations are the same.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.ScreenShareBlocked" enum="BooleanBlocked"
    expires_after="2027-02-01">
  <owner>poromov@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Result of Data Leak Prevention evaluation for a screen share.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.ScreenSharePausedOrResumed" enum="Boolean"
    expires_after="2027-02-01">
  <owner>poromov@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when screen share was paused (True) or resumed (False) by Data Leak
    Prevention.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.ScreenShareWarned" enum="BooleanWarned"
    expires_after="2027-02-01">
  <owner>aidazolic@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when there is a &quot;warn&quot; level Data Leak Prevention
    evaluation for a screen share.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.ScreenShareWarnProceeded" enum="Boolean"
    expires_after="2027-02-01">
  <owner>aidazolic@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when the user proceeded with (True) or canceled (False) the action
    after a Data Leak Prevention warning for a screen share.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.ScreenShareWarnSilentProceeded" enum="Boolean"
    expires_after="2027-02-01">
  <owner>aidazolic@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when there is a &quot;warn&quot; level Data Leak Prevention
    evaluation for a screen share, but it is caused by the content that the user
    was already warned about and decided to proceed, so no new warning is shown
    and the screen share is silently allowed.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.ScreenshotBlocked" enum="BooleanBlocked"
    expires_after="2027-02-01">
  <owner>poromov@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Result of Data Leak Prevention evaluation for taking a screenshot or a video
    capture.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.ScreenshotWarned" enum="BooleanWarned"
    expires_after="2027-02-01">
  <owner>aidazolic@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when there is a &quot;warn&quot; level Data Leak Prevention
    evaluation for taking a screenshot or a video capture.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.ScreenshotWarnProceeded" enum="Boolean"
    expires_after="2027-02-01">
  <owner>aidazolic@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when the user proceeded with (True) or canceled (False) the action
    after a Data Leak Prevention warning shown at the capture mode
    initialization or before taking a screenshot or a video capture.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.ScreenshotWarnShutdownOverride" enum="Boolean"
    expires_after="2026-12-28">
  <owner>aidazolic@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when there is a &quot;warn&quot; level Data Leak Prevention
    evaluation for initiating capture mode, but it occurs during a shutdown
    request, so no new warning is shown and the screenshot is silently blocked.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.ScreenshotWarnSilentProceeded" enum="Boolean"
    expires_after="2027-02-01">
  <owner>aidazolic@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when there is a &quot;warn&quot; level Data Leak Prevention
    evaluation for initiating capture mode, or taking a screenshot or a video
    capture, but it is caused by the content that the user was already warned
    about and decided to proceed, so no new warning is shown and the screen
    share is silently allowed.
  </summary>
</histogram>

<histogram name="Enterprise.Dlp.VideoCaptureInterrupted" enum="Boolean"
    expires_after="2027-02-01">
  <owner>poromov@chromium.org</owner>
  <owner>chromeos-dlp@google.com</owner>
  <summary>
    Recorded when video capture was interrupted by Data Leak Prevention.
  </summary>
</histogram>

<histogram
    name="Enterprise.DMServerCloudPolicyRequestStatus{EnterpriseDMServerCloudPolicyRequest}"
    enum="EnterpriseDeviceManagementStatus" expires_after="2027-01-31">
  <owner>vincb@google.com</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    Records the returned status of fetching cloud policies from the dmserver.

    Recorded when receiving the response from the dmserver upon request
    completion with policy type {EnterpriseDMServerCloudPolicyRequest}.
  </summary>
  <token key="EnterpriseDMServerCloudPolicyRequest">
    <variant name=""/>
    <variant name=".ChromeDevicePolicy" summary="Chrome device policy"/>
    <variant name=".MachineLevelUserCloudPolicy"
        summary="Machine level policy"/>
    <variant name=".UserPolicy" summary="User policy"/>
  </token>
</histogram>

<histogram name="Enterprise.DMServerRequestSuccess{EnterpriseDMServerRequest}"
    enum="EnterpriseDMServerRequestSuccess" expires_after="2027-02-07">
  <owner>rbock@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <owner>managed-devices@google.com</owner>
  <summary>
    Number of retries the client did to execute a DeviceManagementServer
    request. It's recorded after the request has been completed, either
    successfully after 0 or more retries, with a failure (too many retries or
    non-retriable error) or with a server error. {EnterpriseDMServerRequest}
  </summary>
  <token key="EnterpriseDMServerRequest" variants="EnterpriseDMServerRequest"/>
</histogram>

<histogram name="Enterprise.DMServerResponseCode{EnterpriseDMServerRequest}"
    enum="HttpResponseCode" expires_after="2027-06-01">
  <owner>morez@google.com</owner>
  <owner>cbe-eng@google.com</owner>
  <summary>
    Recorded when a DeviceManagementServer request fails with a server error
    (HTTP response code is not 200). Logs the actual HTTP response code.
    {EnterpriseDMServerRequest}
  </summary>
  <token key="EnterpriseDMServerRequest" variants="EnterpriseDMServerRequest"/>
</histogram>

<histogram name="Enterprise.EncryptedCache.FactoryCreationSuccess"
    enum="BooleanSuccess" expires_after="2027-02-14">
  <owner>haihan@google.com</owner>
  <owner>valadkevich@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Tracks the success or failure of creating the cache encryption file
    operations factory.
  </summary>
</histogram>

<histogram name="Enterprise.EncryptedCache.KeyCreationSuccess"
    enum="BooleanSuccess" expires_after="2027-02-14">
  <owner>haihan@google.com</owner>
  <owner>valadkevich@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Tracks the success or failure of creating the cache encryption key.
  </summary>
</histogram>

<histogram name="Enterprise.EncryptedCache.KeyHasherObtainSuccess"
    enum="BooleanSuccess" expires_after="2027-02-14">
  <owner>haihan@google.com</owner>
  <owner>valadkevich@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Tracks the success or failure of obtaining the hasher for the cache entries.
  </summary>
</histogram>

<histogram name="Enterprise.EncryptedCache.KeyReencryptionSuccess"
    enum="BooleanSuccess" expires_after="2026-08-01">
  <owner>haihan@google.com</owner>
  <owner>valadkevich@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Tracks the success or failure of re-encrypting the primary key for the
    cache.
  </summary>
</histogram>

<histogram name="Enterprise.EncryptedCache.KeyRetrievalFromPrefsSuccess"
    enum="BooleanSuccess" expires_after="2027-02-14">
  <owner>haihan@google.com</owner>
  <owner>valadkevich@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Tracks the success or failure of retrieving the primary key for the cache
    from profile prefs.
  </summary>
</histogram>

<histogram
    name="Enterprise.EncryptedCache.{DecryptionSource}.DecryptionFailureChunkIndex"
    units="index" expires_after="2027-01-28">
  <owner>haihan@google.com</owner>
  <owner>valadkevich@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records the index of the chunk which failed to decrypt in the enterprise
    encrypted cache file when {DecryptionSource}.
  </summary>
  <token key="DecryptionSource" variants="EncryptedCacheDecryptionSource"/>
</histogram>

<histogram
    name="Enterprise.EncryptedCache.{DecryptionSource}.DecryptionFailureReason"
    enum="EnterpriseDiskCacheDecryptionFailureReason"
    expires_after="2027-01-28">
  <owner>haihan@google.com</owner>
  <owner>valadkevich@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records the detailed failure code when an operation on the encrypted cache
    file fails due to decryption when {DecryptionSource}.
  </summary>
  <token key="DecryptionSource" variants="EncryptedCacheDecryptionSource"/>
</histogram>

<histogram name="Enterprise.EncryptedCache.{Operation}.Result"
    enum="EnterpriseDiskCacheError" expires_after="2027-01-28">
  <owner>haihan@google.com</owner>
  <owner>valadkevich@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records the result of {Operation} in the enterprise encrypted cache file.
  </summary>
  <token key="Operation" variants="EncryptedCacheOperation"/>
</histogram>

<histogram name="Enterprise.EnrolledDevicePolicyPresent" enum="Boolean"
    expires_after="2025-08-10">
  <owner>igorcov@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Whether loading of device policy from file on an enterprise-enrolled
    (checked against install_attributes.pb) Chrome OS device yields an
    enterprise policy. Filled once during session startup, after first
    successful device policy read.
  </summary>
</histogram>

<histogram name="Enterprise.EnrolledPolicyHasDMToken" enum="Boolean"
    expires_after="never">
<!-- expires-never: Used for monitoring the health of device policy. -->

  <owner>igorcov@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Whether loading of device policies from file on an enterprise-enrolled
    (checked against install_attributes.pb) Chrome OS device yields a PolicyData
    message with a DMToken. Filled once during session startup, after first
    successful device policy read.
  </summary>
</histogram>

<histogram name="Enterprise.Enrollment" enum="EnterpriseEnrollmentType"
    expires_after="2027-02-07">
  <owner>asumaneev@google.com</owner>
  <owner>sergiyb@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events related to device enrollment on new installs of Chrome OS devices.
  </summary>
</histogram>

<histogram name="Enterprise.EnrollmentAttestationBased"
    enum="EnterpriseEnrollmentType" expires_after="2027-01-10">
  <owner>asumaneev@google.com</owner>
  <owner>sergiyb@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events related to attestation-based enrollment (Zero-Touch) of Chrome OS
    devices.

    Warning: this histogram was expired from 2021-12-05 to 2022-02-01. Data may
    be missing.
  </summary>
</histogram>

<histogram name="Enterprise.EnrollmentForced" enum="EnterpriseEnrollmentType"
    expires_after="2026-10-06">
  <owner>asumaneev@google.com</owner>
  <owner>sergiyb@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events related to forced re-enrollment (FRE) of Chrome OS devices.
  </summary>
</histogram>

<histogram name="Enterprise.EnrollmentForcedAttestationBased"
    enum="EnterpriseEnrollmentType" expires_after="2026-10-06">
  <owner>asumaneev@google.com</owner>
  <owner>sergiyb@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events related to attestation-based re-enrollment (Auto RE) of Chrome OS
    devices.
  </summary>
</histogram>

<histogram name="Enterprise.EnrollmentForcedInitial"
    enum="EnterpriseEnrollmentType" expires_after="2026-10-06">
  <owner>asumaneev@google.com</owner>
  <owner>sergiyb@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events related to forced initial enrollment of Chrome OS devices during the
    first startup of a device.
  </summary>
</histogram>

<histogram name="Enterprise.EnrollmentForcedInitialAttestationBased"
    enum="EnterpriseEnrollmentType" expires_after="2026-12-06">
  <owner>asumaneev@google.com</owner>
  <owner>sergiyb@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events related to attestation-based initial enrollment (Zero-Touch) of
    Chrome OS devices during the first startup of a device.
  </summary>
</histogram>

<histogram name="Enterprise.EnrollmentForcedInitialManualFallback"
    enum="EnterpriseEnrollmentType" expires_after="2026-10-06">
  <owner>asumaneev@google.com</owner>
  <owner>sergiyb@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events related to manual fallback from attestation-based initial enrollment
    (Zero-Touch) of Chrome OS devices during the first startup of a device.
  </summary>
</histogram>

<histogram name="Enterprise.EnrollmentForcedManualFallback"
    enum="EnterpriseEnrollmentType" expires_after="2026-10-06">
  <owner>asumaneev@google.com</owner>
  <owner>sergiyb@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events related to manual fallback from attestation-based re-enrollment (Auto
    RE) of Chrome OS devices.

    Warning: this histogram was expired from 2021-12-05 to 2022-02-01. Data may
    be missing.
  </summary>
</histogram>

<histogram name="Enterprise.EnrollmentNudge.PolicyFetchResult"
    enum="EnrollmentNudgePolicyFetchResult" expires_after="2026-11-09">
  <owner>andreydav@google.com</owner>
  <owner>chromeos-commercial-identity@google.com</owner>
  <summary>
    Recorded when we fetch the value of enrollment nudge policy. Tracks the
    value of the policy or the absence of it in the server response.
  </summary>
</histogram>

<histogram name="Enterprise.EnrollmentNudge.UserAction"
    enum="EnrollmentNudgeUserAction" expires_after="2026-11-09">
  <owner>andreydav@google.com</owner>
  <owner>chromeos-commercial-identity@google.com</owner>
  <summary>
    Tracks user actions on the enrollment nudge pop-up on the Gaia screen.
    Recorded when user clicks on one of the buttons there.

    Warning: this histogram was expired from 2025-09-07 to 2025-12-16; data may
    be missing.
  </summary>
</histogram>

<histogram name="Enterprise.EnrollmentRecovery" enum="EnterpriseEnrollmentType"
    expires_after="2026-10-06">
  <owner>asumaneev@google.com</owner>
  <owner>sergiyb@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events related to Chrome OS enterprise enrollment recovery. Note that this
    only covers cases in which prior to recovery, UMA stats are enabled by
    policy.
  </summary>
</histogram>

<histogram name="Enterprise.EnrollmentRemoteDeployment"
    enum="EnterpriseEnrollmentType" expires_after="2026-11-01">
  <owner>jacksontadie@google.com</owner>
  <owner>drcrash@google.com</owner>
  <owner>cros-onboarding-team@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events related to Remote Deployment enrollments, a subset of token-based
    enrollment. As of writing, only Flex devices use Remote Deployment.

    Events are recorded in response to a successful or failed enrollment.
  </summary>
</histogram>

<histogram name="Enterprise.EnrollmentRemoteDeploymentManualFallback"
    enum="EnterpriseEnrollmentType" expires_after="2026-11-01">
  <owner>jacksontadie@google.com</owner>
  <owner>drcrash@google.com</owner>
  <owner>cros-onboarding-team@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events related to manual fallback from Remote Deployment enrollment, a
    subset of token-based enrollment.

    Events are recorded in response to a successful or failed enrollment.
  </summary>
</histogram>

<histogram name="Enterprise.EnrollmentRollbackAttestation"
    enum="EnterpriseEnrollmentType" expires_after="2026-10-06">
  <owner>rbock@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events related to attestation based re-enrollment after enterprise rollback.

    Events are recorded during enrollment after rollback and types are listed in
    the MetricEnrollment enum.
  </summary>
</histogram>

<histogram name="Enterprise.EnrollmentRollbackManualFallback"
    enum="EnterpriseEnrollmentType" expires_after="2026-10-06">
  <owner>rbock@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events related to manual re-enrollment after enterprise rollback. This is
    used when attestation based enrollment fails.

    Events are recorded during enrollment after rollback and types are listed in
    the MetricEnrollment enum.
  </summary>
</histogram>

<histogram name="Enterprise.EnrollmentTime.Cancel" units="ms"
    expires_after="2026-10-06">
  <owner>asumaneev@google.com</owner>
  <owner>sergiyb@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Elapsed time from *after* GAIA login until enrollment was cancelled.
  </summary>
</histogram>

<histogram name="Enterprise.EnrollmentTime.Failure" units="ms"
    expires_after="2026-10-06">
  <owner>asumaneev@google.com</owner>
  <owner>sergiyb@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Elapsed time from *after* GAIA login until enrollment failed.
  </summary>
</histogram>

<histogram name="Enterprise.EnrollmentTime.Success" units="ms"
    expires_after="2026-10-06">
  <owner>asumaneev@google.com</owner>
  <owner>sergiyb@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Elapsed time from *after* GAIA login until enrollment succeeded.
  </summary>
</histogram>

<histogram name="Enterprise.EnrollmentTokenBased"
    enum="EnterpriseEnrollmentType" expires_after="2026-10-06">
  <owner>jacksontadie@google.com</owner>
  <owner>drcrash@google.com</owner>
  <owner>cros-onboarding-team@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events related to token-based enrollment on ChromeOS devices. As of writing
    only Flex devices use token-based enrollment, to perform Flex Auto
    Enrollment.

    Events are recorded in response to a successful or failed enrollment.
  </summary>
</histogram>

<histogram name="Enterprise.EnrollmentTokenBasedManualFallback"
    enum="EnterpriseEnrollmentType" expires_after="2026-10-06">
  <owner>jacksontadie@google.com</owner>
  <owner>drcrash@google.com</owner>
  <owner>cros-onboarding-team@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events related to manual fallback from token-based enrollment on ChromeOS
    devices. As of writing only Flex devices use token-based enrollment, to
    perform Flex Auto Enrollment.

    Events are recorded in response to a successful or failed enrollment.
  </summary>
</histogram>

<histogram name="Enterprise.EventBasedLogUpload.{EventLogUploadType}"
    enum="EnterpriseEventBasedLogUploadResult" expires_after="2026-03-29">
  <owner>iremuguz@google.com</owner>
  <owner>chromeos-commercial-supportability@google.com</owner>
  <summary>
    The result of event based log upload that is of type {EventLogUploadType}.
  </summary>
  <token key="EventLogUploadType">
    <variant name="All" summary="All event based log uploads"/>
    <variant name="FatalCrashTriggered"
        summary="Event based log upload triggered by fatal crash"/>
    <variant name="OSUpdateFailureTriggered"
        summary="Event based log upload triggered by OS update failure"/>
  </token>
</histogram>

<histogram name="Enterprise.ExtensibleEnterpriseSSO.Okta.Failure.Reason"
    enum="OktaSSOFailureReason" expires_after="2026-12-01">
  <owner>ssolarewicz@chromium.org</owner>
  <owner>cec-growth@google.com</owner>
  <summary>
    Records the reason for which an authentication URL request has failed for
    Okta SSO. Emitted in enterprise_auth::URLSessionURLLoader::OnRequestFailed
    if the request fails for any reason.
  </summary>
</histogram>

<histogram name="Enterprise.ExtensibleEnterpriseSSO.Okta.Result"
    enum="BooleanSuccess" expires_after="2027-02-14">
  <owner>ssolarewicz@chromium.org</owner>
  <owner>cec-growth@google.com</owner>
  <summary>
    Records whether a URLSession request made to perform Okta SSO authentication
    was successful. Emitted in
    enterprise_auth::URLSessionURLLoader::OnRequestComplete or OnRequestFailed
    upon completion or failure of the request.
  </summary>
</histogram>

<histogram name="Enterprise.ExtensibleEnterpriseSSO.Okta.{Status}.Duration"
    units="ms" expires_after="2027-02-14">
  <owner>ssolarewicz@chromium.org</owner>
  <owner>cec-growth@google.com</owner>
  <summary>
    The duration of a {Status} URLSession request made to perform SSO
    authentication for Okta services. Emitted in
    enterprise_auth::URLSessionURLLoader::OnRequestComplete or OnRequestFailed
    upon completion or failure of the request.
  </summary>
  <token key="Status">
    <variant name="Failure" summary="unsuccessful"/>
    <variant name="Success" summary="successful"/>
  </token>
</histogram>

<histogram name="Enterprise.ExtensibleEnterpriseSSO.Supported.Result"
    enum="Boolean" expires_after="2026-12-27">
  <owner>ydago@chromium.org</owner>
  <owner>cec-growth@google.com</owner>
  <summary>
    The success or failure of trying to authenticate a navigation request using
    Extensible Enterprise SSO for a url that can be authenticated by the OS.
  </summary>
</histogram>

<histogram name="Enterprise.ExtensibleEnterpriseSSO.{Status}.Duration"
    units="ms" expires_after="2027-02-07">
  <owner>ydago@chromium.org</owner>
  <owner>cec-growth@google.com</owner>
  <summary>
    The duration of the interception for ExtensibleEnterpriseSSO for a url that
    {Status}.
  </summary>
  <token key="Status">
    <variant name="NotSuppported" summary="is not supported by the OS"/>
    <variant name="Supported.Failure" summary="was unsuccessful"/>
    <variant name="Supported.Success" summary="was successful"/>
  </token>
</histogram>

<histogram name="Enterprise.FileAnalysisRequest.FileSize" units="KB"
    expires_after="2027-01-31">
  <owner>eliashomsi@google.com</owner>
  <owner>nancylanxiao@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records the size of files being scanned for a file content analysis request.
    These requests happen for CEP to scan downloaded and uploaded files for DLP
    rules.
  </summary>
</histogram>

<histogram name="Enterprise.FileAnalysisRequest.PrintedPageSize" units="KB"
    expires_after="2027-02-07">
  <owner>eliashomsi@google.com</owner>
  <owner>nancylanxiao@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records the size of printed pages being scanned for a file content analysis
    request. These requests happen for CEP to scan printed pages for DLP rules.
    It is logged once per user action that would trigger this Connector.
  </summary>
</histogram>

<histogram name="Enterprise.FileOpeningJob.CancelDuration" units="ms"
    expires_after="2027-01-03">
  <owner>valadkevich@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records the time it takes to cancel the FileOpeningJob. The cancellation
    waits for currently running file analysis tasks to yield or complete. This
    provides a measure of how long the UI thread or other threads might block
    while waiting for the background job to finish.
  </summary>
</histogram>

<histogram name="Enterprise.File{Operation}Obfuscation.{Action}"
    enum="EnterpriseObfuscationError" expires_after="2027-02-07">
  <owner>haihan@google.com</owner>
  <owner>domfc@chromium.org</owner>
  <owner>thelex@google.com</owner>
  <summary>
    Records the result of file obfuscation related operations. {Operation} : The
    context of the operation. {Action} : The specific action.
  </summary>
  <token key="Operation">
    <variant name="Download" summary="Recorded during file download."/>
    <variant name="Reader" summary="Recorded during Safe Browsing checks."/>
  </token>
  <token key="Action">
    <variant name="Create"
        summary="Recorded when the obfuscated file reader is initialized."/>
    <variant name="Read"
        summary="Recorded when a read operation is performed on the
                 obfuscated file."/>
    <variant name="Result"
        summary="Recorded during download obfuscation/deobfuscation attempts.
                 Errors are recorded during obfuscation on-the-fly,
                 deobfuscation on-the-fly, and in-place deobfuscation
                 operations. Success is only recorded at the end of in-place
                 deobfuscation, the last operation. The rest of the
                 operations are aborted once an error exit is encountered, so
                 only the first error exit/success is recorded per
                 obfuscation attempt."/>
  </token>
</histogram>

<histogram name="Enterprise.GenerateChromeProfileChallenge.Status"
    enum="EnterpriseDeviceManagementStatus" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>hmare@google.com</owner>
  <summary>
    Device management server status returned when requesting a profile-level
    attestation challenge for enterprise reporting.
  </summary>
</histogram>

<histogram name="Enterprise.HttpHeaderInjection.MatchTime" units="microseconds"
    expires_after="2027-07-01">
  <owner>antoli@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records the time it takes to evaluate HttpHeaderInjection rules. This is
    measured for a subsample of 0.1% of every network request when the policy is
    enabled, right before the headers are sent.

    This metric is reported only for clients with high-resolution clocks.
  </summary>
</histogram>

<histogram name="Enterprise.HttpHeaderInjection.RequestModified" enum="Boolean"
    expires_after="2027-07-01">
  <owner>antoli@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records whether a network request was modified by the HttpHeaderInjection
    policy. Emitted for a subsample of 0.1% of every network request when the
    policy is enabled, right before headers are sent. True if headers were
    injected, false otherwise.
  </summary>
</histogram>

<histogram name="Enterprise.IdleTimeoutPolicies.ActionSuccess.{ActionType}"
    enum="BooleanSuccess" expires_after="2027-03-01">
  <owner>esalma@google.com</owner>
  <owner>nicolaso@chromium.org</owner>
  <summary>
    Whether the {ActionType} ran successfully or not. The metric is recorded as
    true if the action runs successfully and false if the action fails.
  </summary>
  <token key="ActionType">
    <variant name="AllActions" summary="All Actions"/>
    <variant name="ClearBrowsingData" summary="Clear Browsing Data Action(s)"/>
    <variant name="CloseBrowsers" summary="Close Browsers Action"/>
    <variant name="CloseTabs" summary="Close Tabs Action"/>
    <variant name="ReloadPages" summary="Reload Pages Action"/>
    <variant name="ShowProfilePicker" summary="Show Profile Picker Action"/>
    <variant name="SignOut" summary="Signout Action"/>
  </token>
</histogram>

<histogram name="Enterprise.IdleTimeoutPolicies.ActionTime.{ActionType}"
    units="ms" expires_after="2027-03-01">
  <owner>esalma@google.com</owner>
  <owner>nicolaso@chromium.org</owner>
  <summary>The time taken to run {ActionType} on idle timeout.</summary>
  <token key="ActionType">
    <variant name="AllActions" summary="All Actions"/>
    <variant name="ClearBrowsingData" summary="Clear Browsing Data Action(s)"/>
    <variant name="SignOut" summary="Signout Action"/>
  </token>
</histogram>

<histogram name="Enterprise.IdleTimeoutPolicies.IdleTimeoutCase"
    enum="IdleTimeoutCase" expires_after="2027-03-01">
  <owner>esalma@google.com</owner>
  <owner>nicolaso@chromium.org</owner>
  <summary>
    On mobile: whether idle timeout happened while the app was already
    foregrounded or backgrounded. The metric is recorded when idle timeout is
    detected while the app is foreground and when idle timeout is detected on
    reforeground or start-up.
  </summary>
</histogram>

<histogram name="Enterprise.IdleTimeoutPolicies.IdleTimeoutDialogEvent"
    enum="IdleTimeoutDialogEvent" expires_after="2027-03-01">
  <owner>esalma@google.com</owner>
  <owner>nicolaso@chromium.org</owner>
  <summary>
    Tracks events related to the timeout dialog shown to the user for 30 seconds
    before idle timeout actions run. The user either responds by clicking the
    button in the dialog indicating activity or the dialog expires and actions
    run.
  </summary>
</histogram>

<histogram name="Enterprise.IdleTimeoutPolicies.IdleTimeoutLaunchScreenEvent"
    enum="IdleTimeoutLaunchScreenEvent" expires_after="2027-03-01">
  <owner>esalma@google.com</owner>
  <owner>nicolaso@chromium.org</owner>
  <summary>
    Tracks events related to the launch screen shown on mobile when idle timeout
    actions run on app foreground. The launch screen can be dismissed after
    actions complete or after it has reached its expiry deadline.
  </summary>
</histogram>

<histogram
    name="Enterprise.IframeDlpRulesSupport.{DeepScanAccessPoint}.UrlChainSize"
    units="count" expires_after="2027-02-14">
  <owner>haihan@google.com</owner>
  <owner>nancylanxiao@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records the size of the url chain, from the iframe where the content
    analysis request for {DeepScanAccessPoint} was triggered from all the way to
    the tab url, inclusive.

    A size of 1 means that the action did not come from an iFrame, and the chain
    size limit is set to `kMaxFrameUrls`.
  </summary>
  <token key="DeepScanAccessPoint" variants="DeepScanAccessPoint"/>
</histogram>

<histogram name="Enterprise.InstallAttributes.ValidOnEnrolledDevice"
    enum="Boolean" expires_after="2026-04-06">
  <owner>igorcov@chromium.org</owner>
  <owner>emaxx@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Whether the install attributes are valid on the enrolled device. Device is
    determined to be enrolled based on the device policy. The check is performed
    at device boot.
  </summary>
</histogram>

<histogram name="Enterprise.InvalidDevicePolicyFilesStatus"
    enum="InvalidDevicePolicyFilesStatus" expires_after="2026-09-13">
  <owner>emaxx@chromium.org</owner>
  <owner>igorcov@chromium.org</owner>
  <owner>vsavu@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Chrome OS only. Result of checking if device policy files are valid when
    reading the device policy data.
  </summary>
</histogram>

<histogram name="Enterprise.IOS.DownloadProtection.ScanTriggered.EventResult"
    enum="EnterpriseDownloadProtectionEventResult" expires_after="2027-05-30">
  <owner>mxlg@google.com</owner>
  <owner>bling-enterprise@google.com</owner>
  <summary>
    Records the event result of a download protection scan triggered by
    enterprise users when trying to download files according to policy settings.
  </summary>
</histogram>

<histogram
    name="Enterprise.IOS.DownloadProtection.ScanTriggered.WarningBypassed"
    units="bypasses" expires_after="2027-05-30">
  <owner>mxlg@google.com</owner>
  <owner>bling-enterprise@google.com</owner>
  <summary>
    Records whenever a user sees a warning and chooses to ignore/bypass the
    warning and decides to download the file anyway.
  </summary>
</histogram>

<histogram
    name="Enterprise.IOS.WebState.DataControls.Clipboard.{Action}.Verdict"
    enum="EnterpriseDlpPolicyLevel" expires_after="2027-02-07">
  <owner>eic@google.com</owner>
  <owner>bling-enterprise@google.com</owner>
  <summary>
    Records the level of verdict triggered by enterprise users when trying to
    {Action} web content according to the policy settings.
  </summary>
  <token key="Action">
    <variant name="Copy" summary="copy"/>
    <variant name="Paste" summary="paste"/>
  </token>
</histogram>

<histogram
    name="Enterprise.IOS.WebState.DataControls.Clipboard.{Action}.WarningBypassed"
    enum="Boolean" expires_after="2026-12-29">
  <owner>eic@google.com</owner>
  <owner>bling-enterprise@google.com</owner>
  <summary>
    Records whenever a user sees a warning and chooses to ignore/bypass the
    warning and decides to {Action} anyways.
  </summary>
  <token key="Action">
    <variant name="Copy" summary="copy"/>
    <variant name="Paste" summary="paste"/>
  </token>
</histogram>

<histogram name="Enterprise.IOS.WebState.DataControls.SearchWith.Verdict"
    enum="EnterpriseDlpPolicyLevel" expires_after="2027-05-11">
  <owner>anaercegovac@google.com</owner>
  <owner>cep-se@google.com</owner>
  <summary>
    Records the verdict of the Data Controls policy check for a user clicking
    the &quot;Search [Default Search Engine] with [selected text]&quot; button.
    Increases in 'WARN' counts within this histogram indicate potential data
    exfiltration being actioned by the policy. The 'BLOCK' bucket is expected to
    be empty since the 'Search' item is hidden for block verdicts.
  </summary>
</histogram>

<histogram name="Enterprise.KeySignatureVerification"
    enum="EnterpriseKeySignatureVerification" expires_after="2027-01-17">
  <owner>igorcov@chromium.org</owner>
  <owner>emaxx@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>Result of key signature verification from the policy data.</summary>
</histogram>

<histogram name="Enterprise.LocalAuthFactorsPolicy.ForcedReauth" enum="Boolean"
    expires_after="2026-12-31">
  <owner>fahadmansoor@google.com</owner>
  <owner>chromeos-commercial-identity@google.com</owner>
  <summary>
    Recorded whenever the local auth factors policy is evaluated to determine if
    online reauth should be forced. Recorded as true if forced, and false
    otherwise.
  </summary>
</histogram>

<histogram name="Enterprise.LocalAuthFactorsPolicy.LocalAuthFactorChanged"
    enum="LocalAuthFactorType" expires_after="2026-12-31">
  <owner>fahadmansoor@google.com</owner>
  <owner>chromeos-commercial-identity@google.com</owner>
  <summary>
    Recorded whenever a local auth factor (PIN or local password) is changed for
    a user under the local auth factors policy. Tracks which factor was changed.
  </summary>
</histogram>

<histogram name="Enterprise.LocalAuthFactorsPolicy.PasswordComplexity"
    enum="LocalAuthFactorsComplexity" expires_after="2026-12-31">
  <owner>fahadmansoor@google.com</owner>
  <owner>chromeos-commercial-identity@google.com</owner>
  <summary>
    Recorded whenever the password complexity policy is updated. Tracks the
    enforced complexity level.
  </summary>
</histogram>

<histogram name="Enterprise.LoginApiCleanup.{CleanupHandler}.Success"
    enum="BooleanSuccess" expires_after="2026-11-17">
  <owner>mpetrisor@chromium.org</owner>
  <owner>imprivata-eng@google.com</owner>
  <summary>ChromeOS only. Records if cleanup handler succeeded.</summary>
  <token key="CleanupHandler" variants="CleanupHandler"/>
</histogram>

<histogram name="Enterprise.LoginApiCleanup.{CleanupHandler}.Timing" units="ms"
    expires_after="2026-11-17">
  <owner>mpetrisor@chromium.org</owner>
  <owner>imprivata-eng@google.com</owner>
  <summary>
    ChromeOS only. Records the duration the cleanup handler took.
  </summary>
  <token key="CleanupHandler" variants="CleanupHandler"/>
</histogram>

<histogram
    name="Enterprise.MachineLevelUserCloudPolicyEnrollment.DMTokenDeletion"
    enum="BooleanSuccess" expires_after="2027-02-21">
  <owner>igorruvinov@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    Records whether browser unenrollment via DMToken deletion completed
    successfully after attempting to delete the token.
  </summary>
</histogram>

<histogram
    name="Enterprise.MachineLevelUserCloudPolicyEnrollment.RequestSuccessTime"
    units="ms" expires_after="2026-12-01">
  <owner>zmin@chromium.org</owner>
  <owner>pastarmovj@chromium.org</owner>
  <summary>
    Time since the enrollment request was made until a successful enrollment
    response is returned from the server.
  </summary>
</histogram>

<histogram name="Enterprise.MachineLevelUserCloudPolicyEnrollment.Result"
    enum="MachineLevelUserCloudPolicyEnrollmentResult"
    expires_after="2026-12-01">
  <owner>zmin@chromium.org</owner>
  <owner>pastarmovj@chromium.org</owner>
  <summary>The result of machine level user cloud policy enrollment.</summary>
</histogram>

<histogram
    name="Enterprise.MachineLevelUserCloudPolicyEnrollment.StartupDialog"
    enum="MachineLevelUserCloudPolicyEnrollmentStartupDialog"
    expires_after="2026-12-01">
  <owner>zmin@chromium.org</owner>
  <owner>pastarmovj@chromium.org</owner>
  <summary>
    Records whether the machine level user cloud policy enrollment dialog is
    shown to the user and the action they took.
  </summary>
</histogram>

<histogram
    name="Enterprise.MachineLevelUserCloudPolicyEnrollment.StartupDialogTime"
    units="ms" expires_after="2026-12-01">
  <owner>zmin@chromium.org</owner>
  <owner>pastarmovj@chromium.org</owner>
  <summary>
    The length of time the machine level user cloud policy enrollment dialog was
    visible to the user.
  </summary>
</histogram>

<histogram
    name="Enterprise.MachineLevelUserCloudPolicyEnrollment.UnenrollSuccess"
    enum="BooleanSuccess" expires_after="2026-12-01">
  <owner>zmin@chromium.org</owner>
  <owner>domfc@chromium.org</owner>
  <summary>
    Records whether a browser unenrollment was completed successfully by writing
    an invalid DMToken to storage or not.
  </summary>
</histogram>

<histogram name="Enterprise.ManagedScreensaver.Enabled" enum="BooleanEnabled"
    expires_after="2027-02-03">
  <owner>mpetrisor@chromium.org</owner>
  <owner>imprivata-eng@google.com</owner>
  <summary>
    Records whether the managed screensaver is enabled. Recorded for managed
    devices when the sign-in screen is displayed, on every user login, and every
    time the ScreensaverLockScreenEnabled or DeviceScreensaverLoginScreenEnabled
    policy is updated.
  </summary>
</histogram>

<histogram name="Enterprise.ManagedScreensaver.EngagementTime.Slideshow"
    units="ms" expires_after="2026-09-05">
  <owner>mpetrisor@chromium.org</owner>
  <owner>imprivata-eng@google.com</owner>
  <summary>
    Among users with managed screensaver enabled, records the length of each
    session for Slideshow. The metric is emitted when an ambient mode session
    ends.
  </summary>
</histogram>

<histogram name="Enterprise.ManagedScreensaver.ImageCount" units="count"
    expires_after="2026-09-05">
  <owner>mpetrisor@chromium.org</owner>
  <owner>imprivata-eng@google.com</owner>
  <summary>
    Records the count of images downloaded in cache to display in the managed
    screensaver. Recorded every time the policy list changes and images are
    deleted from the cache or downloaded to the cache.
  </summary>
</histogram>

<histogram name="Enterprise.ManagedScreensaver.ImageDownloadResult"
    enum="ManagedScreensaverImageDownloadResult" expires_after="2027-03-03">
  <owner>mpetrisor@chromium.org</owner>
  <owner>imprivata-eng@google.com</owner>
  <summary>
    Records the result after attempting to download an image for the managed
    screensaver. Emitted on every image download operation.
  </summary>
</histogram>

<histogram name="Enterprise.ManagedScreensaver.StartupTime.Slideshow"
    units="ms" expires_after="2027-04-21">
  <owner>mpetrisor@chromium.org</owner>
  <owner>imprivata-eng@google.com</owner>
  <summary>
    Records the amount of time it takes for the managed screensaver to start.
    This includes tasks such as getting the list of downloaded images, checking
    that the list has a minimal amount of images, decoding them, etc. Note this
    measurement does not include the lock screen inactivity timeout. The metric
    would be emitted when the first two images are loaded successfully.
  </summary>
</histogram>

<histogram name="Enterprise.ManagementService.BrowserManagementStatus"
    enum="BrowserManagementStatus" expires_after="2027-05-01">
  <owner>ngoncharov@google.com</owner>
  <owner>enterprise-metrics@google.com</owner>
  <summary>
    Records the management authority of the browser (BrowserManagementService)
    per profile, categorizing local computer management by policy count (&lt;=3
    vs &gt;3). Logged with every UMA log packet. Multiple samples can be logged
    if multiple authorities are active.
  </summary>
</histogram>

<histogram name="Enterprise.ManagementService.PlatformManagementStatus"
    enum="PlatformManagementStatus" expires_after="2027-05-01">
  <owner>ngoncharov@google.com</owner>
  <owner>enterprise-metrics@google.com</owner>
  <summary>
    Records the active management authority of the underlying OS/device
    (PlatformManagementService). Logged with every UMA log packet. Multiple
    samples can be logged if multiple authorities are active.
  </summary>
</histogram>

<histogram name="Enterprise.NetworkAuth.TokenFetchError"
    enum="EnterpriseNetworkTokenFetchError" expires_after="2027-07-01">
  <owner>xzonghan@google.com</owner>
  <owner>chrome-enterprise-networking-core@google.com</owner>
  <summary>
    Recorded when an Enterprise Network authentication access token request
    completes or fails.
  </summary>
</histogram>

<histogram name="Enterprise.OidcEnrollment.Interception.Funnel"
    enum="OidcInterceptionFunnelStep" expires_after="2027-05-01">
  <owner>xzonghan@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    Records the occurrance of each crucial step of the OIDC enrollment flow
    before profile registration.
  </summary>
</histogram>

<histogram name="Enterprise.OidcEnrollment.Interception.Result"
    enum="OidcInterceptionResult" expires_after="2027-05-01">
  <owner>xzonghan@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    Tracks the results of OIDC enrollment flow when it finishes before profile
    registration.
  </summary>
</histogram>

<histogram
    name="Enterprise.OidcEnrollment.ProfileCreation.Funnel.{IdentityType}"
    enum="OidcProfileCreationFunnelStep" expires_after="2027-05-01">
  <owner>xzonghan@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    Records the occurrance of each crucial step of the OIDC enrollment flow with
    a {IdentityType} 3P identity after profile registration.
  </summary>
  <token key="IdentityType" variants="IdentityType"/>
</histogram>

<histogram
    name="Enterprise.OidcEnrollment.ProfileCreation.Result.{IdentityType}"
    enum="OidcProfileCreationResult" expires_after="2027-05-01">
  <owner>xzonghan@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    Tracks the results of OIDC enrollment flow with a {IdentityType} 3P identity
    when it finishes after profile registration.
  </summary>
  <token key="IdentityType" variants="IdentityType"/>
</histogram>

<histogram
    name="Enterprise.OidcEnrollment.{IdentityType}.PolicyFetchLatency.{Result}"
    units="ms" expires_after="2027-05-01">
  <owner>xzonghan@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    Latency of a {Result} policy fetch operation for an OIDC profile with
    {IdentityType} 3P identity during enrollment, recorded when the fetch
    response is received.
  </summary>
  <token key="Result">
    <variant name="Failure" summary="failed"/>
    <variant name="Success" summary="successful"/>
  </token>
  <token key="IdentityType" variants="IdentityType"/>
</histogram>

<histogram
    name="Enterprise.OidcEnrollment.{IdentityType}.RegistrationLatency.{Result}"
    units="ms" expires_after="2027-05-01">
  <owner>xzonghan@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    Latency of a {IdentityType} OIDC profile registration operation when OIDC
    profiles are first getting created. Failed attempts will always be
    classified as undecided since we won't know whether it's dasher-based.
    Recorded when the registration response is received.
  </summary>
  <token key="Result">
    <variant name="Failure" summary="failed"/>
    <variant name="Success" summary="successful"/>
  </token>
  <token key="IdentityType">
    <variant name="" summary="undecided if 3P identity is google-backed"/>
    <variant name="Dasher-based" summary="google-backed 3P identity"/>
    <variant name="Dasherless" summary="non-google-backed 3P identity"/>
  </token>
</histogram>

<histogram name="Enterprise.OnBulkDataEntry.Actor.DataSize" units="bytes"
    expires_after="2027-06-29">
  <owner>haihan@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records the size (in bytes) of data that might have been scanned by the
    OnBulkDataEntry Enterprise Connector, specifically for the Actor access
    point (e.g., Glic Paste). It is logged once per user action that triggers
    this Connector.
  </summary>
</histogram>

<histogram name="Enterprise.OnBulkDataEntry.DataSize" units="bytes"
    expires_after="2027-01-17">
  <owner>domfc@chromium.org</owner>
  <owner>webprotect-team@google.com</owner>
  <summary>
    Records the size (in bytes) of data that might have been scanned by the
    OnBulkDataEntry Enterprise Connector. It is logged once per user action that
    would trigger this Connector.
  </summary>
</histogram>

<histogram name="Enterprise.PlatformAuth.GetAuthData.Count" units="count"
    expires_after="2026-10-28">
  <owner>igorruvinov@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    The number of proof-of-possession cookies retrieved from the platform to
    authenticate the user to their IdP/STS. Recorded once per successful fetch.
  </summary>
</histogram>

<histogram name="Enterprise.PlatformAuth.GetAuthData.FailureHresult"
    enum="Hresult" expires_after="2026-10-28">
  <owner>igorruvinov@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    The HRESULT returned by either CoCreateInstance or GetCookieInfoForUri when
    trying to fetch proof-of-possession cookies from the platform to
    authenticate the user to their IdP/STS.
  </summary>
</histogram>

<histogram name="Enterprise.PlatformAuth.GetAuthData.QueueOverflow"
    enum="BooleanOccurred" expires_after="2027-07-28">
  <owner>igorruvinov@chromium.org</owner>
  <owner>chromium-enterprise@chromium.org</owner>
  <summary>
    Recorded when an incoming request for proof-of-possession cookies from the
    platform is dropped because the maximum number of enqueued requests has been
    reached.
  </summary>
</histogram>

<histogram name="Enterprise.PlatformAuth.GetAuthData.{Result}Time" units="ms"
    expires_after="2026-10-28">
  <owner>igorruvinov@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    The elapsed time for a fetch of proof-of-possession cookies from the
    platform to authenticate the user to their IdP/STS to {Result}. Recorded
    once per fetch.
  </summary>
  <token key="Result">
    <variant name="Failure" summary="fail"/>
    <variant name="Success" summary="succeed"/>
  </token>
</histogram>

<histogram name="Enterprise.Policies" enum="EnterprisePolicies"
    expires_after="2027-01-03">
  <owner>vsavu@google.com</owner>
  <owner>asumaneev@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    A set of enterprise policy rules that are in use. This is recorded every 24
    hours and at startup, if the last recording was earlier than a day before.
  </summary>
</histogram>

<histogram name="Enterprise.Policies.Sources" enum="EnterprisePoliciesSources"
    expires_after="2027-02-07">
  <owner>zmin@chromium.org</owner>
  <owner>igorruvinov@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Record summary of sources of all policies. It's recorded ever 24 hours and
    at startup.

    This does not include user cloud policy and some special policy sources like
    enterprise_default.
  </summary>
</histogram>

<histogram name="Enterprise.Policies.{PolicyLevel}" enum="EnterprisePolicies"
    expires_after="2027-02-07">
  <owner>zmin@chromium.org</owner>
  <owner>qiutanw@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    A set of {PolicyLevel} enterprise policy rules that are in use. This is
    recorded for each {PolicyLevel} policy every 24 hours and at startup, if the
    last recording was earlier than a day before.
  </summary>
  <token key="PolicyLevel" variants="PolicyLevel"/>
</histogram>

<histogram name="Enterprise.PoliciesEverFetchedWithProfileId" enum="Boolean"
    expires_after="2026-12-01">
  <owner>nicolaso@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    Record whether profile has successfully fetched policy with profile id once
    before uploading reporting. Recorded during profile creation. iOS only.
  </summary>
</histogram>

<histogram name="Enterprise.Policy.AppRestrictionsRegisterReceiverTime"
    units="ms" expires_after="2027-04-01">
  <owner>zmin@chromium.org</owner>
  <owner>cec-growth@google.com</owner>
  <summary>
    Wall-clock time spent in Context.registerReceiver() for the
    AbstractAppRestrictionsProvider broadcast receiver on Android. Recorded once
    per browser startup on a background thread, after the synchronous Binder IPC
    into system_server returns. Used to quantify the latency that previously
    caused UI-thread ANRs.
  </summary>
</histogram>

<histogram name="Enterprise.PolicyInvalidations"
    enum="EnterprisePolicyInvalidations" expires_after="2026-12-27">
  <owner>asumaneev@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events for counting user policy invalidations received with and without
    payloads. Invalidations indicate that a policy has been updated and should
    be refreshed. Payloads provide context about the policy update, but may be
    absent if dropped by the invalidation service.
  </summary>
</histogram>

<histogram name="Enterprise.PolicyLogger.LogCount.{CompressionState}"
    units="logs" expires_after="2027-09-01">
  <owner>nicolaso@chromium.org</owner>
  <owner>enterprise-policy-review@google.com</owner>
  <summary>
    Records the number of policy log messages stored in memory. Recorded
    periodically every 24 hours. The logs are {CompressionState}.
  </summary>
  <token key="CompressionState">
    <variant name="Compressed" summary="compressed"/>
    <variant name="Uncompressed" summary="uncompressed"/>
  </token>
</histogram>

<histogram name="Enterprise.PolicyLogger.MemoryUsage.{CompressionState}"
    units="bytes" expires_after="2027-09-01">
  <owner>nicolaso@chromium.org</owner>
  <owner>enterprise-policy-review@google.com</owner>
  <summary>
    Records the estimated memory size in bytes of policy logs stored in memory.
    Recorded periodically every 24 hours. The logs are {CompressionState}.
  </summary>
  <token key="CompressionState">
    <variant name="Compressed" summary="compressed"/>
    <variant name="Uncompressed" summary="uncompressed"/>
  </token>
</histogram>

<histogram name="Enterprise.PolicyRefresh2" enum="EnterprisePolicyRefresh"
    expires_after="2027-02-07">
  <owner>asumaneev@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events measuring effectiveness of refreshing user policy when invalidations
    are received from a service. For each refresh, indicates whether the policy
    changed, and whether the policy was invalidated at the time of the refresh.
  </summary>
</histogram>

<histogram name="Enterprise.PolicyServiceInitTime{Scope}{PolicyCountSuffix}"
    units="ms" expires_after="2026-12-01">
  <owner>ftirelo@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    The amount of time required for full initialization of the PolicyService,
    measured from the moment the object is created until policies are ready.

    {Scope}

    {PolicyCountSuffix}
  </summary>
  <token key="Scope">
    <variant name=".Machine"
        summary="Recorded for the top-level PolicyService (either browser or
                 device) on startup."/>
    <variant name=".User"
        summary="Recorded for profile-level PolicyService objects, each time
                 a profile is created."/>
  </token>
  <token key="PolicyCountSuffix">
    <variant name=""
        summary="Recorded regardless of the number of policies it contains."/>
    <variant name=".With_1_to_50_Policies"
        summary="Recorded only for PolicyService objects that with 1-50
                 policies."/>
    <variant name=".With_51_to_100_Policies"
        summary="Recorded only for PolicyService objects that with 51-100
                 policies."/>
    <variant name=".With_101_Plus_Policies"
        summary="Recorded only for PolicyService objects that with 101+
                 policies."/>
    <variant name=".WithoutPolicies"
        summary="Recorded only for PolicyService objects that without any
                 policy."/>
    <variant name=".WithPolicies"
        summary="Recorded only for PolicyService objects that with at least
                 one policy."/>
  </token>
</histogram>

<histogram name="Enterprise.PolicyUI.ButtonUsage.{ButtonType}" units="counts"
    expires_after="2027-02-07">
  <owner>zmin@chromium.org</owner>
  <owner>src/components/policy/OWNERS</owner>
  <summary>
    The total number of time {ButtonType} button has been clicked for each time
    chrome://policy page is opened. Recorded once the page is closed. Export To
    JSON button is not available on iOS.

    Note that we won't be able to collect the data if the page is not closed
    normally. For example, browser is crash or shutdown by OS which often
    happens on mobile platforms.
  </summary>
  <token key="ButtonType">
    <variant name="CopyToJson" summary="Copy To JSON"/>
    <variant name="ExportToJson" summary="Export To JSON"/>
    <variant name="ReloadPolicies" summary="Reload Policies"/>
    <variant name="UploadReport" summary="Upload Report"/>
  </token>
</histogram>

<histogram name="Enterprise.PolicyUpdatePeriod.Device" units="days"
    expires_after="2026-04-06">
  <owner>rbock@google.com</owner>
  <owner>igorcov@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Time since last device policy fetch. Emitted when policies are loaded.
  </summary>
</histogram>

<histogram name="Enterprise.PolicyUpdatePeriod.MachineLevelUser" units="days"
    expires_after="2026-12-01">
  <owner>zmin@chromium.org</owner>
  <owner>pastarmovj@chromium.org</owner>
  <summary>
    Time since last machine level user policy fetch.. Emitted when policies are
    loaded.
  </summary>
</histogram>

<histogram name="Enterprise.PolicyUpdatePeriod.User" units="days"
    expires_after="2027-02-14">
  <owner>rbock@google.com</owner>
  <owner>igorcov@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Time since last user policy fetch. Emitted when policies are loaded.
  </summary>
</histogram>

<histogram name="Enterprise.PolicyUserVerification"
    enum="EnterprisePolicyUserVerification" expires_after="2026-02-10">
  <owner>poromov@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>Tracking the results of policy user verification.</summary>
</histogram>

<histogram name="Enterprise.ProfileAffiliation.IsAffiliated" enum="Boolean"
    expires_after="2027-01-03">
  <owner>igorruvinov@chromium.org</owner>
  <owner>cbe-magic@google.com</owner>
  <summary>
    Whether the current profile is affiliated. Recorded for each active profile
    every 7 days and upon profile policy service initialization.
  </summary>
</histogram>

<histogram name="Enterprise.ProfileAffiliation.UnaffiliatedReason"
    enum="EnterpriseProfileUnaffiliatedReason" expires_after="2027-01-03">
  <owner>igorruvinov@chromium.org</owner>
  <owner>cbe-magic@google.com</owner>
  <summary>
    The reason why the current profile is not affiliated. Recorded for each
    unaffiliated active profile every 7 days and upon profile policy service
    initialization.
  </summary>
</histogram>

<histogram name="Enterprise.ProfileIdentifier.Error"
    enum="EnterpriseProfileIdError" expires_after="2027-01-02">
  <owner>hmare@google.com</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Recorded in the event of failures during the profile identifier generation
    action.
  </summary>
</histogram>

<histogram name="Enterprise.ProfileIdentifier.Status" enum="Boolean"
    expires_after="2027-01-02">
  <owner>hmare@google.com</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Records whether the profile identifier generation action was successful or
    not.
  </summary>
</histogram>

<histogram name="Enterprise.ProfileSeparation.DasherPolicyFetch.HttpResponse"
    enum="HttpResponseCode" expires_after="2027-06-17">
  <owner>ydago@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    The Http statuses returned by the server when trying to get the
    ManagedAccountsSigninRestriction policy value for individual dasher
    accounts. This is recorded after trying to the the policy value, when the
    status is available.

    Warning: this histogram was expired from 2025-07-01 to 2026-04-15; data may
    be missing.
  </summary>
</histogram>

<histogram name="Enterprise.ProfileSeparation.DasherPolicyFetch.NetworkError"
    enum="NetErrorCodes" expires_after="2027-06-17">
  <owner>ydago@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    The network errors that happen when trying to get the
    ManagedAccountsSigninRestriction policy value for individual dasher
    accounts. This is recorded every time after trying to the the policy value.

    Warning: this histogram was expired from 2025-07-01 to 2026-04-15; data may
    be missing.
  </summary>
</histogram>

<histogram name="Enterprise.ProvisioningDomain.FetchResult"
    enum="EnterpriseProvisioningDomainFetchResult" expires_after="2027-07-01">
  <owner>xzonghan@google.com</owner>
  <owner>chrome-enterprise-networking-core@google.com</owner>
  <summary>
    Recorded when a Provisioning Domain configuration fetch finishes or fails.
  </summary>
</histogram>

<histogram name="Enterprise.ProvisioningDomainClient.FetchResult"
    enum="EnterpriseProvisioningDomainClientFetchResult"
    expires_after="2027-07-01">
  <owner>xzonghan@google.com</owner>
  <owner>chrome-enterprise-networking-core@google.com</owner>
  <summary>
    Recorded the result of a Provisioning Domain (PvD) JSON configuration fetch.
  </summary>
</histogram>

<histogram name="Enterprise.ProvisioningDomainClient.HttpResponseCode"
    enum="HttpResponseCode" expires_after="2027-07-01">
  <owner>xzonghan@google.com</owner>
  <owner>chrome-enterprise-networking-core@google.com</owner>
  <summary>
    Recorded when a Provisioning Domain fetch completes with an HTTP error code.
  </summary>
</histogram>

<histogram name="Enterprise.ProvisioningDomainClient.NetError"
    enum="NetErrorCodes" expires_after="2027-07-01">
  <owner>xzonghan@google.com</owner>
  <owner>chrome-enterprise-networking-core@google.com</owner>
  <summary>
    Recorded when a Provisioning Domain fetch fails due to a network error.
  </summary>
</histogram>

<histogram name="Enterprise.Proxy.DisguisedErrorPage.ErrorCode"
    enum="HttpResponseCode" expires_after="2027-07-01">
  <owner>xzonghan@google.com</owner>
  <owner>chrome-enterprise-networking-core@google.com</owner>
  <summary>
    Recorded when an alternative error page HTML is generated for an Enterprise
    Proxy disguised error, logging the disguised HTTP response or error code.
  </summary>
</histogram>

<histogram name="Enterprise.PublicSession.SessionLength" units="minutes"
    expires_after="2027-02-14">
  <owner>bfranz@chromium.org</owner>
  <owner>chromeos-kiosk-eng@google.com</owner>
  <summary>
    A public session starts when a user signs in using the policy configured
    public account. It stops when the user signs out. Session length is the
    duration between the start and stop events. It is recorded during signing
    out and reported on the next chrome run. This metric tracks the recorded
    session length rounded down to the nearest 10-minute bucket and capped at 24
    hours.
  </summary>
</histogram>

<histogram name="Enterprise.RefreshTokenLoadResult" enum="Boolean"
    expires_after="2027-03-08">
  <owner>igorcov@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Chrome tries to load the refresh token at start. The result of that
    operation is logged in this histogram, success corresponding to true.
  </summary>
</histogram>

<histogram name="Enterprise.RegisterCloudPolicyService"
    enum="RegisterCloudPolicyServiceEvent" expires_after="2026-12-01">
  <owner>zmin@chromium.org</owner>
  <owner>ydago@chromium.org</owner>
  <summary>
    Record number of the re-registration event when profile is loaded, likely
    due to policy cache loading failure. The event is categorized by Gaia
    account presence and existing registration status. This is different than
    the re-registrations on CrOS that are triggered with the device not found
    error.
  </summary>
</histogram>

<histogram name="Enterprise.RegularUserSession.SessionLength" units="minutes"
    expires_after="2026-09-06">
  <owner>bfranz@chromium.org</owner>
  <owner>chromeos-kiosk-eng@google.com</owner>
  <summary>
    A regular user session starts when a user signs in using their user account.
    It stops when the user signs out. Session length is the duration between the
    start and stop events. It is recorded during signing out and reported on the
    next chrome run. This metric tracks the recorded session length on an
    enrolled device rounded down to the nearest 10-minute bucket and capped at
    24 hours.
  </summary>
</histogram>

<histogram name="Enterprise.RemoveLocalAuthFactorsScreen.Shown" enum="Boolean"
    expires_after="2026-12-31">
  <owner>fahadmansoor@google.com</owner>
  <owner>chromeos-commercial-identity@google.com</owner>
  <summary>
    Recorded whenever the RemoveLocalAuthFactors screen is shown to the user.
  </summary>
</histogram>

<histogram name="Enterprise.RemoveLocalAuthFactorsScreen.Success"
    enum="Boolean" expires_after="2026-12-31">
  <owner>fahadmansoor@google.com</owner>
  <owner>chromeos-commercial-identity@google.com</owner>
  <summary>
    Tracks the result of the local auth factor removal process. Recorded as true
    when all local auth factors are successfully removed, and false if any part
    of the removal process fails.
  </summary>
</histogram>

<histogram name="Enterprise.ReportingEvent.{EventType}.UploadSize" units="B"
    expires_after="2027-02-07">
  <owner>domfc@chromium.org</owner>
  <owner>xanth@google.com</owner>
  <owner>nancylanxiao@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    The size of the UploadEventsRequest for {EventType} events sent to the
    reporting server, in bytes. This is recorded once per upload request when
    the payload is generated in RealtimeReportingJobConfiguration::GetPayload.
  </summary>
  <token key="EventType" variants="EnterpriseReportingEventType"/>
</histogram>

<histogram name="Enterprise.ReportingEvent.{EventType}.{UploadResult}.Duration"
    units="ms" expires_after="2027-02-14">
  <owner>nancylanxiao@google.com</owner>
  <owner>domfc@chromium.org</owner>
  <owner>xanth@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Record the duration from attempting to upload {EventType} events to the
    reporting server to get the {UploadResult} measured in milliseconds. It is
    logged once per upload request, when the upload finishes.
  </summary>
  <token key="EventType" variants="EnterpriseReportingEventType"/>
  <token key="UploadResult">
    <variant name="UploadFailure" summary="failed upload"/>
    <variant name="UploadSuccess" summary="successful upload"/>
  </token>
</histogram>

<histogram name="Enterprise.ReportingEventUploadFailure"
    enum="EnterpriseReportingEventType" expires_after="2027-02-14">
  <owner>xanth@google.com</owner>
  <owner>alshawwa@chromium.org</owner>
  <owner>domfc@chromium.org</owner>
  <summary>
    Failures to upload reporting events to the reporting server bucketed by
    event type. Expired in June 2024. Revived in M133 for monitoring upcoming
    work on the reporting pipeline.
  </summary>
</histogram>

<histogram name="Enterprise.ReportingEventUploadSuccess"
    enum="EnterpriseReportingEventType" expires_after="2027-02-14">
  <owner>xanth@google.com</owner>
  <owner>alshawwa@chromium.org</owner>
  <owner>domfc@chromium.org</owner>
  <summary>
    Reporting events successfully uploaded to the reporting server bucketed by
    event type. Expired in June 2024. Revived in M133 for monitoring upcoming
    work on the reporting pipeline.
  </summary>
</histogram>

<histogram
    name="Enterprise.ResumableRequest.{ResumableRequestCheckType}Check.{ContentAnalysisRequestType}.Duration"
    units="ms" expires_after="2027-02-07">
  <owner>nancylanxiao@google.com</owner>
  <owner>domfc@chromium.org</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records the duration of a {ResumableRequestCheckType} check part of a
    broader {ContentAnalysisRequestType} Resumable request. It is logged once
    per user action that would trigger this Connector.
  </summary>
  <token key="ContentAnalysisRequestType"
      variants="ContentAnalysisRequestType"/>
  <token key="ResumableRequestCheckType" variants="ResumableRequestCheckType"/>
</histogram>

<histogram name="Enterprise.SafeSites.Latency" units="ms"
    expires_after="2027-06-09">
  <owner>ftirelo@chromium.org</owner>
  <owner>ljjlee@google.com</owner>
  <owner>cbe-eng@google.com</owner>
  <summary>
    The latency of the request to the SafeSites API to classify URLs for users
    with the SafeSitesFilterBehavior policy. This is measured once per
    classified URL that requires a network request (URLs returned from the cache
    are not recorded).
  </summary>
</histogram>

<histogram
    name="Enterprise.SecondaryGoogleAccountUsage.PolicyFetch.ResponseLatency"
    units="ms" expires_after="2027-03-22">
  <owner>andreydav@google.com</owner>
  <owner>chromeos-commercial-identity@google.com</owner>
  <summary>
    Latency of a SecondaryGoogleAccountUsage policy fetch request. This measures
    the amount of time required to fetch the policy value of
    SecondaryGoogleAccountUsage from the Secure Connect API. This is recorded
    when a user account is added as a secondary account (in-session).

    Warning: this histogram was expired from 2024-12-11 to 2026-02-05; data may
    be missing.
  </summary>
</histogram>

<histogram name="Enterprise.SecondaryGoogleAccountUsage.PolicyFetch.Status"
    enum="SecondaryGoogleAccountUsagePolicyFetchStatus"
    expires_after="2027-03-22">
  <owner>andreydav@google.com</owner>
  <owner>chromeos-commercial-identity@google.com</owner>
  <summary>
    Tracks the result of
    UserCloudSigninRestrictionPolicyFetcher::GetSecondaryGoogleAccountUsage.
    This is recorded when a user account is added as a secondary account
    (in-session).
  </summary>
</histogram>

<histogram name="Enterprise.SecureGateway.ProxyAuthChallengeResult"
    enum="EnterpriseProxyAuthChallengeResult" expires_after="2027-07-01">
  <owner>xzonghan@google.com</owner>
  <owner>chrome-enterprise-networking-core@google.com</owner>
  <summary>
    Recorded the result of evaluating a 407 Proxy Authentication challenge
    against managed dynamic routes in EnterpriseProxyService. This is recorded
    when Chrome receives and tries to handle a 407 proxy authentication
    challenge for the CONNECT call.
  </summary>
</histogram>

<histogram name="Enterprise.SecurityReport.User.Mode"
    enum="SecuritySignalsMode" expires_after="2027-01-02">
  <owner>xzonghan@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>The method of how security signals is uploaded</summary>
</histogram>

<histogram name="Enterprise.SecurityReport.User.Trigger"
    enum="SecurityReportTrigger" expires_after="2027-01-02">
  <owner>xzonghan@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>The source trigger of security signals-only reports</summary>
</histogram>

<histogram name="Enterprise.SignalsDisclaimer.Modal.LearnMoreClicked"
    enum="BooleanClicked" expires_after="2027-04-01">
  <owner>ssolarewicz@chromium.org</owner>
  <owner>cec-growth@google.com</owner>
  <summary>
    Records when the Learn More link is clicked on the Enterprise Signals
    Disclaimer modal dialog shown on browser startup.
  </summary>
</histogram>

<histogram name="Enterprise.SignalsDisclaimer.Modal.Result"
    enum="EnterpriseSignalsDisclaimerModalResult" expires_after="2027-04-01">
  <owner>ssolarewicz@chromium.org</owner>
  <owner>cec-growth@google.com</owner>
  <summary>
    Records the result of the Enterprise Signals Disclaimer modal dialog shown
    on browser startup for managed profiles missing device signals collection
    consent. Emitted when the modal dialog is accepted, declined, or dismissed.
  </summary>
</histogram>

<histogram name="Enterprise.SignalsDisclaimer.Modal.Shown" enum="BooleanShown"
    expires_after="2027-04-01">
  <owner>ssolarewicz@chromium.org</owner>
  <owner>cec-growth@google.com</owner>
  <summary>
    Records when the Enterprise Signals Disclaimer modal dialog is shown on
    browser startup for managed profiles missing device signals collection
    consent.
  </summary>
</histogram>

<histogram name="Enterprise.SignalsDisclaimer.NotShownReason"
    enum="EnterpriseSignalsDisclaimerNotShownReason" expires_after="2027-04-01">
  <owner>ssolarewicz@chromium.org</owner>
  <owner>cec-growth@google.com</owner>
  <summary>
    Records the reason why the Enterprise Signals Disclaimer modal dialog was
    not shown on browser activation.
  </summary>
</histogram>

<histogram name="Enterprise.SignalsDisclaimer.ProfilePicker.LearnMoreClicked"
    enum="BooleanClicked" expires_after="2027-04-01">
  <owner>ssolarewicz@chromium.org</owner>
  <owner>cec-growth@google.com</owner>
  <summary>
    Records when the Learn More link is clicked on the Enterprise Signals
    Disclaimer view shown in the Profile Picker.
  </summary>
</histogram>

<histogram name="Enterprise.SignalsDisclaimer.ProfilePicker.Result"
    enum="EnterpriseSignalsDisclaimerProfilePickerResult"
    expires_after="2027-04-01">
  <owner>ssolarewicz@chromium.org</owner>
  <owner>cec-growth@google.com</owner>
  <summary>
    Records the result of the Enterprise Signals Disclaimer shown in the Profile
    Picker after selecting a managed profile missing the device signals consent.
    Emitted when the view is accepted, declined, or dismissed.
  </summary>
</histogram>

<histogram name="Enterprise.SignalsDisclaimer.ProfilePicker.Shown"
    enum="BooleanShown" expires_after="2027-04-01">
  <owner>ssolarewicz@chromium.org</owner>
  <owner>cec-growth@google.com</owner>
  <summary>
    Records when the Enterprise Signals Disclaimer view is shown in the Profile
    Picker after selecting a managed profile missing device signals collection
    consent.
  </summary>
</histogram>

<histogram name="Enterprise.Skills.Count" units="skills"
    expires_after="2027-02-01">
  <owner>esalma@google.com</owner>
  <owner>austinzzr@google.com</owner>
  <owner>cbe-productivity-eng@google.com</owner>
  <summary>
    Records the number of valid enterprise skills provided by the
    EnterprisePublishedSkills policy after they have been successfully parsed.
  </summary>
</histogram>

<histogram name="Enterprise.Skills.FetchLatency" units="ms"
    expires_after="2027-02-01">
  <owner>esalma@google.com</owner>
  <owner>austinzzr@google.com</owner>
  <owner>cbe-productivity-eng@google.com</owner>
  <summary>
    The time it takes to fetch an enterprise skill definition from its URL.
    Recorded when the network request completes, regardless of success.
  </summary>
</histogram>

<histogram name="Enterprise.Skills.FetchResult" enum="BooleanSuccess"
    expires_after="2027-02-01">
  <owner>esalma@google.com</owner>
  <owner>austinzzr@google.com</owner>
  <owner>cbe-productivity-eng@google.com</owner>
  <summary>
    Records whether the enterprise skill was successfully fetched from its URL
    on request completion.
  </summary>
</histogram>

<histogram name="Enterprise.Skills.PolicyError"
    enum="EnterprisePublishedSkillsError" expires_after="2027-02-01">
  <owner>esalma@google.com</owner>
  <owner>austinzzr@google.com</owner>
  <owner>cbe-productivity-eng@google.com</owner>
  <summary>
    Records validation errors and invalid skills encountered when parsing the
    EnterprisePublishedSkills policy. Recorded by the policy handler during
    policy validation.
  </summary>
</histogram>

<histogram name="Enterprise.Skills.ValidationResult"
    enum="EnterpriseSkillValidationResult" expires_after="2027-02-01">
  <owner>esalma@google.com</owner>
  <owner>austinzzr@google.com</owner>
  <owner>cbe-productivity-eng@google.com</owner>
  <summary>
    Records the outcome of parsing and validating an enterprise skill file
    fetched from its URL.
  </summary>
</histogram>

<histogram name="Enterprise.SkyVault.LocalStorage.Enabled"
    enum="BooleanEnabled" expires_after="2027-02-14">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    Records whether local storage is enabled (default) or disabled by policy.
  </summary>
</histogram>

<histogram name="Enterprise.SkyVault.LocalStorage.Misconfigured" enum="Boolean"
    expires_after="2027-02-14">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    Records whether SkyVault is misconfigured: Local file storage is disabled,
    and the DownloadsDirectory policy, which also determines the default
    location for the Files app, is not set to a cloud location (e.g. Google
    Drive). This may cause the Files app to display incorrect folder
    information.
  </summary>
</histogram>

<histogram name="Enterprise.SkyVault.Migration.Delete.Retry" units="count"
    expires_after="2027-10-01">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>Recorded when SkyVault deletion of local files is retried.</summary>
</histogram>

<histogram name="Enterprise.SkyVault.Migration.Reset" enum="Boolean"
    expires_after="2027-10-01">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    Recorded when SkyVault migration of local files is reset during session
    initialization, due to policy changing since the last session to either
    allow local storage or disable the migration.
  </summary>
</histogram>

<histogram name="Enterprise.SkyVault.Migration.Retry" units="count"
    expires_after="2027-10-01">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    Recorded when SkyVault migration of local files is retried after some
    non-fatal errors.
  </summary>
</histogram>

<histogram name="Enterprise.SkyVault.Migration.WriteAccessError" enum="Boolean"
    expires_after="2027-02-14">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    Recorded when an error occurs while setting the local storage write access.
  </summary>
</histogram>

<histogram name="Enterprise.SkyVault.Migration.{CloudProvider}.FailureDuration"
    units="ms" expires_after="2027-10-01">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    The total duration of the file upload as part of the SkyVault migration of
    local files to {CloudProvider}, which can span multiple sessions. Recorded
    only if the upload fails. Includes potential retries.
  </summary>
  <token key="CloudProvider" variants="Enterprise_SkyVaultCloudProvider"/>
</histogram>

<histogram name="Enterprise.SkyVault.Migration.{CloudProvider}.Misconfigured"
    enum="Boolean" expires_after="2027-10-01">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    Recorded when SkyVault migration of local files to {CloudProvider} cannot
    proceed because the policies to enable the required cloud storage aren't set
    properly.
  </summary>
  <token key="CloudProvider" variants="Enterprise_SkyVaultCloudProvider"/>
</histogram>

<histogram
    name="Enterprise.SkyVault.Migration.{CloudProvider}.ReconnectionDuration"
    units="ms" expires_after="2027-10-01">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    The duration, in milliseconds, that a SkyVault migration file upload to
    {CloudProvider} waited for network reconnection. Recorded only when
    `Enterprise.SkyVault.Migration.{CloudProvider}.WaitForConnection` is true
    and the connection was successfully re-established.
  </summary>
  <token key="CloudProvider" variants="Enterprise_SkyVaultCloudProvider"/>
</histogram>

<histogram name="Enterprise.SkyVault.Migration.{CloudProvider}.SuccessDuration"
    units="ms" expires_after="2027-10-01">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    The total duration of the file upload as part of the SkyVault migration of
    local files to {CloudProvider}, which can span multiple sessions. Recorded
    only if the upload completes successfully. Includes potential retries.
  </summary>
  <token key="CloudProvider" variants="Enterprise_SkyVaultCloudProvider"/>
</histogram>

<histogram name="Enterprise.SkyVault.Migration.{CloudProvider}.UploadError"
    enum="EnterpriseSkyVaultMigrationUploadError" expires_after="2027-10-01">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    Records upload errors that occur during SkyVault migration of local files to
    {CloudProvider}.
  </summary>
  <token key="CloudProvider" variants="Enterprise_SkyVaultCloudProvider"/>
</histogram>

<histogram
    name="Enterprise.SkyVault.Migration.{CloudProvider}.WaitForConnection"
    enum="Boolean" expires_after="2027-10-01">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    Indicates whether a SkyVault migration file upload to {CloudProvider} was
    delayed due to a lack of network connectivity. True if the upload was
    delayed, false if it started immediately.
  </summary>
  <token key="CloudProvider" variants="Enterprise_SkyVaultCloudProvider"/>
</histogram>

<histogram
    name="Enterprise.SkyVault.Migration.{MigrationDestination}.CleanupError"
    enum="Boolean" expires_after="2027-10-01">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    Records whether an error occured while cleaning up local files and
    directories, after migrating local files to {MigrationDestination}, in case
    of cloud destination, or just deleting them.
  </summary>
  <token key="MigrationDestination"
      variants="Enterprise_SkyVaultMigrationDestination"/>
</histogram>

<histogram
    name="Enterprise.SkyVault.Migration.{MigrationDestination}.DialogAction"
    enum="EnterpriseSkyVaultMigrationDialogAction" expires_after="2027-10-01">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    Records user interactions with the migration dialog displayed 24 hours
    before the scheduled migration to {MigrationDestination} or deletion of
    local files.
  </summary>
  <token key="MigrationDestination"
      variants="Enterprise_SkyVaultMigrationDestination"/>
</histogram>

<histogram
    name="Enterprise.SkyVault.Migration.{MigrationDestination}.DialogShown"
    enum="Boolean" expires_after="2027-10-01">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    Recorded when initiating the display of the migration information dialog. A
    value of &quot;true&quot; indicates the dialog was shown to the user. A
    value of &quot;false&quot; indicates the dialog was not shown, typically
    because a previous dialog was already displayed.
  </summary>
  <token key="MigrationDestination"
      variants="Enterprise_SkyVaultMigrationDestination"/>
</histogram>

<histogram name="Enterprise.SkyVault.Migration.{MigrationDestination}.Enabled"
    enum="Boolean" expires_after="2027-02-14">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    Recorded when SkyVault migration to {MigrationDestination} or deletion is
    enabled and that all policies are configured properly, i.e. local storage is
    blocked, migration destination is set to {MigrationDestination} and, in case
    of a cloud destination, the required cloud storage is enabled.
  </summary>
  <token key="MigrationDestination"
      variants="Enterprise_SkyVaultMigrationDestination"/>
</histogram>

<histogram name="Enterprise.SkyVault.Migration.{MigrationDestination}.Failed"
    enum="Boolean" expires_after="2027-10-01">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    Recorded when SkyVault migration to {MigrationDestination} or deletion of
    local files fails. This means that at least one file couldn't be uploaded to
    the cloud due to a non retryable error, in case of a cloud destination, or
    deleted e.g. due to file permissions or other errors.
  </summary>
  <token key="MigrationDestination"
      variants="Enterprise_SkyVaultMigrationDestination"/>
</histogram>

<histogram
    name="Enterprise.SkyVault.Migration.{MigrationDestination}.ScheduledTimeInPast.InformUser"
    enum="Boolean" expires_after="2027-10-01">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    Records whether the scheduled migration start time was in the past when
    `InformUser()`, which shows the first dialog for {MigrationDestination}.
    This can occur e.g. if the device was turned off for an extended period
    after the start time was initially set in a previous session.
  </summary>
  <token key="MigrationDestination"
      variants="Enterprise_SkyVaultMigrationDestination"/>
</histogram>

<histogram
    name="Enterprise.SkyVault.Migration.{MigrationDestination}.ScheduledTimeInPast.ScheduleMigration"
    enum="Boolean" expires_after="2027-10-01">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    Records whether the scheduled migration start time was in the past when
    `ScheduleMigrationAndInformUser()`, which re-shows the dialog closer to the
    migration, was called for {MigrationDestination}. This is less likely to
    occur under normal circumstances and could indicate a bug in the code, or a
    scenario where the function was called very close to the scheduled
    expiration time. Frequent occurrences should be investigated.
  </summary>
  <token key="MigrationDestination"
      variants="Enterprise_SkyVaultMigrationDestination"/>
</histogram>

<histogram name="Enterprise.SkyVault.Migration.{MigrationDestination}.Stopped"
    enum="Boolean" expires_after="2027-10-01">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    Recorded when SkyVault migration to {MigrationDestination} or deletion of
    local files is stopped due to policy update to allow local storage, disable
    migration, or change the migration destination.
  </summary>
  <token key="MigrationDestination"
      variants="Enterprise_SkyVaultMigrationDestination"/>
</histogram>

<histogram
    name="Enterprise.SkyVault.Migration.{MigrationDestination}.WrongState"
    enum="EnterpriseSkyVaultMigrationState" expires_after="2027-10-01">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    Recorded when an unexpected state transition happens during SkyVault
    migration to {MigrationDestination} or deletion of local files. Records the
    unexpected state value.
  </summary>
  <token key="MigrationDestination"
      variants="Enterprise_SkyVaultMigrationDestination"/>
</histogram>

<histogram
    name="Enterprise.SkyVault.Migration.{MigrationDestination}.WrongStateContext"
    enum="EnterpriseSkyVaultMigrationStateErrorContext"
    expires_after="2027-10-01">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    Recorded when an unexpected state transition happens during SkyVault
    migration to {MigrationDestination} or deletion of local files. Records the
    context in which the wrong state error occurred.
  </summary>
  <token key="MigrationDestination"
      variants="Enterprise_SkyVaultMigrationDestination"/>
</histogram>

<histogram name="Enterprise.SkyVault.{Action}.DeleteError" enum="Boolean"
    expires_after="2027-10-01">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    Recorded when deleting the local file fails following a successful copy to
    the cloud storage.
  </summary>
  <token key="Action" variants="Enterprise_SkyVaultAction"/>
</histogram>

<histogram name="Enterprise.SkyVault.{Action}.OneDrive.SignInError"
    enum="Boolean" expires_after="2027-02-14">
  <owner>aidazolic@google.com</owner>
  <owner>src/chrome/browser/ash/policy/skyvault/OWNERS</owner>
  <summary>
    Recorded when sign in to OneDrive, required to complete file upload
    initiated by {Action}, fails. Note that this also captures sign-in requests
    cancelled by the user.
  </summary>
  <token key="Action" variants="Enterprise_SkyVaultAction"/>
</histogram>

<histogram name="Enterprise.StateDetermination.DeviceIdentifierStatus"
    enum="DeviceIdentifierStatus" expires_after="2027-06-01">
  <owner>sergiyb@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Captures state of device identifiers during state determination.
  </summary>
</histogram>

<histogram name="Enterprise.StateDetermination.Enabled" enum="Boolean"
    expires_after="2027-06-01">
  <owner>sergiyb@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>Captures situations when state determination is enabled.</summary>
</histogram>

<histogram name="Enterprise.StateDetermination.IsInitialByState.{State}"
    enum="Boolean" expires_after="2027-06-01">
  <owner>sergiyb@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Tracks whether state {State} returned by the server was initial (true), i.e.
    device is not enrolled into any domain because it is brand new or has been
    deprovisioned, or secondary (false), i.e. device is already managed and
    needs to retrieve its state because it has been powerwashed.
  </summary>
  <token key="State" variants="AutoEnrollmentStates"/>
</histogram>

<histogram name="Enterprise.StateDetermination.OnFlex" enum="Boolean"
    expires_after="2026-10-04">
  <owner>sergiyb@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Captures situations when state determination takes place on Flex devices.
  </summary>
</histogram>

<histogram name="Enterprise.StateDetermination.OwnershipStatus"
    enum="OwnershipStatus" expires_after="2027-06-01">
  <owner>sergiyb@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Captures ownership state of device during state determination.
  </summary>
</histogram>

<histogram name="Enterprise.StateDetermination.PsmReportedAvailableState"
    enum="Boolean" expires_after="2027-06-01">
  <owner>sergiyb@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Tracks whether PSM has reported that state is available during state
    determination.
  </summary>
</histogram>

<histogram name="Enterprise.StateDetermination.StateKeys.RetrievalErrorType"
    enum="StateKeysRetrievalErrorType" expires_after="2027-06-01">
  <owner>sergiyb@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Tracks the final errors due to which state keys failed to be retrieved.
    Errors which are hidden by the retries are not reported.
  </summary>
</histogram>

<histogram name="Enterprise.StateDetermination.StateReturned" enum="Boolean"
    expires_after="2027-06-01">
  <owner>sergiyb@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Tracks whether state request returned state during state determination.
  </summary>
</histogram>

<histogram name="Enterprise.StateDetermination.Status"
    enum="StateDeterminationStatus" expires_after="2027-06-01">
  <owner>sergiyb@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Captures the status of state determination: whether it is enabled and why.
  </summary>
</histogram>

<histogram name="Enterprise.StateDetermination.TotalDuration" units="ms"
    expires_after="2027-06-01">
  <owner>sergiyb@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>Tracks the total duration of state determination.</summary>
</histogram>

<histogram name="Enterprise.StateDetermination.TotalDurationByState.{State}"
    units="ms" expires_after="2027-06-01">
  <owner>sergiyb@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Tracks the total duration of state determination when it results in {State}
    state.
  </summary>
  <token key="State" variants="AutoEnrollmentStates"/>
</histogram>

<histogram
    name="Enterprise.StateDetermination.{RequestType}Request.DmStatusCode"
    enum="EnterpriseDeviceManagementStatus" expires_after="2027-06-01">
  <owner>sergiyb@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Device management server request status for {RequestType} requests to Device
    Management server.
  </summary>
  <token key="RequestType" variants="StateDeterminationDmRequestTypes"/>
</histogram>

<histogram
    name="Enterprise.StateDetermination.{RequestType}Request.NetworkErrorCode"
    enum="NetErrorCodes" expires_after="2027-06-01">
  <owner>sergiyb@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Network error code for {RequestType} requests to Device Management server.
  </summary>
  <token key="RequestType" variants="StateDeterminationDmRequestTypes"/>
</histogram>

<histogram name="Enterprise.SystemFeaturesDisableList" enum="SystemFeature"
    expires_after="2023-06-01">
  <owner>ayaelattar@chromium.org</owner>
  <owner>poromov@chromium.org</owner>
  <summary>
    Shows which system features are set to be disabled by
    SystemFeaturesDisableList policy. Recorded when the policy preference is
    updated with a new system feature. No-op updates aren't counted.
  </summary>
</histogram>

<histogram name="Enterprise.SystemSignals.Collection.WMI.{Signal}.ParsingError"
    enum="DeviceSignalsWmiParsingError" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the actual error whenever parsing of {Signal} from WMI results
    failed.
  </summary>
  <token key="Signal" variants="WmiSystemSignal"/>
</histogram>

<histogram name="Enterprise.SystemSignals.Collection.WMI.{Signal}.QueryError"
    enum="WmiQueryError" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the actual error whenever collection of {Signal} from WMI failed
    with a query error.
  </summary>
  <token key="Signal" variants="WmiSystemSignal"/>
</histogram>

<histogram
    name="Enterprise.SystemSignals.Collection.WSC.AntiVirus.ParsingError"
    enum="DeviceSignalsWscParsingError" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the actual error whenever parsing of AntiVirus info from WSC
    results failed.
  </summary>
</histogram>

<histogram name="Enterprise.SystemSignals.Collection.WSC.AntiVirus.QueryError"
    enum="DeviceSignalsWscQueryError" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the actual error whenever collection of AntiVirus info from WSC
    failed with a query error.
  </summary>
</histogram>

<histogram
    name="Enterprise.SystemSignals.Collection.{Signal}.ParsingError.Rate"
    units="%" expires_after="2027-01-02">
  <owner>seblalancette@chromium.org</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Captures the response parsing error rate whenever collecting {Signal}.
  </summary>
  <token key="Signal">
    <variant name="WMI.Hotfixes" summary="Hotfixes info from WMI"/>
    <variant name="WSC.AntiVirus" summary="AntiVirus info from WSC"/>
  </token>
</histogram>

<histogram name="Enterprise.TimeToUnthrottlePolicyInit" units="ms"
    expires_after="2024-01-14">
  <owner>emaxx@chromium.org</owner>
  <summary>
    Duration between when the construction of the policy stack for a user
    profile starts and when its initialization gets unthrottled.

    Only reported on ChromeOS Ash, only for managed users who are primary users
    in the given session. The values are capped at around 5 seconds, and
    timeouts are reported as this upper boundary value as well.
  </summary>
</histogram>

<histogram
    name="Enterprise.TokenBasedEnrollmentOobeConfig.{OobeConfigSource}.Success"
    enum="BooleanSuccess" expires_after="2027-01-28">
  <owner>justinoue@google.com</owner>
  <owner>chromeos-flex-eng@google.com</owner>
  <summary>
    Records the result of a token-based enrollment that was triggered by the
    following OOBE config source: {OobeConfigSource}.

    Events are recorded in response to a successful or failed token-based
    enrollment attempt.
  </summary>
  <token key="OobeConfigSource">
    <variant name="None" summary="No OOBE config source"/>
    <variant name="PackagingTool"
        summary="OOBE config created by an image token packaging tool"/>
    <variant name="RemoteDeployment"
        summary="OOBE config created during remote deployment"/>
    <variant name="Unknown" summary="Unrecognized OOBE config source value"/>
  </token>
</histogram>

<histogram name="Enterprise.UserInfoFetch.HttpErrorCode"
    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2027-02-07">
  <owner>vincb@google.com</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    Records the http error code when there is a network error that comes with a
    http error code.

    Recorded at the end of an user info fetch if there is a network error that
    comes with a http error code.
  </summary>
</histogram>

<histogram name="Enterprise.UserInfoFetch.Status"
    enum="EnterpriseUserInfoFetchStatus" expires_after="2027-02-07">
  <owner>vincb@google.com</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    Records the status of fetching user info when doing registration for user
    policy.

    Recorded at the end of each user info fetch.
  </summary>
</histogram>

<histogram name="Enterprise.UserPolicy.Count" units="policies"
    expires_after="2027-01-17">
  <owner>vincb@google.com</owner>
  <owner>ftirelo@chromium.org</owner>
  <summary>
    Records the number of user policies that are active when using a managed
    account.

    Recorded once during the profile's browsing session on the first policy
    update after signing in with a managed account.
  </summary>
</histogram>

<histogram name="Enterprise.UserPolicyChromeOS.ChildUser.OAuthTokenError"
    enum="GoogleServiceAuthError" expires_after="2027-01-03">
  <owner>longbowei@google.com</owner>
  <owner>zhangwenyu@google.com</owner>
  <owner>michaelpg@chromium.org</owner>
  <summary>Failure reason for OAuth token fetch for child user.</summary>
</histogram>

<histogram name="Enterprise.UserPolicyChromeOS.InitialFetch.OAuth2Error"
    enum="GoogleServiceAuthError" expires_after="2026-07-10">
  <owner>igorcov@chromium.org</owner>
  <owner>asumaneev@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Service error during OAuth2 access token fetch.

    There is a gap in data as the histogram was expired from 2022-03-01 till
    2023-02-09.
  </summary>
</histogram>

<histogram name="Enterprise.UserPolicyChromeOS.ReregistrationResult"
    enum="EnterpriseUserPolicyChromeOSReregistrationResult"
    expires_after="2026-06-28">
  <owner>hendrich@chromium.org</owner>
  <owner>rbock@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <owner>managed-devices@google.com</owner>
  <summary>Re-registration results after failed policy fetch.</summary>
</histogram>

<histogram
    name="Enterprise.UserRemoteCommand.Executed{Enterprise_RemoteCommandType}"
    enum="RemoteCommandExecutionStatus" expires_after="2027-01-03">
  <owner>asumaneev@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events for counting status of executed user remote commands. The metric
    includes only signed user remote commands. Reports a final status of
    finished remote command (e.g. success, failure or termination).
    {Enterprise_RemoteCommandType}
  </summary>
  <token key="Enterprise_RemoteCommandType"
      variants="Enterprise_RemoteCommandType">
    <variant name=""/>
  </token>
</histogram>

<histogram name="Enterprise.UserRemoteCommand.Received"
    enum="RemoteCommandReceivedStatus" expires_after="2026-11-01">
  <owner>asumaneev@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events for counting received user remote commands. The metric includes
    signed user remote commands, both valid and invalid. Valid remote command is
    counted by its type. Invalid remote command is counted by a reason why it is
    considered invalid (e.g. unknown type or duplication).
  </summary>
</histogram>

<histogram name="Enterprise.UserRemoteCommandInvalidations"
    enum="EnterprisePolicyInvalidations" expires_after="2026-11-01">
  <owner>asumaneev@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Events for counting user remote commands invalidations received with and
    without payloads. Invalidations indicate that there is a remote command to
    execute. Payloads provide context about the remote commands update, but may
    be absent if dropped by the invalidation service.

    Metric is similar to Enterprise.PolicyInvalidations.
  </summary>
</histogram>

<histogram name="Enterprise.VerifiedAccess.SAML.DeviceTrustMatchesEndpoints"
    enum="Boolean" expires_after="2027-01-02">
  <owner>lmasopust@google.com</owner>
  <owner>cbe-device-trust-eng@google.com</owner>
  <summary>
    Recorded when building a response for a challenge from Verified Access
    server for remote attestation during SAML authentication. This captures if
    Device Trust is configured alongside Verified Access for the current
    endpoint or not.
  </summary>
</histogram>

<histogram name="Enterprise.VpdUpdateStatus" units="units"
    expires_after="2026-07-14">
  <owner>igorcov@chromium.org</owner>
  <owner>tnagel@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    The status code (exit code or signal) from VPD update operation (Chrome OS).
  </summary>
</histogram>

<histogram name="Enterprise.Watermark.TimestampTimezoneType"
    enum="WatermarkTimestampTimezoneType" expires_after="2027-08-01">
  <owner>adamkl@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records the timezone evaluation type used when rendering enterprise DLP
    watermarks.
  </summary>
</histogram>

<histogram
    name="Enterprise.{ContentAnalysisProtocol}Request.{ContentAnalysisRequestType}.Duration"
    units="ms" expires_after="2027-02-07">
  <owner>nancylanxiao@google.com</owner>
  <owner>domfc@chromium.org</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records the duration of scanning requests, parametrized by the protocol used
    and the type of content that's uploaded. It is logged once per user action
    that would trigger this Connector.
  </summary>
  <token key="ContentAnalysisProtocol" variants="ContentAnalysisProtocol"/>
  <token key="ContentAnalysisRequestType"
      variants="ContentAnalysisRequestType"/>
</histogram>

<histogram
    name="Enterprise.{ContentAnalysisProtocol}Request.{ContentAnalysisRequestType}.Result"
    enum="SafeBrowsingBinaryUploadResult" expires_after="2027-02-07">
  <owner>nancylanxiao@google.com</owner>
  <owner>domfc@chromium.org</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records the result of scanning requests, parametrized by the protocol used
    and the type of content that's uploaded. It is logged once per user action
    that would trigger this Connector.
  </summary>
  <token key="ContentAnalysisProtocol" variants="ContentAnalysisProtocol"/>
  <token key="ContentAnalysisRequestType"
      variants="ContentAnalysisRequestType"/>
</histogram>

<histogram name="Enterprise.{FileUploadEvent}.Cancelled.BatchSize"
    units="units" expires_after="2027-05-04">
  <owner>domfc@chromium.org</owner>
  <owner>chrome-enterprise-data-protection@google.com</owner>
  <summary>
    Number of files in {FileUploadEvent} that was cancelled. Recorded every time
    files were cancelled before scan completion.
  </summary>
  <token key="FileUploadEvent" variants="FileUploadEvent"/>
</histogram>

<histogram name="Enterprise.{FileUploadEvent}.Cancelled.Duration" units="ms"
    expires_after="2027-05-04">
  <owner>domfc@chromium.org</owner>
  <owner>chrome-enterprise-data-protection@google.com</owner>
  <summary>
    Duration of the scan from the moment files were selected until the scan was
    cancelled in {FileUploadEvent}. Recorded every time files were cancelled
    before scan completion.
  </summary>
  <token key="FileUploadEvent" variants="FileUploadEvent"/>
</histogram>

<histogram
    name="Enterprise.{LocalOrCloud}ContentAnalysis.{DeepScanAccessPoint}.{FinalResult}.Duration"
    units="ms" expires_after="2027-02-07">
  <owner>alxchn@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    The duration of a {LocalOrCloud} {DeepScanAccessPoint} content analysis
    which had the {FinalResult} result, measured from the time it was created to
    when all scans the data requires return verdicts.
  </summary>
  <token key="LocalOrCloud">
    <variant name="" summary="Cloud"/>
    <variant name="Local" summary="Local"/>
  </token>
<!-- LINT.IfChange(FinalContentAnalysisResult) -->

  <token key="FinalResult">
    <variant name="Cancelled"/>
    <variant name="EncryptedFiles"/>
    <variant name="FailClosed"/>
    <variant name="Failure"/>
    <variant name="ForceSaveToCloud"/>
    <variant name="KeptInManagedChrome"/>
    <variant name="LargeFiles"/>
    <variant name="Success"/>
    <variant name="Warning"/>
  </token>
<!-- LINT.ThenChange(//components/enterprise/connectors/core/common.h:FinalContentAnalysisResult) -->

  <token key="DeepScanAccessPoint" variants="DeepScanAccessPoint"/>
</histogram>

<histogram name="Enterprise.{Page}PromotionBannerAction"
    enum="PromotionBannerAction" expires_after="2026-12-16">
  <owner>austinzzr@chromium.org</owner>
  <owner>esalma@google.com</owner>
  <summary>
    Record the action the user takes when the promotion banner is shown on the
    chrome://{Page} page. The action can be to either dismiss the page or click
    on a button.
  </summary>
  <token key="Page" variants="PromotionPages"/>
</histogram>

<histogram name="Enterprise.{Page}PromotionBannerDisplayed" enum="Boolean"
    expires_after="2027-01-03">
  <owner>austinzzr@chromium.org</owner>
  <owner>esalma@google.com</owner>
  <summary>
    Records the number of times the promotion banner on chrome://{Page} is
    visited and displayed or visited but not displayed.
  </summary>
  <token key="Page" variants="PromotionPages"/>
</histogram>

<histogram name="Enterprise.{UploadEvent}.FileCount" units="count"
    expires_after="2027-02-07">
  <owner>alshawwa@chromium.org</owner>
  <owner>nancylanxiao@google.com</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Records the number of files uploaded for {UploadEvent} events. It is
    recorded once per user action. The user action may be a drag and drop event,
    or a file system dialog to upload multiple files.
  </summary>
  <token key="UploadEvent" variants="FileUploadEvent"/>
</histogram>

<histogram name="Enterprise.{UploadEvent}.Throttled" enum="BooleanHit"
    expires_after="2027-10-04">
  <owner>alxchn@chromium.org</owner>
  <owner>cbe-cep-eng@google.com</owner>
  <summary>
    Counts how many {UploadEvent} upload user actions received a 429 (too many
    requests) response. Only recorded once per file upload user action, even
    though each action may contain multiple uploads.
  </summary>
  <token key="UploadEvent" variants="FileUploadEvent"/>
</histogram>

<histogram name="EnterpriseCheck.AzureADJoinStatusCheckTime" units="ms"
    expires_after="2027-02-07">
  <owner>igorruvinov@chromium.org</owner>
  <owner>ydago@chromium.org</owner>
  <owner>pastarmovj@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    Time elapsed for checking the Azure AD join status. This is only recorded
    once during the first successful join status check.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.InDomain" enum="BooleanEnabled"
    expires_after="2027-02-07">
  <owner>ydago@chromium.org</owner>
  <owner>pastarmovj@chromium.org</owner>
  <summary>
    Whether the machine is part of an AD domain. This check is performed once at
    start-up on Windows.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.InvalidJsonPolicies" enum="EnterprisePolicies"
    expires_after="2025-12-01">
  <owner>olsen@chromium.org</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    A set of policy rules that failed validation due to unparsable JSON, or JSON
    that did not match the schema. This validation happens on start-up and when
    the policy has changed.

    The histogram was expired (not recording data) from 2020-06-18 until
    2021-03-15 and from 2021-07-01 to 2022-10-23 and from 2024-12-01 to
    2025-03-11. Data may be missing.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.InvalidPolicies" enum="EnterprisePolicies"
    expires_after="2027-02-07">
  <owner>pastarmovj@chromium.org</owner>
  <owner>ydago@chromium.org</owner>
  <summary>
    A set of policy rules that were ignored due to integrity violations while
    parsing the policy data which happens on start-up and when the policy has
    changed.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.InvalidPoliciesDetected"
    units="disabled policies" expires_after="2027-02-07">
  <owner>pastarmovj@chromium.org</owner>
  <owner>zmin@chomium.org</owner>
  <summary>
    The number of disabled policy entries on Windows due to integrity violations
    while parsing the policy data which happens on start-up and when the policy
    has changed.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.IsDomainJoined" enum="BooleanEnabled"
    expires_after="2027-02-07">
  <owner>pastarmovj@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    Whether the machine is joined to an AD domain. This check is performed once
    at start-up on Windows and Mac.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.IsEnterpriseUser" enum="BooleanEnabled"
    expires_after="2027-02-07">
  <owner>pastarmovj@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    Whether the machine is considered an enterprise user. An enterprise user is
    either in a domain, either local or cloud via AAD. This check is performed
    once at start-up on Windows.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.IsEnterpriseUser2" enum="BooleanEnabled"
    expires_after="2027-02-07">
  <owner>yeroshkin@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    Whether the machine is considered an enterprise user. An enterprise user is
    either in a domain, either local or cloud via AAD (strict join type check).
    This check is performed once at start-up on Windows.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.IsFullyManaged2" enum="IsFullyManagedBoolean"
    expires_after="2027-02-07">
  <owner>twellington@google.com</owner>
  <owner>tedchcoc@chromium.org</owner>
  <summary>
    On Android (OS version Lollipop+): Whether the device has a &quot;device
    owner&quot; app installed. This check is performed once on application
    start-up.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.IsJoinedToAzureAD" enum="BooleanEnabled"
    expires_after="2027-02-07">
  <owner>igorruvinov@chromium.org</owner>
  <owner>ydago@chromium.org</owner>
  <owner>pastarmovj@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    Whether the machine is joined to an Azure AD domain or the user has added
    one or more work/school accounts to their login session. This check is
    performed once at start-up on Windows.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.IsJoinedToAzureAD2" enum="BooleanEnabled"
    expires_after="2027-02-07">
  <owner>yeroshkin@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    Whether the machine is joined to an Azure AD domain (strict join type
    check). This does not return true if there are only Azure AD work/school
    accounts added. This check is performed once at start-up on Windows.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.IsLocalMachine" enum="Boolean"
    expires_after="2026-12-01">
  <owner>zmin@chromium.org</owner>
  <owner>pastarmovj@chromium.org</owner>
  <summary>
    Whether the full machine name is the same as the short one, identifying a
    local machine. This check is performed once at start-up on Windows.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.IsLocalUser" enum="Boolean"
    expires_after="2026-12-01">
  <owner>zmin@chromium.org</owner>
  <owner>pastarmovj@chromium.org</owner>
  <summary>
    Whether the currently logged in user is a local user or not, based on its
    SAM compatible user name and machine name. This check is performed once at
    start-up on Windows.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.IsManaged2" enum="BooleanEnabled"
    expires_after="2027-02-07">
  <owner>zmin@chromium.org</owner>
  <owner>pastarmovj@chromium.org</owner>
  <summary>
    On Windows: Whether the machine is managed via MDM. On macOS: Whether Chrome
    found a file of managed policies to follow. On Android (OS version
    Lollipop+): Whether the device has a profile owner app. On iOS: whether
    Chrome is managed via MDM. This check is performed once on application
    start-up.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.IsManagedOrEnterpriseDevice"
    enum="BooleanEnabled" expires_after="2027-02-07">
  <owner>pastarmovj@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    Whether the machine is managed or part of an enterprise. This includes
    devices that are either in a domain or managed via MDM. This check is
    performed once at start-up on Windows.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.IsManagedOrEnterpriseDevice2"
    enum="BooleanEnabled" expires_after="2027-02-07">
  <owner>yeroshkin@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    Whether the machine is managed or part of an enterprise. This includes
    devices that are either in a domain or managed via MDM (strict Azure AD join
    check). This check is performed once at start-up on Windows.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.IsManagedOrEnterpriseDeviceAndCBCM"
    enum="DeviceManagementAndCBCMState" expires_after="2026-12-01">
  <owner>zmin@chromium.org</owner>
  <owner>noahrose@google.com</owner>
  <summary>
    Records the 4-state combination of whether the machine is managed or part of
    an enterprise (in a domain or via MDM) and whether CBCM is available or
    enrolled. Recorded on Windows when CBCM tokens are loaded from Registry.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.IsManagedOrEnterpriseDeviceAndCBCM2"
    enum="DeviceManagementAndCBCMState" expires_after="2026-12-01">
  <owner>zmin@chromium.org</owner>
  <owner>noahrose@google.com</owner>
  <summary>
    Records the 4-state combination of whether the machine is managed or part of
    an enterprise (in a domain or via MDM with strict Azure AD join check) and
    whether CBCM is available or enrolled. Recorded on Windows when CBCM tokens
    are loaded from Registry.Recorded on Windows when CBCM tokens are loaded
    from Registry.Recorded on Windows when CBCM tokens are loaded from Registry.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.IsRunningOnManagedProfileDuration" units="ms"
    expires_after="2027-02-07">
  <owner>nafisabedin@google.com</owner>
  <improvement direction="LOWER_IS_BETTER"/>
  <summary>
    Records the time it takes to calculate whether there is a profile owner or
    device owner app on the device. Android only.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.Mac.IsCurrentUserDomainUser" enum="Boolean"
    expires_after="2026-12-01">
  <owner>pastarmovj@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    On the Mac: Whether the current user has an enterprise identity in Open
    Directory. This check is performed once at start-up.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.Mac.IsDeviceMDMEnrolledNew"
    enum="EnterpriseMacMDMStatusNew" expires_after="2026-12-01">
  <owner>pastarmovj@chromium.org</owner>
  <owner>zmin@chromium.org</owner>
  <summary>
    On the Mac: Whether the machine is managed via MDM, with data obtained via a
    new method (profiles) that is only available in 10.13.4 or later. This check
    is performed once at start-up.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.OSType" enum="OsSuite"
    expires_after="2026-12-01">
  <owner>ydago@chromium.org</owner>
  <owner>pastarmovj@chromium.org</owner>
  <summary>
    The rough Windows suite we are running on. This check is performed once at
    start-up on Windows. The histogram was removed in 108 and reinstated in 111.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.SystemCallCount" units="count"
    expires_after="2026-10-25">
  <owner>nafisabedin@google.com</owner>
  <improvement direction="LOWER_IS_BETTER"/>
  <summary>
    Records the number of system calls made when trying to determine whether
    there is a profile owner or device owner app on the device. Android only.
  </summary>
</histogram>

<histogram name="EnterpriseCheck.WindowsProfileType" enum="WindowsProfileType"
    expires_after="2026-04-05">
  <owner>wfh@chromium.org</owner>
  <owner>chrome-platform-security-core@google.com</owner>
  <summary>
    The Windows profile type of the current user. This is obtained by calling
    the GetProfileType API once at start-up on Windows.
  </summary>
</histogram>

<histogram name="NetworkedProfile.Check" enum="NetworkedProfileCheck"
    expires_after="2027-01-03">
  <owner>pastarmovj@chromium.org</owner>
  <owner>grt@chromium.org</owner>
  <summary>
    Tracks events connected with checking whether the user profile is configured
    on a network share. Windows only.
  </summary>
</histogram>

<histogram name="SkyVault.LocalUserFilesCleanupCount" units="count"
    expires_after="2025-03-01">
  <owner>poromov@chromium.org</owner>
  <owner>ayaelattar@chromium.org</owner>
  <summary>
    The number of times cleanup of local files was initiated after user session
    startup. Recorded at every time accumulating number of previous calls in
    this session.
  </summary>
</histogram>

</histograms>

</histogram-configuration>
