chromium/tools/metrics/histograms/metadata/permissions/histograms.xml

<!--
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 Permissions 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
[email protected].
-->

<histogram-configuration>

<histograms>

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

<variants name="AllPermissionTypes">
  <variant name="AR"/>
  <variant name="AudioAndVideoCapture"/>
  <variant name="AudioCapture"/>
  <variant name="CameraPanTiltZoom"/>
  <variant name="ClipboardReadWrite"/>
  <variant name="Geolocation"/>
  <variant name="IdleDetection"/>
  <variant name="LocalFonts"/>
  <variant name="MidiSysEx"/>
  <variant name="MultipleDownload"/>
  <variant name="Nfc"/>
  <variant name="Notifications"/>
  <variant name="PaymentHandler"/>
  <variant name="ProtectedMedia"/>
  <variant name="Quota"/>
  <variant name="RegisterProtocolHandler"/>
  <variant name="SecurityKeyAttestation"/>
  <variant name="StorageAccess"/>
  <variant name="TopLevelStorageAccess"/>
  <variant name="U2fApiRequest"/>
  <variant name="VideoCapture"/>
  <variant name="VR"/>
  <variant name="WindowPlacement"/>
</variants>

<!-- LINT.ThenChange(//tools/metrics/histograms/metadata/settings/histograms.xml:AllPermissionTypes) -->

<variants name="ContentSettingSource">
  <variant name="FromAllowlist"/>
  <variant name="FromExtension"/>
  <variant name="FromInstalledWebApp"/>
  <variant name="FromNone"/>
  <variant name="FromPolicy"/>
  <variant name="FromSourceTpcdGrant"/>
  <variant name="FromSupervised"/>
  <variant name="FromUser"/>
</variants>

<variants name="OsScreen">
  <variant name="OS_PROMPT"/>
  <variant name="OS_SYSTEM_SETTINGS"/>
</variants>

<variants name="OsScreenAction">
  <variant name="DISMISSED_SCRIM"/>
  <variant name="DISMISSED_X_BUTTON"/>
  <variant name="SYSTEM_SETTINGS"/>
</variants>

<variants name="PermissionTypeForElementAnchoredBubble">
  <variant name="AR"/>
  <variant name="AudioAndVideoCapture"/>
  <variant name="AudioCapture"/>
  <variant name="Geolocation"/>
  <variant name="VideoCapture"/>
</variants>

<variants name="PermissionTypesSupportPermissionsPolicy">
  <variant name="AR"/>
  <variant name="AudioCapture"/>
  <variant name="ClipboardReadWrite"/>
  <variant name="ClipboardSanitizedWrite"/>
  <variant name="DisplayCapture"/>
  <variant name="Geolocation"/>
  <variant name="IdleDetection"/>
  <variant name="LocalFonts"/>
  <variant name="Midi"/>
  <variant name="MidiSysEx"/>
  <variant name="ProtectedMedia"/>
  <variant name="StorageAccess"/>
  <variant name="TopLevelStorageAccess"/>
  <variant name="VideoCapture"/>
  <variant name="VR"/>
  <variant name="WakeLockScreen"/>
  <variant name="WindowPlacement"/>
</variants>

<variants name="PromptDisposition">
  <variant name="AnchoredBubble"/>
  <variant name="CustomModalDialog"/>
  <variant name="ElementAnchoredBubble"/>
  <variant name="LocationBarLeftChip"/>
  <variant name="LocationBarLeftChipAutoBubble"/>
  <variant name="LocationBarLeftQuietAbusiveChip"/>
  <variant name="LocationBarLeftQuietChip"/>
  <variant name="LocationBarRightAnimatedIcon"/>
  <variant name="LocationBarRightStaticIcon"/>
  <variant name="MessageUI"/>
  <variant name="MiniInfobar"/>
  <variant name="ModalDialog"/>
  <variant name="NoneVisible"/>
</variants>

<variants name="Top2PermissionTypes">
  <variant name="Geolocation"/>
  <variant name="Notifications"/>
</variants>

<histogram name="BrowserDialogs.ExternalProtocol.BlockState"
    enum="BlockStateMetric" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    The observance of external protocol schemes that are denied or allowed by
    default built-in lists, enterprise policy, or user preference.

    The kAllowedDefaultNews and kNewsNotDefault values are influenced by the
    PromptForExternalNewsSchemes feature. When enabled, kNewsNotDefault will be
    emtited with another histogram value to indicate whether it was allowed by
    policy, preference, or prompt. When disabled, the kAllowedDefaultNews sample
    will not be emitted.
  </summary>
</histogram>

<histogram name="BrowserDialogs.ExternalProtocol.HandleState"
    enum="HandleStateType" expires_after="2023-05-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Whether or not the user checked the option in the external protocol dialog
    to remember their choice of opening or not opening the specified app.
    Recorded each time the user interacts with the External Protocol Dialog,
    when making a decision.
  </summary>
</histogram>

<histogram name="BrowserDialogs.ExternalProtocol.Scheme"
    enum="ExternalProtocolScheme" expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the scheme of an external protocol request. Only logs schemes listed
    among the enum ExternalProtocolScheme. This is logged once for each request
    to open an external protocol.
  </summary>
</histogram>

<histogram name="Permissions.Action" enum="PermissionAction"
    expires_after="never">
<!-- expires-never: Primary metrics for monitoring capability usage and trends. -->

  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Tracks user interactions on permission prompts, aggregated across all UI
    dispositions, including quiet permission prompts due to CPSS or Crowd Deny.

    One sample is recorded each time a permission request triggers a prompt,
    even if the prompt UI is never seen by the user. This histogram does not
    include permission requests that are granted/denied because the user had
    previously made a decision; nor requests that are denied by Permission
    Policy, per-site permission embargo, or are cancelled while queued.

    The suffix of the histogram indicates which particular permission.
  </summary>
</histogram>

<histogram name="Permissions.Action.WithDisposition.{DispositionType}"
    enum="PermissionAction" expires_after="2025-02-09">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Tracks the action that a user had taken per permission prompt UI
    disposition. Suffixed by the UI disposition that the prompt used. Recorded
    when a permission prompt has been resolved.
  </summary>
  <token key="DispositionType">
    <variant name="AnchoredBubble"
        summary="A bubble under the site settings padlock"/>
    <variant name="CustomModalDialog" summary="Other custom modal dialogs"/>
    <variant name="ElementAnchoredBubble"
        summary="A bubble shown near the embedded permission element, when
                 the element is clicked."/>
    <variant name="LocationBarLeftChip"
        summary="A chip on the left-hand side of the location bar that shows
                 a bubble when clicked"/>
    <variant name="LocationBarLeftChipAutoBubble"
        summary="A chip on the left-hand side of the location bar that
                 automatically shows a bubble"/>
    <variant name="LocationBarLeftQuietAbusiveChip"
        summary="A less prominent, non-animated version of a chip on the
                 left-hand side of the location bar that shows a bubble when
                 clicked"/>
    <variant name="LocationBarLeftQuietChip"
        summary="A less prominent version of a chip on the left-hand side of
                 the location bar that shows a bubble when clicked"/>
    <variant name="LocationBarRightAnimatedIcon"
        summary="An animated indicator on the right-hand side of the location
                 bar"/>
    <variant name="LocationBarRightStaticIcon"
        summary="A static indicator on the right-hand side of the location
                 bar"/>
    <variant name="MessageUI"
        summary="A message bubble near top of the screen and below the
                 location bar (alternative to Infobar UI)"/>
    <variant name="MiniInfobar"
        summary="An initially-collapsed infobar at the bottom of the page"/>
    <variant name="ModalDialog" summary="A modal dialog"/>
    <variant name="NoneVisible" summary="There was no UI being shown"/>
    <variant name="NotApplicable" summary="No permission prompt at all"/>
  </token>
</histogram>

<histogram name="Permissions.Action.{PermissionType}.CrossOriginFrame"
    enum="PermissionAction" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded when a permission prompt has been resolved and the permission
    request was made from a cross-origin iframe. Records the action that a user
    had taken.
  </summary>
  <token key="PermissionType" variants="AllPermissionTypes"/>
</histogram>

<histogram
    name="Permissions.Action.{PermissionType}.CrossOriginFrame.TopLevelHeaderPolicy"
    enum="PermissionsPolicyConfiguration" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded whenever a permission prompt is shown to the user which was
    triggered by a request made from a cross-origin frame. Records what type of
    type of permission header policy the top-level document defined for the
    accessed feature.
  </summary>
  <token key="PermissionType"
      variants="PermissionTypesSupportPermissionsPolicy"/>
</histogram>

<histogram
    name="Permissions.ActivityIndicator.{Disposition}.{PermissionType}.{Action}"
    enum="ActivityIndicatorState" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded when a permission activity indicator has been shown from in the
    location bar. Records the indicator's state.
  </summary>
  <token key="PermissionType">
    <variant name="AudioAndVideoCapture"/>
    <variant name="AudioCapture"/>
    <variant name="VideoCapture"/>
  </token>
  <token key="Disposition">
    <variant name="LHS"/>
  </token>
  <token key="Action">
    <variant name="Click"/>
    <variant name="Show"/>
  </token>
</histogram>

<histogram name="Permissions.API.CreatedPermissionStatusObjects" units="units"
    expires_after="2024-12-10">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Records the number of PermissionStatus handles that have been created by a
    document (via the &quot;navigator.permissions&quot; API). Recorded at the
    destruction of said document. Only recorded if the document has created at
    least one PermissionStatus handle.
  </summary>
</histogram>

<histogram name="Permissions.AutoBlocker.EmbargoPromptSuppression"
    enum="PermissionEmbargoStatus" expires_after="2025-01-24">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    For every permission request that would show a prompt to the user, this
    metric tracks whether the request is suppressed by embargo (and the source
    of that embargo), or whether there is no embargo and the prompt is shown.
    This is the proportion of permission prompts that the user would have seen
    that have been blocked due to embargo.

    If the (origin, permission) pair was previously placed under embargo, no
    prompt is displayed and the reason for embargo is recorded. Otherwise, the
    prompt is shown and a no embargo reason is recorded.
  </summary>
</histogram>

<histogram name="Permissions.AutoBlocker.EmbargoStatus"
    enum="PermissionEmbargoStatus" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Tracks the reason that an (origin, permission) pair has been placed under
    embargo (blocked from making requests for that permission for a period of
    time). This is triggered when a permission is placed under embargo for
    blacklisting (once Safe Browsing has returned a result), when a permission
    prompt has been shown and it is placed under embargo for repeated
    dismissals, or when a permission prompt is shown and not embargoed.
  </summary>
</histogram>

<histogram name="Permissions.Chip.TimeToInteraction" units="ms"
    expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Records how long it takes for the user to click on the permission chip after
    it was shown.
  </summary>
</histogram>

<histogram name="Permissions.ConfirmationChip.PageInfoDialogAccessType"
    enum="PageInfoDialogAccessType" expires_after="2025-05-05">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Record each time the page info bubble is opened through either the lock icon
    or the confirmation chip, how it was opened and how the opening related to
    the confirmation chip.
  </summary>
</histogram>

<histogram name="Permissions.CrowdDeny.DidHoldbackQuietUi" enum="Boolean"
    expires_after="2025-02-04">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Whenever a notification permission prompt is to be displayed, crowd deny
    might trigger based on site reputation which will result in a quiet
    permission prompt UI to be used. Whenever this happens, there is a small
    chance that the normal UI will still be used. This records, when a quiet UI
    is supposed to be shown, whether it has been randomly selected into the
    hold-back group. In this case the normal UI will be displayed unless
    overriden by the user Prefences.
  </summary>
</histogram>

<histogram name="Permissions.CrowdDeny.PreloadData.DelayedPushNotification"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Record, for each incoming push notification, a delay caused by loading Crowd
    Deny component during abusive an origin verification. It's recorded only for
    non-abusive origins and only if the Crowd Deny request was made while the
    preload data is in the process of being loaded. Timing starts at requesting
    CrowdDenyPreloadData::GetReputationDataForSiteAsync, and timing ends after
    Crowd Deny returns result to
    AbusiveOriginPermissionRevocationRequest::OnSiteReputationReady.
  </summary>
</histogram>

<histogram name="Permissions.CrowdDeny.PreloadData.NotificationUxQuality"
    enum="CrowdDenyNotificationUxQuality" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records, each time a notification permission prompt is about to be shown,
    the NotificationUxQuality result for the requesting origin.
  </summary>
</histogram>

<histogram name="Permissions.CrowdDeny.PreloadData.VersionAtAbuseCheckTime"
    units="date" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Records, each time abusive origin verification is performed, the version of
    the Crowd Deny preload data on disk (not necessarily loaded).
  </summary>
</histogram>

<histogram name="Permissions.CrowdDeny.SafeBrowsing.RequestDuration" units="ms"
    expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records, each time a Safe Browsing request is made in response to a website
    requesting the notification permission, how long that Safe Browsing request
    took. This also includes all delays introduced by thread hopping.
  </summary>
</histogram>

<histogram name="Permissions.CrowdDeny.SafeBrowsing.Verdict"
    enum="CrowdDenySafeBrowsingVerdict" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Records, each time a Safe Browsing request is made in response to a website
    requesting the notification permission, the Safe Browsing verdict regarding
    the notification prompt experience on that site.
  </summary>
</histogram>

<histogram name="Permissions.DSE.AutoPermissionRevertTransition"
    enum="AutoDSEPermissionRevertTransition" expires_after="2025-03-01">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded when the Default Search Engine automatic permission grant is
    reverted. It tracks the transition that the settings for the DSE origin
    takes when this happens. Suffixed by `PermissionTypes` to provide
    information per permission type. Only recorded for Android as that is the
    only platform where the DSE permissions were enabled.
  </summary>
</histogram>

<histogram name="Permissions.DSE.EffectiveSetting" enum="ContentSetting"
    expires_after="2025-03-01">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded at initialization and when the Default Search Engine origin is
    changed. Tracks the setting for the Default Search Engine origin. Suffixed
    by `PermissionTypes` to provide information per permission type. Only
    recorded for Android as that is the only platform where the DSE permissions
    were enabled.
  </summary>
</histogram>

<histogram name="Permissions.Engagement.Accepted" units="%"
    expires_after="2025-01-21">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded when the user accepts the permission prompt. It tracks the Site
    engagement score for sites. For more info check chrome/browser/engagement/
  </summary>
</histogram>

<histogram name="Permissions.Engagement.AcceptedOnce" units="%"
    expires_after="2022-08-25">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded when the user accepts the one time permission prompt. It tracks the
    Site engagement score for sites. For more info check
    chrome/browser/engagement/
  </summary>
</histogram>

<histogram name="Permissions.Engagement.Denied" units="%"
    expires_after="2023-03-05">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded when the user denies the permission prompt. It tracks the Site
    engagement score for sites. For more info check chrome/browser/engagement/
  </summary>
</histogram>

<histogram name="Permissions.Engagement.Dismissed" units="%"
    expires_after="2025-01-21">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded when the user dismisses the permission prompt. It tracks the Site
    engagement score for sites. For more info check chrome/browser/engagement/
  </summary>
</histogram>

<histogram name="Permissions.Engagement.Ignored" units="%"
    expires_after="2023-07-02">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded when the user ignores the permission prompt. It tracks the Site
    engagement score for sites. For more info check chrome/browser/engagement/
  </summary>
</histogram>

<histogram
    name="Permissions.Experimental.PrimaryMainNavigationFinished.{PermissionType}.TopLevelHeaderPolicy"
    enum="PermissionsPolicyConfiguration" expires_after="2024-09-01">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded whenever a navigation finished in a primary main frame. Records
    what type of permission header policy the top-level document defined for the
    feature corresponding to {PermissionType} .
  </summary>
  <token key="PermissionType">
    <variant name="AudioCapture"/>
    <variant name="Geolocation"/>
    <variant name="VideoCapture"/>
  </token>
</histogram>

<histogram
    name="Permissions.Experimental.Usage.{PermissionType}.CrossOriginFrame.TopLevelHeaderPolicy"
    enum="PermissionsPolicyConfiguration" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded whenever a permission is used in a cross-origin frame. Records what
    type of permission header policy the top-level document defined for the
    accessed feature.
  </summary>
  <token key="PermissionType"
      variants="PermissionTypesSupportPermissionsPolicy"/>
</histogram>

<histogram
    name="Permissions.Experimental.Usage.{PermissionType}.IsCrossOriginFrame"
    enum="Boolean" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded whenever a permission is used. Records whether the permission is
    used in a cross origin frame.
  </summary>
  <token key="PermissionType" variants="AllPermissionTypes"/>
</histogram>

<histogram name="Permissions.GetLastCommittedOriginAsURL.IsFileURL"
    enum="Boolean" expires_after="2024-10-30">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded whenever a RenderFrameHost is used to fetch an origin for
    permission verification on Android. This histogram is needed to verify if
    the file url override rule is still needed.
  </summary>
</histogram>

<histogram name="Permissions.MissingOSLevelPermission.Action"
    enum="PermissionAction" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when the &quot;Chrome needs permission...&quot; infobar is
    resolved. Records the resulting action that was taken. Suffixed by
    `PermissionTypes` to provide information per permission type.
  </summary>
</histogram>

<histogram name="Permissions.MissingOSLevelPermission.ShouldShow"
    enum="Boolean" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded when the &quot;Chrome needs permission...&quot; infobar might be
    displayed to the user because a site already has the permission but Chrome
    does not. Records whether the infobar should be displayed or not. Ignores
    situations when the infobar cannot be displayed (for example because there
    is no appropriate web contents) as in those cases no decision is actually
    made. Suffixed by `PermissionTypes` to provide information per permission
    type.
  </summary>
</histogram>

<histogram
    name="Permissions.OnDevicePredictionService.Response.{PermissionType}"
    enum="BooleanIgnored" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded whenever the permissions prediction service(on-device) responds to
    a {PermissionType} permission request. Records whether its response was
    ignored or not.
  </summary>
  <token key="PermissionType" variants="Top2PermissionTypes"/>
</histogram>

<histogram name="Permissions.OneTimePermission.{PermissionType}.Event"
    enum="OneTimePermissionEvent" expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Logs granting, revocation, and expiry behaviors of one time permissions.
    Starting with M116, the lifetime limit is enforced actively instead of
    lazily, and expiration is accurately captured in &quot;Expired after maximum
    lifetime&quot;. M116 also added the functionality to expire on suspend. This
    event is also captured in the new enum value &quot;Expired because the
    device was suspended&quot;. Note that these buckets are only recorded for
    clients &gt;= M116.

    Warning: &quot;Revoked one time grant manually&quot; is only recorded
    correctly for clients &gt;= M116 (and should be ignored for previous major
    versions)
  </summary>
  <token key="PermissionType">
    <variant name="AudioCapture"/>
    <variant name="Geolocation"/>
    <variant name="VideoCapture"/>
  </token>
</histogram>

<histogram
    name="Permissions.PageInfo.Changed.{PermissionType}.Reallowed.Outcome"
    enum="PermissionChangeInfo" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Records if a user manually reallowed permission state via PageInfo. Recorded
    when the user closes a tab, makes cross-origin navigation, or if permission
    is used by an origin. Grouped by whether permission was used, the page was
    reloaded and a &quot;Reload this page&quot; infobar was shown.
  </summary>
  <token key="PermissionType" variants="AllPermissionTypes"/>
</histogram>

<histogram name="Permissions.PageInfo.Changed.{PermissionType}.{ReloadInfoBar}"
    enum="PermissionChangeAction" expires_after="2025-04-28">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    This metric measures how often and in what way users change permissions
    state via PageInfo and if we show a &quot;Reload this page&quot; info bar.
    Recorded when users changes permissions state or clicks the &quot;Reset
    permission&quot; button in PageInfo.
  </summary>
  <token key="PermissionType">
    <variant name="AudioCapture"/>
    <variant name="VideoCapture"/>
  </token>
  <token key="ReloadInfoBar">
    <variant name="ReloadInfobarNotShown"/>
    <variant name="ReloadInfobarShown"/>
  </token>
</histogram>

<histogram name="Permissions.PageInfo.ChangedWithin1m.{PermissionType}"
    enum="PermissionChangeAction" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    This metric measures how often and in what way users change their mind
    within the first minute of making an active permission decision, i.e. any
    PermissionAction that is any action that is not ignore, dismiss or an
    automated revoke event.
  </summary>
  <token key="PermissionType" variants="AllPermissionTypes"/>
</histogram>

<histogram name="Permissions.PredictionService.PredictionSource"
    enum="PermissionPredictionSource" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded whenever a permission is sent to the prediction service. Records
    whether the request was sent to the local on-device prediction service or
    the server side prediction service.
  </summary>
</histogram>

<histogram name="Permissions.PredictionService.PredictionThresholdSource"
    enum="PermissionPredictionThresholdSource" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded whenever on-device Permissions prediciton service model is
    executed. Records if the threshold value for the non-grant score is obtained
    from the model's metadata or if the default fallback was used.
  </summary>
</histogram>

<histogram name="Permissions.PredictionService.Response.{PermissionType}"
    enum="BooleanIgnored" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded whenever the permissions prediction service(server-side) responds
    to a {PermissionType} permission request. Records whether its response was
    ignored or not.
  </summary>
  <token key="PermissionType" variants="Top2PermissionTypes"/>
</histogram>

<histogram name="Permissions.Prompt.Accepted" enum="PermissionRequestType"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Tracks the permission bubbles (merged and non-merged) that are accepted.
    Merged bubbles are considered accepted if all permissions are allowed.
  </summary>
</histogram>

<histogram name="Permissions.Prompt.Accepted.PriorDismissCount2" units="units"
    expires_after="2025-01-25">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    This metric, recorded at the time of a permission prompt accept, records the
    total number of prompt dismissal events for this origin since the last time
    the user explicitly set the permission state or cleared history / site data
    and prior to the accept. The suffix of the histogram indicates which
    particular permission.
  </summary>
</histogram>

<histogram name="Permissions.Prompt.Accepted.PriorIgnoreCount2" units="units"
    expires_after="2024-10-31">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    This metric, recorded at the time of a permission prompt accept, records the
    total number of prompt ignore events for this origin since the last time the
    user explicitly set the permission state or cleared history / site data and
    prior to the accept. The suffix of the histogram indicates which particular
    permission.
  </summary>
</histogram>

<histogram name="Permissions.Prompt.AcceptedOnce" enum="PermissionRequestType"
    expires_after="2024-10-31">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded when the user clicks on the one-time allow button of the permission
    prompt. Tracks the permission bubbles (merged and non-merged) that are
    accepted once. Merged bubbles are considered accepted if all permissions are
    allowed.
  </summary>
</histogram>

<histogram name="Permissions.Prompt.AcceptedOnce.PriorDismissCount2"
    units="units" expires_after="2024-10-31">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    This metric, recorded at the time of a permission prompt one-time accept,
    records the total number of prompt dismissal events for this origin since
    the last time the user explicitly set the permission state or cleared
    history / site data and prior to the accept. The suffix of the histogram
    indicates which particular permission.
  </summary>
</histogram>

<histogram name="Permissions.Prompt.AcceptedOnce.PriorIgnoreCount2"
    units="units" expires_after="2024-10-31">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    This metric, recorded at the time of a permission prompt one-time accept,
    records the total number of prompt ignore events for this origin since the
    last time the user explicitly set the permission state or cleared history /
    site data and prior to the accept. The suffix of the histogram indicates
    which particular permission.
  </summary>
</histogram>

<histogram name="Permissions.Prompt.Denied" enum="PermissionRequestType"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Tracks the permission bubbles (merged and non-merged) that are denied.
    Merged bubbles are considered denied if any permission is denied.
  </summary>
</histogram>

<histogram name="Permissions.Prompt.Denied.PriorDismissCount2" units="units"
    expires_after="2024-10-31">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    This metric, recorded at the time of a permission prompt deny, records the
    total number of prompt dismissal events for this origin since the last time
    the user explicitly set the permission state or cleared history / site data
    and prior to the accept. The suffix of the histogram indicates which
    particular permission.
  </summary>
</histogram>

<histogram name="Permissions.Prompt.Denied.PriorIgnoreCount2" units="units"
    expires_after="2024-10-31">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    This metric, recorded at the time of a permission prompt deny, records the
    total number of prompt ignore events for this origin since the last time the
    user explicitly set the permission state or cleared history / site data and
    prior to the accept. The suffix of the histogram indicates which particular
    permission.
  </summary>
</histogram>

<histogram name="Permissions.Prompt.Dismissed.InvalidContentSetting"
    enum="ContentSetting" expires_after="2025-06-01">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    This metric is used to investigate a crash observed when a certain type of
    permission prompt is dismissed. It's recorded when a permission prompt is
    dismissed with an invalid content setting (aka one that does not have a
    corresponding request type) and it records the content setting itself.
  </summary>
</histogram>

<histogram name="Permissions.Prompt.Dismissed.PriorDismissCount2" units="units"
    expires_after="2024-07-09">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    This metric, recorded at the time of a permission prompt dismiss, records
    the total number of prompt dismissal events for this origin since the last
    time the user explicitly set the permission state or cleared history / site
    data and prior to the dismiss. The suffix of the histogram indicates which
    particular permission.
  </summary>
</histogram>

<histogram name="Permissions.Prompt.Dismissed.PriorIgnoreCount2" units="units"
    expires_after="2024-10-31">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    This metric, recorded at the time of a permission prompt dismiss, records
    the total number of prompt ignore events for this origin since the last time
    the user explicitly set the permission state or cleared history / site data
    and prior to the dismiss. The suffix of the histogram indicates which
    particular permission.
  </summary>
</histogram>

<histogram name="Permissions.Prompt.Has{FaviconType}Favicon" enum="Boolean"
    expires_after="2024-08-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether a permission prompt for a two origin scoped permission (e.g.
    StorageAccess) has successfully loaded a favicon. Recorded when a permission
    prompt with favicons is shown.
  </summary>
  <token key="FaviconType">
    <variant name="Embedding"/>
    <variant name="Requesting"/>
  </token>
