| <!-- |
| 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 Security histograms |
| along with a detailed description for each histogram. |
| |
| For best practices on writing histogram descriptions, see |
| https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md |
| |
| Please follow the instructions in the OWNERS file in this directory to find a |
| reviewer. If no OWNERS file exists, please consider signing up at |
| go/reviewing-metrics (Googlers only), as all subdirectories are expected to |
| have an OWNERS file. As a last resort you can send the CL to |
| chromium-metrics-reviews@google.com. |
| --> |
| |
| <histogram-configuration> |
| |
| <histograms> |
| |
| <histogram name="Security.ClientAuth.CertificateSelectionSource" |
| enum="ClientCertSelectionResult" expires_after="2020-08-16"> |
| <owner>jdeblasio@chromium.org</owner> |
| <summary> |
| When TLS client authentication is requested by the server, Chrome must |
| choose whether to return a certificate or to abort the handshake. This |
| histogram records how this determination was made, either as a result of |
| user action, or as chosen automatically due to content settings. It only |
| records when a fresh certificate selection would be attempted (and thus |
| ignores cache hits). This histogram is recorded in SSLClientAuthObserver for |
| user-selected outcomes and in ChromeContentBrowserClient for policy |
| outcomes. This histogram does not cover mobile, as certificate handling is |
| not handled by Chrome on Android nor iOS. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.DataDecoder.Image.DecodingTime" units="ms" |
| expires_after="2023-07-16"> |
| <owner>lukasza@chromium.org</owner> |
| <owner>rsesek@chromium.org</owner> |
| <summary> |
| Logged once for every invocation of `data_decoder::DecodeImage` and/or |
| `data_decoder::DecodeImageIsolated`. Logs the time that has elapsed while |
| decoding the image (typically this happens in the Utility process). The time |
| is recorded in all the cases (including empty input which don't require |
| actual image decoding). |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.DataDecoder.Image.Isolated.EndToEndTime" units="ms" |
| expires_after="2023-04-23"> |
| <owner>lukasza@chromium.org</owner> |
| <owner>rsesek@chromium.org</owner> |
| <summary> |
| Logged once for every invocation of `data_decoder::DecodeImageIsolated`. |
| Logs the time that has elapsed between 1) invocation of DecodeImageIsolated |
| and 2) calling the completion callback (both of these events happen in the |
| Browser process). The elapsed time covers A) spawning the utility process, |
| B) decoding the image, C) IPC overhead. |
| |
| Note that there are 2 sets of similar metrics: |
| Security.DataDecoder.Image.Isolated. and |
| Security.DataDecoder.Image.Reusable. In the Isolated case a Utility process |
| is spawned for each image decoding operation and the ...End2End and |
| ...ProcessOverhead metrics always include process spawning overhead. In the |
| Reusable case a Utility process may get reused when decoding a batch of |
| images, and the ...End2End and ...ProcessOverhead metrics may or may not |
| include process spawning overhead (the process will only need to be spawned |
| for the first image in a batch + after the process has been shut down due to |
| inactivity). |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.DataDecoder.Image.Isolated.ProcessOverhead" |
| units="ms" expires_after="2023-08-27"> |
| <owner>lukasza@chromium.org</owner> |
| <owner>rsesek@chromium.org</owner> |
| <summary> |
| Logged once for every invocation of `data_decoder::DecodeImageIsolated`. |
| Logs the overhead of using a separate process for decoding the images by |
| calculating the difference between ...Image.Isolated.EndToEndTime and the |
| ...Image.DecodingTime metrics. |
| |
| Note that there are 2 sets of similar metrics: |
| Security.DataDecoder.Image.Isolated. and |
| Security.DataDecoder.Image.Reusable. In the Isolated case a Utility process |
| is spawned for each image decoding operation and the ...End2End and |
| ...ProcessOverhead metrics always include process spawning overhead. In the |
| Reusable case a Utility process may get reused when decoding a batch of |
| images, and the ...End2End and ...ProcessOverhead metrics may or may not |
| include process spawning overhead (the process will only need to be spawned |
| for the first image in a batch + after the process has been shut down due to |
| inactivity). |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.DataDecoder.Image.Reusable.EndToEndTime" units="ms" |
| expires_after="2023-04-23"> |
| <owner>lukasza@chromium.org</owner> |
| <owner>rsesek@chromium.org</owner> |
| <summary> |
| Logged once for every invocation of `data_decoder::DecodeImage`. Logs the |
| time that has elapsed between 1) invocation of DecodeImage and 2) calling |
| the completion callback (both of these events happen in the Browser |
| process). The elapsed time covers A) spawning the utility process (if |
| needed), B) decoding the image, C) IPC overhead. |
| |
| Note that there are 2 sets of similar metrics: |
| Security.DataDecoder.Image.Isolated. and |
| Security.DataDecoder.Image.Reusable. In the Isolated case a Utility process |
| is spawned for each image decoding operation and the ...End2End and |
| ...ProcessOverhead metrics always include process spawning overhead. In the |
| Reusable case a Utility process may get reused when decoding a batch of |
| images, and the ...End2End and ...ProcessOverhead metrics may or may not |
| include process spawning overhead (the process will only need to be spawned |
| for the first image in a batch + after the process has been shut down due to |
| inactivity). |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.DataDecoder.Image.Reusable.ProcessOverhead" |
| units="ms" expires_after="2023-08-27"> |
| <owner>lukasza@chromium.org</owner> |
| <owner>rsesek@chromium.org</owner> |
| <summary> |
| Logged once for every invocation of `data_decoder::DecodeImage`. Logs the |
| overhead of using a separate process for decoding the images by calculating |
| the difference between ...Image.Reusable.EndToEndTime and the |
| ...Image.DecodingTime metrics. |
| |
| Note that there are 2 sets of similar metrics: |
| Security.DataDecoder.Image.Isolated. and |
| Security.DataDecoder.Image.Reusable. In the Isolated case a Utility process |
| is spawned for each image decoding operation and the ...End2End and |
| ...ProcessOverhead metrics always include process spawning overhead. In the |
| Reusable case a Utility process may get reused when decoding a batch of |
| images, and the ...End2End and ...ProcessOverhead metrics may or may not |
| include process spawning overhead (the process will only need to be spawned |
| for the first image in a batch + after the process has been shut down due to |
| inactivity). |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.GwpAsan.CrashAnalysisResult.{Allocator}" |
| enum="GwpAsanCrashAnalysisResult" expires_after="2023-09-27"> |
| <owner>glazunov@google.com</owner> |
| <owner>mpdenton@chromium.org</owner> |
| <owner>chrome-memory-tok@google.com</owner> |
| <summary> |
| Reports the GWP-ASan crash analysis result. That can either be a |
| determination that the crash was related to GWP-ASan, not related to |
| GWP-ASan, or an error making that determination. Recorded with every crash. |
| </summary> |
| <token key="Allocator"> |
| <variant name="Malloc"/> |
| <variant name="PartitionAlloc"/> |
| </token> |
| </histogram> |
| |
| <histogram name="Security.HttpsFirstMode.NavigationEvent" |
| enum="HttpsFirstModeNavigationEvent" expires_after="2023-09-10"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Events for navigations that are upgraded from HTTP to HTTPS by HTTPS-First |
| Mode. Recorded for eligible navigations (HTTP main frame navigations that |
| are not allowlisted), if the profile is opted in to HTTPS-First Mode. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.HttpsFirstMode.SettingChanged" enum="BooleanEnabled" |
| expires_after="2023-09-10"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Records the HTTPS-First Mode preference state when it changes for a profile. |
| Recorded for regular profiles only (not for Incognito, Guest, or Sign-in |
| profiles). |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.HttpsFirstMode.SettingEnabledAtStartup" |
| enum="BooleanEnabled" expires_after="2023-09-10"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Records whether the HTTPS-First Mode preference is enabled at profile |
| startup. Recorded for regular profiles only (not for Incognito, Guest, or |
| Sign-in profiles). |
| </summary> |
| </histogram> |
| |
| <histogram |
| name="Security.HttpsFirstModeWithEngagementHeuristic.AccumulatedHostCount" |
| units="hostnames" expires_after="2023-09-10"> |
| <owner>meacer@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Records the accumulated number of host that have HFM enabled at some point |
| due to the site engagement heuristic. Includes hosts that have HTTP allowed. |
| Recorded at the time of navigation when HFM upgrades trigger. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.HttpsFirstModeWithEngagementHeuristic.Duration" |
| units="seconds" expires_after="2023-09-10"> |
| <owner>meacer@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Records the duration a host has HFM enabled due to the site engagement |
| heuristic. Only recorded for hosts removed from the HFM list. Recorded at |
| the time of navigation when HFM upgrades trigger. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.HttpsFirstModeWithEngagementHeuristic.HostCount" |
| units="hostnames" expires_after="2023-09-10"> |
| <owner>meacer@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Records the current number of host that have HFM enabled due to the site |
| engagement heuristic. Includes hosts that have HTTP allowed. Recorded at the |
| time of navigation when HFM upgrades trigger. |
| </summary> |
| </histogram> |
| |
| <histogram |
| name="Security.HttpsFirstModeWithEngagementHeuristic.NavigationEvent" |
| enum="HttpsFirstModeNavigationEvent" expires_after="2023-09-10"> |
| <owner>meacer@chromium.org</owner> |
| <owner>cthomp@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Same as Security.HttpsFirstMode.NavigationEvent but only recorded iff HFM is |
| disabled by the UI setting and enabled by the Site Engagement Heuristic |
| because the site's HTTPS score is high and HTTP score is low. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.HttpsFirstModeWithEngagementHeuristic.State" |
| enum="SiteEngagementHeuristicState" expires_after="2023-09-10"> |
| <owner>meacer@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Records whether the HTTPS-First Mode got enabled or disabled on a site due |
| to its HTTP and HTTPS site engagement scores. Only recorded if the enabled |
| state changes. Recorded even for sites allowlisted to load over HTTP. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.JSONParser.ChromiumExtensionUsage" |
| enum="JsonParserExtension" expires_after="2023-09-10"> |
| <owner>rsesek@chromium.org</owner> |
| <owner>chrome-platform-security@google.com</owner> |
| <summary> |
| Records the usage of the base::JSONParser's non-RFC-8259-conforming |
| extensions when parsing JSON documents. This histogram is emitted each time |
| an instance of non-conforming syntax is detected in a document. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.NavigationRequestSecurityLevel" |
| enum="NavigationRequestSecurityLevel" expires_after="2024-03-01"> |
| <owner>jdeblasio@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Records the security level (e.g. secure, not secure, etc.) of each HTTP |
| request, recording one histogram per fetch (i.e. including redirects). |
| </summary> |
| </histogram> |
| |
| <histogram base="true" name="Security.PageEndReason" enum="PageEndReason" |
| expires_after="2023-09-10"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Records the reason the page visit ended (e.g., reload, tab closed, new |
| navigation, etc.) for page loads that committed. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.PageInfo.AboutThisSiteInteraction" |
| enum="AboutThisSiteInteraction" expires_after="2023-09-17"> |
| <owner>dullweber@chromium.org</owner> |
| <owner>olesiamarukhno@chromium.org</owner> |
| <summary> |
| Tracks interactions with the AboutThisSite feature. Recorded when PageInfo |
| is opened and when the user interacts with the AboutThisSite row. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.PageInfo.AboutThisSiteLanguageSupported" |
| enum="Boolean" expires_after="2023-10-22"> |
| <owner>dullweber@chromium.org</owner> |
| <owner>olesiamarukhno@chromium.org</owner> |
| <summary> |
| Tracks whether AboutThisSite is available for the user's application locale. |
| Recorded every time PageInfo is opened. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.PageInfo.AboutThisSiteStatus" |
| enum="AboutThisSiteStatus" expires_after="2023-08-27"> |
| <owner>dullweber@chromium.org</owner> |
| <owner>olesiamarukhno@chromium.org</owner> |
| <summary> |
| Tracks status of AboutThisSite queries. Recorded every time PageInfo is |
| opened and information about a site is requested. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.PageInfo.AdPersonalizationRowShown" enum="Boolean" |
| expires_after="2023-09-10"> |
| <owner>dullweber@chromium.org</owner> |
| <owner>sauski@google.com</owner> |
| <summary> |
| Tracks whether the Ads Personalization section was shown. Recorded every |
| time PageInfo is opened. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.PageInfo.Cookies.HasFPSInfo" enum="Boolean" |
| expires_after="M119"> |
| <owner>tommasin@chromium.org</owner> |
| <owner>sauski@google.com</owner> |
| <owner>olesiamarukhno@google.com</owner> |
| <summary> |
| Tracks whether the FPS section was shown in the Cookies subpage. Recorded |
| every time Cookie subpage from PageInfo is opened. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.PageInfo.TimeOpen" units="ms" |
| expires_after="2023-07-09"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>security-enamel@chromium.org</owner> |
| <summary> |
| Records the amount of time the Page Info bubble is open before the user |
| closes it or takes an action which closes it. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.PageInfo.TimeOpen.Action" units="ms" |
| expires_after="2023-09-10"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>security-enamel@chromium.org</owner> |
| <summary> |
| Records the amount of time the Page Info bubble is open before the user |
| closes it, for cases where the user has performed an action inside it. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.PageInfo.TimeOpen.NoAction" units="ms" |
| expires_after="2023-09-10"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>security-enamel@chromium.org</owner> |
| <summary> |
| Records the amount of time the Page Info bubble is open before the user |
| closes it, for cases where the user performed no action inside it. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.PrivateNetworkAccess.CachedResourceCheckResult" |
| enum="PrivateNetworkAccessCheckResult" expires_after="2023-07-09"> |
| <owner>titouan@chromium.org</owner> |
| <owner>clamy@chromium.org</owner> |
| <owner>mkwst@chromium.org</owner> |
| <summary> |
| Same as `Security.PrivateNetworkAccess.CheckResult`, but only recorded when |
| the resource is loaded from the HTTP cache. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.PrivateNetworkAccess.CheckResult" |
| enum="PrivateNetworkAccessCheckResult" expires_after="2023-10-22"> |
| <owner>titouan@chromium.org</owner> |
| <owner>clamy@chromium.org</owner> |
| <owner>mkwst@chromium.org</owner> |
| <summary> |
| Result of the Private Network Access Check on a new connection. Recorded |
| once per call to network::URLLoader::OnConnected(), which may be more than |
| once per URL request. |
| </summary> |
| </histogram> |
| |
| <histogram |
| name="Security.PrivateNetworkAccess.MismatchedAddressSpacesDuringRequest" |
| enum="Boolean" expires_after="2023-07-09"> |
| <owner>titouan@chromium.org</owner> |
| <owner>clamy@chromium.org</owner> |
| <owner>mkwst@chromium.org</owner> |
| <summary> |
| Recorded once per network::URLLoader instantiation. True if the request |
| connected multiple times to different transports (e.g. for a |
| partially-cached range request) and not all the computed IP address spaces |
| were the same. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.PrivateNetworkAccess.PrivateIpInferrable" |
| enum="Boolean" expires_after="2023-12-31"> |
| <owner>titouan@chromium.org</owner> |
| <owner>lyf@chromium.org</owner> |
| <owner>clamy@chromium.org</owner> |
| <summary> |
| Records whether a failed PNA check could have been avoided by inferring the |
| request's target IP address space by recognizing that the request URL's host |
| is a literal private IP address. Recorded at most once per URL request. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.PrivateNetworkAccess.PrivateIpResolveMatch" |
| enum="Boolean" expires_after="2023-12-31"> |
| <owner>titouan@chromium.org</owner> |
| <owner>lyf@chromium.org</owner> |
| <owner>clamy@chromium.org</owner> |
| <summary> |
| Records whether a request to a literal private IP address resolved to that |
| private IP address. Recorded at most once per call to |
| `network::URLLoader::OnConnected()`, which may be more than once per URL |
| request. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SafetyTips.GetDomainInfoTime" units="ms" |
| expires_after="2023-06-04"> |
| <owner>jdeblasio@chromium.org</owner> |
| <owner>estark@chromium.org</owner> |
| <owner>blundell@chromium.org</owner> |
| <summary> |
| Records the time duration that a check for the reputation status of a site |
| spent in getting the domain info of the site on the main thread, or 0 if the |
| domain info was obtained off of the main thread. Recorded on every check. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SafetyTips.GetReputationStatusWithEngagedSitesTime" |
| units="ms" expires_after="2023-10-08"> |
| <owner>jdeblasio@chromium.org</owner> |
| <owner>estark@chromium.org</owner> |
| <owner>blundell@chromium.org</owner> |
| <summary> |
| Records the time duration of a check for the reputation status of a site on |
| the main thread. Recorded on every check. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SafetyTips.Interaction" enum="SafetyTipInteraction" |
| expires_after="2023-06-18"> |
| <owner>jdeblasio@chromium.org</owner> |
| <owner>estark@chromium.org</owner> |
| <summary> |
| Records a user's interaction with a Safety Tip. Recorded every time a user |
| uses one of the Safety Tip's buttons or dismisses it explicitly. Can be |
| normalized against Security.SafetyTips.SafetyTipShown, filtered to users |
| with the feature enabled to show the UI. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SafetyTips.SafetyTipIgnoredPageLoad" |
| enum="SafetyTipStatus" expires_after="2023-08-27"> |
| <owner>jdeblasio@chromium.org</owner> |
| <owner>src/chrome/browser/lookalikes/OWNERS</owner> |
| <summary> |
| Records the Safety Tip status of a page after navigation commit for a page |
| where the Safety Tip has previously been ignored. |
| |
| Note: This histogram was expired from 2021-12-26 until 2023-01-19. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SafetyTips.SafetyTipShown" enum="SafetyTipStatus" |
| expires_after="2023-09-17"> |
| <owner>jdeblasio@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Records the Safety Tip status of a page after navigation commit or page |
| visibility change. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SCTAuditing.NumPersistedReportsLoaded" |
| units="reports" expires_after="2023-09-10"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Records the number of persisted SCT auditing reports that were loaded and |
| deserialized from disk, if SCT auditing is enabled. Invalid persisted |
| reports are not counted. Recorded once shortly after browser startup (or |
| when the network service restarts). |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SCTAuditing.OptIn.DedupeCacheHWM" units="reports" |
| expires_after="2023-01-15"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Records the high-water-mark of the number of entries in the SCT auditing |
| dedupe cache. Recorded on a timer hourly, if SCT auditing is enabled. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SCTAuditing.OptIn.ReportCompletionStatus" |
| enum="SCTAuditingReportCompletionStatus" expires_after="2023-10-08"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Records the final status of an SCT auditing report, when it has been |
| successfully received or it has run out of retries. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SCTAuditing.OptIn.ReportDeduplicated" enum="Boolean" |
| expires_after="2023-09-17"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Records whether a report was deduplicated (i.e., the SCTs were already in |
| the cache) or not. Recorded on each new report seen by the SCT auditing |
| cache (i.e., on each connection using certificate transparency). |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SCTAuditing.OptIn.ReportersHWM" units="reporters" |
| expires_after="2023-09-17"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Records the high-water-mark of the number of pending reporters in the SCT |
| auditing cache. Recorded on a timer hourly, if SCT auditing is enabled. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SCTAuditing.OptIn.ReportSampled" enum="Boolean" |
| expires_after="2023-09-17"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Records whether a report was sampled to be sent to Safe Browsing. Recorded |
| for each new report seen by the SCT auditing cache that was not |
| deduplicated. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SCTAuditing.OptIn.ReportSize" units="bytes" |
| expires_after="2023-09-17"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Records the size of an SCT auditing report that will be sent to Safe |
| Browsing (i.e., was not deduplicated and was sampled). |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SCTAuditing.OptIn.ReportSucceeded" enum="Boolean" |
| expires_after="2023-09-17"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Records whether sending an SCT auditing report succeeded or not. This is |
| recorded after we receive the headers from the server (or we stop due to a |
| connection error). |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SCTAuditing.OptOut.DroppedDueToLogNotFound" |
| enum="Boolean" expires_after="2023-09-17"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Records whether a hashdance report was dropped due to not finding the log |
| metadata for the selected SCT. Recorded once when creating a new auditing |
| report, but before the report is sampled or deduplicated. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SCTAuditing.OptOut.LookupQueryResult" |
| enum="SCTLookupQueryResult" expires_after="2023-09-17"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>nsatragno@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Records the result of a hashdance lookup query. Recorded once per query |
| regardless of whether the query succeeded, failed, or is a retry. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SCTAuditing.OptOut.PopularSCTSkipped" enum="Boolean" |
| expires_after="2023-09-17"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>nsatragno@chromium.org</owner> |
| <owner>trusty-transport@chromium.org</owner> |
| <summary> |
| Records whether an SCT selected for a hashdance lookup query was skipped |
| because it was found on the Popular SCTs list. Recorded once when creating a |
| new auditing report, but before the report is sampled or deduplicated. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SCTAuditing.OptOut.ReportCount" units="reports" |
| expires_after="2023-09-17"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>jdeblasio@chromium.org</owner> |
| <summary> |
| Records how many full SCT auditing reports the client has sent (i.e., after |
| a successful hashdance lookup query resulting in kSCTSuffixNotFound). This |
| count is tracked per-client in a pref to limit how many full reports a |
| client can send. This metric is emitted every time this count is checked by |
| the SCT auditing code, after sampling is performed, and only once per report |
| (including across browser restarts). This metric is only emitted for SCT |
| auditing hashdance users. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SecurityLevel.DownloadStarted" enum="SecurityLevel" |
| expires_after="2023-06-30"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>security-enamel@chromium.org</owner> |
| <summary> |
| Records the security level of the page that initiated a download (rather |
| than the security state of the connection to the download URL itself). The |
| recorded security level is the level of the page the download was initiated |
| from, not that of the download URL. This histogram is not recorded for |
| downloads that are initiated in a new tab or window, as the security level |
| of the initiating page cannot be tracked. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SecurityLevel.FormSubmission" enum="SecurityLevel" |
| expires_after="2023-06-30"> |
| <owner>carlosil@chromium.org</owner> |
| <owner>cthomp@chromium.org</owner> |
| <summary> |
| Records the security level of a page when submitting a form. This histogram |
| is recorded whenever a form submission navigation begins. The recorded |
| security level is the level of the page the form was submitted from, not the |
| one that the form targets. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SecurityLevel.InsecureMainFrameFormSubmission" |
| enum="SecurityLevel" expires_after="2023-08-14"> |
| <owner>estark@chromium.org</owner> |
| <owner>carlosil@chromium.org</owner> |
| <summary> |
| Records the security level of a page when submitting a form on a top-frame |
| navigation with a non-cryptographic scheme. This histogram is recorded |
| whenever a form submission navigation begins. The recorded security level is |
| the level of the page the form was submitted from, not the one that the form |
| targets. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SecurityLevel.OnCommit" enum="SecurityLevel" |
| expires_after="2023-09-03"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>security-enamel@chromium.org</owner> |
| <summary> |
| Records the security level of a page at the time the navigation commits. |
| Note that the security level of a page can change after commit time, so this |
| histogram should often be compared against |
| Security.SecurityLevel.OnComplete. |
| </summary> |
| </histogram> |
| |
| <histogram name="Security.SecurityLevel.OnComplete" enum="SecurityLevel" |
| expires_after="2023-09-03"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>security-enamel@chromium.org</owner> |
| <summary> |
| Records the security level of a page at the end of the page visit (i.e., |
| navigating away from the page, reloading the page, clicking a link, closing |
| the tab, etc.). Note that this security level can be different than the |
| initial security level of the page, so this histogram should often be |
| compared against Security.SecuritLevel.OnCommit. |
| </summary> |
| </histogram> |
| |
| <histogram base="true" name="Security.SiteEngagement" units="units" |
| expires_after="2023-09-03"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>security-enamel@chromium.org</owner> |
| <summary> |
| The final Site Engagement score (0 to 100) of a URL during a visit to a |
| page. Recorded when the user closes the page or initiates a new navigation. |
| </summary> |
| </histogram> |
| |
| <histogram base="true" name="Security.TimeOnPage2" units="ms" |
| expires_after="2023-09-03"> |
| <owner>cthomp@chromium.org</owner> |
| <owner>security-enamel@chromium.org</owner> |
| <summary> |
| Records the time spent on the page (the time that the page was in the |
| foreground from the start of the navigation to the page visit completing due |
| to a new navigation or the tab being closed). This aggregates all foreground |
| time over the entire visit (multiple times in the foreground are added |
| together). |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.BrowsingInstance.MaxCountPerProcess" |
| units="units" expires_after="2023-06-18"> |
| <owner>wjmaclean@chromium.org</owner> |
| <owner>creis@chromium.org</owner> |
| <summary> |
| The maximum number of BrowsingInstances seen in a RenderProcessHost over its |
| lifetime. Recorded once when |
| ChildProcessImpl::SecurityState::~SecurityState() is invoked. |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.BrowsingInstanceCount" units="units" |
| expires_after="2023-08-27"> |
| <owner>alexmos@chromium.org</owner> |
| <owner>creis@chromium.org</owner> |
| <summary> |
| The count of all current BrowsingInstances. Recorded once per UMA ping. |
| </summary> |
| </histogram> |
| |
| <histogram base="true" name="SiteIsolation.CORBProtection.CacheHeuristic" |
| enum="CrossOriginProtectionDecision" expires_after="M83"> |
| <owner>krstnmnlsn@chromium.org</owner> |
| <owner>creis@chromium.org</owner> |
| <summary> |
| The blocking decision CORB would have made on the response, if the request |
| was cross-origin. Reported if the response looked sensitive under the cache |
| heuristic (i.e. had Cache-Control: Private and Vary: Origin response |
| headers). |
| </summary> |
| </histogram> |
| |
| <histogram base="true" |
| name="SiteIsolation.CORBProtection.CacheHeuristic.ProtectedMimeType" |
| enum="BooleanSupported" expires_after="M83"> |
| <!-- suffixed with Block*WithRangeSupport --> |
| |
| <owner>krstnmnlsn@chromium.org</owner> |
| <owner>creis@chromium.org</owner> |
| <summary> |
| True if the response has an Accept-Ranges header, which indicates the server |
| supports range requests on the resource and could be used to bypass CORB. |
| Only reported if the resource looked sensitive under the Cache heuristic and |
| was a protected MIME type. |
| </summary> |
| </histogram> |
| |
| <histogram base="true" name="SiteIsolation.CORBProtection.CORSHeuristic" |
| enum="CrossOriginProtectionDecision" expires_after="M83"> |
| <owner>krstnmnlsn@chromium.org</owner> |
| <owner>creis@chromium.org</owner> |
| <summary> |
| The blocking decision CORB would have made on the response, if the request |
| was cross-origin. Reported if the response looked sensitive under the CORS |
| heuristic (i.e. had the Access-Control-Allow-Origin header with a value |
| other than * or null). |
| </summary> |
| </histogram> |
| |
| <histogram base="true" |
| name="SiteIsolation.CORBProtection.CORSHeuristic.ProtectedMimeType" |
| enum="BooleanSupported" expires_after="M83"> |
| <!-- suffixed with Block*WithRangeSupport --> |
| |
| <owner>krstnmnlsn@chromium.org</owner> |
| <owner>creis@chromium.org</owner> |
| <summary> |
| True if the response has an Accept-Ranges header, which indicates the server |
| supports range requests on the resource and could be used to bypass CORB. |
| Only reported if the resource looked sensitive under the CORS heuristic and |
| was a protected MIME type. |
| </summary> |
| </histogram> |
| |
| <histogram base="true" |
| name="SiteIsolation.CORBProtection.ProtectedMimeType.BlockedWithoutSniffing.HasNoSniff" |
| enum="BooleanHasNoSniff" expires_after="M83"> |
| <owner>krstnmnlsn@chromium.org</owner> |
| <owner>creis@chromium.org</owner> |
| <summary> |
| True if the response has a nosniff header. If the nosniff header is not |
| present, then CORB must have decided to block without sniffing due to a |
| partial response, or because the MIME type was a never sniff type. Only |
| reported on resources CORB would have blocked/protected without sniffing |
| that have a protected MIME type. |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.CORBProtection.SensitiveResource" |
| enum="BooleanSensitive" expires_after="M83"> |
| <owner>krstnmnlsn@chromium.org</owner> |
| <owner>creis@chromium.org</owner> |
| <summary> |
| True if the resource was found to be sensitive by either the CORS or Cache |
| heuristics. Recorded for every resource CORB sees. |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.CORBProtection.SensitiveWithRangeSupport" |
| enum="BooleanSupported" expires_after="M83"> |
| <owner>krstnmnlsn@chromium.org</owner> |
| <owner>creis@chromium.org</owner> |
| <summary> |
| True if the response has an Accept-Ranges header, which indicates the server |
| supports range requests on the resource. Only reported if the response |
| looked sensitive under the cache or CORS heuristics. |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.IsolatableSandboxedIframes" units="processes" |
| expires_after="2023-05-09"> |
| <owner>wjmaclean@chromium.org</owner> |
| <owner>alexmos@chromium.org</owner> |
| <owner>creis@chromium.org</owner> |
| <summary> |
| The number of sandboxed iframes that (i) are same-site (and therefore not |
| already process-isolated) and (ii) eligible to be process isolated if |
| SiteIsolationPolicy::AreIsolatedSandboxedIframesEnabled() is true. A |
| sandboxed iframe is eligible for process-isolation so long as it doesn't |
| have `allow-same-origin` among its sandbox permissions, and it isn't an |
| about:blank url. This metric measures the upper bound on the process |
| overhead of isolating sandboxed iframes, namely the case where every |
| sandboxed iframe is placed in its own process. Note that the computation of |
| this metric is independent of the current process model. Recorded once per |
| UMA ping. |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.IsolatableSandboxedIframes.UniqueOrigins" |
| units="processes" expires_after="2023-05-09"> |
| <owner>wjmaclean@chromium.org</owner> |
| <owner>alexmos@chromium.org</owner> |
| <owner>creis@chromium.org</owner> |
| <summary> |
| The number of unique origins among the sandboxed iframes reported in |
| SiteIsolation.IsolatableSandboxedIframes. Used to estimate the potential |
| process overhead if a per-origin process model is used for isolating the |
| sandboxed iframes instead of the (current) per-site process model. Note that |
| the computation of this metric is independent of the current process model. |
| Recorded once per UMA ping. |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.IsolatableSandboxedIframes.UniqueSites" |
| units="processes" expires_after="2023-05-09"> |
| <owner>wjmaclean@chromium.org</owner> |
| <owner>alexmos@chromium.org</owner> |
| <owner>creis@chromium.org</owner> |
| <summary> |
| The number of unique sites among the sandboxed iframes reported in |
| SiteIsolation.IsolatableSandboxedIframes. Note that the computation of this |
| metric is independent of the current process model. Recorded once per UMA |
| ping. |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.IsPasswordFormSubmittedInDedicatedProcess" |
| enum="SiteIsolationIsDedicatedProcess" expires_after="2023-08-07"> |
| <owner>alexmos@chromium.org</owner> |
| <owner>lukasza@chromium.org</owner> |
| <summary> |
| Logs whether or not a password form was submitted from a site-isolated |
| process that's dedicated to a single site. Recorded when a password form is |
| submitted. |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.ORB.BlockingReason" |
| enum="OrbBlockingDecisionReason" expires_after="2023-08-08"> |
| <owner>creis@chromium.org</owner> |
| <owner>lukasza@chromium.org</owner> |
| <owner>vogelheim@chromium.org</owner> |
| <summary> |
| Logs why ORB has reached a blocking decision. |
| |
| Logged for each response processed by OpaqueResponseBlockingAnalyzer. |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.ORB.CorbVsOrb" enum="CorbVsOrb" |
| expires_after="2023-10-08"> |
| <owner>creis@chromium.org</owner> |
| <owner>lukasza@chromium.org</owner> |
| <owner>vogelheim@chromium.org</owner> |
| <summary> |
| Logs whether ORB and CORB would take the same allow-vs-block decision. This |
| should help assess the backcompatibility risk of shipping ORB. |
| |
| Logged at the end of lifetime of the ResponseAnalyzer (i.e. after processing |
| each response that is subject to CORB - most NetworkService responses, but |
| also CORB-covered web bundles). |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.ORB.CorbVsOrb.OrbBlockedAndCorbDidnt.Reason" |
| enum="OrbBlockingDecisionReason" expires_after="2023-10-08"> |
| <owner>creis@chromium.org</owner> |
| <owner>lukasza@chromium.org</owner> |
| <owner>vogelheim@chromium.org</owner> |
| <summary> |
| Logs why ORB has reached a blocking decision. |
| |
| Logged when it turned out that CORB wouldn't have blocked the response, but |
| ORB blocked the response. |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.ORB.ResponseHeadersHeuristic.Decision" |
| enum="OpaqueResponseBlocking_ResponseHeadersHeuristic" expires_after="M92"> |
| <obsolete> |
| Removed in Feb 2022 / M100. |
| |
| Old results are preserved in |
| https://docs.google.com/document/d/1LkF7a-_RXg0uQQdk86FQHq7CMW5pKozPDmmbnJJRhY8/edit#heading=h.6labqs212jfn |
| </obsolete> |
| <owner>creis@chromium.org</owner> |
| <owner>lukasza@chromium.org</owner> |
| <summary> |
| The approximation of a route that Opaque Response Blocking (ORB) algorithm |
| would have taken to decide whether to block the response or not. The logged |
| value is based on heuristics that only look at the HTTP response headers, |
| and attempt to approximate if the full ORB algorithm would need to parse the |
| response body as Javascript (vs also reaching a decision purely based on the |
| HTTP response headers). |
| |
| Note that only partial ORB algorithm is used for logging the UMA (e.g. no |
| multimedia sniffing and/or 206-response processing is done). This means that |
| the results overestimate how many responses need Javascript parsing. |
| |
| Logged for each final HTTP/HTTPS response processed by the NetworkService. |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.ORB.ResponseHeadersHeuristic.{OrbDecision}" |
| enum="RequestDestination" expires_after="M92"> |
| <obsolete> |
| Removed in Feb 2022 / M100. |
| |
| Old results are preserved in |
| https://docs.google.com/document/d/1LkF7a-_RXg0uQQdk86FQHq7CMW5pKozPDmmbnJJRhY8/edit#heading=h.6labqs212jfn |
| </obsolete> |
| <owner>creis@chromium.org</owner> |
| <owner>lukasza@chromium.org</owner> |
| <summary> |
| The request destination (e.g. script vs image) of a response that Opaque |
| Response Blocking (ORB) algorithm processed {OrbDecision}. |
| |
| Note that only partial ORB algorithm is used for logging the UMA (e.g. no |
| multimedia sniffing and/or 206-response processing is done). This means that |
| the results overestimate how many responses need Javascript parsing. |
| |
| Logged for each final HTTP/HTTPS response processed by the NetworkService. |
| </summary> |
| <token key="OrbDecision"> |
| <variant name="ProcessedBasedOnHeaders" |
| summary="based on HTTP response headers"/> |
| <variant name="RequiresJavascriptParsing" |
| summary="with required Javascript parsing"/> |
| </token> |
| </histogram> |
| |
| <histogram name="SiteIsolation.OutOfProcessIframes" units="oopifs" |
| expires_after="2023-09-17"> |
| <owner>alexmos@chromium.org</owner> |
| <owner>creis@chromium.org</owner> |
| <owner>lukasza@chromium.org</owner> |
| <owner>nasko@chromium.org</owner> |
| <summary> |
| The count of all out-of-process iframes. Recorded once per UMA ping. |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.OutOfProcessInnerFrameTrees" units="frame trees" |
| expires_after="2024-03-14"> |
| <owner>alexmos@chromium.org</owner> |
| <owner>creis@chromium.org</owner> |
| <owner>lukasza@chromium.org</owner> |
| <owner>nasko@chromium.org</owner> |
| <summary> |
| The count of all out-of-process inner frame trees. Recorded once per UMA |
| ping. |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.ProxyCount" units="proxies" |
| expires_after="2023-09-10"> |
| <owner>alexmos@chromium.org</owner> |
| <owner>creis@chromium.org</owner> |
| <owner>lukasza@chromium.org</owner> |
| <summary> |
| The count of all RenderFrameProxyHosts. Recorded once per UMA ping. |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.ProxyCountPerBrowsingInstance" units="units" |
| expires_after="2023-07-09"> |
| <owner>alexmos@chromium.org</owner> |
| <owner>creis@chromium.org</owner> |
| <owner>lukasza@chromium.org</owner> |
| <summary> |
| The count of RenderFrameProxyHosts in each BrowsingInstance. Recorded each |
| UMA ping, once per BrowsingInstance. |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.ReusePendingOrCommittedSite.CouldReuse2" |
| enum="ReusePendingOrCommittedSiteEnum" expires_after="2023-06-04"> |
| <owner>clamy@chromium.org</owner> |
| <summary> |
| Whether SiteInstances with a ProcessReusePolicy of |
| REUSE_PENDING_OR_COMMITTED_SITE could reuse an existing RenderProcessHost or |
| they had to create a new one. True when they reused an existing process, |
| false when they created a new one. |
| |
| (Was expired between M77 and M105 before moving on to V2.) |
| </summary> |
| </histogram> |
| |
| <histogram |
| name="SiteIsolation.ReusePendingOrCommittedSite.TimeSinceReusableProcessDestroyed" |
| units="ms" expires_after="2023-06-25"> |
| <owner>jessemckenna@google.com</owner> |
| <owner>olivierli@chromium.org</owner> |
| <summary> |
| Recorded on navigations with a ProcessReusePolicy of |
| REUSE_PENDING_OR_COMMITTED_SITE (mostly subframe navigations). Measures the |
| time since a RenderProcessHost hosting the destination URL was last |
| destroyed, up to 10 seconds. If no host matching the destination was |
| recently destroyed, a sentinel value of 20 seconds is used. |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.SavedOAuthSites.Size" units="origins" |
| expires_after="2023-08-20"> |
| <owner>alexmos@chromium.org</owner> |
| <owner>creis@chromium.org</owner> |
| <owner>lukasza@chromium.org</owner> |
| <summary> |
| The number of currently saved sites that had been isolated due to OAuth. |
| This is only used by Site Isolation on Android. Recorded once on browser |
| startup. |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.SavedUserTriggeredIsolatedOrigins.Size" |
| units="origins" expires_after="2023-08-20"> |
| <owner>alexmos@chromium.org</owner> |
| <owner>creis@chromium.org</owner> |
| <owner>lukasza@chromium.org</owner> |
| <summary> |
| The number of currently saved user-triggered isolated sites. This includes |
| sites where the user has entered a password while using Site Isolation for |
| password sites (which is a currently active site isolation mode on Android). |
| Recorded once on browser startup. |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.SavedWebTriggeredIsolatedOrigins.Size" |
| units="origins" expires_after="2023-08-20"> |
| <owner>alexmos@chromium.org</owner> |
| <owner>creis@chromium.org</owner> |
| <owner>lukasza@chromium.org</owner> |
| <summary> |
| The number of currently saved web-triggered isolated sites. This includes |
| sites that were isolated due to Cross-Origin-Opener-Policy headers, which is |
| a heuristic used for site isolation on Android. Recorded once on browser |
| startup. |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.SiteInstancesPerBrowsingInstance" units="units" |
| expires_after="2023-09-03"> |
| <owner>alexmos@chromium.org</owner> |
| <owner>creis@chromium.org</owner> |
| <owner>lukasza@chromium.org</owner> |
| <owner>nasko@chromium.org</owner> |
| <summary> |
| The count of SiteInstances in a single BrowsingInstance. Recorded each UMA |
| ping, once per BrowsingInstance. |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.XSD.Browser.Action" |
| enum="SiteIsolationResponseAction" expires_after="2020-06-01"> |
| <owner>creis@chromium.org</owner> |
| <owner>lukasza@chromium.org</owner> |
| <summary> |
| Various actions related to cross-site document blocking in the browser |
| process, indicating whether the response was blocked from the renderer. |
| Recorded as the response is processed in the network stack. |
| </summary> |
| </histogram> |
| |
| <histogram name="SiteIsolation.XSD.Browser.Blocked.CanonicalMimeType" |
| enum="CorbCanonicalMimeType" expires_after="M81"> |
| <owner>creis@chromium.org</owner> |
| <owner>lukasza@chromium.org</owner> |
| <summary> |
| The total count of responses that were blocked by the cross-site document |
| blocking logic in the browser process. Recorded with a canonical MIME type |
| when the response is blocked. |
| </summary> |
| </histogram> |
| |
| </histograms> |
| |
| </histogram-configuration> |