<!--
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>