<!--
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 Tab 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="BatteryState">
<variant name="" summary="On battery or plugged-in"/>
<variant name=".OnBattery"/>
<variant name=".PluggedIn"/>
</variants>
<variants name="RecentlyClosedType">
<variant name="Bulk" summary="RecentlyClosedBulkEvent"/>
<variant name="Group" summary="RecentlyClosedGroup"/>
<variant name="Tab" summary="RecentlyClosedTab"/>
</variants>
<variants name="TabActiveState">
<variant name="Active" summary="active"/>
<variant name="Inactive" summary="inactive"/>
</variants>
<variants name="TabDiscardReason">
<variant name=".External"
summary="from outside of TabManager (e.g. by an extension)"/>
<variant name=".Proactive"
summary="proactively by Performance Manager before the system is in a
critical condition, such as when Memory Saver Mode discards
the tab"/>
<variant name=".Suggested"
summary="suggested by the Performance Detection manager when the
resource usage health may improve from discarding the tab"/>
<variant name=".Urgent"
summary="urgently by TabManager when the system is in a critical
condition"/>
</variants>
<variants name="TabModelSelectorType">
<variant name="Archived" summary="The archived tab model selector"/>
<variant name="Custom" summary="The custom tab model selector."/>
<variant name="Regular" summary="The regular tab model selector."/>
</variants>
<variants name="TabOrganizationEntryPoint">
<variant name=".AllEntrypoints" summary="any of the entrypoints"/>
<variant name=".Proactive"
summary="the 'Organize Tabs' button in the tab strip"/>
<variant name=".TabContextMenu" summary="the option in the tab context menu"/>
<variant name=".TabSearch"
summary="the start request button in the tab search ui"/>
<variant name=".ThreeDotMenu" summary="the three dot menu option"/>
</variants>
<histogram name="Discarding.DailyDiscards{TabDiscardReason}" units="tabs"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of tabs discards since last emit. The emit interval is at least
24 hours, see metrics::DailyEvent for more details. The discards are
requested {TabDiscardReason}.
</summary>
<token key="TabDiscardReason" variants="TabDiscardReason"/>
</histogram>
<histogram name="Discarding.DailyReloads{TabDiscardReason}" units="tabs"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of tabs reloads since last emit. The emit interval is at least 24
hours, see metrics::DailyEvent for more details. The discards corresponding
to the reloads are requested {TabDiscardReason}.
</summary>
<token key="TabDiscardReason" variants="TabDiscardReason"/>
</histogram>
<histogram name="Discarding.DiscardCandidatesCount" units="tabs"
expires_after="2024-04-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of tabs discard candidates. This is recorded each time Chrome
needs to urgently discard a tab.
</summary>
</histogram>
<histogram name="Discarding.DiscardingFocusedTab" enum="BooleanFocusedTab"
expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logged every time a tab is set to be discarded. Tracks the porportion of tab
discards that are focused at the time of discard.
</summary>
</histogram>
<histogram name="Discarding.DiscardingProtectedTab" enum="BooleanProtectedTab"
expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logged every time a tab is set to be discarded. Tracks the porportion of tab
discards that are protected at the time of discard.
</summary>
</histogram>
<histogram name="Discarding.DiscardsDrivenByStaleSignal" units="tabs"
expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Reported for ChromeOS only. The count of tab discards that were unnecessary
given the origin time of the memory pressure reclaim target. This is
calculated and reported when Tab Manager or Page Discarder finish discarding
tabs in response to a reclaim target. There can be a non-trival amount of
time between when a memory pressure reclaim target is generated and when
Chrome actually discards tabs in response to the reclaim target. If a
reclaim target is generated before all tabs from the previous target have
been discarded, then the same memory shortfall can be included in all of
those signals' reclaim targets, resulting in Chrome discarding more tabs
than is strictly necessary.
</summary>
</histogram>
<histogram name="Discarding.LargestTabFootprint" units="MiB"
expires_after="2021-02-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The largest tab's resident set among all the urgent discarding candidates.
</summary>
</histogram>
<histogram name="Discarding.OldestTabFootprint" units="MiB"
expires_after="2021-02-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>The resident set of the oldest urgent discarding candidate.</summary>
</histogram>
<histogram name="Discarding.ReclaimTargetAge" units="ms"
expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Reported for ChromeOS only. The age of the memory pressure signal when it is
processed by the tab/page discarder. This is recorded when Tab Manager or
Page Discarder reads the signal, but before any tabs are discarded as a
result of the signal.
</summary>
</histogram>
<histogram name="Tab.AgeAtDeletion" units="ms" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The age of a Tab when closed (Time between creation time on the current
device and closure time).
</summary>
</histogram>
<histogram name="Tab.AndroidCrashUpload{AndroidCrashUploadTypes}"
enum="BooleanSuccess" expires_after="M85">
<owner>[email protected]</owner>
<summary>
[Android] Count of upload success/failures by crash type.
{AndroidCrashUploadTypes}
</summary>
<token key="AndroidCrashUploadTypes">
<variant name="_Browser" summary="Measures browser crash uploads."/>
<variant name="_GPU" summary="Measures GPU crash uploads."/>
<variant name="_Other" summary="Measures other crash uploads."/>
<variant name="_Renderer" summary="Measures renderer crash uploads."/>
</token>
</histogram>
<histogram name="Tab.BackgroundLoadStatus" enum="TabBackgroundLoadStatus"
expires_after="M77">
<owner>[email protected]</owner>
<summary>
Mobile-specific metric: when a tab that was opened in background (via
"Open link in new tab") is switched to, we record whether the
eagerly loaded tab was still memory resident, or we lost the loaded page due
to memory pressure.
</summary>
</histogram>
<histogram name="Tab.CloseAllTabsDialog.ClosedAllTabs.{CloseType}"
enum="Boolean" expires_after="2025-01-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether the "Close all tabs" action was taken when the
close all tabs confirmation dialog was shown through App Menu > Close all
tabs. This is only recorded for Android for {CloseType} close all tabs menu
actions.
</summary>
<token key="CloseType">
<variant name="Incognito"/>
<variant name="NonIncognito"/>
</token>
</histogram>
<histogram name="Tab.Count.Guest" units="units" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of open tabs in each guest window. Recorded once a new tab in a guest
window is opened and adds one to the bucket of number of tabs in that
particular window (it does not count the total number of tabs in all open
guest windows). Please note that this metric double counts the lower
numbers, meaning that if user opens three tabs (without closing any in
between), then buckets 1, 2, and 3 will all be incremented in turn. The
metric also overcounts the tabs that are moved from one window to another as
they are recorded both when they are created in the first window and when
they are added to the second window.
</summary>
</histogram>
<histogram name="Tab.Count.Incognito" units="units" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of open tabs in each incognito window. Recorded once a new tab is
opened in an incognito window and adds one to the bucket of number of tabs
in that particular window (it does not count the total number of tabs in all
open incognito windows). Please note that this metric double counts the
lower numbers, meaning that if user opens three tabs (without closing any in
between), then buckets 1, 2, and 3 will all be incremented in turn. The
metric also overcounts the tabs that are moved from one window to another as
they are recorded both when they are created in the first window and when
they are added to the second window.
</summary>
</histogram>
<histogram name="Tab.ExternalApplicationOpened{Cause}"
enum="ExternalLauncherOption" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[iOS] Used on External App launcher Prompt to determine how the user
interacted with the prompt.
</summary>
<token key="Cause">
<variant name=".Failed" summary="External application opening failed."/>
<variant name=".FromIncognito" summary="Request from Incognito."/>
<variant name=".Generic" summary="Misc request bucket."/>
<variant name=".NoUserInteraction"
summary="Request without user interaction."/>
<variant name=".Repeated"
summary="Repeated request to open external application.."/>
</token>
</histogram>
<histogram name="Tab.HasCustomUnderPageBackgroundColor" enum="BooleanPresent"
expires_after="2024-11-29">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[iOS] Whether a page has a custom under page background color, recorded when
the page is fully loaded. The default value of this color is from the
background colors of the "html" and "body" elements and
the background color of the web view. By default it is white, so this
histogram only records it as custom if it is not white with no alpha.
</summary>
</histogram>
<histogram name="Tab.HasThemeColor" enum="BooleanPresent"
expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[iOS] Whether a page has a theme-color html tag set, recorded when the page
is fully loaded.
</summary>
</histogram>
<histogram name="Tab.NewTab" enum="NewTabType" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when a new tab is opened. Tracks the method in which the tab was
opened. Does not apply to opening existing links or searches in a new tab,
only to brand new empty tabs. Note: Currently the "Regular menu
option" includes some programmatic actions in addition to user actions.
</summary>
</histogram>
<histogram name="Tab.Organization.Organization.LabelEdited" enum="Boolean"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether the user has editted the label (title) of the suggested tab
organization. Logged when a tab organization session has ended (all of the
organizations have had a user choice or tabs have been added or removed from
the tabstrip) for all suggested tab organizations in the session that were
accepted.
</summary>
</histogram>
<histogram name="Tab.Organization.Organization.TabRemovedCount" units="tabs"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The count of the tabs that the user removed from the suggestd tab
organizations after it was shown to the user. Logged when a tab organization
session has ended (all of the organizations have had a user choice or tabs
have been added or removed from the tabstrip) for all suggested tab
organizations in the session that were accepted.
</summary>
</histogram>
<histogram name="Tab.Organization.Response.Latency" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time delta between when a tab organization request was started, and when
the implementation of the request has completed and returned to the tab
organization service. The request may come in the form of a remote call to a
network service or local call to an async service.
</summary>
</histogram>
<histogram name="Tab.Organization.Response.Succeeded" enum="Boolean"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether the tab organization request returned valid results for exposing to
the Tab Search UI. The request may come in the form of a remote call to a
network service or local call to an async service. Failures could come in
the form of improper formatting of results, network failures, remote service
issues, or failures in the tab organization requests implementation.
</summary>
</histogram>
<histogram name="Tab.Organization.Response.TabCount" units="tabs"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
A count of the full number of tabs that the tab organization request
implementation has returned for grouping. Logged on the successful
completion of a tab organization request.
</summary>
</histogram>
<histogram name="Tab.Organization.Trigger.Outcome"
enum="TabOrganizationTriggerOutcome" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records user actions (or lack thereof) taken on the proactive nudge UI each
time it is triggered to suggest the user organize their tabs.
</summary>
</histogram>
<histogram name="Tab.Organization.TriggeredInPeriod" enum="Boolean"
expires_after="2024-11-20">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether or not the Tab Organization nudge UI was triggered when each
trigger period ends. The nudge UI is limited to trigger at most once per
period, but may not trigger at all if it doesn't find a good moment.
</summary>
</histogram>
<histogram name="Tab.Organization{EntryPoint}.Clicked" enum="Boolean"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logged when the user clicks {EntryPoint}. In cases where the entrypoint is
proactively shown, logs false if the user did not interact with the
entrypoint. All first run experience users will go through the tab search
entrypoint even if entering the tab search UI from a different entrypoint,
in which case both entrypoints will be logged.
</summary>
<token key="EntryPoint" variants="TabOrganizationEntryPoint"/>
</histogram>
<histogram name="Tab.Organization{EntryPoint}.GroupCount" units="groups"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of organizations that were suggested as a result of {EntryPoint}
being clicked. Logs when the suggestion is destroyed, regardless of whether
the user accepted it.
</summary>
<token key="EntryPoint" variants="TabOrganizationEntryPoint"/>
</histogram>
<histogram name="Tab.Organization{EntryPoint}.UserChoice"
enum="TabOrganizationUserChoice" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether the user eventually accepted one of the Organizations that were
suggested as a result of {EntryPoint} being clicked.
</summary>
<token key="EntryPoint" variants="TabOrganizationEntryPoint"/>
</histogram>
<histogram name="Tab.PageLoadsSinceLastSwitchToEvictedTab" units="units"
expires_after="2024-03-18">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[Android] The number of page loads since the last switch to an evicted tab
on Android. This was sampled each time an evicted tab was reloaded. Note
that this data is invalid from M77 until 2023-11-22 because this histogram
was expired. As of right now, this histogram is only emitted in iOS.
</summary>
</histogram>
<histogram name="Tab.PerceivedRestoreTime" units="ms"
expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[Android] User-perceived load time for a successful tab restore, measured
from the first time the user sees the tab being restored until the load
completes.
Warning this historgram was expired between M89 and 2022-08-24.
</summary>
</histogram>
<histogram name="Tab.Preview.TimeToStoreAfterTabSwitch" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
On tab switch, the visible content area is captured and stored as a
thumbnail. This measures the time between requesting the capture and storing
it as the current thumbnail.
</summary>
</histogram>
<histogram name="Tab.PullDownGesture" enum="PullDownGestureAction"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Record the action executed when the user performs a pull down gesture. This
feature is currently iOS only.
A pull down gesture is an action completed when the user scrolls past the
edge of the web page and continues scrolling in the same direction revealing
a specific UI on the header with multiple actions icons. The user can then
choose an action by scrolling left or right and lift the finger or cancel by
scrolling back up. This is currently an iOS specific feature.
</summary>
</histogram>
<histogram name="Tab.RendererTermination.AliveRenderersCount" units="renderers"
expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[iOS] A count of the number of alive renderers in the current window when a
renderer termination occurs. Expired for M78-94.
</summary>
</histogram>
<histogram name="Tab.RendererTermination.RecentlyAliveRenderersCount"
units="renderers" expires_after="M106">
<owner>[email protected]</owner>
<summary>
[iOS] The number of renderers which are either currently alive or recently
terminated in the current window at the time of a renderer termination.
</summary>
</histogram>
<histogram name="Tab.RendererTermination.TotalTabCount" units="tabs"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[iOS] The number of tabs of the current window at the time of a renderer
termination.
</summary>
</histogram>
<histogram name="Tab.RestoreClosedTab" enum="Boolean"
expires_after="2024-09-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[Desktop] This metric is recorded whenever a tab is restored by the user.
Set to true if the tab is restored from ClosedTabCache and false indicates
the tab is restored normally. This accounts for all types of tab restores
i.e., in a closed window, closed group also on startup tab restores.
</summary>
</histogram>
<histogram name="Tab.Screenshot.Action" enum="TabScreenshotAction"
expires_after="2023-12-10">
<owner>[email protected]</owner>
<summary>
Records actions taken after one or more screenshots of a page were taken.
This will not be recorded if Chromium is killed before leaving the page. If
several types of action (IPH and Sharing) occur, only the last is recorded.
We think that both IPH and Sharing happening at the same time is rare, so we
do not expect to lose much data this way.
</summary>
</histogram>
<histogram name="Tab.Screenshot.ScreenshotsPerPage" units="screenshots"
expires_after="2022-12-18">
<owner>[email protected]</owner>
<summary>
Records the number of screenshots taken of a specific page. It is recorded
when the user navigates away from this page or the tab is destroyed. This
will not be recorded if Chromium is killed before leaving the page.
</summary>
</histogram>
<histogram name="Tab.StateAtRendererTermination" enum="TabForegroundState"
expires_after="2024-10-06">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The state (foreground/background) of a tab when its renderer is terminated.
</summary>
</histogram>
<histogram name="Tab.StatusWhenSwitchedBackToForeground" enum="TabStatus"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[Android and iOS] The status of a tab collected each time the user switches
to it on mobile. That does not include tabs being created at the time the
user switches to them, such as NTP or tabs opened to handle intents.
However, it does include the Tab opened/restored when launching an Activity
(on Android).
Warning this histogram was expired between M86 and 2022-08-24.
In M130, this metric was updated to include Custom Tabs on Android, which
were probably unintentionally excluded.
</summary>
</histogram>
<histogram name="Tab.SwitchedToForegroundAge" units="ms"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[Android] Age (in ms) when the tab was switched to foreground. Note that
this data is invalid from M85 until 2023-11-22 because this histogram was
expired.
In M130, this metric was updated to include Custom Tabs on Android, which
were probably unintentionally excluded.
</summary>
</histogram>
<histogram name="TabGroups.CollapsedGroupCountPerLoad" units="groups"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of tabs groups that are collapsed in all browsers (counting
app-mode windows) when a load completes.
Prior to M-121, this was also recorded when a navigation in a non-tab
WebContents (e.g. DevTools, extension popups) happens. Such a navigation
would not have affected the recorded value. It would only duplicate a
previous recording.
</summary>
</histogram>
<histogram name="TabGroups.CollapsedTabCount" units="tabs"
expires_after="2021-09-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of tabs in a collapsed tab group in all browsers, reported every
5 minutes. Desktop only.
</summary>
</histogram>
<histogram name="TabGroups.CountAtStartup" units="groups"
expires_after="2025-04-11">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>[iOS] The number of tab groups opened at cold launch.</summary>
</histogram>
<histogram name="TabGroups.NonZeroUserGroupCountPerLoad" units="groups"
expires_after="2021-09-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of (non-zero) tabs groups open in all browsers (counting app-mode
windows) when a load completes.
</summary>
</histogram>
<histogram name="TabGroups.NumberOfRootIdsFixed" units="groups"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[Android] Records the number of tab groups where the root identifier did not
match a tab from its tab group and the root identifier had to be corrected.
Emitted once per start during tab state initialization.
</summary>
</histogram>
<histogram
name="TabGroups.ParseSavedTabGroupDataEntries.ParseFailurePercentage"
units="%" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the percentage of stored entries in the saved tab group
DataTypeStore that failed to parse as a SavedTabGroupData in the final stage
of startup. Recorded during SavedTabGroupSyncBridge initialization after
sucessfully passing through the migration stages.
</summary>
</histogram>
<histogram name="TabGroups.SavedTabGroupActiveCount" units="groups"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records per hour once the SavedTabGroupKeyedService is instantiated upon
profile open. Tracks the total number of active groups (groups that have
been modified within the last 30 days) saved in the profile. Nothing is
recorded for sessions shorter than one hour.
</summary>
</histogram>
<histogram name="TabGroups.SavedTabGroupAge" units="minutes"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records once per group per hour once the SavedTabGroupKeyedService is
instantiated upon profile open. Tracks the age of a SavedTabGroup (since
creation). Nothing is recorded for sessions shorter than one hour.
</summary>
</histogram>
<histogram name="TabGroups.SavedTabGroupCount" units="groups"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records per hour once the SavedTabGroupKeyedService is instantiated upon
profile open. Tracks the total number of groups saved in the profile.
Nothing is recorded for sessions shorter than one hour.
</summary>
</histogram>
<histogram name="TabGroups.SavedTabGroupLifespan" units="minutes"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records when a SavedTabGroup is deleted. Tracks the total age / lifespan of
a SavedTabGroup (since creation) once deleted. Nothing is recorded for
sessions shorter than one hour.
</summary>
</histogram>
<histogram name="TabGroups.SavedTabGroupPinnedCount" units="groups"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records per hour once the SavedTabGroupKeyedService is instantiated upon
profile open. Tracks the total number of pinned groups saved in the profile.
Nothing is recorded for sessions shorter than one hour.
</summary>
</histogram>
<histogram name="TabGroups.SavedTabGroups.TabCountDifference.Negative"
units="tabs" expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the difference in the number of tabs between local tab group and its
synced counterpart when the synced version has more tabs compared to the
local version. Recorded on connect which happens on startup and also when
sync is turned on from an off state.
</summary>
</histogram>
<histogram name="TabGroups.SavedTabGroups.TabCountDifference.Positive"
units="tabs" expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the difference in the number of tabs between local tab group and its
synced counterpart when the local version has more tabs compared to the
synced version. Recorded on connect which happens on startup and also when
sync is turned on from an off state.
</summary>
</histogram>
<histogram name="TabGroups.SavedTabGroupSyncBridge.MigrationResult"
enum="SavedTabGroupSyncBridge.MigrationResult" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Histogram for recording various steps of the SavedTabGroupSyncBridge
initialization, such as the migration steps and their results. Care has been
taken to ensure that a certain step isn't recorded more than once during a
chrome session. Recorded on startup.
</summary>
</histogram>
<histogram name="TabGroups.SavedTabGroupTabCount" units="tabs"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records once per group per hour once the SavedTabGroupKeyedService is
instantiated. Tracks the number of tabs in a SavedTabGroup. Nothing is
recorded for sessions shorter than one hour.
</summary>
</histogram>
<histogram name="TabGroups.SavedTabGroupTabTimeSinceModification"
units="minutes" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records once per saved tab per saved group per hour once the
SavedTabGroupKeyedService is instantiated upon profile open. Tracks the
duration since a saved tab's last modification. Nothing is recorded for
sessions shorter than one hour.
</summary>
</histogram>
<histogram name="TabGroups.SavedTabGroupTimeSinceModification" units="minutes"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records once per group per hour once the SavedTabGroupKeyedService is
instantiated upon profile open. Tracks the duration since a saved group's
last modification. Nothing is recorded for sessions shorter than one hour.
</summary>
</histogram>
<histogram name="TabGroups.SavedTabGroupUnpinnedCount" units="groups"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records per hour once the SavedTabGroupKeyedService is instantiated upon
profile open. Tracks the total number of unpinned groups saved in the
profile. Nothing is recorded for sessions shorter than one hour.
</summary>
</histogram>
<histogram name="TabGroups.SelectedTabInTabGroup" enum="Boolean"
expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded on Android when a user switches tabs. Records whether the tab that
was selected was in a tab group.
</summary>
</histogram>
<histogram name="TabGroups.ShowTabGroupCreationDialogSwitch.ToggledToState"
enum="Boolean" expires_after="2024-10-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records when a user toggles the settings entry for showing the tab group
creation dialog on Android. The default state is enabled and is not
recorded. This histogram tracks the new state of the toggle and is emitted
each time it is changed. True corresponds to enabled and false corresponds
to disabled.
</summary>
</histogram>
<histogram name="TabGroups.SpecificsToDataMigration.ParseFailurePercentage"
units="%" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the percentage of stored entries in the saved tab group
DataTypeStore that failed to parse as a SavedTabGroupSpecfics during
migration to SavedTabGroupData. Recorded during the one-time migration. If
the data is already migrated, this histogram is not recorded.
</summary>
</histogram>
<histogram name="TabGroups.Sync.ActiveTabGroupCount.{NumberOfDays}Day"
units="groups" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks the number of active tab groups on startup. A group is active iff
there was explicit user interaction with the group in last {NumberOfDays}
days. An explicit user interaction is currently defined as a tab addition,
tab removal or a tab navigation inside the group.
Recorded on startup 10 seconds after TabGroupSyncService initialization.
Android only.
</summary>
<token key="NumberOfDays">
<variant name="1" summary="1 day"/>
<variant name="7" summary="7 day"/>
<variant name="28" summary="28 day"/>
</token>
</histogram>
<histogram name="TabGroups.Sync.ClosedTabGroupCount" units="groups"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks the number of closed tab groups on startup.
Recorded on startup 10 seconds after TabGroupSyncService initialization.
Android only.
</summary>
</histogram>
<histogram name="TabGroups.Sync.GroupClosedByUser.HasTitle"
enum="BooleanHasTitle" expires_after="2024-12-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether a tab group that was closed by user has non-empty title.
Recorded when the group is closed due to the user action which could be a
deletion, ungroup or close action via UI.
</summary>
</histogram>
<histogram name="TabGroups.Sync.GroupOpenedByUser.HasTitle"
enum="BooleanHasTitle" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether a tab group that was opened by user has non-empty title.
Recorded when the group is opened from revisit surface.
</summary>
</histogram>
<histogram name="TabGroups.Sync.OpenTabGroupCount" units="groups"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks the number of open tab groups on startup.
Recorded on startup 10 seconds after TabGroupSyncService initialization.
Android only.
</summary>
</histogram>
<histogram name="TabGroups.Sync.RemoteActiveTabGroupCount.{NumberOfDays}Day"
units="groups" expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks the number of active tab groups on startup that were remotely
created. A group is active iff there was explicit user interaction with the
group in last {NumberOfDays} days. An explicit user interaction is currently
defined as a tab addition, tab removal or a tab navigation inside the group.
Recorded on startup 10 seconds after TabGroupSyncService initialization.
Android only.
</summary>
<token key="NumberOfDays">
<variant name="1" summary="1 day"/>
<variant name="7" summary="7 day"/>
<variant name="28" summary="28 day"/>
</token>
</histogram>
<histogram name="TabGroups.Sync.RemoteTabGroupCount" units="groups"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks the number of active tab groups on startup that were remotely
created.
Recorded on startup 10 seconds after TabGroupSyncService initialization.
Android only.
</summary>
</histogram>
<histogram name="TabGroups.Sync.SavedTabGroupAge" units="minutes"
expires_after="2024-11-15">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks the age of a SavedTabGroup (since creation). Recorded once per group
on startup 10 seconds after TabGroupSyncService initialization. Android
only.
</summary>
</histogram>
<histogram name="TabGroups.Sync.SavedTabGroupTabCount" units="tabs"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks the number of tabs in a SavedTabGroup.
Recorded once per group on startup 10 seconds after TabGroupSyncService
initialization. Android only.
</summary>
</histogram>
<histogram name="TabGroups.Sync.SavedTabGroupTabTimeSinceModification"
units="minutes" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks the duration since a saved tab's last modification.
Recorded once per tab on startup 10 seconds after TabGroupSyncService
initialization. Android only.
</summary>
</histogram>
<histogram name="TabGroups.Sync.TabGroup.Closed.GroupCreateOrigin"
enum="DeviceType" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the DeviceType of the device in which a tab group was created.
Recorded when the group is closed. This includes all types of group closures
initiated by the user such as close, ungroup or delete event on the group.
</summary>
</histogram>
<histogram name="TabGroups.Sync.TabGroup.Closed.Reason" enum="GroupCloseReason"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the source from which a tab group was closed. Recorded whenever a
group is being closed in the UI which could be due to various trigger
sources such as manually closed by user or deletion from sync.
</summary>
</histogram>
<histogram name="TabGroups.Sync.TabGroup.Created.GroupCreateOrigin"
enum="DeviceType" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the DeviceType of the device in which a tab group was created.
Recorded when the group is created.
</summary>
</histogram>
<histogram name="TabGroups.Sync.TabGroup.Opened.GroupCreateOrigin"
enum="DeviceType" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the DeviceType of the device in which a tab group was created.
Recorded when the group is opened due to user action such as opening the
group from revisit surface.
</summary>
</histogram>
<histogram name="TabGroups.Sync.TabGroup.Opened.Reason" enum="GroupOpenReason"
expires_after="2025-01-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the source from which a tab group was opened. Recorded whenever a
group is being opened in the UI which could be due to various trigger
sources such as manually opened by user or auto-opened from sync.
</summary>
</histogram>
<histogram name="TabGroups.Sync.TabGroup.Removed.GroupCreateOrigin"
enum="DeviceType" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the DeviceType of the device in which a tab group was created.
Recorded when the group is removed.
</summary>
</histogram>
<histogram name="TabGroups.Sync.TabGroup.TabAdded.GroupCreateOrigin"
enum="DeviceType" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the DeviceType of the device in which a tab group was created.
Recorded when a tab was added to the tab group.
</summary>
</histogram>
<histogram name="TabGroups.Sync.TabGroup.TabNavigated.GroupCreateOrigin"
enum="DeviceType" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the DeviceType of the device in which a tab group was created.
Recorded when a tab was navigated in the tab group.
</summary>
</histogram>
<histogram name="TabGroups.Sync.TabGroup.TabRemoved.GroupCreateOrigin"
enum="DeviceType" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the DeviceType of the device in which a tab group was created.
Recorded when a tab was was removed from the tab group.
</summary>
</histogram>
<histogram name="TabGroups.Sync.TabGroup.TabSelected.GroupCreateOrigin"
enum="DeviceType" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the DeviceType of the device in which a tab group was created.
Recorded when the a tab is selected by user action. Note that this can
happen multiple times during a user session.
</summary>
</histogram>
<histogram name="TabGroups.Sync.TabGroup.TabSelected.TabCreateOrigin"
enum="DeviceType" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the DeviceType of the device in which a tab was created. Recorded
when the a tab is selected by user action. Note that this can happen
multiple times during a user session.
</summary>
</histogram>
<histogram name="TabGroups.Sync.TabGroup.TabsReordered.GroupCreateOrigin"
enum="DeviceType" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the DeviceType of the device in which a tab group was created.
Recorded when the tabs are reordered inside the group.
</summary>
</histogram>
<histogram name="TabGroups.Sync.TabGroup.UserInteracted.GroupCreateOrigin"
enum="DeviceType" expires_after="2024-12-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the DeviceType of the device in which a tab group was created.
Recorded when the group is interacted with by user. Tab addition, removal
and selection are considered as user interaction
</summary>
</histogram>
<histogram name="TabGroups.Sync.TabGroup.UserInteracted.HasTitle"
enum="BooleanHasTitle" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether a tab group that was interacted by user has non-empty title.
Tab addition, removal and selection are considered as user interaction. Note
that this can happen multiple times during a user session.
</summary>
</histogram>
<histogram name="TabGroups.Sync.TabGroup.VisualsChanged.GroupCreateOrigin"
enum="DeviceType" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the DeviceType of the device in which a tab group was created.
Recorded when the group visuals (title or color) is changed.
</summary>
</histogram>
<histogram name="TabGroups.Sync.TabGroupTitleLength" units="characters"
expires_after="2024-11-03">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of characters in the tab group title. Recorded when
TabGroupSyncService::UpdateVisualData is invoked which is typically invoked
whenever there is any change to title, color, or even when tab group dialog
is closed.
</summary>
</histogram>
<histogram name="TabGroups.Sync.TimeSinceLastUserInteractionWithGroup"
units="minutes" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks the duration since a saved group's last user interaction which is
typically defined as tab addition, tab removal or tab navigation.
Recorded once per group on startup 10 seconds after TabGroupSyncService
initialization. Android only.
</summary>
</histogram>
<histogram name="TabGroups.Sync.TotalTabGroupCount" units="groups"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks the number of total tab groups on startup which includes both open
and closed tab groups.
Recorded on startup 10 seconds after TabGroupSyncService initialization.
Android only.
</summary>
</histogram>
<histogram name="TabGroups.TabGroupBubble.TabCount" units="tabs"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of tabs in a group whenever a tab group editor bubble
closes.
</summary>
</histogram>
<histogram name="TabGroups.TabsPerGroupCountAtStartup" units="tabs"
expires_after="2025-04-11">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>[iOS] The number of tabs per group at cold launch.</summary>
</histogram>
<histogram name="TabGroups.TimeSpentCollapsed2" units="seconds"
expires_after="2021-09-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time a tab group spends in the collapsed state before the group is
either expanded or closed.
</summary>
</histogram>
<histogram name="TabGroups.TimeSpentExpanded2" units="seconds"
expires_after="2021-09-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time a tab group spends in the expanded state before the group is either
collapsed or closed.
</summary>
</histogram>
<histogram name="TabGroups.UnsavedTabGroupCount" units="groups"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records once an hour once the SavedTabGroupKeyedService is instantiated upon
profile open. Tracks the number of unsaved TabGroups. Nothing is recorded
for sessions shorter than one hour.
</summary>
</histogram>
<histogram name="TabGroups.UnsavedTabGroupTabCount" units="tabs"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records once per group per hour once the SavedTabGroupKeyedService is
instantiated. Tracks the number of tabs in an unsaved TabGroup. Nothing is
recorded for sessions shorter than one hour.
</summary>
</histogram>
<histogram name="TabGroups.UserCustomizedGroupCountPerLoad" units="groups"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of tabs groups with a user-set name or color open in all browsers
(counting app-mode windows) when a load completes.
Prior to M-121, this was also recorded when a navigation in a non-tab
WebContents (e.g. DevTools, extension popups) happens. Such a navigation
would not have affected the recorded value. It would only duplicate a
previous recording.
</summary>
</histogram>
<histogram name="TabGroups.UserGroupCount" units="groups"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram records the number of tab groups whenever Chrome comes to the
foreground.
</summary>
</histogram>
<histogram name="TabGroups.UserGroupCountPerLoad" units="groups"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of tabs groups open in all browsers (counting app-mode windows)
when a load completes.
Prior to M-121, this was also recorded when a navigation in a non-tab
WebContents (e.g. DevTools, extension popups) happens. Such a navigation
would not have affected the recorded value. It would only duplicate a
previous recording.
</summary>
</histogram>
<histogram name="TabGroups.UserPinnedTabCountPerLoad" units="tabs"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of pinned tabs in the tabstrip in all browser windows, when a
page load completes.
Prior to M-121, this was also recorded when a navigation in a non-tab
WebContents (e.g. DevTools, extension popups) happens. Such a navigation
would not have affected the recorded value. It would only duplicate a
previous recording.
</summary>
</histogram>
<histogram name="TabManager.BackgroundTabOpening.TabCount" units="tabs"
expires_after="M79">
<owner>[email protected]</owner>
<summary>
The max number of background tabs pending or loading when opening background
tabs. This is recorded at the end of the background tab opening session (the
duration of time from when the browser starts to open background tabs until
the time the browser has finished loading those tabs or otherwise decided to
stop loading them). The metric is not recorded when the session overlaps
with session restore.
</summary>
</histogram>
<histogram name="TabManager.BackgroundTabOpening.TabLoadAutoStartedCount"
units="tabs" expires_after="M79">
<owner>[email protected]</owner>
<summary>
The number of background tabs whose loading was triggered by TabManager
automatically when opening background tabs. This is recorded at the end of
the background tab opening session (the duration of time from when the
browser starts to open background tabs until the time the browser has
finished loading those tabs or otherwise decided to stop loading them). The
metric is not recorded when the session overlaps with session restore.
</summary>
</histogram>
<histogram name="TabManager.BackgroundTabOpening.TabLoadTimeout"
enum="BooleanTimedOut" expires_after="M79">
<owner>[email protected]</owner>
<summary>
Whether the tab load is timed out during background tab opening session (the
duration of time from when the browser starts to open background tabs until
the time the browser has finished loading those tabs or otherwise decided to
stop loading them). The metric is not recorded when the session overlaps
with session restore.
</summary>
</histogram>
<histogram name="TabManager.BackgroundTabOpening.TabLoadUserInitiatedCount"
units="tabs" expires_after="M79">
<owner>[email protected]</owner>
<summary>
The number of background tabs whose loading was triggered by user action
when opening background tabs. For example, when the user selects a
background tab and brings it to foreground, that tab will start to load
immediately if not already loading. This is recorded at the end of the
background tab opening session (the duration of time from when the browser
starts to open background tabs until the time the browser has finished
loading those tabs or otherwise decided to stop loading them). The metric is
not recorded when the session overlaps with session restore.
</summary>
</histogram>
<histogram name="TabManager.BackgroundTabOpening.TabPausedCount" units="tabs"
expires_after="M79">
<owner>[email protected]</owner>
<summary>
The max number of background tabs paused to load due to memory pressure when
opening background tabs. This is recorded at the end of the background tab
opening session during a background tab opening session (the duration of
time from when the browser starts to open background tabs until the time the
browser has finished loading those tabs or otherwise decided to stop loading
them). The metric is not recorded when the session overlaps with session
restore.
</summary>
</histogram>
<histogram name="TabManager.Discarding.DiscardCount" units="Discards"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Cumulative number of tabs discarded due to low memory conditions, recorded
once per tab discard event. For example, a user who had 3 tabs discarded
records a count in the 1 bin, 2 bin and 3 bin. Thus each bin N is the number
of sessions where users experienced N or more tab discard events.
</summary>
</histogram>
<histogram name="TabManager.Discarding.DiscardToReloadTime" units="ms"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Elapsed time between a tab getting discarded to eventually being reloaded by
the user.
</summary>
</histogram>
<histogram name="TabManager.Discarding.DiscardToReloadTime.Proactive"
units="ms" expires_after="2024-04-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Elapsed time between a tab getting discarded to eventually being reloaded by
the user. Recorded when the discard was triggered by Memory Saver Mode.
</summary>
</histogram>
<histogram name="TabManager.Discarding.InactiveToReloadTime" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Elapsed time between the time a tab switched from being active to inactive
(that eventually gets discarded) until it gets reloaded.
</summary>
</histogram>
<histogram name="TabManager.Discarding.InactiveToReloadTime.Proactive"
units="ms" expires_after="2024-05-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Elapsed time between the time a tab switched from being active to inactive
(that eventually gets discarded) until it gets reloaded. Recorded when the
discard was triggered by Memory Saver Mode.
</summary>
</histogram>
<histogram name="TabManager.Discarding.ReloadCount" units="Reloads"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Cumulative number of discarded tabs that have been reloaded by the user,
recorded once per tab discard event. For example, a user who had 3 tabs
reloaded records a count in the 1 bin, 2 bin and 3 bin. Thus each bin N is
the number of sessions where users experienced N or more tab reload events.
</summary>
</histogram>
<histogram name="TabManager.Discarding.ReloadToCloseTime" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Elapsed time between the last time a discarded tab was reloaded and the time
it gets closed.
</summary>
</histogram>
<histogram name="TabManager.SessionOverlap.BackgroundTabOpening"
enum="BooleanOverlap" expires_after="M79">
<owner>[email protected]</owner>
<summary>
Whether background tab opening session is overlapped with other types of
session, e.g., session restore. Background tab opening session is the
duration of time from when the browser starts to open background tabs until
the time the browser has finished loading those tabs or otherwise decided to
stop loading them. This metric helps to understand how often background tab
opening has overlap with other sessions.
</summary>
</histogram>
<histogram name="TabManager.TabRanker.Result" enum="TabManagerTabRankerResult"
expires_after="M85">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logged when calculating a tab reactivation score for a background tab. Any
value other than "none" may indicate a bug in the inference code,
a problem with the preprocessor configuration shipped with the model, or a
bug in the code that populates the RankerExample for a tab.
</summary>
</histogram>
<histogram name="TabRestore.{RestoreType}.TimeBetweenClosedAndRestored"
units="ms" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when the user restores a {RestoreType}. The value is the time
duration between the previous closing of the {RestoreType} and the
{RestoreType} being restored.
</summary>
<token key="RestoreType">
<variant name="Group" summary="tab group"/>
<variant name="Tab" summary="tab"/>
<variant name="Window" summary="window"/>
</token>
</histogram>
<histogram name="Tabs.Active.AbsolutePosition" units="index"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When a tab is activated, records the index of that tab in the tab strip,
starting at 1 (1-indexed).
</summary>
</histogram>
<histogram name="Tabs.Active.RelativePosition" units="%"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When a tab is activated, records the index of that tab in the tab strip as a
percentage of the total number of tabs.
</summary>
</histogram>
<histogram name="Tabs.ActiveCountAtStartup" units="tabs"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[iOS] Records the number of tabs that are considered active as per the
current tab inactivity threshold. This is recorded at cold launch.
</summary>
</histogram>
<histogram name="Tabs.ArchiveSettings.AutoDeleteEnabled" enum="Boolean"
expires_after="2024-10-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records when a user toggles the settings entry for automatically deleting
inactive tabs on Android. The default state is enabled and is not recorded.
This histogram tracks the new state of the toggle and is emitted each time
it is changed. True corresponds to enabled and false corresponds to
disabled.
</summary>
</histogram>
<histogram name="Tabs.ArchiveSettings.TimeDeltaPreference" units="days"
expires_after="2024-10-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Records when a user selects an archive time preference.</summary>
</histogram>
<histogram name="Tabs.AutoOpenSyncedTabGroupsSwitch.ToggledToState"
enum="Boolean" expires_after="2024-10-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records when a user toggles the settings entry for automatically opening
synced tab groups on Android. The default state is enabled and is not
recorded. This histogram tracks the new state of the toggle and is emitted
each time it is changed. True corresponds to enabled and false corresponds
to disabled.
</summary>
</histogram>
<histogram name="Tabs.CloseAllArchivedTabs.TabCount" units="tabs"
expires_after="2024-10-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of tabs that are currently selected when the close all
inactive tabs button is clicked.
</summary>
</histogram>
<histogram name="Tabs.CloseArchivedTabsMenuItem.TabCount" units="tabs"
expires_after="2024-10-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of tabs that are currently selected when the close menu
item is clicked.
</summary>
</histogram>
<histogram name="Tabs.CountAtResume2" units="tabs" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[iOS] The number of tabs opened when the app comes out of the background.
With a wider range than Tabs.CountAtResume (100 -> 1M)
</summary>
</histogram>
<histogram name="Tabs.CountAtStartup" units="tabs" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[Android] The number of tabs opened at cold launch. iOS uses
Tabs.CountAtStartup2
</summary>
</histogram>
<histogram name="Tabs.CountAtStartup2" units="tabs" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[iOS] The number of tabs opened at cold launch. With a wider range than
Tabs.CountAtStartup (100 -> 1M)
</summary>
</histogram>
<histogram name="Tabs.DeserializationResultForAppendPendingNavigation"
enum="BooleanSuccess" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[Android] Recorded when a tab's WebContentsState is being modified by
freezing and appending to it. Success indicates that the previous state was
safely deserialized and could be appended to. Failure indicates that the
previous WebContentsState could not be read and will be clobbered.
</summary>
</histogram>
<histogram name="Tabs.DroppedDuplicatesCountOn{Occasion}" units="tabs"
expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[iOS] The number of invalid duplicated tabs dropped {Occasion}.
Note: This tracks invalid web states that share the same identifier. This
metric is not to be confused with Tabs.DuplicatesCountAtStartup which counts
valid duplicates (i.e. different web states, with different identifiers, but
the same URL).
</summary>
<token key="Occasion">
<variant name="MigrateActiveToInactive"
summary="during Inactive Tabs migration (moving now-considered
inactive tabs to the inactive browser)"/>
<variant name="MigrateInactiveToActive"
summary="during Inactive Tabs migration (moving now-considered active
tabs to the active browser)"/>
<variant name="RestoreAllInactive"
summary="during Inactive Tabs migration (moving back all inactive
tabs to the active browser)."/>
<variant name="SessionRestore"
summary="each time a session is restored from storage"/>
<variant name="SessionSave"
summary="each time a session is saved to storage"/>
</token>
</histogram>
<histogram name="Tabs.DuplicatesCountAtStartup" units="tabs"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[iOS] The number of redundant active tabs restored at cold launch.
Note: This metric counts each non-unique tab from the active browser as a
redundant tab. E.g. if there are 3 active tabs with the same URL, this
metric will represent the amount of total duplicates (i.e. two duplicates).
Inactive tabs are not counted towards that metric.
</summary>
</histogram>
<histogram name="Tabs.FirstSwitchedToForegroundCreationRank" units="units"
expires_after="M77">
<owner>[email protected]</owner>
<summary>
Records the "Tab Creation Rank" for the first background tab which
was switched to the foreground. The "Tab Creation Rank" is
relative to other background tabs which were opened from the same URL via
the context menu. The oldest background tab has a rank of zero.
</summary>
</histogram>
<histogram name="Tabs.FirstSwitchedToForegroundCreationReverseRank"
units="units" expires_after="M77">
<owner>[email protected]</owner>
<summary>
Records the "Reverse Tab Creation Rank" for the first background
background tab which was switched to the foreground. The "Reverse Tab
Creation Rank" is relative to other background tabs which were opened
from the same URL via the context menu. The newest background tab has a
"Reverse Tab Creation Rank" of zero.
</summary>
</histogram>
<histogram name="Tabs.FreezeAndAppendPendingNavigationResult"
enum="BooleanSuccess" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[Android] Recorded when a tab's WebContentsState is being frozen and
appended to. Success indicates that the append succeeded. Failure indicates
it was not possible to freeze the tab and we had to fallback to a lazy load.
</summary>
</histogram>
<histogram name="Tabs.InactiveCountAtStartup" units="tabs"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[iOS] Records the number of tabs that are considered inactive as per the
current tab inactivity threshold. This is recorded at cold launch.
</summary>
</histogram>
<histogram name="Tabs.LiveNTPCountAtResume" units="tabs"
expires_after="2025-04-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[iOS] The number of live allocated regular (not incognito) NTP tabs when the
app comes out of a background state. A live NTP is one whose UI classes are
initialized. Prior to M99 this incorrectly counted whichever interface
(regular or incognito) was selected.
</summary>
</histogram>
<histogram name="Tabs.MaxTabsInADay{BatteryState}" units="tabs"
expires_after="never">
<!-- expires-never: https://crbug.com/966137 -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The maximum number of tabs that Chrome displays at the same time over the
course of a day. Desktop only.
NOTE: This metric is asynchronous, the value reported on a given day
represents the previous day's observations (which can be from a different
build).
</summary>
<token key="BatteryState" variants="BatteryState"/>
</histogram>
<histogram name="Tabs.MaxTabsPerWindowInADay{BatteryState}" units="tabs"
expires_after="never">
<!-- expires-never: https://crbug.com/966137 -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The maximum number of tabs per window that Chrome displays over the course
of a day. Desktop Only.
NOTE: This metric is asynchronous, the value reported on a given day
represents the previous day's observations (which can be from a different
build).
</summary>
<token key="BatteryState" variants="BatteryState"/>
</histogram>
<histogram name="Tabs.MaxWindowsInADay{BatteryState}" units="tabs"
expires_after="never">
<!-- expires-never: https://crbug.com/966137 -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The maximum number of windows existing at the same time over the course of a
day. Desktop only.
NOTE: This metric is asynchronous, the value reported on a given day
represents the previous day's observations (which can be from a different
build).
</summary>
<token key="BatteryState" variants="BatteryState"/>
</histogram>
<histogram name="Tabs.NewNavigationWithSameOriginTab" enum="Boolean"
expires_after="2024-02-11">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether another tab under the same origin can be found when a tab has
finished a navigation to a new security origin. This can happen when a new
tab is added with a website or the user navigates to another security
origin. The browser will iterate over all the tabs to find if there is a tab
with content under the same origin as the new link.
</summary>
</histogram>
<histogram name="Tabs.NTPCountAtResume" units="tabs" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[iOS] The number of NTP tabs open when the app comes out of the background.
</summary>
</histogram>
<histogram name="Tabs.NTPCountAtStartup" units="tabs"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>[iOS] The number of NTP tabs open at cold launch.</summary>
</histogram>
<histogram name="Tabs.NumberOfTabsOnResume{BatteryState}" units="tabs"
expires_after="never">
<!-- expires-never: https://crbug.com/966137 -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of tabs total at resume from sleep/hibernate. This is being
logged on all desktop platforms.
</summary>
<token key="BatteryState" variants="BatteryState"/>
</histogram>
<histogram name="Tabs.OldCountAtStartup2" units="tabs"
expires_after="2025-02-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[iOS] Number of tabs older than 21 days. Recorded at cold launch.
</summary>
</histogram>
<histogram name="Tabs.PageLoad.TimeSinceActive2" units="ms"
expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
On page load, records the time since last active for each tab in the tab
strip.
</summary>
</histogram>
<histogram name="Tabs.PageLoad.TimeSinceCreated2" units="ms"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
On page load, records the time since creation for each tab in the tab strip.
</summary>
</histogram>
<histogram name="Tabs.PersistedTabData.Critical.Map.Success"
enum="BooleanSuccess" expires_after="2025-01-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
CriticalPersistedTabData persists core Tab metadata (tab id, web contents
etc.) across restarts. This metric records if the Tab metadata is
successfully mapped from raw storage into an object which can be consumed in
Tab restoration.
</summary>
</histogram>
<histogram name="Tabs.PersistedTabData.Deserialize.Critical"
enum="BooleanSuccess" expires_after="2024-05-14">
<!-- P2 project which hasn't launched yet -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
CriticalPersistedTabData stores data pertinent to the running of the app
such as tab id, parent id, web contents. This data is serialized and stored
across restarts. This records if the deserialization succeeds or fails.
</summary>
</histogram>
<histogram name="Tabs.PersistedTabData.Serialize.Critical"
enum="BooleanSuccess" expires_after="2025-01-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
CriticalPersistedTabData stores data pertinent to the running of the app
such as tab id, parent id, web contents. This data is serialized and stored
across restarts. This records if the serialization succeeds or fails.
</summary>
</histogram>
<histogram name="Tabs.PersistedTabData.Storage.Delete.File"
enum="BooleanSuccess" expires_after="2023-06-20">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
FilePersistedTabData storage stores serialized PersistedTabData (metadata
persisted across restarts) in a file. This metric records if a delete was
successful or unsuccessful.
</summary>
</histogram>
<histogram name="Tabs.PersistedTabData.Storage.Exists.File"
enum="BooleanSuccess" expires_after="2025-04-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
FilePersistedTabData storage stores serialized PersistedTabData (metadata
persisted across restarts) in a file. This metric records if a delete
operation was found to have the file not existing.
</summary>
</histogram>
<histogram name="Tabs.PersistedTabData.Storage.LevelDB.OrphanedDataCount"
units="keys" expires_after="2025-04-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of keys that were identified to be orphaned in the
LevelDB database for PersistedTabData. PersistedTabData stores Tab data to
be persisted across restarts. When a Tab is closed, the data is removed,
however, it is possible for data to become orphaned if the app crashes after
a Tab is closed and before the cleanup is complete. This metric is recorded
in the first callback, OnPerformMaintenance, whereby orphaned keys are
identified and before they are deleted.
</summary>
</histogram>
<histogram name="Tabs.PersistedTabData.Storage.LoadAndMapTime.File" units="ms"
expires_after="2025-01-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
PersistedTabData stores Tab related data across restarts in a number of
storage options. This metric stores the time to load Tab data from file
storage and map it into an object available for consumption on Tab
restoration. The only client currently using File storage is
CriticalPersistedTabData which persists core Tab metadata (tab id, web
contents etc.) across restarts.
</summary>
</histogram>
<histogram name="Tabs.PersistedTabData.Storage.LoadTime.File" units="ms"
expires_after="2025-01-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
FilePersistedTabData storage stores serialized PersistedTabData (metadata
persisted across restarts) in a file. This metric records how long it took
to load the file in the event the file exists. .
</summary>
</histogram>
<histogram name="Tabs.PersistedTabData.Storage.MapTime.File" units="ms"
expires_after="2025-01-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
PersistedTabData stores Tab related data across restarts in a number of
storage options. This metric stores the time to map data acquired from raw
file storage into an object which can be consumed on Tab restoration. The
only client currently using File storage is CriticalPersistedTabData which
persists core Tab metadata (tab id, web contents etc.) across restarts.
</summary>
</histogram>
<histogram name="Tabs.PersistedTabData.Storage.Restore.File"
enum="BooleanSuccess" expires_after="2024-12-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
FilePersistedTabData storage stores serialized PersistedTabData (metadata
persisted across restarts) in a file. This metric records if a restore was
successful or unsuccessful.
</summary>
</histogram>
<histogram name="Tabs.PersistedTabData.Storage.Save.File" enum="BooleanSuccess"
expires_after="2025-01-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
FilePersistedTabData storage stores serialized PersistedTabData (metadata
persisted across restarts) in a file. This metric records if a save was
successful or unsuccessful.
</summary>
</histogram>
<histogram
name="Tabs.PersistedTabData.Storage.Save.File.FirstStorageRequestType"
enum="FileStorageRequestType" expires_after="2023-08-20">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
First storage request type in FilePersistedTabData. It would be expected
that the first storage request will be a restore (as restoring the active
tab) is pivotal for startup performance.
</summary>
</histogram>
<histogram name="Tabs.PersistedTabData.Storage.SaveTime.File" units="ms"
expires_after="2025-01-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
FilePersistedTabData storage stores serialized PersistedTabData (metadata
persisted across restarts) in a file. This metric records how long it took
to save the file in the event of a successful save.
</summary>
</histogram>
<histogram name="Tabs.PinnedCountAtStartup" units="tabs"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>[iOS] The number of pinned tabs opened at cold launch.</summary>
</histogram>
<histogram name="Tabs.PotentialDoubleDirty.SaveQueueSize" units="tabs"
expires_after="2025-01-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
On Android, when a tab becomes dirty, it is queued to be saved to disk.
Clients that make multiple modifications in a sequence to the same tab can
cause poor performance by triggering a synchronous save from the first
modification, and then a second one from the others. This can be manually
worked around by notifying the TabStateAttributes, but clients that need
this change need to be identified first. This histogram is trying to help
identify the frequency that this situation is encountered.
This histogram, only on Android, is specifically recorded when we go to
queue a tab's data to be saved to persistent storage, and we notice that
we're also currently writing the same tab to disk. This is not always a
problem, as there could be many pending async writes happening to various
tabs, when new fresh modifications come in.
The value being recorded is the number of tabs in the save queue in front of
the tab being added. If the number is zero, it's very likely because of a
client making multiple sequential modifications. On the other hand, a larger
number is likely just the same tab being modified asynchronously and the
queue is backed up with other changes.
</summary>
</histogram>
<histogram
name="Tabs.RecentlyClosed.EntriesRestoredInPage.{RecentlyClosedType}"
units="entries restored" expires_after="2024-12-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of distinct entries from TabRestoreService of
{RecentlyClosedType} type that were restored in one Recent Tabs page session
on Android. This is recorded when destroying the Recent Tabs page if any
entires of {RecentlyClosedType} type were shown.
</summary>
<token key="RecentlyClosedType" variants="RecentlyClosedType"/>
</histogram>
<histogram name="Tabs.RecentlyClosed.EntriesShownInPage.{RecentlyClosedType}"
units="entries shown" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of distinct entries from TabRestoreService of
{RecentlyClosedType} type shown in one Recent Tabs page session on Android.
This is recorded when destroying the Recent Tabs page.
</summary>
<token key="RecentlyClosedType" variants="RecentlyClosedType"/>
</histogram>
<histogram name="Tabs.RecentlyClosed.HistoricalSaverCloseType"
enum="HistoricalSaverCloseType" expires_after="2024-12-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded once for each tab closure event processed by HistoricalTabSaverImpl
on Android. Enum categories correspond to the the type of closure that was
saved to the native TabRestoreService. Tab for single tab, Group for a
single tab group and Bulk for a combination of tabs and groups or more than
one of either.
</summary>
</histogram>
<histogram
name="Tabs.RecentlyClosed.PercentOfEntriesRestoredInPage.{RecentlyClosedType}"
units="percentage restored" expires_after="2024-12-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The percentage of entries from TabRestoreService of {RecentlyClosedType}
type that were restored relative to the number shown in one Recent Tabs page
session on Android. This is recorded when destroying the Recent Tabs page if
any entires of {RecentlyClosedType} type were shown.
</summary>
<token key="RecentlyClosedType" variants="RecentlyClosedType"/>
</histogram>
<histogram name="Tabs.RestoreAllArchivedTabsMenuItem.TabCount" units="tabs"
expires_after="2024-10-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of tabs that are currently selected when the restore all
menu item is clicked.
</summary>
</histogram>
<histogram name="Tabs.RestoreArchivedTabsMenuItem.TabCount" units="tabs"
expires_after="2024-10-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of tabs that are currently selected when the restore menu
item is clicked.
</summary>
</histogram>
<histogram name="Tabs.RestoredFromInactiveCount" units="tabs"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded on disabling Inactive Tabs (for example in case of an unlaunch).
The number of tabs rescued from the orphan inactive tabs browser after the
Inactive Tabs experimental flag has been disabled.
</summary>
</histogram>
<histogram name="Tabs.RestoreTabStateException" enum="RestoreTabStateException"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[Android] TabState restoration may fail resulting in fallback restoration
from the TabStateList or aborting restoration altogether. TabState
restoration occurs on startup when restoring tab state from disk or when
merging multi-instance modes together. This histogram is emitted when
TabState restoration fails to indicate the cause of the failure.
</summary>
</histogram>
<histogram name="Tabs.SadTab.Feedback.Event" enum="SadTabEvent"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts of events from the style of sad tab which has a feedback button as
its primary action. Currently, events include being displayed (actually
visible in a window), and the actions a user can take on the page.
</summary>
</histogram>
<histogram name="Tabs.SadTab.Reload.Event" enum="SadTabEvent"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts of events from the style of sad tab which has a reload button as its
primary action. Compare to Tabs.SadTab.Feedback.Event.
</summary>
</histogram>
<histogram name="Tabs.SadTab.ReloadCount" units="tabs"
expires_after="2021-06-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of times a tab was reloaded because it was killed (usually by the
kernel OOM killer) and the user clicked on it later, recorded once per
reload event. For example, a user who clicks on 3 discarded tabs will record
a count in the 1 bin, 2 bin, and 3 bin. Thus each bin N is the number of
sessions where users experienced N or more reload events. Compare to
Tabs.Discard.DiscardCount.
</summary>
</histogram>
<histogram name="Tabs.ScrubbedInInterval.KeyPress" units="tabs"
expires_after="2023-05-07">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram records the number of tabs that are 'scrubbed' by key press
during a given interval of time (i.e. ctrl+tab navigation). For this metric,
a tab is considered 'scrubbed' if it was active for less than or equal to a
given amount of time.
</summary>
</histogram>
<histogram name="Tabs.ScrubbedInInterval.MousePress" units="tabs"
expires_after="2023-07-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram records the number of tabs that are 'scrubbed' by mouse press
during a given interval of time. For this metric, a tab is considered
'scrubbed' if it was active for less than or equal to a given amount of
time.
</summary>
</histogram>
<histogram name="Tabs.ScrubDistance" units="tabs" expires_after="2024-03-20">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The distance a user multi-finger scrubbed to change tabs. Always positive
(ignores left / right).
</summary>
</histogram>
<histogram name="Tabs.ScrubDuration" units="ms" expires_after="2024-07-20">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The duration a user spent doing multi-finger scrubbing to change tabs before
a different tab than the currently active one was actually activated.
</summary>
</histogram>
<histogram name="Tabs.ShoppingPersistedTabData.FoundBuyableProductAnnotation"
enum="FoundBuyableProductAnnotation" expires_after="2025-01-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records if we find a BuyableProductAnnotation in the response from our
endpoint which provides page annotations to enrich the user experience. The
endpoint is called for every Tab when we enter the Tab grid switcher and is
cached with a time to live of 1 hour.
</summary>
</histogram>
<histogram name="Tabs.Startup.RestoreDuration.{TabModelSelectorType}"
units="ms" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the realtime duration it took to restore all the tab states per
{TabModelSelectorType}. Recorded after tab model selector restoration
completes successfully. Android-only.
</summary>
<token key="TabModelSelectorType" variants="TabModelSelectorType"/>
</histogram>
<histogram name="Tabs.Startup.RestoreDurationPerTab.{TabModelSelectorType}"
units="ms" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the average realtime duration it took per-tab to restore all the tab
states. Bucketed by {TabModelSelectorType}. Recorded after tab model
selector restoration completes successfully. Android-only.
</summary>
<token key="TabModelSelectorType" variants="TabModelSelectorType"/>
</histogram>
<histogram name="Tabs.Startup.TabCount.{TabType}" units="count"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Records the number of {TabType} Tabs loaded on startup.</summary>
<token key="TabType">
<variant name="Incognito" summary="Incognito"/>
<variant name="Regular" summary="Regular"/>
</token>
</histogram>
<histogram name="Tabs.Startup.TabCount2.{TabModelSelectorType}.DuplicateTabIds"
units="count" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of duplicate tabs in the tab metadata found at startup
per {TabModelSelectorType}.
</summary>
<token key="TabModelSelectorType" variants="TabModelSelectorType"/>
</histogram>
<histogram name="Tabs.Startup.TabCount2.{TabModelSelectorType}.{TabType}"
units="count" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of {TabType} Tabs loaded on startup per
{TabModelSelectorType}.
</summary>
<token key="TabModelSelectorType" variants="TabModelSelectorType"/>
<token key="TabType">
<variant name="Incognito" summary="Incognito"/>
<variant name="Regular" summary="Regular"/>
</token>
</histogram>
<histogram name="Tabs.StateTransfer.TabDistanceInactiveToActive" units="tabs"
expires_after="M85">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of tabs between the previously active tab and the new active tab.
This metric is to be removed after M46 hits stable. We don't expect this
metric to change over release, so we will remove this once we have the
numbers from stable.
</summary>
</histogram>
<histogram name="Tabs.TabArchived.AfterNDays" units="days"
expires_after="2024-10-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
(Android only) Records how old, in days, a tab is when it's archived. Age is
calculated based on the last used time.
</summary>
</histogram>
<histogram name="Tabs.TabArchived.FoundDuplicateInRegularModel" units="count"
expires_after="2024-10-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
(Android only) Records how many tabs were found in the regular model which
have already been archvied. Recorded on each declutter pass.
</summary>
</histogram>
<histogram name="Tabs.TabArchiveEligibilityCheck.AfterNDays" units="days"
expires_after="2024-10-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
(Android only) Records how old, in days, a tab is when it's checked for
archive eligibility. Recorded at startup when the archived tab model is
loaded and at regular intervals after that (default interval is 7d, but is
configurable via finch.). Only recorded if tab declutter is enabled.
</summary>
</histogram>
<histogram name="Tabs.TabAutoDeleted.AfterNDays" units="days"
expires_after="2024-10-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
(Android only) Records how old, in days, a tab is when it's autodeleted. Age
is calculated based on when a tab was archived.
</summary>
</histogram>
<histogram name="Tabs.TabAutoDeleteEligibilityCheck.AfterNDays" units="days"
expires_after="2024-10-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
(Android only) Records how old, in days, a tab is when it's checked for
auto-deletion eligibility. Recorded at startup when the archived tab model
is loaded and at regular intervals after that (default interval is 7d, but
is configurable via finch.). Only recorded if tab declutter is enabled.
</summary>
</histogram>
<histogram name="Tabs.TabCountActiveWindow" units="tabs" expires_after="never">
<!-- expires-never: usage drives tab optimization and analysis. -->
<owner>[email protected]</owner>
<summary>
The number of tabs open in the active window when a load completes.
Prior to M-121, this was also recorded when a navigation in a non-tab
WebContents (e.g. DevTools, extension popups) happens. Such a navigation
would not have affected the recorded value. It would only duplicate a
previous recording.
</summary>
</histogram>
<histogram name="Tabs.TabCountInGroupPerLoad" units="tabs"
expires_after="2025-01-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of tabs in the current active group when a load completes.
Records 0 if the active tab is not in a group.
Prior to M-121, this was also recorded when a navigation in a non-tab
WebContents (e.g. DevTools, extension popups) happens. Such a navigation
would not have affected the recorded value. It would only duplicate a
previous recording.
</summary>
</histogram>
<histogram name="Tabs.TabCountPerLoad" units="tabs" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of tabs open in all browsers (counting app-mode windows) when a
load completes.
This is basically the average number of tabs over time.
Prior to M-121, this was also recorded when a navigation in a non-tab
WebContents (e.g. DevTools, extension popups) happens. Such a navigation
would not have affected the recorded value. It would only duplicate a
previous recording.
</summary>
</histogram>
<histogram name="Tabs.TabCountPerWindow" units="tabs"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of tabs open per window (counting app-mode windows) when a load
completes.
This value will be recorded multiple times per load if more than one window
is open.
Prior to M-121, this was also recorded when a navigation in a non-tab
WebContents (e.g. DevTools, extension popups) happens. Such a navigation
would not have affected the recorded value. It would only duplicate a
previous recording.
</summary>
</histogram>
<histogram name="Tabs.TabCount{BatteryState}" units="tabs"
expires_after="never">
<!-- expires-never: https://crbug.com/966137 -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts the number of tabs across all windows, reported every 5 minutes.
Desktop only.
</summary>
<token key="BatteryState" variants="BatteryState"/>
</histogram>
<histogram name="Tabs.TabOffsetOfSwitch{TabOffsetOfSwitchComponentList}"
units="units" expires_after="M85">
<owner>[email protected]</owner>
<summary>
How many tabs a user moved forward or backward in the Android tab switcher.
{TabOffsetOfSwitchComponentList}
Logged by the Android tab switcher when a user switches tabs (other than by
opening a new tab). If the user switches to an earlier tab in the stack, we
log a positive offset value indicating how many tabs back they moved. If the
user switches to a later tab, we log a negative offset value. If the user
stays on the same tab, we log 0. If the user switches to a tab in a
different stack (i.e. they switch from normal to incognito or vice-versa),
we don't log a value.
</summary>
<token key="TabOffsetOfSwitchComponentList">
<variant name=".GridTabSwitcher" summary="Tab switcher in grid layout"/>
<variant name=".TabStrip" summary="The TabStrip componets"/>
</token>
</histogram>
<histogram name="Tabs.TabRestoreMethod" enum="TabRestoreMethod"
expires_after="2025-07-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
CriticalPersistedTabData is a schema based Tab restoration system which
persists Tab metadata such as web contents and time last accessed across
restarts. CriticalPersistedTabData will replace legacy hand-written
TabState.
This metric records how many Tabs are restored using
CriticalPersistedTabData, TabState, are re-created, skipped or failed to be
restored. As we migrate from TabState to CriticalPersistedTabData it is
imperative we can compare the success rate of each system vs. how many Tabs
are re-created or failed to be restored. This metric is emitted once for
each Tab restoration on startup.
</summary>
</histogram>
<histogram name="Tabs.TabRestoreUrlMatch" enum="Boolean"
expires_after="2025-07-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether the URL in the tab state file and the tab state metadata
list match when each tab is restored. Android-only.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.BubbleWidgetInitializationTime" units="ms"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tab Search is a feature that allows users to better search for and switch to
their desired tabs. The Tab Search UI is shown in a bubble anchored to an
element of the UI in the browser window.
This metric measures the time it takes for the Tab Search bubble widget to
be initialized.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.ButtonPressedToNextFramePresented" units="ms"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tab Search is a feature that allows users to better search for and switch to
their desired tabs. The Tab Search UI is shown in a bubble anchored to an
element of the UI in the browser window.
This metric is intended to measure the time from when the Tab Search button
is pressed to the next visual update of the bubble widget (which may or may
not already be visible). It is recorded on successful presentation of the
bubble's next compositor frame.
We also have metrics measuring time for widget construction. Please refer to
Tabs.TabSearch.WindowTimeToShowUncachedWebView and
Tabs.TabSearch.WindowTimeToShowCachedWebView.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.CloseAction" enum="TabSearchCloseActions"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tab Search is a feature that allows users to better search for and switch to
their desired tabs. The Tab Search UI is shown in a bubble anchored to an
element of the UI in the browser window.
The bubble is dismissed when it loses focus or the escape key is pressed.
This metric tracks if the UI bubble was dismissed as a result of an action
taken from within the UI (such as switching to an open tab) or dismissed
without direct interaction with the Tab Search UI.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.Mojo.SwitchToTab" units="ms"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time taken to switch tab. This is measured as the time from when the
user clicks a tab in Tab Search to when the browser finishes switching tab.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.Mojo.SwitchToTab.IsOverlap" enum="Boolean"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether there's a pending Tabs.TabSearch.Mojo.SwitchToTab
measurement when a new measurement is requested.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.Mojo.TabUpdated" units="ms"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time taken for Tab Search to update its tab list when the browser's tab
strip model changes. This is measured as the time from when the browser
emits a notification to when the WebUI updates its state.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.Mojo.TabUpdated.IsOverlap" enum="Boolean"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether there's a pending Tabs.TabSearch.Mojo.TabUpdated measurement
when a new measurement is requested.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.NumTabsClosedPerInstance" units="tabs"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tab Search is a feature that allows users to better search their browsers
for their desired tabs and close any currently open tabs. This records the
number of tabs closed from a single instance of the UI (the number of tabs
closed from within Tab Search in the time between when the UI is open and
when it is closed).
</summary>
</histogram>
<histogram name="Tabs.TabSearch.NumTabsOnOpen" units="tabs"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tab Search is a feature that allows users to better search their browsers
for their desired tabs. It can be opened and closed. This records the number
of tabs there are in the payload Tab Search is sent when it is first opened.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.NumWindowsOnOpen" units="windows"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tab Search is a feature that allows users to better search their browsers
for their desired tabs. It can be opened and closed. This records the number
of windows there are in the payload Tab Search is sent when it is first
opened.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.OpenAction" enum="TabSearchOpenActions"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tab Search is a feature that allows users to better search for and switch to
their desired tabs. The Tab Search UI is shown in a bubble anchored to an
element of the UI in the browser window.
The bubble can be invoked via a number of different means including mouse
click, keyboard navigation, keyboard shortcut or touch gesture. This metric
tracks the kind of action the user took to invoke the Tab Search bubble UI.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.PageHandlerConstructionDelay" units="ms"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tab Search is a feature that allows users to better search for and switch to
their desired tabs. The Tab Search UI is shown in a bubble anchored to an
element of the UI in the browser window.
When the WebUIController is first created it waits for the WebUI code in the
renderer process to request the creation of the TabSearchPageHandler. This
metric tracks the time between when the WebUIController was constructed to
when the TabSearchPageHandler begins construction. This metric is emitted
right before the TabSearchPageHandler's constructor is called.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.PositionInTabstrip" enum="TabSearchPosition"
expires_after="2025-01-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[Desktop] Logs the position of the tab search button in the tabstrip region
view. Trailing implies right side in LTR, leading implies left in LTR.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.RecentlyClosedSectionToggleAction"
enum="TabSearchRecentlyClosedToggleActions" expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tab Search is a feature that allows users to better search for and switch to
their desired tabs. The Tab Search UI displays both open and recently closed
tabs under different list sections. The recently closed section can be
expanded or collapsed by the user by clicking a button.
This metric tracks the recently closed section being expandeded or collapsed
via the toggle button.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.RecentlyClosedSectionToggleStateOnOpen"
enum="TabSearchRecentlyClosedToggleActions" expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tab Search is a feature that allows users to better search for and switch to
their desired tabs. The Tab Search UI displays both open and recently closed
tabs under different list sections. The recently closed section can be
expanded or collapsed by the user by clicking a button.
This metric tracks if the recently closed section is in an expanded or
collapsed state at the time of opening the Tab Search dialog.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.TimeToShow.{WarmUpLevel}" units="ms"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This tracks the time between when the Tab Search WebUI bubble widget is
first created and when it is first shown to users as reported by the bubble
widget's ui compositor. This metric is only logged for the specific warm-up
level. The warm-up level indicates the readiness of the browser when it was
about to show this WebUI.
This metric is emitted when the bubble window is first revealed.
</summary>
<token key="WarmUpLevel">
<variant name="DedicatedRenderer"
summary="Uses a renderer that already hosts other top chrome WebUIs"/>
<variant name="NoRenderer" summary="No renderer can be used"/>
<variant name="PreloadedWebContents"
summary="Uses a preloaded WebContents."/>
<variant name="RedirectedWebContents"
summary="Uses a redirected preloaded WebContents that was on a
different WebUI."/>
<variant name="ReshowingWebContents"
summary="Reshowing a WebContents that has already navigated to this
WebUI"/>
<variant name="SpareRenderer" summary="Uses a spare renderer"/>
</token>
</histogram>
<histogram name="Tabs.TabSearch.WebUI.IndexOf{Action}In{State}List"
units="tabs" expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tab Search is a feature that allows users to better search their browsers
for their desired tabs and close any currently open tabs.
This records the index at which a {Action} has been performed on a tab in
Tab Search's tab list in a {State} state.
</summary>
<token key="Action">
<variant name="CloseTab"/>
<variant name="OpenRecentlyClosedEntry"/>
<variant name="SwitchTab"/>
</token>
<token key="State">
<variant name="Filtered" summary="Filtered by user search query."/>
<variant name="Unfiltered" summary="Unfiltered by user search query."/>
</token>
</histogram>
<histogram name="Tabs.TabSearch.WebUI.LoadCompletedTime" units="ms"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The amount of time between the RenderFrameHost StartProvisionalLoad event
and the RenderFrameHost DocumentOnLoadCompleted event for the Tab Search
WebUI page.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.WebUI.LoadDocumentTime" units="ms"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The amount of time between the RenderFrameHost StartProvisionalLoad and
DidFinishDocumentLoad events for the Tab Search WebUI page.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.WebUI.RecentlyClosed{Item}OpenAction"
enum="TabSearchRecentlyClosedItemOpenAction" expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tab Search is a feature that allows users to better search their browsers
for their desired tabs or recently closed tabs and tab groups. This records
whether the user used Tab Search to open a recently closed {Item} from a
filtered search results list or the default unfiltered list.
</summary>
<token key="Item">
<variant name="Group"/>
<variant name="Tab"/>
</token>
</histogram>
<histogram name="Tabs.TabSearch.WebUI.SearchAlgorithmDuration" units="ms"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time taken to run the search algorithm. The algorithm takes an
unfiltered list of items and user search query as inputs, then generate a
list of filtered items as output. Recorded after the measurement ends.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.WebUI.TabListDataReceived" units="ms"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time taken for the WebUI in the renderer to receive the full list of
tabs for the current user profile. This is measured as the time from when
the data was first requested by the WebUI to when the data was received by
the WebUI.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.WebUI.TabListDataReceived2" units="ms"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time taken for the WebUI in the renderer to receive the full list of
tabs for the current user profile. This is measured as the time from when
the data was first requested by the WebUI to when the data was received by
the WebUI.
This metric is recorded by MetricsReporter.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.WebUI.TabListDataReceived2.IsOverlap"
enum="Boolean" expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether there's a pending Tabs.TabSearch.WebUI.TabListDataReceived2
measurement when a new measurement is requested.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.WebUI.TabSwitchAction"
enum="TabSearchTabSwitchAction" expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tab Search is a feature that allows users to better search their browsers
for and switch to their desired tabs. This records whether the user used Tab
Search to switch to a tab from a filtered search results list or the default
unfiltered list.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.WebUI.TimeTo{Action}In{State}List" units="ms"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time taken between the tab search bubble is open and user switches to a
tab or opens a recently closed tab, with or without search query. Recorded
after the measurement ends.
</summary>
<token key="Action">
<variant name="OpenRecentlyClosedEntry"/>
<variant name="SwitchTab"/>
</token>
<token key="State">
<variant name="Filtered" summary="Filtered by user search query."/>
<variant name="Unfiltered" summary="Unfiltered by user search query."/>
</token>
</histogram>
<histogram name="Tabs.TabSearch.WindowDisplayedDuration3" units="ms"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tab Search is a feature that allows users to better search their browsers
for their desired tabs. It can be opened and closed. This records the amount
of time between when a Tab Search bubble is opened and when it is closed. It
does so by recording the difference in time between when the the hosting
WebUIBubbleDialogView's Widget is first created and when the widget is
destroyed.
The Tab Search UI is a bubble anchored to an element within a browser window
and is closed if the user switches to a tab, presses the escape key or
performs an action to return focus to the hosting window. The Tab Search UI
bubble will also close if the hosting browser window is closed or crashes.
Users may leave the bubble open for long periods of time without directly
interacting with the UI which could result in a long tail of displayed
durations.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.WindowTimeToShowCachedWebView2" units="ms"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tab Search is a feature that allows users to better search for and switch to
their desired tabs. The Tab Search UI is shown in a bubble anchored to an
element of the UI in the browser window.
This tracks the time between when the Tab Search WebUI bubble widget is
first created and when it is first shown to users as reported by the bubble
widget's ui compositor. This metric is only logged if a previously cached
WebView is used for the construction of the bubble widget. This metric is
emitted when the bubble window is first revealed.
</summary>
</histogram>
<histogram name="Tabs.TabSearch.WindowTimeToShowUncachedWebView2" units="ms"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tab Search is a feature that allows users to better search for and switch to
their desired tabs. The Tab Search UI is shown in a bubble anchored to an
element of the UI in the browser window.
This tracks the time between when the Tab Search WebUI bubble widget is
first created and when it is first shown to users as reported by the bubble
widget's ui compositor. This metric is only logged if a new WebView was
created for the construction of the bubble widget. This metric is emitted
when the bubble window is first revealed.
</summary>
</histogram>
<histogram name="Tabs.TabState.FlatBufferDeserializeResult"
enum="TabStateFlatBufferDeserializeResult" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
TabState (Tab metadata persistence system on Chrome for Android) is being
migrated from a hand-written schema to a FlatBuffer based schema. This
metric records the number of successful and unsuccessful FlatBuffer
deserializations and where known what the reason for unsuccessful
deserialization was.
</summary>
</histogram>
<histogram name="Tabs.TabState.LoadTime" units="ms" expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time taken to load a TabState file in the event that it exists.
</summary>
</histogram>
<histogram name="Tabs.TabState.RestoreMethod" enum="TabStateRestoreMethod"
expires_after="2025-02-21">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
TabState (Tab metadata persistence system on Chrome for Android) is being
migrated from a hand-written schema to a FlatBuffer based schema. This
metric records the whether a TabState was restored using the FlatBuffer
schema, legacy TabState schema (e.g. if a FlatBuffer file hasn't been saved
for the Tab yet) or if TabState was failed to be restored (e.g. both the
FlatBuffer and legacy TabState file are corrupt). Recorded once per TabState
restoration (i.e. once per tab) at cold startup.
</summary>
</histogram>
<histogram name="Tabs.TabState.SaveTime{Schema}" units="ms"
expires_after="2025-04-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time taken to save a TabState file in the event of a successful save.
Includes differentiation between the original legacy based format and
FlatBuffer based format.
</summary>
<token key="Schema">
<variant name="" summary="Original metric, kept for continuity."/>
<variant name=".FlatBuffer" summary="Using FlatBuffer based format."/>
<variant name=".Legacy" summary="Using legacy Pickle based format."/>
</token>
</histogram>
<histogram name="Tabs.TabStateCleanupAbortedByArchive" enum="Boolean"
expires_after="2024-10-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records when a tab is marked as not ready for cleanup because it could
possibly be an archived tab. This enum tracks the case specifically for tab
state cleanup.
</summary>
</histogram>
<histogram name="Tabs.TabThumbnailCleanupAbortedByArchive" enum="Boolean"
expires_after="2024-10-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records when a tab is marked as not ready for cleanup because it could
possibly be an archived tab. This enum tracks the case specifically for tab
thumbnail cleanup.
</summary>
</histogram>
<histogram name="Tabs.Tasks.OrderValidOnStartup" enum="Boolean"
expires_after="2024-12-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[Android] boolean value indicating whether the invariant that tab groups are
contiguous holds. Recorded on cold start after all tabs are restored.
</summary>
</histogram>
<histogram name="Tabs.Tasks.TabAddedWithValidProposedPosition" enum="Boolean"
expires_after="2024-12-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[Android] boolean value indicating whether a tab that was added to the
TabModel would have been added at the correct position if
TabGroupModelFilter had not interved to move it so it respected group
position. Recorded each time a tab is added to the TabModel.
</summary>
</histogram>
<histogram name="Tabs.TimeSinceCreationAtStartup" enum="IOSAllOpenTabsAge"
expires_after="2024-12-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[iOS] The age of tabs opened at cold launch. The age of a tab is the time
elapsed since its creation.
</summary>
</histogram>
<histogram name="Tabs.UnusedCountAtStartup2" units="tabs"
expires_after="2025-02-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[iOS] The number of old/unused tabs opened at cold launch. Inactive tab is a
tab that has been not interacted with for more than 7 days.
</summary>
</histogram>
<histogram name="Tabs.WindowCount{BatteryState}" units="windows"
expires_after="never">
<!-- expires-never: https://crbug.com/966137 -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts the number of Chrome windows, reported every 5 minutes. Desktop only.
</summary>
<token key="BatteryState" variants="BatteryState"/>
</histogram>
<histogram name="Tabs.WindowWidth" units="DIPs" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The width of each open browser window, in DIPs, reported every 5 minutes.
Desktop only.
</summary>
</histogram>
<histogram name="Tabs.{TabActiveState}TabWidth" units="px"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
[Desktop] The size in pixels of the {TabActiveState} tab logged when a tab
is added. Used to collect size data for scrolling tabs.
</summary>
<token key="TabActiveState" variants="TabActiveState"/>
</histogram>
<histogram name="TabStrip.Dragging.Count30Min" units="times"
expires_after="2024-11-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
For every 30 minutes, records the number of times the user drags a tab
within the time period.
</summary>
</histogram>
<histogram name="TabStrip.Dragging.Count5Min" units="times"
expires_after="2024-11-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
For every 5 minutes, records the number of times the user drags a tab within
the time period.
</summary>
</histogram>
<histogram name="TabStrip.Dragging.TimeFromLastDrag" units="ms"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When the user drags tab, records the time since the last tab dragging.
</summary>
</histogram>
<histogram name="TabStrip.Dragging.TimeFromMouseEntered" units="ms"
expires_after="2024-11-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When the user switches tab, records the time since the mouse entered the
tabstrip.
</summary>
</histogram>
<histogram name="TabStrip.Tab.{Framework}.ActivationAction"
enum="TabActivationTypes" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tab activation triggered by click or touch on a tab. This is used to measure
tab activation count of tab strip vs WebUI tab strip.
</summary>
<token key="Framework">
<variant name="Views"/>
<variant name="WebUI"/>
</token>
</histogram>
<histogram name="TabStrip.TabCountOnPageLoad" units="tabs"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram records the number of tabs within the group during page load.
If the loading happens in a tab that does not belong to a group, we log 0.
Else, we log a positive number >= 2.
</summary>
</histogram>
<histogram name="TabStrip.TimeToCreateNewTabFromPress" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The amount of time from receiving a new tab button pressed to creating the
elements necessary to represent a new tab.
</summary>
</histogram>
<histogram name="TabStrip.TimeToSwitch" units="ms" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The amount of time from cursor entering the tabstrip to first click on a tab
to switch.
This will exclude some kinds of switching (hotkeys, between windows) where
it would be difficult to define a start time. Entering the tabstrip is an
approximation which will vary between users, but should still be useful for
A/B comparison.
</summary>
</histogram>
</histograms>
</histogram-configuration>