| <!-- |
| 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 |
| chromium-metrics-reviews@google.com. |
| --> |
| |
| <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"/> |
| <variant name="Window" summary="RecentlyClosedWindow"/> |
| </variants> |
| |
| <variants name="SplitViewMenuSource"> |
| <variant name="MiniToolbar" summary="The split view mini toolbar"/> |
| <variant name="TabContextMenu" summary="The tab context menu"/> |
| <variant name="ToolbarButton" summary="The split view toolbar button"/> |
| </variants> |
| |
| <variants name="TabActiveState"> |
| <variant name="Active" summary="active"/> |
| <variant name="Inactive" summary="inactive"/> |
| </variants> |
| |
| <!-- LINT.IfChange(TabContextMenuCommand) --> |
| |
| <variants name="TabContextMenuCommand"> |
| <variant name="AddToExistingGroup" |
| summary="the Add to Existing Group command"/> |
| <variant name="AddToNewComparisonTable" |
| summary="the Add to new comparison table command"/> |
| <variant name="AddToNewGroup" summary="the Add to New Group command"/> |
| <variant name="AddToNewGroupFromMenuItem" |
| summary="the Add to new group from menu item command"/> |
| <variant name="AddToReadLater" summary="the Add to Read Later command"/> |
| <variant name="AddToSplit" summary="the Add to Split command"/> |
| <variant name="ArrangeSplit" summary="the Arrange Split command"/> |
| <variant name="CloseAllTabs" summary="the Close All Tabs command"/> |
| <variant name="CloseOtherTabs" summary="the Close Other Tabs command"/> |
| <variant name="CloseTab" summary="the Close Tab command"/> |
| <variant name="CloseTabsToRight" |
| summary="the Close Tabs to the Right command"/> |
| <variant name="CopyURL" summary="the Copy URL command"/> |
| <variant name="Duplicate" summary="the Duplicate command"/> |
| <variant name="GlicCreateNewChat" |
| summary="the Start New Chat with Gemini command"/> |
| <variant name="GlicShare" summary="the Share with Gemini command"/> |
| <variant name="GlicShareLimit" summary="the Glic share limit command"/> |
| <variant name="GlicStartShare" summary="the Share Tab with Gemini command"/> |
| <variant name="GlicStopShare" |
| summary="the Stop Sharing Tab with Gemini command"/> |
| <variant name="GlicSwitchToRecentConversation" |
| summary="the Switch to Recent Conversation command"/> |
| <variant name="GlicUnshare" summary="the Unshare with Gemini command"/> |
| <variant name="GoBack" summary="the Go Back command"/> |
| <variant name="MoveToExistingWindow" |
| summary="the Move to existing window command"/> |
| <variant name="MoveToNewWindow" summary="the Move to new window command"/> |
| <variant name="NewTabToRight" summary="the New Tab To Right command"/> |
| <variant name="OrganizeTabs" summary="the Organize tabs command"/> |
| <variant name="Reload" summary="the Reload command"/> |
| <variant name="RemoveFromGroup" summary="the Remove from Group command"/> |
| <variant name="SendTabToSelf" summary="the Send to Your Devices command"/> |
| <variant name="SwapWithActiveSplit" |
| summary="the Swap with Active Split command"/> |
| <variant name="ToggleGrouped" summary="the Toggle group command"/> |
| <variant name="ToggleMuted" summary="the Toggle muted command"/> |
| <variant name="TogglePinned" summary="the Toggle Pinned command"/> |
| </variants> |
| |
| <!-- LINT.ThenChange(//chrome/browser/ui/tabs/tab_strip_model.h:TabContextMenuCommand) --> |
| |
| <variants name="TabDiscardReason"> |
| <variant name=".External" |
| summary="from outside of TabManager (e.g. by an extension)"/> |
| <variant name=".FrozenWithGrowingMemory" |
| summary="due to growing memory usage while frozen"/> |
| <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> |
| |
| <!-- LINT.IfChange(TabModelOrchestratorType) --> |
| |
| <variants name="TabModelOrchestratorType"> |
| <variant name="Archived" summary="ArchivedTabModelOrchestrator"/> |
| <variant name="Custom" summary="CustomTabsTabModelOrchestrator"/> |
| <variant name="Headless" summary="HeadlessTabModelOrchestrator"/> |
| <variant name="Tabbed" summary="TabbedModeTabModelOrchestrator"/> |
| </variants> |
| |
| <!-- LINT.ThenChange(//chrome/android/java/src/org/chromium/chrome/browser/app/tabmodel/ShadowTabStoreValidator.java:TabModelOrchestratorType) --> |
| |
| <variants name="TabModelSelectorType"> |
| <variant name="Archived" summary="The archived tab model selector"/> |
| <variant name="Custom" summary="The custom tab model selector."/> |
| <variant name="Headless" |
| summary="Tab models that are not currently owned by an activity, but |
| had previously been."/> |
| <variant name="Regular" summary="The regular tab model selector."/> |
| </variants> |
| |
| <variants name="TabStripMode"> |
| <variant name="HorizontalTabStrip"/> |
| <variant name="VerticalTabStrip"/> |
| </variants> |
| |
| <histogram name="Discarding.AttemptFastKillForDiscardResult" |
| enum="AttemptFastKillForDiscardResult" expires_after="2026-06-28"> |
| <owner>kawasin@google.com</owner> |
| <owner>catan-team@chromium.org</owner> |
| <summary> |
| Records the result of AttemptFastKillForDiscard. Emitted immediately after |
| the fast shutdown for the main frame renderer process attempt. |
| </summary> |
| </histogram> |
| |
| <histogram name="Discarding.DailyDiscards{TabDiscardReason}" units="tabs" |
| expires_after="2026-07-26"> |
| <owner>vovoy@chromium.org</owner> |
| <owner>fdoray@chromium.org</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="2026-07-26"> |
| <owner>vovoy@chromium.org</owner> |
| <owner>fdoray@chromium.org</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="2026-08-09"> |
| <owner>fdoray@chromium.org</owner> |
| <owner>catan-team@chromium.org</owner> |
| <summary> |
| The number of tabs discard candidates. This is recorded each time Chrome |
| needs to urgently discard a tab. |
| |
| Warning this historgram was expired between 2024-04-28 and 2025-01-18. |
| </summary> |
| </histogram> |
| |
| <histogram name="Discarding.DiscardFrameTree" enum="BooleanSuccess" |
| expires_after="2026-06-28"> |
| <owner>tluk@chromium.org</owner> |
| <owner>catan-team@chromium.org</owner> |
| <summary> |
| Records whether the FrameTree discard operation succeeded. Emitted |
| immediately after the FrameTree discard operation attempt. |
| </summary> |
| </histogram> |
| |
| <histogram name="Discarding.DiscardingFocusedTab2" enum="BooleanFocusedTab" |
| expires_after="2026-06-28"> |
| <owner>kalutes@chromium.org</owner> |
| <owner>cros-core-systems-perf@google.com</owner> |
| <summary> |
| Logged after a tab is successfully discarded by |
| PageDiscardingHelper::DiscardMultiplePages (includes urgent discards, but |
| not discards by Performance Controls features such as Memory Saver or |
| Performance Detection). Indicates whether the tab was focused at the time of |
| discard. |
| </summary> |
| </histogram> |
| |
| <histogram name="Discarding.DiscardingProtectedTab2" enum="BooleanProtectedTab" |
| expires_after="2026-06-28"> |
| <owner>kalutes@chromium.org</owner> |
| <owner>cros-core-systems-perf@google.com</owner> |
| <summary> |
| Logged after a tab is successfully discarded by |
| PageDiscardingHelper::DiscardMultiplePages (includes urgent discards, but |
| not discards by Performance Controls features such as Memory Saver or |
| Performance Detection). Indicates whether the tab was protected at the time |
| of discard. |
| </summary> |
| </histogram> |
| |
| <histogram name="Discarding.DiscardLatency" units="ms" |
| expires_after="2026-06-28"> |
| <owner>kalutes@chromium.org</owner> |
| <owner>kawasin@chromium.org</owner> |
| <owner>vovoy@chromium.org</owner> |
| <summary> |
| Reported for ChromeOS only. The latency since Chrome start handling a |
| discard request and until the first tab discarding from the request |
| completes. This is recorded when discarding tabs for the request completes |
| in success. |
| </summary> |
| </histogram> |
| |
| <histogram name="Discarding.DiscardPageOnUIThreadOutcome2" |
| enum="DiscardPageOnUIThreadOutcome" expires_after="2026-05-24"> |
| <owner>fdoray@chromium.org</owner> |
| <owner>joenotcharles@google.com</owner> |
| <summary> |
| Reports the outcome of each discard tab attempt by the |
| DiscardPagesOnUIThread function. Will be used to validate that the number of |
| failures does not increase if DiscardAttemptMarker is retired (it was |
| introduced to prevent repeated attempts to discard a non-discardable tab, |
| but that shouldn't happen in practice). Use |
| "Discarding.DiscardTabOutcome" to determine why there are samples |
| in the "DiscardTabFailure" bucket. |
| </summary> |
| </histogram> |
| |
| <histogram name="Discarding.DiscardsDrivenByStaleSignal" units="tabs" |
| expires_after="2026-06-28"> |
| <owner>kalutes@chromium.org</owner> |
| <owner>vovoy@chromium.org</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.DiscardTabOutcome" enum="DiscardTabOutcome" |
| expires_after="2026-06-07"> |
| <owner>fdoray@chromium.org</owner> |
| <owner>joenotcharles@google.com</owner> |
| <summary> |
| Reports the outcome of each discard tab attempt by |
| TabLifecycleUnit::Discard. Will be used to understand why we have samples in |
| the "DiscardTabFailure" bucket of |
| "Discarding.DiscardPageOnUIThreadOutcome". |
| </summary> |
| </histogram> |
| |
| <histogram name="Discarding.LargestTabFootprint" units="MiB" |
| expires_after="2021-02-28"> |
| <owner>chrisha@chromium.org</owner> |
| <owner>catan-team@chromium.org</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>chrisha@chromium.org</owner> |
| <owner>catan-team@chromium.org</owner> |
| <summary>The resident set of the oldest urgent discarding candidate.</summary> |
| </histogram> |
| |
| <histogram name="Discarding.ReclaimArrivalLatency" units="ms" |
| expires_after="2026-07-05"> |
| <owner>kalutes@chromium.org</owner> |
| <owner>kawasin@chromium.org</owner> |
| <owner>vovoy@chromium.org</owner> |
| <summary> |
| Reported for ChromeOS only. The latency since a critical memory pressure |
| signal is sent from resourced and until Chrome start handling the discard |
| request. This is recorded when discarding tabs for the request completes in |
| success. |
| </summary> |
| </histogram> |
| |
| <histogram name="Discarding.ReclaimTargetAge" units="ms" |
| expires_after="2026-06-28"> |
| <owner>kalutes@chromium.org</owner> |
| <owner>vovoy@chromium.org</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="Discarding.TabLifecycleUnit.DiscardLatency" units="ms" |
| expires_after="2026-08-09"> |
| <owner>tluk@chromium.org</owner> |
| <owner>catan-team@chromium.org</owner> |
| <summary> |
| Records discard latency for the TabLifecycleUnit::Discard() operation. |
| |
| For the discard implementation that replaces the discarded tab's WebContents |
| this is measured as the time from when a TabLifecycleUnit::Discard() is |
| called for a tab, to when the Tab's WebContents is replaced. This is emitted |
| immediately after the Tab's WebContents is replaced. |
| |
| For the discard implementation that retains the discarded tab's WebContents |
| this is measured as the time from when a TabLifecycleUnit::Discard() is |
| called for a tab, to when the Discard() operation was completed in the |
| renderer and completion was acknowledged by the Browser or when the frame's |
| renderer is terminated. This is emitted immediately after the |
| acknowledgement of the Discard operation by the RenderFrameHost in the |
| Browser or once the frame is notified its renderer has terminated. |
| |
| The retained discard implementation is behind the WebContentsDiscard flag |
| and eventually the old implementation that replaces the WebContents will be |
| removed. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tab.AgeAtDeletion" units="ms" expires_after="2026-08-02"> |
| <owner>ewannpv@chromium.org</owner> |
| <owner>gambard@chromium.org</owner> |
| <owner>bling-team@google.com</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.Android.DiscardLatency.{DiscardReason}" units="ms" |
| expires_after="2026-08-09"> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>clank-tab-dev@chromium.org</owner> |
| <summary> |
| [Android] Records the latency for a tab discarded for {DiscardReason}. |
| Emitted after the tab discard callback is run. Note that discard might not |
| run the callback or might not have happened in the event the tab is not |
| discardable. |
| </summary> |
| <token key="DiscardReason"> |
| <variant name="AppendNavigation" |
| summary="Tab discarded for appending a navigation."/> |
| <variant name="OnDemand" summary="Tab discarded on demand."/> |
| </token> |
| </histogram> |
| |
| <histogram name="Tab.Android.DiscardStarted" enum="DiscardReason" |
| expires_after="2026-08-09"> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>clank-tab-dev@chromium.org</owner> |
| <summary> |
| [Android] Records the reason for starting a tab discard. Emitted when a Tab |
| discard is started. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tab.AndroidCrashUpload{AndroidCrashUploadTypes}" |
| enum="BooleanSuccess" expires_after="M85"> |
| <owner>wnwen@chromium.org</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.CloseAllTabsDialog.ClosedAllTabs.{CloseType}" |
| enum="Boolean" expires_after="2026-04-12"> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>fredmello@chromium.org</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.ContextMenu.{TabContextMenuCommand}.SelectedTabsCount" |
| units="tabs" expires_after="2026-07-28"> |
| <owner>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| The number of selected tabs when the user selects {TabContextMenuCommand} |
| from the tab context menu. |
| </summary> |
| <token key="TabContextMenuCommand" variants="TabContextMenuCommand"/> |
| </histogram> |
| |
| <histogram name="Tab.Count.Guest" units="units" expires_after="2026-07-05"> |
| <owner>rhalavati@chromium.org</owner> |
| <owner>chrome-incognito@google.com</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="2026-07-05"> |
| <owner>rhalavati@chromium.org</owner> |
| <owner>chrome-incognito@google.com</owner> |
| <summary> |
| Number of open incognito tabs in each window. Recorded once a new incognito |
| tab is opened in a window and adds one to the bucket of number of incognito |
| tabs in that particular window (it does not count the total number of |
| incognito tabs in all open 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.Discarding.Reload.CausedByFocus" enum="Boolean" |
| expires_after="2027-01-10"> |
| <owner>aattar@google.com</owner> |
| <owner>catan-team@chromium.org</owner> |
| <summary> |
| Recorded when a discarded tab begins to reload. Returns true if the tab was |
| focused at the moment the reload started (indicating an explicit user |
| switch), and false if it was a background reload. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tab.Discarding.Reload.FreedMemoryMB" units="MB" |
| expires_after="2027-01-10"> |
| <owner>aattar@google.com</owner> |
| <owner>catan-team@chromium.org</owner> |
| <summary> |
| Recorded when a discarded tab finishes reloading. Tracks the estimated |
| memory (in MB) that was originally freed when this tab was discarded. |
| Correlate with Reload.LoadTime to determine efficiency. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tab.Discarding.Reload.LoadTime" units="ms" |
| expires_after="2027-01-10"> |
| <owner>aattar@google.com</owner> |
| <owner>catan-team@chromium.org</owner> |
| <summary> |
| Recorded when a discarded tab finishes reloading. Measures the duration from |
| DidStartLoading to DidStopLoading. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tab.Discarding.Reload.TimeSinceDiscard" units="ms" |
| expires_after="2027-01-10"> |
| <owner>aattar@google.com</owner> |
| <owner>catan-team@chromium.org</owner> |
| <summary> |
| Recorded when a discarded tab begins to reload. Measures the time elapsed |
| since the tab was originally discarded. Short times indicate high "user |
| regret." |
| </summary> |
| </histogram> |
| |
| <histogram name="Tab.ExternalApplicationOpened{Cause}" |
| enum="ExternalLauncherOption" expires_after="2026-04-05"> |
| <owner>olivierrobin@chromium.org</owner> |
| <owner>bling-team@google.com</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.GroupingTransition2" enum="TabGroupingTransitionType" |
| expires_after="2026-08-16"> |
| <owner>temao@chromium.org</owner> |
| <owner>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| [Desktop] Records different types of tab grouping transition states 10 |
| seconds after a tab is created. |
| |
| Replaces Tab.GroupingTransition. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tab.HasCustomUnderPageBackgroundColor" enum="BooleanPresent" |
| expires_after="2027-02-22"> |
| <owner>gambard@chromium.org</owner> |
| <owner>bling-team@google.com</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="2027-02-22"> |
| <owner>gambard@chromium.org</owner> |
| <owner>bling-team@google.com</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="2026-07-26"> |
| <owner>bsep@chromium.org</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.PageLoadsSinceLastSwitchToEvictedTab" units="units" |
| expires_after="2024-03-18"> |
| <owner>dtrainor@chromium.org</owner> |
| <owner>ckitagawa@chroimum.org</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="2026-07-05"> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>dtrainor@chromium.org</owner> |
| <owner>yfriedman@chromium.org</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.PinnedDuration" units="ms" expires_after="2026-10-01"> |
| <owner>madhavpruthi@google.com</owner> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| [Android only] Records the total time for which a tab was pinned within a |
| single session. The value is the duration between the tab being pinned and |
| when it was unpinned. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tab.Preview.TimeToStoreAfterTabSwitch" units="ms" |
| expires_after="2026-07-05"> |
| <owner>dfried@chromium.org</owner> |
| <owner>collinbaker@chromium.org</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.Preview.TimeToStoreFirstUsableFrameAfterStartCapture" |
| units="ms" expires_after="2026-07-26"> |
| <owner>chazzy@chromium.org</owner> |
| <owner>dfried@chromium.org</owner> |
| <summary> |
| When generating a preview for a background tab, this measures the time |
| between starting a video capture and storing the first usable frame as the |
| current thumbnail. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tab.PullDownGesture" enum="PullDownGestureAction" |
| expires_after="2026-05-11"> |
| <owner>huitingyu@google.com</owner> |
| <owner>bling-pandamonium@google.com</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. Expired |
| 2025-05. Revived July 2025. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tab.RendererTermination.AliveRenderersCount" units="renderers" |
| expires_after="2027-01-19"> |
| <owner>justincohen@chromium.org</owner> |
| <owner>bling-fundamentals@google.com</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>pkl@chromium.org</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="2027-01-26"> |
| <owner>justincohen@chromium.org</owner> |
| <owner>thegreenfrog@chromium.org</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>sreejakshetty@chromium.org</owner> |
| <owner>chrome-brapp-loading@google.com</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>skare@chromium.org</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>skare@chromium.org</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="2026-06-21"> |
| <owner>gambard@chromium.org</owner> |
| <owner>olivierrobin@chromium.org</owner> |
| <summary> |
| The state (foreground/background) of a tab when its renderer is terminated. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tab.StatusWhenSwitchedBackToForeground" enum="TabStatus" |
| expires_after="2026-07-05"> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>marq@chromium.org</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="2026-06-28"> |
| <owner>dtrainor@chromium.org</owner> |
| <owner>ckitagawa@chroimum.org</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="Tab.{AnimationType}.NewTabAnimationProgress" |
| enum="AnimationFreezeCheckerState" expires_after="2026-06-21"> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>polardz@google.com</owner> |
| <summary> |
| Records the progress of new tab animations on Android to detect freezes. The |
| animation is split into multiple parts, each with its own histogram. |
| {AnimationType} |
| </summary> |
| <token key="AnimationType"> |
| <variant name="BackgroundAnimation" summary="The background animation."/> |
| <variant name="ForegroundCornerAnimation" |
| summary="The foreground corner animation."/> |
| <variant name="ForegroundExpandAnimation" |
| summary="The foreground expand animation set."/> |
| <variant name="ForegroundFadeAnimation" |
| summary="The foreground fade out animation."/> |
| <variant name="ForegroundRectAnimation" |
| summary="The foreground rectangle animation."/> |
| </token> |
| </histogram> |
| |
| <histogram |
| name="TabGroups.ArchivedTabGroupManualCloseOnInactiveSurface.TabGroupTabCount" |
| units="tabs" expires_after="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>evanluo@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Records number of tabs within an archived tab group closed by pressing the X |
| button on the tab group in the inactive surface. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.AutodeletePass.DurationMs" units="ms" |
| expires_after="2026-05-06"> |
| <owner>bjfong@google.com</owner> |
| <owner>wylieb@google.com</owner> |
| <owner>evanluo@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| (Android only) Records the duration of an auto-delete pass for tab groups. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.CloseAllArchivedTabGroups.TabGroupCount" |
| units="groups" expires_after="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>evanluo@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Records when archived tab groups are closed through the "Close all |
| inactive tabs" button in inactive pane. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.CloseAllArchivedTabGroups.TabGroupTabCount" |
| units="tabs" expires_after="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>evanluo@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Records number of tabs within archived tab groups closed through the |
| "Close all inactive tabs" button in inactive pane. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.CloseArchivedTabsMenuItem.TabGroupCount" |
| units="groups" expires_after="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>evanluo@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Records when archived tab groups are closed through the "Close |
| tab" menu item after user selects which tab groups to be closed. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.CloseArchivedTabsMenuItem.TabGroupTabCount" |
| units="tabs" expires_after="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>evanluo@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Records number of tabs within archived tab groups closed through the |
| "Close tab" menu item after user selects which tab groups to be |
| closed. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.CloseTabGroupsDeletedRemotely" units="groups" |
| expires_after="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>evanluo@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Records when tab groups are closed locally due to the synced tab group being |
| deleted elsewhere (e.g. another device logged into same account). |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.CollapsedGroupCountPerLoad" units="groups" |
| expires_after="2026-12-15"> |
| <owner>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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="2026-04-11"> |
| <owner>huitingyu@google.com</owner> |
| <owner>bling-pandamonium@google.com</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>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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.ParseSavedTabGroupDataEntries.ParseFailurePercentage" |
| units="%" expires_after="2026-12-15"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>chrome-multiplayer-eng@google.com</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.RestoreAllArchivedTabsMenuItem.TabGroupCount" |
| units="groups" expires_after="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>evanluo@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Records when archived tab groups are restored through the "Restore |
| all" option menu item. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.RestoreAllArchivedTabsMenuItem.TabGroupTabCount" |
| units="tabs" expires_after="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>evanluo@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Records number of tabs within archived tab groups restored by the |
| "Restore all" option menu item. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.RestoreArchivedTabsMenuItem.TabGroupCount" |
| units="groups" expires_after="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>evanluo@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Records when archived tab groups are restored through the "Restore |
| tab" menu option after user selects which tab groups to restore. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.RestoreArchivedTabsMenuItem.TabGroupTabCount" |
| units="tabs" expires_after="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>evanluo@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Records number of tabs within archived tab groups restored by user selecting |
| tab groups and using the "Restore tab" menu option. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.RestoreFromTabGroupPane.TabCount" units="tabs" |
| expires_after="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>evanluo@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Records number of tabs within an archived tab group restored by user opening |
| the synced tab group from the tab group pane. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.RestoreSingleTabGroup.TabGroupTabCount" units="tabs" |
| expires_after="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>evanluo@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Records number of tabs within archived tab groups restored by user manually |
| clicking into the tab group in the inactive surface. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.SavedTabGroupActiveCount" units="groups" |
| expires_after="2026-07-19"> |
| <owner>dljames@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Records per hour once the TabGroupSyncService 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="2026-08-09"> |
| <owner>dljames@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Records once per group per hour once the TabGroupSyncService 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="2026-08-09"> |
| <owner>dljames@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Records per hour once the TabGroupSyncService 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="2026-04-05"> |
| <owner>dljames@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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.SavedTabGroupOpenCount" units="groups" |
| expires_after="2026-08-02"> |
| <owner>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Records per hour once the TabGroupSyncService is instantiated upon profile |
| open. Tracks the total number of open groups (groups that are in the |
| platforms "tabstrip") saved in the profile. Nothing is recorded |
| for sessions shorter than one hour. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.SavedTabGroupOpenedSubmenu" |
| enum="SavedTabGroupOpenedSubmenuDesktop" expires_after="2026-06-21"> |
| <owner>dominicaustria@google.com</owner> |
| <owner>yuhengh@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Tracks the type of tab group submenu that a user used to open a saved tab |
| group. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.SavedTabGroupPinnedCount" units="groups" |
| expires_after="2026-07-19"> |
| <owner>dljames@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Records per hour once the TabGroupSyncService 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="2026-12-15"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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="2026-12-15"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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="2026-07-05"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>chrome-multiplayer-eng@google.com</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="2026-07-26"> |
| <owner>dljames@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Records once per group per hour once the TabGroupSyncService 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="2026-12-15"> |
| <owner>dljames@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Records once per saved tab per saved group per hour once the |
| TabGroupSyncService 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="2026-05-17"> |
| <owner>dljames@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Records once per group per hour once the TabGroupSyncService 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="2026-07-19"> |
| <owner>dljames@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Records per hour once the TabGroupSyncService 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="2026-07-19"> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</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.Shared.GroupDeleted" enum="Boolean" |
| expires_after="2026-08-15"> |
| <owner>dljames@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| [ All platforms ] Tracks the number of times a shared tab group was deleted. |
| |
| Recorded when a shared tab group is deleted. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Shared.LastTabClosed2" enum="Boolean" |
| expires_after="2026-12-15"> |
| <owner>dljames@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| [ All platforms ] Tracks the number of times the last tab was closed in a |
| shared tab group. |
| |
| Recorded when the last tab is closed in a shared tab group. |
| |
| Replaces TabGroups.Shared.LastTabClosed. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Shared.LoadFromDiskResult" |
| enum="SharedTabGroupDataLoadFromDiskResult" expires_after="2026-10-10"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>chrome-multiplayer-eng@google.com</owner> |
| <summary> |
| Records the result of loading a SharedTabGroupData entry from disk. Recorded |
| on browser startup or profile open for each entry in the store. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Shared.Manage.Desktop" |
| enum="SharedTabGroupManageTypeDesktop" expires_after="2026-08-15"> |
| <owner>dljames@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| [ Desktop ] Tracks the type of manage action a user explicitly performs on a |
| shared tab group such as clicking the share / manage group button, or |
| deleting a shared group. Recorded when a user triggers a manage action. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Shared.Recall.Desktop" |
| enum="SharedTabGroupRecallTypeDesktop" expires_after="2026-08-15"> |
| <owner>dljames@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| [ Desktop ] Tracks the type of recall action a user explicitly performs on a |
| shared tab group such as closing a group but not deleting it, or opening a |
| group from the bookmarks bar. Recorded when a user triggers a recall action. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Shared.TabGroupAge2" units="minutes" |
| expires_after="2026-08-15"> |
| <owner>dljames@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| [ All platforms ] Tracks the age of a SavedTabGroup (since creation). Only |
| records if the data sharing feature is enabled. |
| |
| Recorded once per group on startup 10 seconds after TabGroupSyncService |
| initialization. |
| |
| Replaces TabGroups.Shared.TabGroupAge. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Shared.TotalTabGroupCount2" units="groups" |
| expires_after="2026-08-15"> |
| <owner>dljames@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| [ All platforms ] Tracks the number of total shared tab groups on startup |
| which includes both open and closed tab groups. Only records if the data |
| sharing feature is enabled. |
| |
| Recorded on startup 10 seconds after TabGroupSyncService initialization. |
| |
| Replaces TabGroups.Shared.TotalTabGroupCount. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Shared.TotalTabGroupTabCount2" units="tabs" |
| expires_after="2026-08-15"> |
| <owner>dljames@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| [ All platforms ] Tracks the number of tabs in a shared tab group. Only |
| records if the data sharing feature is enabled. |
| |
| Recorded once per group on startup 10 seconds after TabGroupSyncService |
| initialization. |
| |
| Replaces TabGroups.Shared.TotalTabGroupTabCount. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Shared.UseUrlForTitle.{SanitizationRequestType}" |
| enum="Boolean" expires_after="2026-09-29"> |
| <owner>qinmin@google.com</owner> |
| <owner>chrome-multiplayer-eng@google.com</owner> |
| <summary> |
| Records whether a tab in a shared tab group uses page URL as its title, if |
| the page is http(s) and optimization guide is enabled to retrieve the |
| alternative title. Recorded when a tab is added to a shared tab group, or |
| when a tab in a shared tab group finishes a navigation, or after the |
| tabgroup owning the tab was converted to a shared group. No metrics are |
| recorded for tabs in non-shared tab groups. This is recorded on all |
| platforms. |
| </summary> |
| <token key="SanitizationRequestType"> |
| <variant name="AddTab" summary="Add a tab"/> |
| <variant name="NavigateTab" summary="Navigate a tab"/> |
| <variant name="ShareTabGroup" summary="Share a tab group"/> |
| </token> |
| </histogram> |
| |
| <histogram name="TabGroups.Shortcuts" enum="TabGroupShortcut" |
| expires_after="2026-05-31"> |
| <owner>dljames@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| [Desktop] Records when a keyboard shortcut for a tab group action is |
| triggered. Tracks the number of times each tab group shortcut is used. Ex: - |
| Creating a new tab group - Closing a tab group - Focusing the next / |
| previous tab group - Adding the new tab to a tab group |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.SpecificsToDataMigration.ParseFailurePercentage" |
| units="%" expires_after="2026-12-15"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>chrome-multiplayer-eng@google.com</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="2026-06-28"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</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 and iOS 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.AddedGroupIsEmptyFromSync" enum="Boolean" |
| expires_after="2026-09-29"> |
| <owner>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Records whether a newly saved tab group was empty or not. Recorded on all |
| platforms (Android, iOS, Desktop) whenever a tab group is added to the |
| SavedTabGroupModel by syncing it from another device. Note that since |
| messages are not received/processed in any particular order, it should not |
| be surprising if this is a large value; however, each empty group should be |
| filled, so the counts should be similar to TabAddedToEmptyGroupFromSync. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Sync.AddedGroupIsEmptyLocally" enum="Boolean" |
| expires_after="2026-09-29"> |
| <owner>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Records whether a newly saved tab group was empty or not. Recorded on all |
| platforms (Android, iOS, Desktop) whenever a tab group is added to the |
| SavedTabGroupModel by the local device. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Sync.ClosedTabGroupCount" units="groups" |
| expires_after="2026-06-28"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Tracks the number of closed tab groups on startup. |
| |
| Recorded on startup 10 seconds after TabGroupSyncService initialization. |
| Android and iOS only. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Sync.GroupClosedByUser.HasTitle" |
| enum="BooleanHasTitle" expires_after="2026-12-15"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>chrome-multiplayer-eng@google.com</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="2026-07-05"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>chrome-multiplayer-eng@google.com</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.NumberOfGroupsDeletedOnStartup" units="groups" |
| expires_after="2026-06-07"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Tracks the number of tab groups that are deleted on startup due to a forced |
| cleanup. This is only enabled for a certain finch group of users who have |
| network layer disabled. |
| |
| Recorded on startup after TabGroupSyncService initialization after notifying |
| the observers. Android only. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Sync.OpenTabGroupCount" units="groups" |
| expires_after="2026-06-28"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Tracks the number of open tab groups on startup. |
| |
| Recorded on startup 10 seconds after TabGroupSyncService initialization. |
| Android and iOS only. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Sync.RemoteActiveTabGroupCount.{NumberOfDays}Day" |
| units="groups" expires_after="2026-06-21"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</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 and iOS 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="2026-07-05"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Tracks the number of active tab groups on startup that were remotely |
| created. |
| |
| Recorded on startup 10 seconds after TabGroupSyncService initialization. |
| Android and iOS only. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Sync.SavedTabGroupAge" units="minutes" |
| expires_after="2026-01-18"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Tracks the age of a SavedTabGroup (since creation). Recorded once per group |
| on startup 10 seconds after TabGroupSyncService initialization. Android and |
| iOS only. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Sync.SavedTabGroupTabCount" units="tabs" |
| expires_after="2026-06-28"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Tracks the number of tabs in a SavedTabGroup. |
| |
| Recorded once per group on startup 10 seconds after TabGroupSyncService |
| initialization. Android and iOS only. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Sync.SavedTabGroupTabTimeSinceModification" |
| units="minutes" expires_after="2026-06-28"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Tracks the duration since a saved tab's last modification. |
| |
| Recorded once per tab on startup 10 seconds after TabGroupSyncService |
| initialization. Android and iOS only. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Sync.TabAddedToEmptyGroupFromSync" enum="Boolean" |
| expires_after="2026-09-29"> |
| <owner>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Records whether a tab added to a saved group was the first tab or not. |
| Recorded on all platforms (Android, iOS, Desktop) whenever a tab is added to |
| a tab group by syncing it from another device. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Sync.TabAddedToEmptyGroupLocally" enum="Boolean" |
| expires_after="2026-09-29"> |
| <owner>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Records whether a tab added to a saved group was the first tab or not. |
| Recorded on all platforms (Android, iOS, Desktop) whenever a tab is added to |
| a tab group by the local device. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Sync.TabGroup.Closed.GroupCreateOrigin" |
| enum="DeviceType" expires_after="2026-08-09"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>chrome-multiplayer-eng@google.com</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="GroupClosingSource" expires_after="2026-08-09"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</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="2026-08-09"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>chrome-multiplayer-eng@google.com</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="2026-08-09"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>chrome-multiplayer-eng@google.com</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="GroupOpeningSource" expires_after="2026-08-09"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</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="2026-08-09"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>chrome-multiplayer-eng@google.com</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="2026-08-09"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>chrome-multiplayer-eng@google.com</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="2026-08-09"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>chrome-multiplayer-eng@google.com</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="2026-12-15"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>chrome-multiplayer-eng@google.com</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="2026-12-15"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>chrome-multiplayer-eng@google.com</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="2026-12-15"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>chrome-multiplayer-eng@google.com</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="2026-12-15"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>chrome-multiplayer-eng@google.com</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="2026-12-15"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>chrome-multiplayer-eng@google.com</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="2026-12-15"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>chrome-multiplayer-eng@google.com</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="2026-08-09"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>chrome-multiplayer-eng@google.com</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.TabGroupLoadedEmptiness" |
| enum="TabGroupLoadedEmptiness" expires_after="2026-06-07"> |
| <owner>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Records whether a tab group loaded from disk was empty, not empty, or if it |
| became empty after removing tabs already in a shared group. Recorded on all |
| platforms (Android, iOS, Desktop) on browser startup or profile open for |
| each saved or shared tab group loaded. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Sync.TabGroupTitleLength" units="characters" |
| expires_after="2026-06-07"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</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.TabRemovedFromGroupWasLastTab" enum="Boolean" |
| expires_after="2026-09-29"> |
| <owner>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Records whether a tab removed from a saved group was the last tab or not. |
| Recorded on all platforms (Android, iOS, Desktop) whenever a tab is removed |
| from a tab group. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Sync.TimeSinceLastUserInteractionWithGroup" |
| units="minutes" expires_after="2026-06-21"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</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 and iOS only. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.Sync.TotalTabGroupCount" units="groups" |
| expires_after="2026-08-09"> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| [ All platforms ] 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. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.TabGroupAutoDeleted.TabCount" units="tabs" |
| expires_after="2026-05-06"> |
| <owner>bjfong@google.com</owner> |
| <owner>wylieb@google.com</owner> |
| <owner>evanluo@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| (Android only) Records the number of tabs within a tab group that is |
| autodeleted. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.TabGroupAutoDeleteEligibilityCheck.AfterNDays" |
| units="days" expires_after="2026-05-06"> |
| <owner>bjfong@google.com</owner> |
| <owner>wylieb@google.com</owner> |
| <owner>evanluo@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| (Android only) Records how old, in days, a tab group 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 (same cadence as tabs). |
| Only recorded if tab group declutter is enabled. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.TabGroupBubble.TabCount" units="tabs" |
| expires_after="2026-12-15"> |
| <owner>sophiechang@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Records the number of tabs in a group whenever a tab group editor bubble |
| closes. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.TabGroupDeclutter.ArchivedTabGroups" units="groups" |
| expires_after="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>evanluo@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Records number of tab groups that are archived due to tab group declutter. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.TabGroupDeclutter.ArchivedTabGroupTabCount" |
| units="tabs" expires_after="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>evanluo@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Records number of tabs within each archived tab group that are archived when |
| the tab group is archived. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabGroups.TabsPerGroupCountAtStartup" units="tabs" |
| expires_after="2026-07-05"> |
| <owner>huitingyu@google.com</owner> |
| <owner>bling-pandamonium@google.com</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>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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="2026-04-05"> |
| <owner>dljames@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Records once an hour once the TabGroupSyncService 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="2026-04-05"> |
| <owner>dljames@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Records once per group per hour once the TabGroupSyncService 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="2026-08-01"> |
| <owner>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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="2026-07-12"> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>meiliang@chromium.org</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="2026-07-12"> |
| <owner>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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="2026-07-12"> |
| <owner>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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="TabGroups.{ConsentLevel}.{GroupsOrTabs}" units="count" |
| expires_after="2026-06-28"> |
| <owner>treib@chromium.org</owner> |
| <owner>shaktisahu@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Records the number of {GroupsOrTabs}, at the moment when the user is |
| {ConsentLevel} Chrome. Android and iOS only. |
| </summary> |
| <token key="GroupsOrTabs"> |
| <variant name="ClosedTabGroupCount" summary="closed tab groups"/> |
| <variant name="ClosedTabGroupTabsCount" |
| summary="tabs that are part of a closed tab group"/> |
| <variant name="OpenTabGroupCount" summary="open tab groups"/> |
| <variant name="OpenTabGroupTabsCount" |
| summary="tabs that are part of an open tab group"/> |
| <variant name="TotalTabGroupCount" |
| summary="all tab groups (open or closed)"/> |
| <variant name="TotalTabGroupTabsCount" |
| summary="all tabs that are part of a tab group (open or closed)"/> |
| </token> |
| <token key="ConsentLevel"> |
| <variant name="OnSignin" summary="signing in to"/> |
| <variant name="OnSync" summary="enabling sync in"/> |
| </token> |
| </histogram> |
| |
| <histogram name="TabManager.Discarding.DiscardCount" units="Discards" |
| expires_after="2026-08-09"> |
| <owner>fdoray@chromium.org</owner> |
| <owner>catan-team@chromium.org</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="2026-07-26"> |
| <owner>fdoray@chromium.org</owner> |
| <owner>catan-team@chromium.org</owner> |
| <summary> |
| Elapsed time between a tab getting discarded to eventually being reloaded by |
| the user. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabManager.Discarding.InactiveToReloadTime" units="ms" |
| expires_after="2026-06-21"> |
| <owner>fdoray@chromium.org</owner> |
| <owner>catan-team@chromium.org</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.ReloadCount" units="Reloads" |
| expires_after="2026-06-28"> |
| <owner>fdoray@chromium.org</owner> |
| <owner>catan-team@chromium.org</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-06-22"> |
| <owner>fdoray@chromium.org</owner> |
| <owner>catan-team@chromium.org</owner> |
| <summary> |
| Elapsed time between the last time a discarded tab was reloaded and the time |
| it gets closed. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabRestore.{RestoreType}.TimeBetweenClosedAndRestored" |
| units="ms" expires_after="2026-01-18"> |
| <owner>sreejakshetty@chromium.org</owner> |
| <owner>chrome-brapp-loading@google.com</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="2026-08-09"> |
| <owner>emshack@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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="2026-08-09"> |
| <owner>emshack@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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="2026-06-28"> |
| <owner>huitingyu@google.com</owner> |
| <owner>bling-pandamonium@google.com</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.ArchivedTabRestored.TabCount" units="count" |
| expires_after="2026-06-21"> |
| <owner>wylieb@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| (Android only) Records how many tabs were restored. Recorded when a user |
| restores tabs from the archived tabs dialog, selects the "close all |
| tabs" button, or opens an archived tab. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.ArchivedTabs.MaxLimitReachedAt" units="count" |
| expires_after="2026-08-16"> |
| <owner>wylieb@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| (Android only) Records how many tabs were archived prior to hitting the |
| maximum limit for simultaneous archives. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.ArchivePass.DurationMs" units="ms" |
| expires_after="2026-06-11"> |
| <owner>wylieb@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| (Android only) Records the duration of an archive pass, not including the |
| time it takes to initialize the PersistedTabData (PTD). |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.ArchiveSettings.ArchiveDuplicateTabsEnabled" |
| enum="Boolean" expires_after="2026-07-19"> |
| <owner>bjfong@google.com</owner> |
| <owner>wylieb@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Records when a user toggles the settings entry for automatically archiving |
| duplicate 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.AutoDeleteEnabled" enum="Boolean" |
| expires_after="2026-06-11"> |
| <owner>wylieb@google.com</owner> |
| <owner>clank-tab-dev@google.com</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="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary>Records when a user selects an archive time preference.</summary> |
| </histogram> |
| |
| <histogram name="Tabs.AutoOpenSyncedTabGroupsSwitch.ToggledToState" |
| enum="Boolean" expires_after="2026-04-30"> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</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="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>clank-tab-dev@google.com</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="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>clank-tab-dev@google.com</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="2026-06-28"> |
| <owner>marq@chromium.org</owner> |
| <owner>olivierrobin@chromium.org</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="2026-06-28"> |
| <owner>marq@chromium.org</owner> |
| <owner>bling-pandamonium@google.com</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="2026-06-28"> |
| <owner>marq@chromium.org</owner> |
| <owner>bling-pandamonium@google.com</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.DeleteWithPTD.DurationMs" units="ms" |
| expires_after="2026-06-11"> |
| <owner>wylieb@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| (Android only) Records the duration of an auto-delete pass, including the |
| time it takes to load the PersistedTabData (PTD). |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.DeserializationResultForAppendPendingNavigation" |
| enum="BooleanSuccess" expires_after="2026-04-26"> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</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="2026-12-01"> |
| <owner>huitingyu@google.com</owner> |
| <owner>bling-pandamonium@google.com</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="2026-06-28"> |
| <owner>huitingyu@google.com</owner> |
| <owner>bling-pandamonium@google.com</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.FreezeAndAppendPendingNavigationResult" |
| enum="BooleanSuccess" expires_after="2026-07-05"> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</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.GridTabSwitcher.ScrollToTabById.HasTab" enum="Boolean" |
| expires_after="2026-07-19"> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>skym@chromium.org</owner> |
| <summary> |
| Records whether the scrollToTabById operation had a valid tab. This is being |
| used to investigate the frequency with which this operation fails. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.InactiveCountAtStartup" units="tabs" |
| expires_after="2026-06-28"> |
| <owner>huitingyu@google.com</owner> |
| <owner>bling-pandamonium@google.com</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.InitializePTD.DurationMs" units="ms" |
| expires_after="2026-06-11"> |
| <owner>wylieb@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| (Android only) Records the duration of initializing all the PersistedTabData |
| (PTD) from an archive pass. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.LiveNTPCountAtResume" units="tabs" |
| expires_after="2026-06-29"> |
| <owner>thegreenfrog@chromium.org</owner> |
| <owner>bling-team@google.com</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>fdoray@chromium.org</owner> |
| <owner>catan-team@chromium.org</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>fdoray@chromium.org</owner> |
| <owner>catan-team@chromium.org</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>fdoray@chromium.org</owner> |
| <owner>catan-team@chromium.org</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.Metadata.FileSizeOnRead.{TabModelSelectorType}" |
| units="KB" expires_after="2026-07-28"> |
| <owner>skym@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| Records the size of the tab list metadata file that's loaded on tab model |
| creation split out by client type. This is for the regular tab model, not |
| the incognito. Additionally this file may be loaded more times for various |
| things such as clean up and merging, these loads are all ignored. Clients |
| such as headless will still report with their selector type. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.Metadata.SyncSave.{TabModelSelectorType}" units="count" |
| expires_after="2026-08-01"> |
| <owner>skym@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| (Android only) Records whether the metadata save was performed synchronously |
| (only the UI thread) or asynchronous (on a background thread). Also useful |
| because it captures the total number of metadata saves. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.MissingWebStateStorageFileOnSessionRestore" |
| enum="Boolean" expires_after="2027-02-10"> |
| <owner>justincohen@google.com</owner> |
| <owner>bling-fundamentals@google.com</owner> |
| <summary> |
| Records whether a web state session storage file is missing on session |
| restore. Recorded when the web state is realized. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.NewNavigationWithSameOriginTab" enum="Boolean" |
| expires_after="2024-02-11"> |
| <owner>gjc@google.com</owner> |
| <owner>net-dev@chromium.org</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="2026-08-24"> |
| <owner>thegreenfrog@chromium.org</owner> |
| <owner>sugoi@chromium.org</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="2026-08-24"> |
| <owner>thegreenfrog@chromium.org</owner> |
| <owner>sugoi@chromium.org</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>fdoray@chromium.org</owner> |
| <owner>catan-team@chromium.org</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="2026-12-01"> |
| <owner>huitingyu@google.com</owner> |
| <owner>bling-pandamonium@google.com</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="2026-07-12"> |
| <owner>emshack@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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="2026-07-12"> |
| <owner>emshack@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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>davidjm@chromium.org</owner> |
| <owner>dtrainor@chromium.org</owner> |
| <owner>nyquist@chromium.org</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>yusufo@chromium.org</owner> |
| <owner>nyquist@chromium.org</owner> |
| <owner>dtrainor@chromium.org</owner> |
| <owner>davidjm@chromium.org</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>yusufo@chromium.org</owner> |
| <owner>nyquist@chromium.org</owner> |
| <owner>dtrainor@chromium.org</owner> |
| <owner>davidjm@chromium.org</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>yusufo@chromium.org</owner> |
| <owner>nyquist@chromium.org</owner> |
| <owner>dtrainor@chromium.org</owner> |
| <owner>davidjm@chromium.org</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>yusufo@chromium.org</owner> |
| <owner>nyquist@chromium.org</owner> |
| <owner>dtrainor@chromium.org</owner> |
| <owner>davidjm@chromium.org</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="2026-07-12"> |
| <owner>davidjm@chromium.org</owner> |
| <owner>dtrainor@chromium.org</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>davidjm@chromium.org</owner> |
| <owner>dtrainor@chromium.org</owner> |
| <owner>nyquist@chromium.org</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>yusufo@chromium.org</owner> |
| <owner>nyquist@chromium.org</owner> |
| <owner>dtrainor@chromium.org</owner> |
| <owner>davidjm@chromium.org</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>davidjm@chromium.org</owner> |
| <owner>dtrainor@chromium.org</owner> |
| <owner>nyquist@chromium.org</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>yusufo@chromium.org</owner> |
| <owner>nyquist@chromium.org</owner> |
| <owner>dtrainor@chromium.org</owner> |
| <owner>davidjm@chromium.org</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>yusufo@chromium.org</owner> |
| <owner>nyquist@chromium.org</owner> |
| <owner>dtrainor@chromium.org</owner> |
| <owner>davidjm@chromium.org</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>yusufo@chromium.org</owner> |
| <owner>nyquist@chromium.org</owner> |
| <owner>dtrainor@chromium.org</owner> |
| <owner>davidjm@chromium.org</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>yusufo@chromium.org</owner> |
| <owner>nyquist@chromium.org</owner> |
| <owner>dtrainor@chromium.org</owner> |
| <owner>davidjm@chromium.org</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="2026-06-28"> |
| <owner>huitingyu@google.com</owner> |
| <owner>bling-pandamonium@google.com</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>skym@chromium.org</owner> |
| <owner>ckitagawa@chroimum.org</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="2026-06-08"> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>fredmello@chromium.org</owner> |
| <summary> |
| The number of distinct entries of {RecentlyClosedType} that were restored in |
| one Recent Tabs page session on Android. Entries may come from |
| TabRestoreService (Tab, Group, BulkEvent) or from MultiInstanceManager |
| (Window). This is recorded when destroying the Recent Tabs page if any |
| entries of {RecentlyClosedType} type were shown. |
| </summary> |
| <token key="RecentlyClosedType" variants="RecentlyClosedType"/> |
| </histogram> |
| |
| <histogram name="Tabs.RecentlyClosed.EntriesShownInPage.{RecentlyClosedType}" |
| units="entries shown" expires_after="2026-06-08"> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>fredmello@chromium.org</owner> |
| <summary> |
| The number of distinct entries of {RecentlyClosedType} shown in the Recent |
| Tabs page on Android. Entries may come from TabRestoreService (Tab, Group, |
| BulkEvent) or from MultiInstanceManager (Window). 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="2026-06-08"> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>fredmello@chromium.org</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.RestoreAllArchivedTabsMenuItem.TabCount" units="tabs" |
| expires_after="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>clank-tab-dev@google.com</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="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>clank-tab-dev@google.com</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="2026-06-21"> |
| <owner>huitingyu@google.com</owner> |
| <owner>bling-pandamonium@google.com</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="2026-07-26"> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>fredmello@chromium.org</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="2026-07-05"> |
| <owner>sonnyrao@chromium.org</owner> |
| <owner>jamescook@chromium.org</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="2026-07-05"> |
| <owner>sonnyrao@chromium.org</owner> |
| <owner>jamescook@chromium.org</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>sonnyrao@chromium.org</owner> |
| <owner>jamescook@chromium.org</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>corising@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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>corising@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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>afakhry@chromium.org</owner> |
| <owner>tclaiborne@chromium.org</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>afakhry@chromium.org</owner> |
| <owner>tclaiborne@chromium.org</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.Selections.Count" units="tabs" expires_after="2026-07-19"> |
| <owner>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| The number of selected tabs in a tab strip. Recorded each time the tab |
| selection changes. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.ShoppingPersistedTabData.FoundBuyableProductAnnotation" |
| enum="FoundBuyableProductAnnotation" expires_after="2026-01-27"> |
| <owner>yusufo@chromium.org</owner> |
| <owner>ayman@chromium.org</owner> |
| <owner>davidjm@chromium.org</owner> |
| <summary> |
| (Android only) 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.SplitViewMenu.{SplitViewMenuSource}" |
| enum="SplitViewMenuEntry" expires_after="2026-06-28"> |
| <owner>agale@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Records the menu item selected from the split view menu anchored to |
| {SplitViewMenuSource}. |
| </summary> |
| <token key="SplitViewMenuSource" variants="SplitViewMenuSource"/> |
| </histogram> |
| |
| <histogram name="Tabs.Startup.PinnedTabCount.{TabModelSelectorType}.{TabType}" |
| units="count" expires_after="2026-09-15"> |
| <owner>madhavpruthi@google.com</owner> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| (Android only) Records the number of {TabType} pinned 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.Startup.RestoreDuration.{TabModelSelectorType}" |
| units="ms" expires_after="2026-06-21"> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| (Android only) 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="2026-06-21"> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| (Android only) 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="2026-08-02"> |
| <owner>davidjm@chromium.org</owner> |
| <owner>nyquist@chromium.org</owner> |
| <summary> |
| (Android only) 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="2026-07-05"> |
| <owner>wylieb@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| (Android only) 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="2026-06-21"> |
| <owner>davidjm@chromium.org</owner> |
| <owner>nyquist@chromium.org</owner> |
| <summary> |
| (Android only) 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.Startup.UniqueUrlCount.{TabModelSelectorType}" |
| units="count" expires_after="2026-03-15"> |
| <owner>wylieb@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| (Android only) Records the number of duplicate tab URLs found at startup per |
| {TabModelSelectorType}. |
| </summary> |
| <token key="TabModelSelectorType" variants="TabModelSelectorType"/> |
| </histogram> |
| |
| <histogram name="Tabs.TabArchived.FoundDuplicateInRegularModel" units="count" |
| expires_after="2026-07-05"> |
| <owner>wylieb@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| (Android only) Records how many tabs were found in the regular model which |
| have already been archived. Recorded on each declutter pass. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.TabArchived.TabCount" units="tabs" |
| expires_after="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| (Android only) Records how many tabs were archived from the normal tab model |
| selector during an archive pass. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.TabArchiveEligibilityCheck.AfterNDays" units="days" |
| expires_after="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>clank-tab-dev@google.com</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="2026-03-15"> |
| <owner>wylieb@google.com</owner> |
| <owner>clank-tab-dev@google.com</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="2026-07-19"> |
| <owner>wylieb@google.com</owner> |
| <owner>clank-tab-dev@google.com</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.TabCount.SplitTabs" units="tabs" |
| expires_after="2026-07-16"> |
| <owner>agale@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Counts the number of split tabs across each window, reported every 5 |
| minutes. Desktop only. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.TabCount.{TabStripMode}" units="tabs" |
| expires_after="2026-07-16"> |
| <owner>agale@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Counts the number of tabs across each window, reported every 5 minutes. |
| Desktop only. |
| </summary> |
| <token key="TabStripMode" variants="TabStripMode"/> |
| </histogram> |
| |
| <histogram name="Tabs.TabCountActiveWindow" units="tabs" expires_after="never"> |
| <!-- expires-never: usage drives tab optimization and analysis. --> |
| |
| <owner>markchang@google.com</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="2026-03-29"> |
| <owner>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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="2026-07-05"> |
| <owner>mpearson@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <owner>sbirch@google.com</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="2026-07-05"> |
| <owner>mpearson@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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>fdoray@chromium.org</owner> |
| <owner>catan-team@chromium.org</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>yusufo@chromium.org</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="2026-07-19"> |
| <owner>davidjm@chromium.org</owner> |
| <owner>dtrainor@chromium.org</owner> |
| <owner>nyquist@chromium.org</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="2026-07-26"> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>dtrainor@chromium.org</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.AccidentalClicks" enum="AccidentalClickType" |
| expires_after="2026-09-09"> |
| <owner>emshack@chromium.org</owner> |
| <owner>shibalik@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Records the total number of tab search clicks, and the number of accidental |
| clicks as measured by less than a second passing between clicking tab search |
| and clicking the new tab button. Percentage of accidental clicks can be |
| determined by accidental clicks / total clicks. This metric only logs for |
| clicks within the tab strip combo button. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.TabSearch.BubbleWidgetInitializationTime" units="ms" |
| expires_after="2026-09-09"> |
| <owner>temao@chromium.org</owner> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</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="2026-09-09"> |
| <owner>temao@chromium.org</owner> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</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="2026-09-09"> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</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="2026-09-09"> |
| <owner>kerenzhu@chromium.org</owner> |
| <owner>romanarora@chromium.org</owner> |
| <owner>yuhengh@chromium.org</owner> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</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="2026-09-09"> |
| <owner>kerenzhu@chromium.org</owner> |
| <owner>romanarora@chromium.org</owner> |
| <owner>yuhengh@chromium.org</owner> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</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="2026-09-09"> |
| <owner>kerenzhu@chromium.org</owner> |
| <owner>romanarora@chromium.org</owner> |
| <owner>yuhengh@chromium.org</owner> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</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="2026-09-09"> |
| <owner>kerenzhu@chromium.org</owner> |
| <owner>romanarora@chromium.org</owner> |
| <owner>yuhengh@chromium.org</owner> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</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="2026-09-09"> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</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="2026-09-09"> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</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="2026-09-09"> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</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="2026-09-09"> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</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="2026-09-09"> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</owner> |
| <owner>yuhengh@chromium.org</owner> |
| <owner>romanarora@chromium.org</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="2026-09-09"> |
| <owner>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| [Desktop] Logs the yser preference of where the tab search button should be |
| rendered in the tabstrip region view. Trailing implies right side in LTR, |
| leading implies left in LTR. Replaced by PositionInTabstrip2. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.TabSearch.PositionInTabstrip2" enum="TabSearchPosition" |
| expires_after="2026-09-09"> |
| <owner>agale@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| [Desktop] Logs the position of the tab search button in the tabstrip region |
| view, but only if the tab search button is rendered in the tabstrip region. |
| Trailing implies right side in LTR, leading implies left in LTR. The |
| previous version of the histogram always logged the value of the pref, but |
| that didn't mean the tab search button was actually rendered in the tab |
| strip. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.TabSearch.RecentlyClosedSectionToggleAction" |
| enum="TabSearchRecentlyClosedToggleActions" expires_after="2026-09-09"> |
| <owner>romanarora@chromium.org</owner> |
| <owner>robliao@chromium.org</owner> |
| <owner>tluk@chromium.org</owner> |
| <owner>yuhengh@chromium.org</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="2026-09-09"> |
| <owner>romanarora@chromium.org</owner> |
| <owner>robliao@chromium.org</owner> |
| <owner>tluk@chromium.org</owner> |
| <owner>yuhengh@chromium.org</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.TimeToClose" units="ms" |
| expires_after="2026-09-09"> |
| <owner>emshack@chromium.org</owner> |
| <owner>shibalik@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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 length of time the Tab Search bubble widget was |
| open, recorded on close. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.TabSearch.TimeToShow.{WarmUpLevel}" units="ms" |
| expires_after="2026-09-09"> |
| <owner>kerenzhu@chromium.org</owner> |
| <owner>dayeung@chromium.org</owner> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</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="2026-09-09"> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</owner> |
| <owner>yuhengh@chromium.org</owner> |
| <owner>romanarora@chromium.org</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="2026-09-09"> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</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="2026-09-09"> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</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="2026-09-09"> |
| <owner>tluk@chromium.org</owner> |
| <owner>chrome-cros@chromium.org</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="2026-09-09"> |
| <owner>yuhengh@chromium.org</owner> |
| <owner>chrome-cros@chromium.org</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.TabListDataReceived2" units="ms" |
| expires_after="2026-09-09"> |
| <owner>kerenzhu@chromium.org</owner> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</owner> |
| <owner>yuhengh@chromium.org</owner> |
| <owner>kerenzhu@chromium.org</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="2026-09-09"> |
| <owner>kerenzhu@chromium.org</owner> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</owner> |
| <owner>yuhengh@chromium.org</owner> |
| <owner>kerenzhu@chromium.org</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="2026-09-09"> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</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="2026-09-09"> |
| <owner>yuhengh@chromium.org</owner> |
| <owner>chrome-cros@chromium.org</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="2026-09-09"> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</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="2026-09-09"> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</owner> |
| <owner>yuhengh@chromium.org</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="2026-09-09"> |
| <owner>tluk@chromium.org</owner> |
| <owner>robliao@chromium.org</owner> |
| <owner>yuhengh@chromium.org</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="2026-12-28"> |
| <owner>davidjm@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</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="2026-07-05"> |
| <owner>yusufo@chromium.org</owner> |
| <owner>nyquist@chromium.org</owner> |
| <owner>dtrainor@chromium.org</owner> |
| <owner>davidjm@chromium.org</owner> |
| <summary> |
| Time taken to load a TabState file in the event that it exists. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.TabState.MigrationStatus" enum="TabStateMigrationStatus" |
| expires_after="2026-07-12"> |
| <owner>davidjm@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| TabState (Tab metadata persistence system on Chrome for Android) has being |
| migrated from a hand-written schema to a FlatBuffer based schema. Part of |
| the cleanup is removing legacy hand-written FlatBuffer files. This metric |
| records if the TabState is fully migrated (FlatBuffer file exists and no |
| legacy file exists), is partially migrated (both FlatBuffer file and legacy |
| file exist) or is unmigrated (only legacy file exists). This metric is |
| recorded when a Tab is restored. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.TabState.RestoreMethod" enum="TabStateRestoreMethod" |
| expires_after="2026-07-12"> |
| <owner>davidjm@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</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="2026-06-28"> |
| <owner>nyquist@chromium.org</owner> |
| <owner>dtrainor@chromium.org</owner> |
| <owner>davidjm@chromium.org</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="2026-06-11"> |
| <owner>wylieb@google.com</owner> |
| <owner>clank-tab-dev@google.com</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.TabStateStore.FilteredTabCount" units="tabs" |
| expires_after="2026-10-28"> |
| <owner>mfiaz@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| [Android] Records the number of tabs we purposefully did not restore during |
| the restoration process. Recorded when the restoration process in |
| TabRestorer has concluded. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.TabStateStore.LoadAllTabsDuration" units="ms" |
| expires_after="2026-10-28"> |
| <owner>skym@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| [Android] Records the duration of reading all tab state information from |
| disk via the TabStateStorageService and creating Java representations of |
| them. This does not include creating full tabs. Recorded when all tab states |
| have been loaded from the service. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.TabStateStore.ShadowStoreCaughtUp" enum="Boolean" |
| expires_after="2026-10-28"> |
| <owner>mfiaz@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| [Android] Records when the shadow store has caught up to the authoritative |
| store. This is a prerequisite for the shadow store to become the |
| authoritative store during the migration process. |
| </summary> |
| </histogram> |
| |
| <histogram |
| name="Tabs.TabStateStore.TabCountDelta.AuthoritativeHigher.{TabModelOrchestratorType}" |
| units="tabs" expires_after="2026-10-28"> |
| <owner>skym@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| [Android] Records the delta in tab count between the authoritative and |
| shadow tab models when the authoritative model has more tabs. Recorded when |
| both models have finished loading. This is recorded for the |
| {TabModelOrchestratorType} tab model orchestrator. |
| </summary> |
| <token key="TabModelOrchestratorType" variants="TabModelOrchestratorType"/> |
| </histogram> |
| |
| <histogram |
| name="Tabs.TabStateStore.TabCountDelta.Equal.{TabModelOrchestratorType}" |
| units="Boolean" expires_after="2026-10-28"> |
| <owner>mfiaz@google.com</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| [Android] Records the tab count when the authoritative and shadow tab models |
| have the same number of tabs. Recorded when both models have finished |
| loading. This is recorded for the {TabModelOrchestratorType} tab model |
| orchestrator. |
| </summary> |
| <token key="TabModelOrchestratorType" variants="TabModelOrchestratorType"/> |
| </histogram> |
| |
| <histogram |
| name="Tabs.TabStateStore.TabCountDelta.ShadowHigher.{TabModelOrchestratorType}" |
| units="tabs" expires_after="2026-10-28"> |
| <owner>skym@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| [Android] Records the delta in tab count between the authoritative and |
| shadow tab models when the shadow model has more tabs. Recorded when both |
| models have finished loading. This is recorded for the |
| {TabModelOrchestratorType} tab model orchestrator. |
| </summary> |
| <token key="TabModelOrchestratorType" variants="TabModelOrchestratorType"/> |
| </histogram> |
| |
| <histogram |
| name="Tabs.TabStateStore.TimeDeltaOnMismatch.AuthoritativeNewer.{TabModelOrchestratorType}" |
| units="ms" expires_after="2026-10-28"> |
| <owner>skym@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| [Android] Records the time delta when a URL mismatch occurs between the |
| authoritative and shadow tab models, and the authoritative tab is newer. |
| Recorded when both models have finished loading and a URL mismatch is |
| detected. This is recorded for the {TabModelOrchestratorType} tab model |
| orchestrator. |
| </summary> |
| <token key="TabModelOrchestratorType" variants="TabModelOrchestratorType"/> |
| </histogram> |
| |
| <histogram |
| name="Tabs.TabStateStore.TimeDeltaOnMismatch.ShadowNewer.{TabModelOrchestratorType}" |
| units="ms" expires_after="2026-10-28"> |
| <owner>skym@chromium.org</owner> |
| <owner>clank-tab-dev@google.com</owner> |
| <summary> |
| [Android] Records the time delta when a URL mismatch occurs between the |
| authoritative and shadow tab models, and the shadow tab is newer. Recorded |
| when both models have finished loading and a URL mismatch is detected. This |
| is recorded for the {TabModelOrchestratorType} tab model orchestrator. |
| </summary> |
| <token key="TabModelOrchestratorType" variants="TabModelOrchestratorType"/> |
| </histogram> |
| |
| <histogram name="Tabs.TabThumbnailCleanupAbortedByArchive" enum="Boolean" |
| expires_after="2026-06-11"> |
| <owner>wylieb@google.com</owner> |
| <owner>clank-tab-dev@google.com</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="2026-05-03"> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>clank-tab-dev@chromium.org</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="2026-06-08"> |
| <owner>ckitagawa@chromium.org</owner> |
| <owner>clank-tab-dev@chromium.org</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="2026-06-28"> |
| <owner>huitingyu@google.com</owner> |
| <owner>bling-pandamonium@google.com</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="2026-12-12"> |
| <owner>huitingyu@google.com</owner> |
| <owner>bling-pandamonium@google.com</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.VerticalTabs.State" enum="VerticalTabsState" |
| expires_after="2026-07-01"> |
| <owner>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| The state of vertical tabs across all profiles. Logged by the metric |
| provider for UMA filtering. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.VerticalTabs.TabStripSize" units="DIPs" |
| expires_after="2026-07-01"> |
| <owner>charlesmeng@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| When the user finishes dragging to resize the vertical tabstrip, this metric |
| is logged to record the requested size of the tabstrip by the user. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.WindowCount{BatteryState}" units="windows" |
| expires_after="never"> |
| <!-- expires-never: https://crbug.com/966137 --> |
| |
| <owner>fdoray@chromium.org</owner> |
| <owner>catan-team@chromium.org</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="2026-07-05"> |
| <owner>collinbaker@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| The width of each open browser window, in DIPs, reported every 5 minutes. |
| Desktop only. |
| </summary> |
| </histogram> |
| |
| <histogram name="Tabs.{DuplicateType}.{MetricType}.{WindowType}" units="tabs" |
| expires_after="2026-06-07"> |
| <owner>emshack@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| Every 5 minutes, records the {MetricType} of duplicate tabs in {WindowType}. |
| If there are 3 tabs with matching URLs, 2 count as duplicates. URL match is |
| determined by {DuplicateType}. Desktop only. |
| </summary> |
| <token key="DuplicateType"> |
| <variant name="Duplicates" summary="exact string comparison"/> |
| <variant name="DuplicatesExcludingFragments" |
| summary="string comparison after excluding fragments"/> |
| </token> |
| <token key="WindowType"> |
| <variant name="AllProfileWindows" |
| summary="each open profile, across all windows for that profile."/> |
| <variant name="SingleWindow" summary="each browser window"/> |
| </token> |
| <token key="MetricType"> |
| <variant name="Count" summary="count"/> |
| <variant name="Percentage" summary="percentage"/> |
| </token> |
| </histogram> |
| |
| <histogram name="Tabs.{TabActiveState}TabWidth" units="px" |
| expires_after="2025-11-16"> |
| <owner>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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.SplitView.Created" enum="SplitTabCreatedSource" |
| expires_after="2026-07-26"> |
| <owner>agale@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| When a split tab is created, records the method through which it was |
| created. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabStrip.Tab.ContextMenuReloadCount" units="tabs" |
| expires_after="2026-07-26"> |
| <owner>agale@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| When the user reloads a tab using the tab context menu, records the number |
| of tabs being reloaded. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabStrip.Tab.HotkeyClosedCount" units="tabs" |
| expires_after="2026-09-01"> |
| <owner>atharvmaan@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| When the user closes tab(s) using hotkey, records the number of tabs being |
| closed. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabStrip.Tab.ReloadCount" units="tabs" |
| expires_after="2026-07-26"> |
| <owner>agale@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| When the user reloads a tab using the toolbar button, hotkey, or contents |
| context menu, records the number of tabs being reloaded. |
| </summary> |
| </histogram> |
| |
| <histogram name="TabStrip.Tab.{Framework}.ActivationAction" |
| enum="TabActivationTypes" expires_after="2026-07-26"> |
| <owner>yuhengh@chromium.org</owner> |
| <owner>tluk@chromium.org</owner> |
| <owner>romanarora@chromium.org</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="2026-07-05"> |
| <owner>yusufo@chromium.org</owner> |
| <owner>wychen@chromium.org</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="2026-05-03"> |
| <owner>robliao@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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="2026-07-26"> |
| <owner>dpenning@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</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> |
| |
| <histogram name="TabStrip.Vertical.TimeToSwitch" units="ms" |
| expires_after="2026-07-26"> |
| <owner>agale@chromium.org</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| The amount of time from cursor entering the vertical tabstrip to first click |
| on a tab to switch. This is only logged when the user is in vertical |
| tabstrip mode. |
| |
| 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> |
| |
| <histogram name="TabStrip.{TabStripMode}.TabDragDestination" |
| enum="TabDragDestination" expires_after="2026-07-01"> |
| <owner>kunaldaftari@google.com</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| The destination of a tab drag operation for either vertical or horizontal |
| tabs. |
| |
| It will either be in the same window, a new window, an existing distinct |
| window, or abandoned. |
| |
| Currently, users cannot drag between tab strips of different types. If that |
| becomes possible, then this metric needs to be updated accordingly to |
| distinguish between those behaviors. |
| </summary> |
| <token key="TabStripMode" variants="TabStripMode"/> |
| </histogram> |
| |
| <histogram name="TabStrip.{TabStripMode}.TabDragDuration" units="ms" |
| expires_after="2026-07-01"> |
| <owner>kunaldaftari@google.com</owner> |
| <owner>top-chrome-desktop-ui@google.com</owner> |
| <summary> |
| The duration of a completed tab drag operation for either vertical or |
| horizontal tabs. |
| |
| Currently, users cannot drag between tab strips of different types. If that |
| becomes possible, then this metric needs to be updated accordingly to |
| distinguish between those behaviors. |
| </summary> |
| <token key="TabStripMode" variants="TabStripMode"/> |
| </histogram> |
| |
| </histograms> |
| |
| </histogram-configuration> |