<!--
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 CustomTabs histograms
along with a detailed description for each histogram.
For best practices on writing histogram descriptions, see
https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md
Please follow the instructions in the OWNERS file in this directory to find a
reviewer. If no OWNERS file exists, please consider signing up at
go/reviewing-metrics (Googlers only), as all subdirectories are expected to
have an OWNERS file. As a last resort you can send the CL to
[email protected].
-->
<histogram-configuration>
<histograms>
<histogram base="true" name="CustomTab.SessionDuration" units="ms"
expires_after="2020-10-18">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<!-- Name completed by histogram_suffixes name="CustomTabOpenSource" -->
<summary>
Records the time duration in CustomTab Activity from onStart/onResume to
onStop/onPause, if that activity is opened by Webapp/WebApk/Trusted Web
Activity.
</summary>
</histogram>
<histogram name="CustomTabs.AuthView.UrlParams" units="bit field"
expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
A bit field with each bit representing the presence of a potential OAuth
query param in the URL. Recorded when the Custom Tab receives and handles
the initial intent. Android only.
Available bit flags:
0b00001: client_id, 0b00010: redirect_uri, 0b00100: response_type, 0b01000:
scope, 0b10000: state
</summary>
</histogram>
<histogram name="CustomTabs.AutoclosedSessionDuration" units="ms"
expires_after="2023-08-20">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Android: Duration in milliseconds of a custom tab session (between onResume
and onPause). This is logged for the sessions closed automatically without
user intervention. Sessions closed by user input (back press/close button)
will not be logged.
Note that there can be user inputs that go undetected by the logic. So the
histogram can contain false positives i.e. session closed by user but
regarded as auto-closed.
</summary>
</histogram>
<histogram name="CustomTabs.Branding.AppIdType"
enum="CustomTabsBrandingAppIdType" expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
For every CCT launch, Chrome will start an async task in the background
checking the last time branding is shown for the client app. Each client app
is identified with a unique string. It was initially (and preferably) its
package name but is extended to be of any text string from the intent's
referrer if the package name is unavailable. An empty string is regarded as
invalid id.
Record the type of the id for a given CCT when the async task is finished.
Record for Android CCT only.
</summary>
</histogram>
<histogram name="CustomTabs.Branding.BrandingCheckDuration" units="ms"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
For every CCT launch, Chrome will start an async task in the background
checking the last time branding is shown for the client app. Record the
duration of this background async task when it completes, regardless whether
it is canceled. Record for Android CCT only.
</summary>
</histogram>
<histogram name="CustomTabs.Branding.NumberOfClients" units="count"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
For every CCT launch, Chrome will start an async task in the background
checking the last time branding is shown for the client app. Records the
number of package names of CCT client apps that had the branding shown after
each CCT launched. Record after the branding decision is made, on Android
CCT only.
</summary>
</histogram>
<histogram name="CustomTabs.ClientAppId" enum="ClientAppId"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<summary>
Android: AppId declared by the launching application in EXTRA_APPLICATION_ID
in a custom tab. This histogram is used as a means to count the total
instances of custom tabs created meanwhile binning them across launching
apps that have identified themselves. Starting with M84 this is is also
recorded for webapps/WebAPKs. Filter the platform for just CCT/TWA data.
</summary>
</histogram>
<histogram name="CustomTabs.ClientAppId.Incognito" enum="ClientAppId"
expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Android: This histogram is used as a means to count the total instances of
Incognito custom tabs created meanwhile binning them across launching first
party apps.
The launching first party apps are inferred by the package name they
provided when creating a custom tab connection and if we can't infer via
package name then as a fallback we rely on them declaring
EXTRA_APPLICATION_ID when launching Incognito custom tabs. If both fails,
then the launch is recorded in the Others entry.
This metric is never recorded for 3P apps.
</summary>
</histogram>
<histogram name="CustomTabs.CloseCause" enum="CustomTabsCloseCause"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Android: The reason a custom tab is closed. Main interest is whether a
custom tab is triggered by user inputs like back press/close button click,
or it is automatically closed by the app that opened it.
</summary>
</histogram>
<histogram name="CustomTabs.ConnectionStatusOnReturn.GSA"
enum="CustomTabsConnection" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Android: Recorded whenever user closes the custom tab by hitting the close
button or back to return to the caller app. Keeps track of the connection
status and whether the app was using a KeepAlive connection. Recorded only
for AGSA. Starting with M84 this is is also recorded for webapps/WebAPKs.
Filter the platform for just CCT/TWA data.
</summary>
</histogram>
<histogram name="CustomTabs.ConnectionStatusOnReturn.NonGSA"
enum="CustomTabsConnection" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Android: Recorded whenever user closes the custom tab by hitting the close
button or back to return to the caller app. Keeps track of the connection
status and whether the app was using a KeepAlive connection. Recorded for
all apps other than AGSA. Starting with M84 this is is also recorded for
webapps/WebAPKs. Filter the platform for just CCT/TWA data.
</summary>
</histogram>
<histogram base="true" name="CustomTabs.DetachedResourceRequest.Duration"
units="ms" expires_after="2024-03-17">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time between the start of a detached resource request and its completion
(failure or success). Android only. Starting with M84 this is is also
recorded for webapps/WebAPKs. Filter the platform for just CCT/TWA data.
</summary>
</histogram>
<histogram name="CustomTabs.DetachedResourceRequest.FinalStatus"
enum="NetErrorCodes" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Reports the final status of the detached request, including success.
Recorded once per detached resource request. Android only. Starting with M84
this is is also recorded for webapps/WebAPKs. Filter the platform for just
CCT/TWA data.
</summary>
</histogram>
<histogram base="true" name="CustomTabs.DetachedResourceRequest.RedirectsCount"
units="redirects" expires_after="2024-03-17">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of redirects followed by a detached resource request until success or
failure. Android only. Starting with M84 this is is also recorded for
webapps/WebAPKs. Filter the platform for just CCT/TWA data.
</summary>
</histogram>
<histogram name="CustomTabs.DeviceSpec" enum="PcctDeviceSpec"
expires_after="2025-01-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Reports some chosen specs of the device on which PCCT runs. We are
interested in understanding how many devices running PCCT will be able to
migrate to Activity Embedding later, which requires that the device not be a
low-end one and support picture-in-picture feature. Low-endness is defined
as the return value of API ActivityManager#isLowRamDevice. This is recorded
only once per Chrome session, when PCCT is launched.
</summary>
</histogram>
<histogram name="CustomTabs.FeatureUsage" enum="CustomTabsFeatureUsed"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records each feature of a Chrome Custom Tab when that feature is used. A
single key feature - "Sessions" - is logged once per CCT Session,
and no other feature enum may be logged more frequently. This provides a
single large list of features and their percentage usage (one or more times
per session) right in the UMA timeline. Recorded during a CCT Session.
Android only.
</summary>
</histogram>
<histogram name="CustomTabs.GoogleBottomBar.Button.Clicked"
enum="GoogleBottomBarButtonEvent" expires_after="2025-05-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded only on Android. Records clicks on GoogleBottomBar buttons in the
GoogleBottomBar. Logged when a button is clicked in the GoogleBottomBar
(when the GoogleBottomBar feature is enabled and visible at the bottom of
the CCT).
</summary>
</histogram>
<histogram name="CustomTabs.GoogleBottomBar.Button.Shown"
enum="GoogleBottomBarButtonEvent" expires_after="2025-05-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded only on Android. Records GoogleBottomBar buttons that are shown.
Logged when a button is displayed in the GoogleBottomBar (when the
GoogleBottomBar feature is enabled and visible at the bottom of the CCT).
</summary>
</histogram>
<histogram name="CustomTabs.GoogleBottomBar.Button.Updated"
enum="GoogleBottomBarButtonEvent" expires_after="2025-05-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded only on Android. Records GoogleBottomBar(GBB) buttons that are
updated. Logged when embedder send request to update a button that is
displayed in the GoogleBottomBar (when the GoogleBottomBar feature is
enabled and visible at the bottom of the CCT).
</summary>
</histogram>
<histogram name="CustomTabs.GoogleBottomBar.Created"
enum="GoogleBottomBarCreatedEvent" expires_after="2025-05-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded only on Android. Records type of the layout used to create the
GoogleBottomBar. Logged when the GoogleBottomBar is displayed (when the
GoogleBottomBar feature is enabled and visible at the bottom of the CCT).
</summary>
</histogram>
<histogram name="CustomTabs.GoogleBottomBar.LensSupportStatus"
enum="LensSupportStatus" expires_after="2025-07-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether the user supports the Google Lens entrypoint in Google Bottom Bar
and if not, the reason why. Recorded when user clicks on Lens button in
Google Bottom bar, that is visible only if the GoogleBottomBarVariantLayouts
feature is enabled.
</summary>
</histogram>
<histogram name="CustomTabs.GoogleBottomBar.Variant.Created"
enum="GoogleBottomBarVariantCreatedEvent" expires_after="2025-05-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded only on Android. Records type of the variant layout type used to
create the GoogleBottomBar. Logged when the GoogleBottomBar is displayed
(when the GoogleBottomBarVariant feature is enabled and visible at the
bottom of the CCT).
</summary>
</histogram>
<histogram name="CustomTabs.HadInteractionOnClose.Form" enum="Boolean"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram records true when the current CCT has seen any form
interactions (e.g. text entry, drop down entry) throughout the session and
false if there have been no form interactions at the time of closing the
CCT. If the tab is restored the previous form interactions will be reset.
</summary>
</histogram>
<histogram name="CustomTabs.HadInteractionOnClose.FormStillActive"
enum="Boolean" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram records true when the current CCT has seen form interaction
(e.g. text entry, drop down entry) on the active page, and false if there
are no interactions in the active form, or if the interaction is reset (e.g.
navigation, form submission) at the time of closing the CCT.
</summary>
</histogram>
<histogram name="CustomTabs.HadInteractionOnClose.Navigation" enum="Boolean"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram records true when the current CCT has interactions with the
web contents (e.g. touch, scroll, fling), and the active tab can go back /
forward and false if there have not been web contents interactions or the
tab cannot go back / forward at the time of closing the CCT. If the tab is
restored the previous form interactions will be reset.
</summary>
</histogram>
<histogram name="CustomTabs.HasNonSpoofablePackageName" enum="Boolean"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Android only. Boolean histogram denoting whether the package name can be
retrieved in a non-spoofable way for Custom Tabs. When the histogram returns
true, it means we can confirm the package name was passed by the defined
host app. Emitted when the Custom Tab is launched.
</summary>
</histogram>
<histogram name="CustomTabs.IdentityShared" enum="Boolean"
expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Android only. Boolean histogram denoting whether the package name is
available by the sender sharing its identity using the new API introduced in
Android U. This means we can confirm the package name was passed by the
defined host app. Emitted when the Custom Tab is launched.
</summary>
</histogram>
<histogram name="CustomTabs.IncognitoCCTCallerId" enum="IncognitoCCTCallerId"
expires_after="2025-01-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metrics records the caller of Incognito CCTs. For Chrome features, the
feature name is recorded, for external calls, either Google App or
Non-Google App categories are recorded. The metric is recorded when an
Incognito CCT opening intent is received.
</summary>
</histogram>
<histogram name="CustomTabs.IncognitoCCTCallerIsTrusted" enum="Boolean"
expires_after="2025-01-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metrics records whether a caller who requested Incognito CCT is
considered trusted. Only recorded when CCTIncognitoAvailableToThirdParty is
false.
</summary>
</histogram>
<histogram name="CustomTabs.IntentToFirstCommitNavigationTime3" units="ms"
expires_after="2024-09-01">
<owner>[email protected]</owner>
<summary>
Time between the intent arrival to a Custom Tab and the first navigation
commit. Recorded for every custom tabs intent when the page has finished
loading.
</summary>
</histogram>
<histogram name="CustomTabs.IntentToFirstNavigationStartTime" units="ms"
expires_after="2024-09-01">
<owner>[email protected]</owner>
<summary>
Time between the intent arrival to a Custom Tab and the navigation start.
Recorded when the page has finished loading. Non-"Herb" mode.
</summary>
</histogram>
<histogram name="CustomTabs.IntentToPageLoadedTime" units="ms"
expires_after="M77">
<owner>[email protected]</owner>
<summary>
Time between the intent arrival in Chrome and the first "page
loaded" event, if the navigation is successful. Non-"Herb"
mode.
</summary>
</histogram>
<histogram name="CustomTabs.MayLaunchUrlType" enum="MayLaunchUrlType"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<summary>
Android only. Which flavors of mayLaunchUrl() were used before a tab launch.
Can be low and/or high confidence. Recorded at the same time as
CustomTabs.WarmupStateOnLaunch for the buckets "Session, No Warmup,
Warmup called from another UID", "Session, No Warmup" and
"Session, Warmup".
Before M118, unlike CustomTabs.WarmupStateOnLaunch, this metric was only
recorded with a valid session.
</summary>
</histogram>
<histogram name="CustomTabs.Minimized.MinimizeSuccess" enum="Boolean"
expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Emitted when the the user clicks the minimize button and we request to be
put in picture-in-picture from the framework. Records true if it was
successful; false if there was an exception thrown. Android only.
</summary>
</histogram>
<histogram name="CustomTabs.Minimized.ReceivedIntentReusingSession"
enum="Boolean" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Emitted when the Custom Tab receives an intent that reuses a session id
while the Custom Tab is minimized. Always emits true. Android only.
</summary>
</histogram>
<histogram name="CustomTabs.MinimizedEvents" enum="CustomTabsMinimizedEvents"
expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Android only. Enum histogram to track the different events related to
Minimized Custom Tabs. This includes: minimizing(enter PiP), maximizing
(restore from PiP), destroy (PiP closed + CT session ends). Emitted on each
event.
</summary>
</histogram>
<histogram name="CustomTabs.MinimizedFeatureAvailability"
enum="CustomTabsMinimizedFeatureAvailability" expires_after="2025-02-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Minimized Custom Tab feature availability. Recorded during startup in
#onFinishNativeInitialization() when the availability is first checked to
initialize the feature. Android only.
</summary>
</histogram>
<histogram name="CustomTabs.Omnibox.EnabledState" units="BooleanEnabled"
expires_after="2025-05-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether a CustomTab was requested to include an interactive Omnibox.
Recorded once per CCT instantiation event. Android only.
</summary>
</histogram>
<histogram name="CustomTabs.Omnibox.FocusResultedInNavigation" units="Boolean"
expires_after="2025-05-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether user initiated navigation after focusing the Omnibox. Value
of 'true' indicates user chose to initiate navigation, whereas value of
'false' suggests the user abandoned the interaction with the Omnibox.
Recorded once per interaction with Omnibox on CCT when the CCT receives a
response from SearchActivity. Android only.
</summary>
</histogram>
<histogram name="CustomTabs.Omnibox.NumNavigationsPerSession" units="count"
expires_after="2025-05-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of navigations issued on CustomTab during its lifetime.
Recorded only on CCTs that feature an interactive Omnibox. Recorded once per
CCT when CCT is about to be destroyed. Android only.
</summary>
</histogram>
<histogram name="CustomTabs.PageInsights.Event" enum="PageInsightsEvent"
expires_after="2024-12-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded only on Android. Holds the interaction that the user has with Page
Insights BottomSheet, such as invoking PIH manually or by being auto
triggered, the bottom sheet's states and when it is dismissed, and
interactions with xSurface views.
</summary>
</histogram>
<histogram name="CustomTabs.PageNavigation.ErrorCode" enum="NetErrorCodes"
expires_after="2025-01-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Network error code occuring upon page navigation. Recorded each time Custom
tabs receives an event TabObserver.onPageLoadFailed.
</summary>
</histogram>
<histogram name="CustomTabs.ParallelRequestStatusOnStart"
enum="CustomTabsParallelRequestStatusOnStart" expires_after="M120">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded only on Android. Whether a parallel request was requested by the
calling application, and if so its initial status. Recorded once per handled
intent, when the request is initiated. Starting with M84 this is is also
recorded for webapps/WebAPKs. Filter the platform for just CCT/TWA data.
</summary>
</histogram>
<histogram name="CustomTabs.PartialCustomTabType"
enum="CustomTabsPartialCustomTabType" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Type of the Partial Custom Tab that has been created. A new entry will be
logged each time a PCCT is opened or when the user transitions from a type
of PCCT to another (e.g. on screen rotation if the type changes from
bottom-sheet to side-sheet). Multiple entries can be logged for each PCCT
that is being displayed.
</summary>
</histogram>
<histogram name="CustomTabs.PostMessage.OnMessage" enum="Boolean"
expires_after="2024-11-03">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Android only. Recorded when the tab controlled by the CustomTabsSession
sends a postMessage. Always emits true.
</summary>
</histogram>
<histogram name="CustomTabs.PostMessage.PostMessageFromClientApp"
enum="Boolean" expires_after="2024-08-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Android only. Recorded when the CCT client sends a postMessage request to
the tab. Always emits true.
</summary>
</histogram>
<histogram name="CustomTabs.PostMessage.RequestPostMessageChannel"
enum="Boolean" expires_after="2024-08-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Android only. Recorded when the CCT client calls requestPostMessageChannel
to establish a two way postMessage channel. Emits true if the request is
successful and false otherwise. A true value emitted here doesn't mean the
request cannot fail later; and a false value may be the result of multiple
things, e.g. the warmup hasn't been called.
</summary>
</histogram>
<histogram
name="CustomTabs.PostMessage.RequestPostMessageChannelWithTargetOrigin"
enum="Boolean" expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Android only. Recorded when the CCT client calls requestPostMessageChannel
to establish a two way postMessage channel. Emits true if the request is
with targetOrigin specified and false otherwise. That should determine if we
can to delete the old API (Without targetOrigin) or not.
</summary>
</histogram>
<histogram
name="CustomTabs.RetainableSessionsV2.TimeBetweenLaunch{IdentifierType}"
units="seconds" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When a CCT session is launched, if it is launched with same URL and has the
same package name or the same taskId + referrer combo, record the duration
between previous CCT closure and current CCT launch. Recorded on CCT launch.
A CCT can be defined as retainable if 1) it is launching with the same URL
as the most recently closed CCT; 2) it is launched from the same embedded
app as the most recently closed CCT; 3) the most recently closed CCT had
user interactions. See "CustomTabs.HadInteractionOnClose.Form" and
"CustomTabs.HadInteractionOnClose.Navigation" for information on
interactions.
The histogram suffix identifies whether the CCT is created with the same
intent Uri data and for the same embedded app, launching CCT with the same
taskId and package name. The package name identifier to use will depend on
whether the client app is using CustomTabService. If app is using the CCT
service, the package name will be read from CCT service; otherwise the
package name is read from the referrer of CCT activity.
This histogram is recorded for {IdentifierType}
</summary>
<token key="IdentifierType">
<variant name=".Different"
summary="App is not launched from the same embedded app as package
name / referrer is different."/>
<variant name=".Mixed"
summary="Apps not consistently using CCT services. Referrer and
package are used together."/>
<variant name=".PackageName"
summary="Apps that provide package name. Package name is used as
identifier."/>
<variant name=".Referrer"
summary="Apps not connecting with CCT services. Activity referrer is
used as identifier."/>
</token>
</histogram>
<histogram name="CustomTabs.SessionDisconnectStatus"
enum="CustomTabsSessionDisconnectStatus" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded only for Android. Record information about the state of the client
app, custom tab and system in the moment the connection between the client
and the custom tab is terminated. With this, we are trying to understand how
often a connection is terminated (the client app dies/is killed/is closed)
while a custom tab is in foreground. Also, if the EXTRA_KEEP_ALIVE is set,
we want to understand if it reduces the number of connections being
terminated. The aim is that CT_FOREGROUND and CT_FOREGROUND_KEEPALIVE are
logged as little as possible, while the rest of the states are expected ways
in which a connection may be terminated.
*CT_FOREGROUND*/*CT_BACKGROUND* - an enum value that contains this text
reflects if the custom tab was in the foreground/background when the
connection was terminated.
*KEEP_ALIVE* - an enum value that contains this text reflects that the
EXTRA_KEEP_ALIVE intent extra was specified and that the custom tab binds to
the service provided by it in order to increase the priority of the client
app to foreground.
*LOW_MEMORY* - an enum value that contains this text reflects that the
system was low on memory when the connection was terminated. This does not
mean that this was indeed the reason for the connection being terminated,
but it might be a good indicator of it.
UNKNOWN - if this is logged then there is probably a bug in the code as we
have a state we can be in that we don't currently account for.
</summary>
</histogram>
<histogram name="CustomTabs.Startup.TimeToFirstCommitNavigation2.{suffix}"
units="ms" expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Startup time for a Custom Tab from the earliest point in startup to the
first navigation commit. Split by varying degrees of warmness, from cold to
fully pre-loaded through mayLaunchUrl.
It is recommended to limit analysis of data to Android P+ because on prior
versions the cold start detection is less robust.
{suffix}.
</summary>
<token key="suffix">
<variant name="Cold"
summary="Measures from process creation to first commit"/>
<variant name="Speculated"
summary="Measures from intent received to first commit when the
mayLaunchUrl speculation is used"/>
<variant name="Warm"
summary="Measures from intent received to first commit when
CustomTabsConnection#warmUp is not used"/>
<variant name="WarmedUp"
summary="Measures from intent received to first commit when
CustomTabsConnection#warmUp is used"/>
</token>
</histogram>
<histogram name="CustomTabs.Startup.TimeToLargestContentfulPaint2.{suffix}"
units="ms" expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Startup time for a Custom Tab from the earliest point in startup to the
Largest Contentful Paint on the first navigation. Split by varying degrees
of warmness, from cold to fully pre-loaded through mayLaunchUrl.
It is recommended to limit analysis of data to Android P+ because on prior
versions the cold start detection is less robust.
{suffix}.
</summary>
<token key="suffix">
<variant name="Cold" summary="Measures from process creation to LCP"/>
<variant name="Speculated"
summary="Measures from intent received to LCP when the mayLaunchUrl
speculation is used"/>
<variant name="Warm"
summary="Measures from intent received to LCP when
CustomTabsConnection#warmUp is not used"/>
<variant name="WarmedUp"
summary="Measures from intent received to LCP when
CustomTabsConnection#warmUp is used"/>
</token>
</histogram>
<histogram name="CustomTabs.TabCounts.OnClosingAllTabs" units="count"
expires_after="2024-09-15">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded only for Android. Records the number of tabs closed when closing
all the tabs (e.g. via hitting the close button). Only recorded when closing
is initiated by the user, so if custom tab is killed while in the background
this will not be recorded.
</summary>
</histogram>
<histogram name="CustomTabs.TabCounts.UniqueTabsSeen" units="count"
expires_after="2024-09-15">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded only for Android. Records the number of unique tabs open in the
current custom tab session, when a new tab is opened. The count of this
histogram includes the initial tab being opened, and can be recorded more
than once in the same session.
Do not record nor increase the count when switching into the previous tab
(e.g. create new tab, close, and land onto an existing tab).
</summary>
</histogram>
<histogram name="CustomTabs.TimeElapsedSinceMinimized.Destroyed" units="s"
expires_after="2025-02-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Android only. Starts tracking system time when minimization begins and
records the difference if the PiP window is removed through any event EXCEPT
maximizing (un-PiP). This means the Custom Tab activity would also be
destroyed. Emitted when CCT PiP windows are destroyed.
</summary>
</histogram>
<histogram name="CustomTabs.TimeElapsedSinceMinimized.Maximized" units="s"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Android only. Starts tracking system time when minimization begins and
records the difference if the PiP window is maximized (the tab goes back to
its original state). Emitted when tab is maximized.
</summary>
</histogram>
<histogram name="CustomTabs.Visible" enum="VisibleTab" expires_after="never">
<!-- expires-never: Used to classify UMA reports by the dashboards. -->
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Recorded only for Android. Records on every metrics upload whether the
currently visible tab is a custom tab. The custom tab is launched by a
client app with customized UI. Some metrics like page load time will behave
differently for these tabs since it will be possible to warm up the browser
process and prepare resources for specific urls ahead of time via a service
connection. This histogram can be used to cluster these metric differently.
As of M87, this histogram is logged on a log start, rather than log end to
tag more logs.
</summary>
</histogram>
<histogram name="CustomTabs.WarmupStateOnLaunch" enum="WarmupStateOnLaunch"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<summary>
Recorded only on Android. Reports whether warmup() has been called when a
Custom Tabs Intent is received from an application, and if so, whether the
call could be matched with a session. Starting with M84 this is is also
recorded for webapps/WebAPKs. Filter the platform for just CCT/TWA data.
</summary>
</histogram>
<histogram name="CustomTabs.WebContentsStateOnLaunch" enum="WebContentsState"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<summary>
Android: When a CustomTabActivity creates its Tab, whether we use a
prerendered WebContents, a spare renderer or create a new WebContents.
</summary>
</histogram>
<histogram name="TrustedWebActivity.ClearDataDialogOnClearAppDataAccepted"
enum="Boolean" expires_after="M132">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Emits true if the user went to site settings from the dialog that is shown
after a Trusted Web Activity client app has had its data cleared.
</summary>
</histogram>
<histogram name="TrustedWebActivity.ClearDataDialogOnUninstallAccepted"
enum="Boolean" expires_after="M132">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Emits true if the user went to site settings from the dialog that is shown
after a Trusted Web Activity client app has been uninstalled.
</summary>
</histogram>
<histogram name="TrustedWebActivity.DelegatedNotificationSmallIconFallback"
enum="TrustedWebActivityDelegatedNotificationSmallIconFallback"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs which kind of fallback for notification small icon was used for Trusted
Web Activity notification delegation.
</summary>
</histogram>
<histogram name="TrustedWebActivity.ExtraCommandSuccess.{command}"
enum="BooleanSuccess" expires_after="2024-11-14">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>
src/chrome/android/java/src/org/chromium/chrome/browser/browserservices/OWNERS
</owner>
<summary>
Records whether the extra command {command} called from
TrustedWebActivityClient resulted in success or failure.
</summary>
<token key="command">
<variant name="checkNotificationPermission"/>
<variant name="getNotificationPermissionRequestPendingIntent"/>
</token>
</histogram>
<histogram name="TrustedWebActivity.Notification.PermissionRequestResult"
enum="ContentSetting" expires_after="2024-11-14">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>
src/chrome/android/java/src/org/chromium/chrome/browser/browserservices/OWNERS
</owner>
<summary>
The result of a TWA notification permission request for the purpose of
notification delegation. This is logged when the
NotificationPermissionUpdater receives the result from the
TrustedWebActivityClient.
</summary>
</histogram>
<histogram name="TrustedWebActivity.ShareTargetRequest"
enum="WebShareTargetMethod" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Recorded when data is shared via a Trusted Web Activity.</summary>
</histogram>
<histogram name="TrustedWebActivity.SplashScreenShown" enum="Boolean"
expires_after="2024-07-07">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether or not a splash screen has been shown when launching a
Trusted Web Activity.
</summary>
</histogram>
<histogram name="TrustedWebActivity.TimeInVerifiedOrigin.V2" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time spent in a verified origin until navigating to an unverified one or
pausing the Trusted Web Activity.
</summary>
</histogram>
<histogram name="TrustedWebActivity.TimeOutOfVerifiedOrigin.V2" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time spent out of verified origins until navigating back to a verified one
or pausing the Trusted Web Activity.
</summary>
</histogram>
</histograms>
</histogram-configuration>