</histogram>

<histogram name="Permissions.Prompt.Ignored.PriorDismissCount2" units="units"
    expires_after="2024-10-31">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    This metric, recorded at the time of a permission prompt ignore, records the
    total number of prompt dismissal events for this origin since the last time
    the user explicitly set the permission state or cleared history / site data
    and prior to the ignore. The suffix of the histogram indicates which
    particular permission.
  </summary>
</histogram>

<histogram name="Permissions.Prompt.Ignored.PriorIgnoreCount2" units="units"
    expires_after="2024-10-31">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    This metric, recorded at the time of a permission prompt ignore, records the
    total number of prompt ignore events for this origin since the last time the
    user explicitly set the permission state or cleared history / site data and
    prior to the ignore. The suffix of the histogram indicates which particular
    permission.
  </summary>
</histogram>

<histogram name="Permissions.Prompt.Infobar.DetailsExpanded" enum="Boolean"
    expires_after="2024-10-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Tracks whether the user has expanded the infobar notification permission
    request.
  </summary>
</histogram>

<histogram name="Permissions.Prompt.Notifications.EnabledAppLevel"
    enum="Boolean" expires_after="2024-12-24">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Records whether chrome has notifications already enabled at the app level or
    at least is allowed to request for app level permission. When none of these
    conditions are true, site level notification permissions are blocked.
    Recorded when a site attempts to prompt the user for notifications
    permission. Android only.
  </summary>
