chromium/tools/metrics/histograms/metadata/interstitial/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 interstitial 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>

<variants name="AdditionalSecurityInterstitialSBType">
  <variant name="billing." summary=""/>
  <variant name="origin_policy." summary=""/>
</variants>

<variants name="IsPostCommitInterstitialSuffix">
  <variant name=".after_page_shown" summary="shown"/>
  <variant name=".before_page_shown" summary="not shown"/>
</variants>

<variants name="RepeatVisit">
  <variant name=".repeat_visit"
      summary=", on a site that the user had previously visited"/>
</variants>

<variants name="SecurityInterstitialLookalikeType">
  <variant name="lookalike." summary=""/>
</variants>

<variants name="SecurityInterstitialSBType">
  <variant name="harmful." summary=""/>
  <variant name="malware." summary=""/>
  <variant name="phishing." summary=""/>
</variants>

<variants name="SecurityInterstitialSBWithSourceType">
  <variant name=".from_android_safebrowsing"
      summary="Interstitial for a resource classified as unsafe by the
               Android Safe Browsing local blocklist API."/>
  <variant name=".from_android_safebrowsing_real_time"
      summary="Interstitial for a resource classified as unsafe by the
               Android Safe Browsing hash-prefix real-time API."/>
  <variant name=".from_client_side_detection"
      summary="Interstitial for a resource classified as unsafe by the client
               side detection."/>
  <variant name=".from_device"
      summary="Interstitial for a resource classified as unsafe by the Safe
               Browsing database via either
               {Local,Remote}SafeBrowsingDatabaseManager."/>
  <variant name=".from_device_v4"
      summary="Interstitial for a resource classified as unsafe by the Safe
               Browsing database version 4 via either
               {Local,Remote}SafeBrowsingDatabaseManager."/>
  <variant name=".from_hash_prefix_real_time_check_v5"
      summary="Interstitial for a resource classified as unsafe by the Safe
               Browsing hash-prefix real-time API version 5."/>
  <variant name=".from_real_time_check"
      summary="Interstitial for a resource classified as unsafe by the Safe
               Browsing URL real-time API."/>
</variants>

<histogram name="interstitial.captive_portal"
    enum="CaptivePortalBlockingPageEvent" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    User action when the user is shown a captive portal error page. NOTE: Metric
    was expired from M85 to M97.
  </summary>
</histogram>

<histogram name="interstitial.CloseReason" enum="InterstitialCloseReason"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records how users close the interstitial. The shown bucket is logged every
    time an interstitial is shown, ideally it should be exactly the sum of the
    remaining buckets. If users close it by closing the entire tab, Safe
    Browsing client reports will not be sent.
  </summary>
</histogram>

<histogram name="interstitial.enterprise_block.decision"
    enum="SecurityInterstitialDecision" expires_after="2025-01-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records when a user is blocked from visiting a site as per admin rules in an
    enterprise managed browser.
  </summary>
</histogram>

<histogram name="interstitial.enterprise_block.decision.repeat_visit"
    enum="SecurityInterstitialDecision" expires_after="2025-01-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records when a user is blocked from visiting a site as per admin rules in an
    enterprise managed browser and the user tries to access it again.
  </summary>
</histogram>

<histogram name="interstitial.enterprise_block.interaction"
    enum="SecurityInterstitialInteraction" expires_after="2025-01-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records when a user interacts with a blocking page shown for a url that
    doesn't comply with admin rules.
  </summary>
</histogram>

<histogram name="interstitial.enterprise_warn.decision"
    enum="SecurityInterstitialDecision" expires_after="2025-01-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records when a user is shown a warning while visiting a site that doesn't
    comply with the admin rules in an enterprise managed browser.
  </summary>
</histogram>

<histogram name="interstitial.enterprise_warn.decision.repeat_visit"
    enum="SecurityInterstitialDecision" expires_after="2025-01-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records when a user revisits a page they were warned about for not complying
    with the admin rules in an enterprise managed browser.
  </summary>