</histogram>

<histogram name="Permissions.Prompt.Shown" enum="PermissionRequestType"
    expires_after="2025-02-09">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Tracks how many times permission prompts are shown to users.
  </summary>
</histogram>

<histogram
    name="Permissions.Prompt.{PermissionType}.ElementAnchoredBubble.Dismissed.Reason"
    enum="DismissedReason" expires_after="2025-02-16">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Tracks how a {PermissionType} prompt was dismissed by the user. Tracked when
    the user dimisses an ElementAnchoredBubble prompt.
  </summary>
  <token key="PermissionType"
      variants="PermissionTypeForElementAnchoredBubble"/>
</histogram>

<histogram
    name="Permissions.Prompt.{PermissionType}.ElementAnchoredBubble.Variant"
    enum="ElementAnchoredBubbleVariant" expires_after="2025-06-30">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Records which screen was shown to the user as part of an
    ElementAnchoredBubble permission prompt. Multiple screens can be shown
    sequentially as part of the same prompt. Is recorded when the screen is
    shown.
  </summary>
  <token key="PermissionType"
      variants="PermissionTypeForElementAnchoredBubble"/>
</histogram>

<histogram
    name="Permissions.Prompt.{PermissionType}.ElementAnchoredBubble.{OsScreen}.OsScreenAction"
    enum="OsScreenAction" expires_after="2025-02-16">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Tracks the action taken on a {PermissionType} screen that informs the user
    about state of the OS settings. Recorded when the user interacts with this
    screen.
  </summary>
  <token key="PermissionType"
      variants="PermissionTypeForElementAnchoredBubble"/>
  <token key="OsScreen" variants="OsScreen"/>
</histogram>

<histogram
    name="Permissions.Prompt.{PermissionType}.ElementAnchoredBubble.{OsScreen}.{OsScreenAction}.TimeToAction"
    units="ms" expires_after="2025-02-16">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Tracks the time until an action is taken on a {PermissionType} screen that
    informs the user about state of the OS settings. Recorded whenever the user
    takes an action that results in closing the screen.
  </summary>
  <token key="PermissionType"
      variants="PermissionTypeForElementAnchoredBubble"/>
  <token key="OsScreen" variants="OsScreen"/>
  <token key="OsScreenAction" variants="OsScreenAction"/>
</histogram>

<histogram name="Permissions.Prompt.{PermissionType}.{Disposition}.Action"
    enum="PermissionAction" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Tracks the action that a user had taken for a {PermissionType} permission
    prompt with disposition of type {Disposition}. Recorded when a permission
    prompt has been resolved.
  </summary>
  <token key="Disposition" variants="PromptDisposition"/>
  <token key="PermissionType">
    <variant name="AR"/>
    <variant name="AudioAndVideoCapture"/>
    <variant name="AudioCapture"/>
    <variant name="ClipboardReadWrite"/>
    <variant name="Geolocation"/>
    <variant name="IdleDetection"/>
    <variant name="MidiSysEx"/>
    <variant name="Notifications"/>
    <variant name="VideoCapture"/>
    <variant name="VR"/>
  </token>