</histogram>

<histogram name="interstitial.enterprise_warn.interaction"
    enum="SecurityInterstitialInteraction" expires_after="2025-01-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records when a user interacts with a warning page shown for a url that
    doesn't comply with admin rules.
  </summary>
</histogram>

<histogram name="interstitial.ssl.cause.nonoverridable" enum="SSLErrorCauses"
    expires_after="never">
<!-- expires-never: Used for long term monitoring of security errors -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Possible non-attack causes of the non-overridable SSL interstitial. Many
    errors are not reported in this histogram and new errors may be added over
    time, therefore one should not look at the breakdown of this histogram (one
    bucket divided by the sum) because that will be inaccurate. Instead, one
    should look at each bucket count divided by the count of the ssl errors of
    that type. E.g. WWW mismatch is recorded only when the ssl error is
    CERT_COMMON_NAME_INVALID, so one should look at the bucket count of WWW
    mismatch divided by the bucket count of CERT_COMMON_NAME_INVALID in the
    histogram interstitial.ssl_error_type.
  </summary>
</histogram>

<histogram name="interstitial.ssl.cause.overridable" enum="SSLErrorCauses"
    expires_after="never">
<!-- expires-never: Used for long term monitoring of security errors -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Possible non-attack causes of the overridable SSL interstitial. Many errors
    are not reported in this histogram and new errors may be added over time,
    therefore one should not look at the breakdown of this histogram (one bucket
    divided by the sum) because that will be inaccurate. Instead, one should
    look at each bucket count divided by the count of the ssl errors of that
    type. E.g. WWW mismatch is recorded only when the ssl error is
    CERT_COMMON_NAME_INVALID, so one should look at the bucket count of WWW
    mismatch divided by the bucket count of CERT_COMMON_NAME_INVALID in the
    histogram interstitial.ssl_error_type.
  </summary>
</histogram>

<histogram name="interstitial.ssl.did_user_revoke_decisions2"
    enum="BooleanRevoked" expires_after="never">
<!-- expires-never: Used for long term monitoring of security errors -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Specifies when a user enters the page info menu whether or not the user
    pressed the SSL decisions revoke button. This is logged when the page info
    UI is closed, only if the button was visible in the page info.
  </summary>
</histogram>

<histogram name="interstitial.ssl_error_handler" enum="SSLErrorHandlerEvent"
    expires_after="never">
<!-- expires-never: Used for long term monitoring of security errors -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>The type of action that the SSL error handler takes.</summary>
</histogram>

<histogram name="interstitial.ssl_error_type" enum="SSLErrorTypes"
    expires_after="never">
<!-- expires-never: Used for long term monitoring of security errors -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The type of SSL error that the user encounters. This is recorded for all SSL
    warnings, regardless of whether they are overridable.
  </summary>
</histogram>

<histogram
    name="interstitial.{AdditionalSecurityInterstitialSBType}decision{RepeatVisit}"
    enum="SecurityInterstitialDecision" expires_after="never">
<!-- expires-never: Used for long term monitoring of security errors -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    User decision when presented with a security interstitial{RepeatVisit}. As
    of M44, subresource interstitials were split into their own entries. As of
    M52, social_engineering_ads* and social_engineering_landing* interstitial
    reasons are split into their own entries from phishing*. As of M90,
    social_engineering_ads* and social_engineering_landing* interstitial reasons
    have been removed because they don't trigger interstitials. As of M128,
    logging on subresource interstitials is removed.

    This metric is used to populate a dashboard on go/crca-site.
    {AdditionalSecurityInterstitialSBType}
  </summary>
  <token key="AdditionalSecurityInterstitialSBType"
      variants="AdditionalSecurityInterstitialSBType"/>
  <token key="RepeatVisit" variants="RepeatVisit">
    <variant name=""/>
  </token>