</histogram>

<histogram
    name="Permissions.Prompt.{PermissionType}.{Disposition}.Dismissed.Method"
    enum="PermissionPromptDismissMethod" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Tracks how the user dismissed the {PermissionType} permission prompt with
    disposition of type {Disposition}. Recorded when a permission prompt has
    been resolved. Currently only implemented and reported for Clank.
  </summary>
  <token key="Disposition" variants="PromptDisposition"/>
  <token key="PermissionType" variants="AllPermissionTypes"/>
</histogram>

<histogram
    name="Permissions.Prompt.{PermissionType}.{Disposition}.Ignored.DidShowBubble"
    enum="Boolean" expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Records if a permission prompt bubble of type {PermissionType} was displayed
    as a result of a user having clicked on a chip with disposition
    {Disposition} that was subsequently ignored. Chip framework is only
    available on Desktop.
  </summary>
  <token key="Disposition">
    <variant name="LocationBarLeftChip"/>
    <variant name="LocationBarLeftChipAutoBubble"/>
    <variant name="LocationBarLeftQuietAbusiveChip"/>
    <variant name="LocationBarLeftQuietChip"/>
  </token>
  <token key="PermissionType">
    <variant name="AR"/>
    <variant name="AudioAndVideoCapture"/>
    <variant name="AudioCapture"/>
    <variant name="ClipboardReadWrite"/>
    <variant name="Geolocation"/>
    <variant name="IdleDetection"/>
    <variant name="MidiSysEx"/>
    <variant name="Notifications"/>
    <variant name="VideoCapture"/>
    <variant name="VR"/>
  </token>
</histogram>

<histogram
    name="Permissions.Prompt.{PermissionType}.{Disposition}.IgnoredReason"
    enum="PermissionRequestIgnoredReason" expires_after="2024-02-20">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Permission requests are categorized as ignored when the user failed to take
    action. This metric captures more detailed information on why a permission
    request was ignored.
  </summary>
  <token key="PermissionType" variants="AllPermissionTypes"/>
  <token key="Disposition" variants="PromptDisposition"/>
</histogram>

<histogram
    name="Permissions.Prompt.{PermissionType}.{Disposition}.{Action}.TimeToAction"
    units="ms" expires_after="2025-06-30">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Records how long it takes for the user to take the {Action} action on a
    prompt of type {PermissionType} with {Disposition} disposition. The Ignored
    state will be recorded if the user closes the tab or a permission chip gets
    expired.
  </summary>
  <token key="Action">
    <variant name="Accepted"/>
    <variant name="AcceptedOnce"/>
    <variant name="Denied"/>
    <variant name="Dismissed"/>
    <variant name="Ignored"/>
  </token>
  <token key="Disposition">
    <variant name="AnchoredBubble"/>
    <variant name="CustomModalDialog"/>
    <variant name="ElementAnchoredBubble"/>
    <variant name="LocationBarLeftChip"/>
    <variant name="LocationBarLeftChipAutoBubble"/>
    <variant name="LocationBarLeftQuietAbusiveChip"/>
    <variant name="LocationBarLeftQuietChip"/>
    <variant name="LocationBarRightAnimatedIcon"/>
    <variant name="LocationBarRightStaticIcon"/>
    <variant name="MessageUI"/>
    <variant name="MiniInfobar"/>
    <variant name="ModalDialog"/>
    <variant name="NoneVisible"/>
  </token>
  <token key="PermissionType">
    <variant name="AR"/>
    <variant name="AudioAndVideoCapture"/>
    <variant name="AudioCapture"/>
    <variant name="ClipboardReadWrite"/>
    <variant name="Geolocation"/>
    <variant name="IdleDetection"/>
    <variant name="MidiSysEx"/>
    <variant name="Notifications"/>
    <variant name="VideoCapture"/>
    <variant name="VR"/>
  </token>