</histogram>

<histogram
    name="interstitial.{AdditionalSecurityInterstitialSBType}interaction"
    enum="SecurityInterstitialInteraction" expires_after="never">
<!-- expires-never: Used for long term monitoring of security errors -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    User interactions with a security interstitial. As of M44, subresource
    interstitials were split into their own entries. As of M52,
    social_engineering_ads* and social_engineering_landing* interstitial reasons
    are split into their own entries from phishing*. As of M90,
    social_engineering_ads* and social_engineering_landing* interstitial reasons
    have been removed because they don't trigger interstitials. As of M128,
    logging on subresource interstitials is removed.

    {AdditionalSecurityInterstitialSBType}
  </summary>
  <token key="AdditionalSecurityInterstitialSBType"
      variants="AdditionalSecurityInterstitialSBType"/>
</histogram>

<histogram name="interstitial.{SecurityInterstitialLookalikeType}decision"
    enum="SecurityInterstitialDecision" expires_after="never">
<!-- expires-never: Used for long term monitoring of security errors -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    User decision when presented with a security interstitial. As of M44,
    subresource interstitials were split into their own entries. As of M52,
    social_engineering_ads* and social_engineering_landing* interstitial reasons
    are split into their own entries from phishing*. As of M90,
    social_engineering_ads* and social_engineering_landing* interstitial reasons
    have been removed because they don't trigger interstitials.

    {SecurityInterstitialLookalikeType}
  </summary>
  <token key="SecurityInterstitialLookalikeType"
      variants="SecurityInterstitialLookalikeType">
    <variant name=""/>
  </token>
</histogram>

<histogram
    name="interstitial.{SecurityInterstitialLookalikeType}decision.repeat_visit"
    enum="SecurityInterstitialDecision" expires_after="never">
<!-- expires-never: Used for long term monitoring of security errors -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    User decision when presented with a security interstitial, on a site that
    the user had previously visited. As of M44, subresource interstitials were
    split into their own entries. As of M52, social_engineering_ads* and
    social_engineering_landing* interstitial reasons are split into their own
    entries from phishing*. As of M90, social_engineering_ads* and
    social_engineering_landing* interstitial reasons have been removed because
    they don't trigger interstitials. {SecurityInterstitialLookalikeType}
  </summary>
  <token key="SecurityInterstitialLookalikeType"
      variants="SecurityInterstitialLookalikeType">
    <variant name=""/>
  </token>
</histogram>

<histogram name="interstitial.{SecurityInterstitialLookalikeType}interaction"
    enum="SecurityInterstitialInteraction" expires_after="never">
<!-- expires-never: Used for long term monitoring of security errors -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    User interactions with a security interstitial. As of M44, subresource
    interstitials were split into their own entries. As of M52,
    social_engineering_ads* and social_engineering_landing* interstitial reasons
    are split into their own entries from phishing*. As of M90,
    social_engineering_ads* and social_engineering_landing* interstitial reasons
    have been removed because they don't trigger interstitials.
    {SecurityInterstitialLookalikeType}
  </summary>
  <token key="SecurityInterstitialLookalikeType"
      variants="SecurityInterstitialLookalikeType">
    <variant name=""/>
  </token>
</histogram>

<histogram
    name="interstitial.{SecurityInterstitialSBType}decision{RepeatVisit}{IsPostCommitInterstitialSuffix}"
    enum="SecurityInterstitialDecision" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    User decision when presented with a security interstitial{RepeatVisit}. The
    original page was {IsPostCommitInterstitialSuffix} before the interstitial
    is shown.

    {SecurityInterstitialSBType}
  </summary>
  <token key="SecurityInterstitialSBType"
      variants="SecurityInterstitialSBType"/>
  <token key="RepeatVisit" variants="RepeatVisit">
    <variant name=""/>
  </token>
  <token key="IsPostCommitInterstitialSuffix"
      variants="IsPostCommitInterstitialSuffix"/>