</histogram>

<histogram
    name="Permissions.Prompt.{PermissionType}.{Disposition}.{Action}.{ButtonClick}"
    enum="Boolean" expires_after="2024-10-31">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Records {ButtonClick} if a user clicked on &quot;Learn More&quot; or
    &quot;Manage&quot; buttons on the quiet chip of type {PermissionType} with
    {Disposition} disposition. Recorded when the permission prompt gets resolved
    with {Action} action and only for the quiet chip.
  </summary>
  <token key="ButtonClick">
    <variant name="DidClickLearnMore"/>
    <variant name="DidClickManage"/>
  </token>
  <token key="Action">
    <variant name="Accepted"/>
    <variant name="AcceptedOnce"/>
    <variant name="Denied"/>
    <variant name="Dismissed"/>
    <variant name="Ignored"/>
  </token>
  <token key="Disposition">
    <variant name="LocationBarLeftQuietAbusiveChip"/>
    <variant name="LocationBarLeftQuietChip"/>
    <variant name="MessageUI"/>
    <variant name="MiniInfobar"/>
  </token>
  <token key="PermissionType">
    <variant name="Geolocation"/>
    <variant name="Notifications"/>
  </token>
</histogram>

<histogram name="Permissions.Prompt.{PermissionType}.{Gesture}.Attempt"
    enum="Boolean" expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>Recorded when a permission prompt creation is in progress.</summary>
  <token key="PermissionType" variants="AllPermissionTypes"/>
  <token key="Gesture">
    <variant name="Gesture"/>
    <variant name="NoGesture"/>
    <variant name="Unknown"/>
  </token>
</histogram>

<histogram name="Permissions.Query.QueryResponseTime" units="ms"
    expires_after="2025-05-31">
  <owner>[email protected]</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Measure the response time of permissions.query as seen by Blink. This
    histogram is introduced to get a baseline for the performance in Clank and
    will be used to measure a future implementation of the API in WebView to
    compare the performance.

    The histogram is emitted when Blink receives a callback from the browser
    process for the HasService call made as part of permissions.query.
  </summary>
</histogram>

<histogram name="Permissions.QuietChip.TimeToInteraction" units="ms"
    expires_after="2025-02-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records how long it takes for the user to click on the quiet chip after it
    was shown. Chip framework is only available on Desktop. Recorded only if the
    user clicks on the quiet chip. We can learn what % of prompts get ignored by
    comparing this metric and
    `PermissionPromptDisposition.LocationBarLeftQuietChip`.
  </summary>
</histogram>

<histogram
    name="Permissions.QuietNotificationPrompts.EnabledStateInPrefsChangedTo"
    enum="BooleanEnabled" expires_after="2025-09-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Records when the quiet notification permission UI state changes, that is, it
    either gets enabled or disabled, in preferences.
  </summary>
</histogram>

<histogram
    name="Permissions.QuietNotificationPrompts.{RegularProfileFiltered}IsEnabledInPrefs"
    enum="BooleanEnabled" expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Records whether the quiet notification permission UI is enabled in
    preferences at profile creation. No sample recorded when notifications are
    set to be blocked completely.
  </summary>
  <token key="RegularProfileFiltered">
    <variant name="RegularProfile."
        summary="from version M-110. It is recorded only for regular profiles"/>
  </token>
</histogram>

<histogram name="Permissions.QuietPrompt.Preignore" enum="PermissionType"
    expires_after="2024-11-15">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Records when a permission request was preignored because it will be shown as
    a quiet chip.
  </summary>
</histogram>

<histogram name="Permissions.Request.CrossOrigin" enum="PermissionType"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded whenever a permission request is made by a cross-origin site, and
    before it is decided whether the request should be displayed to the user.
    Records the permission type of the request.
  </summary>
</histogram>

<histogram name="Permissions.Request.SameOrigin.{FrameLevel}"
    enum="PermissionType" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Recorded whenever a permission request is made by a same-origin site, and
    before it is decided whether the request should be displayed to the user.
    Records the permission type of the request, and is grouped by whether the
    requesting frame is the main frame or a sub frame.
  </summary>
  <token key="FrameLevel">
    <variant name="MainFrame"/>
    <variant name="SubFrame"/>
  </token>
</histogram>

<histogram base="true" name="Permissions.Revocation.ElapsedTimeSinceGrant"
    units="seconds" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Records the time elapsed since the grant of the permission until it's
    revoked.
  </summary>
</histogram>

<histogram name="Permissions.Revocation.Notifications.DidRecordUkm"
    enum="Boolean" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Records, each time when the notification permission is revoked, whether a
    UKM event was recorded as well.
  </summary>
</histogram>

<histogram name="Permissions.Revocation.Notifications.SourceUI"
    enum="PermissionSourceUI" expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    When revoking the notification from a website for push messaging, this
    records the PermissionSourceUI where it occurred.
  </summary>
</histogram>

<histogram name="Permissions.Serial.ChooserClosed" enum="SerialChooserOutcome"
    expires_after="never">
<!-- expires-never: Used to monitor user interaction with the Web Serial API. -->

  <owner>[email protected]</owner>
  <owner>src/content/browser/serial/OWNERS</owner>
  <summary>
    Records the reason why the Serial API chooser, triggered by a call to
    navigator.serial.requestPort(), was closed.
  </summary>
</histogram>

<histogram name="Permissions.Serial.Revoked" enum="SerialPermissionRevoked"
    expires_after="never">
<!-- expires-never: Used to monitor user interaction with the Web Serial API. -->

  <owner>[email protected]</owner>
  <owner>src/content/browser/serial/OWNERS</owner>
  <summary>Records when permission to access a serial port is revoked.</summary>
</histogram>

<histogram base="true" name="Permissions.Usage.ElapsedTimeSinceGrant"
    units="seconds" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Records the time elapsed since the grant of the permission until it's latest
    usage. This histogram will be recorded only for the first usage of a given
    permission after the site has loaded.
  </summary>
</histogram>

<histogram base="true"
    name="Permissions.Usage.ElapsedTimeSinceGrant.{PermissionType}.{Source}"
    units="seconds" expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Records the time elapsed since the grant of the permission until it's latest
    usage for a particular content setting source. This histogram will be
    recorded only for the first usage of a given permission after the site has
    loaded.
  </summary>
  <token key="PermissionType" variants="AllPermissionTypes"/>
  <token key="Source" variants="ContentSettingSource"/>
</histogram>

<histogram name="Permissions.Usage.Notifications.DidRecordUkm" enum="Boolean"
    expires_after="2025-05-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Records, each time when the notification permission is used, whether a UKM
    event was recorded as well.
  </summary>
</histogram>

<histogram name="Permissions.WebHid.ChooserClosed" enum="WebHidChooserClosed"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the reason why the WebHID device chooser was closed.
  </summary>
</histogram>

<histogram name="SiteEngagementService.EngagementScore" units="units"
    expires_after="2022-03-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Distribution of the engagement scores accumulated by a user, recorded at
    startup per non-incognito profile, and then upon the first
    engagement-increasing event every hour thereafter.
  </summary>
</histogram>

<histogram name="SiteEngagementService.EngagementType"
    enum="SiteEngagementServiceEngagementType" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The type of engagement (navigation, user input, etc.) which led to an
    accumulation in site engagement.
  </summary>
</histogram>

<histogram name="SiteEngagementService.MeanEngagement" units="units"
    expires_after="2022-03-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The mean site engagement per origin accumulated by this profile, recorded at
    startup per non-incognito profile, and then upon the first
    engagement-increasing event every hour thereafter.
  </summary>
</histogram>

<histogram name="SiteEngagementService.MedianEngagement" units="units"
    expires_after="2022-03-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The median site engagement per origin accumulated by this profile, recorded
    at startup per non-incognito profile, and then upon the first
    engagement-increasing event every hour thereafter.
  </summary>
</histogram>

<histogram name="SiteEngagementService.OriginsEngaged" units="units"
    expires_after="2024-07-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The total number of origins with a non-zero site engagement score for this
    profile, recorded at startup per non-incognito profile, and then upon the
    first engagement-increasing event every hour thereafter.
  </summary>
</histogram>

<histogram name="SiteEngagementService.OriginsWithMaxEngagement" units="units"
    expires_after="2021-01-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of origins which have reached the absolute site engagement point
    cap, recorded at startup per non-incognito profile, and then upon the first
    engagement-increasing event every hour thereafter. Thus, each bin N contains
    the number of clients where at least N origins have reached the maximum
    absolute site engagement point cap.
  </summary>
</histogram>

<histogram name="WebsiteSettings.Action" enum="WebsiteSettingsAction"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks actions with the website setting (a.k.a. page info / origin info)
    bubble, such as opening it up or clicking on the Connection tab.
  </summary>
</histogram>

<histogram name="WebsiteSettings.AllSitesAction2"
    enum="WebSiteSettingsAllSitesAction2" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks actions with the &quot;All Sites&quot; page in website settings
    starting in M82. No data available for M94, was temporarily expired. Values
    7 and 8 were added with M96.
  </summary>
</histogram>

<histogram name="WebsiteSettings.OriginInfo.PermissionChanged"
    enum="ContentType" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Count of how often a specific content type (permission) is changed using the
    Origin Info dialog.

    Note: The values of this metric collected for Chrome 49 (early 2016) are
    innacurate and should not be trusted. crbug.com/589255.
  </summary>
</histogram>

<histogram name="WebsiteSettings.OriginInfo.PermissionChanged.Allowed"
    enum="ContentType" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Count of how often a specific content type (permission) is set to 'Allowed'
    using the Origin Info dialog.

    Note: The values of this metric collected for Chrome 49 (early 2016) are
    innacurate and should not be trusted. crbug.com/589255.
  </summary>
</histogram>

<histogram name="WebsiteSettings.OriginInfo.PermissionChanged.Blocked"
    enum="ContentType" expires_after="2025-02-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Count of how often a specific content type (permission) is set to 'Blocked'
    using the Origin Info dialog.

    Note: The values of this metric collected for Chrome 49 (early 2016) are
    innacurate and should not be trusted. crbug.com/589255.
  </summary>
</histogram>

</histograms>

</histogram-configuration>