</histogram>

<histogram
    name="interstitial.{SecurityInterstitialSBType}decision{RepeatVisit}{SecurityInterstitialSBWithSourceType}"
    enum="SecurityInterstitialDecision" expires_after="never">
<!-- expires-never: Used for long term monitoring of security errors -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    User decision when presented with a security interstitial{RepeatVisit}. As
    of M44, subresource interstitials were split into their own entries. As of
    M52, social_engineering_ads* and social_engineering_landing* interstitial
    reasons are split into their own entries from phishing*. As of M90,
    social_engineering_ads* and social_engineering_landing* interstitial reasons
    have been removed because they don't trigger interstitials. As of M128,
    logging on subresource interstitials is removed.

    This metric is used to populate a dashboard on go/crca-site.
    {SecurityInterstitialSBType} {SecurityInterstitialSBWithSourceType}
  </summary>
  <token key="SecurityInterstitialSBType"
      variants="SecurityInterstitialSBType"/>
  <token key="SecurityInterstitialSBWithSourceType"
      variants="SecurityInterstitialSBWithSourceType">
    <variant name=""/>
  </token>
  <token key="RepeatVisit" variants="RepeatVisit">
    <variant name=""/>
  </token>
</histogram>

<histogram
    name="interstitial.{SecurityInterstitialSBType}interaction{IsPostCommitInterstitialSuffix}"
    enum="SecurityInterstitialInteraction" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    User interactions with a security interstitial. The original page was
    {IsPostCommitInterstitialSuffix} before the interstitial is shown.

    {SecurityInterstitialSBType}
  </summary>
  <token key="SecurityInterstitialSBType"
      variants="SecurityInterstitialSBType"/>
  <token key="IsPostCommitInterstitialSuffix"
      variants="IsPostCommitInterstitialSuffix"/>
</histogram>

<histogram
    name="interstitial.{SecurityInterstitialSBType}interaction{SecurityInterstitialSBWithSourceType}"
    enum="SecurityInterstitialInteraction" expires_after="never">
<!-- expires-never: Used for long term monitoring of security errors -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    User interactions with a security interstitial. As of M44, subresource
    interstitials were split into their own entries. As of M52,
    social_engineering_ads* and social_engineering_landing* interstitial reasons
    are split into their own entries from phishing*. As of M90,
    social_engineering_ads* and social_engineering_landing* interstitial reasons
    have been removed because they don't trigger interstitials.
    {SecurityInterstitialSBType} {SecurityInterstitialSBWithSourceType}
  </summary>
  <token key="SecurityInterstitialSBType"
      variants="SecurityInterstitialSBType"/>
  <token key="SecurityInterstitialSBWithSourceType"
      variants="SecurityInterstitialSBWithSourceType">
    <variant name=""/>
  </token>
</histogram>

<histogram
    name="interstitial.{SecurityInterstitialSBType}show_delay{SecurityInterstitialSBWithSourceType}"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time between when the blocked page is shown and when the interstitial is
    shown. 0 if the blocked page is not shown.

    {SecurityInterstitialSBType} {SecurityInterstitialSBWithSourceType}
  </summary>
  <token key="SecurityInterstitialSBType"
      variants="SecurityInterstitialSBType"/>
  <token key="SecurityInterstitialSBWithSourceType"
      variants="SecurityInterstitialSBWithSourceType">
    <variant name=""/>
  </token>
</histogram>

<histogram name="TypedNavigationUpgradeThrottle.Event"
    enum="TypedNavigationUpgradeThrottleEvent" expires_after="2024-09-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Events for upgrading Default Omnibox Navigations to HTTPS feature. Recorded
    when a navigation is started by typing a domain name without a scheme and
    the URL is defaulted to HTTPS instead of HTTP.
  </summary>
</histogram>

</histograms>

</histogram-configuration>