<!--
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 Session 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 name="Session.Android.TabbedSessionContainedGoogleSearch"
enum="Boolean" expires_after="2025-02-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records true if the Google Search Results Page is ever visited during a
session for a given ChromeTabbedActivity, false otherwise.
Recorded when an UMA Session ends.
</summary>
</histogram>
<histogram name="Session.Background.TotalDuration" units="ms"
expires_after="2025-02-09">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Sum of this metric yields the total time Chrome was running in the
background. A single session may be represented by multiple values, so that
this histogram is always present in an uploaded log that represents
background activity.
Android-only.
</summary>
</histogram>
<histogram name="Session.BrowserFullscreen.DurationUpTo24H" units="ms"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The total time a Chrome browser window spends in fullscreen. Content
fullscreen is not represented. Records are capped at 24 hours.
The metric is recorded when a browser window exits fullscreen or after 24
hours has elapsed, whichever comes first. This includes quitting the browser
while in fullscreen.
Mac-only.
</summary>
</histogram>
<histogram name="Session.ID.RestoredDifference" units="Session IDs"
expires_after="2025-02-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the difference between the highest restored SessionID and the value
of the pref used for the next SessionID. If the difference is negative, 0 is
recorded (0 means there is no problem, the session ID's pref was correctly
restored). Having a value > 0 means that there has been an issue and the
SessionID was probably not recorded properly. This is recorded after each
session restoration (so it can be recorded multiple times per run).
</summary>
</histogram>
<histogram name="Session.IsActive" enum="BooleanActive"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>src/base/metrics/OWNERS</owner>
<summary>
Was a browsing session active when the UMA record was captured? This metric
is recorded with every UMA log upload when the session tracker is running
(which, in principle, should always be the case). This metric is NOT
recorded in logs that reflect information from a previous session (i.e.,
"stability logs" or "persistent UMA" data related to the
previous session but not uploaded during the previous session).
Recorded on Android, iOS, Windows, Mac, and Linux.
For information on what's considered "active", see the histogram
description for Session.TotalDuration.
</summary>
</histogram>
<histogram name="Session.OpenedTabCounts" units="operations"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of times the user changed the active tab (this can happen when
manually selecting a new tab, when a pre-rendered tab is made active, when
closing the current tab and the next one is selected) during the current
session (launch/foregrounding to backgrounding).
This histogram is only logged on iOS when the application is backgrounded.
</summary>
</histogram>
<histogram name="Session.TimeSpentInFocusMode" units="s" expires_after="M80">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time spent in focus mode browser. This is recorded when the focus mode
window closes. This metric is only recorded on Win/Mac/Linux/ChromeOS.
</summary>
</histogram>
<histogram name="Session.TotalDuration" units="ms" expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The length of a session (launch/foregrounding to quitting/backgrounding) in
milliseconds, recorded at the end of the session. See
Session.TotalDurationMax1Day for the same histogram with a higher maximum
value. (The one's maximum is 1 hour.)
Windows/Mac/Linux: Sessions only include time a browser window is visible.
Time when Chrome is visible but not with a regular browsing window will not
count. For example, neither the "profile picker", which is
sometimes shown at startup, nor the first-run experience flow will count as
active time in Chrome when calculating Session.TotalDuration.
Windows/Mac/Linux: An active session ends (i) when the user puts another app
in the foreground, unless audio is playing. (The Chrome windows can still be
shown. What matters is that a different app has focus.) (ii) when Chrome
quits. (iii) when the screensaver turns on (again, unless audio is playing).
(iv) when the user is inactive for five minutes (again, unless audio is
playing). In this case (starting in M-55), that five minutes is not included
in the sesson length. (v) when audio stops playing, if the user has been
inactive for five minutes or Chrome is not in the foreground. Also, until
M69, there was a bug that caused double-counting of some sessions.
ChromeOS: not implemented. The ChromeOS histogram Platform.DailyUseTime is
somewhat similar.
Android: Session boundaries are wonky. Thus, only look at total duration for
a client over a day; don't look at individual durations. A session ends (i)
when the Chrome app leaves the foreground. This sounds obvious yet there are
many subtle though common edge cases here. Going to the Android Home screen
via the Home button is an obvious case. Yet, merely pressing the Recents
button, even if the user reselects the Chrome app (i.e., doesn't leave the
app) also ends a session. Another set of cases is the screen time-out
(blanking the screen) or the lock screen. Either will cause Chrome to be
considered to leave the foreground, ending the session. (ii) some in-app
actions. Yes, some in-app events trigger the end of a session.
Android continued: These in-app actions that trigger the end of a session
can mostly be considered bugs. Cases: (a) switching to viewing Bookmarks,
History, Downloads, or Settings causes the session to end. Note that
switching out of those modes does not cause the end of a session, only
switching in. Oddly, though the interface looks similar, switching to Recent
Tabs does not trigger the end of a session. Nor does going into the tab
switcher view. (b) modal pop-ups. JavaScript dialogs and other things that
take focus away from the Chrome activity can cause this metric to record a
session end prematurely. See: crbug.com/678276. (c) switching Chrome from as
a single app in the foreground into multi-window mode. (d) switching Chrome
from being one of a set of multi-window apps that are displayed to be the
only app displayed.
iOS: A session starts when Chrome is launched to the foreground and ends
when Chrome leaves the screen. This is generally straightforward. Chrome
leaves the screen when the screen goes blank or shows the lock screen, when
Chrome clicks a link that opens in another app, or when the user switches to
another app in the app switcher. Note that, unlike on desktop, even if
Chrome is playing media in the background or in picture-in-picture mode, the
session is still terminated when Chrome leaves the screen. Also note that if
Chrome starts in Safe Mode, the session will only start when the user quits
Safe Mode. When multiple windows are used, the session is considered ongoing
as long as there is at least one foreground Chrome window. This was revised
in M-89 to support multiple windows. In M-87 and M-88, nothing was logged
due to a bug. Before M-86, a similar metric was recorded, with some
differences in edge cases. See the old histogram description for more
details.
This histogram is of special interest to the chrome-analysis-team@. Do not
change its semantics or retire it without talking to them first.
</summary>
</histogram>
<histogram name="Session.TotalDuration.NotOptedInToSyncWithAccount" units="ms"
expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram is in the process of being replaced with the equivalent
histogram Session.TotalDurationMax1Day.NotOptedInToSyncWithAccount; the only
difference is the histogram bucket ranges.
The amount of active browsing time that was spent with sync disabled while
having a valid refresh token for the primary account. This corresponds to
the case when the user did not opt in to sync, or sync is disabled due to
another reason, e.g. enterprise policy. Note that auth errors are not
counted here, but rather in
Session.TotalDuration.NotOptedInToSyncWithAccountInAuthError.
This time is measured from when the user starts interacting with the browser
until either they stopped interacting with the browser or their signin or
sync status changes. These end-points are when the metric is emitted. For
details on how "stopped interacting with the browser" is decided,
see the description of Session.TotalDuration.
Because a duration can end either because the user became inactive or
because their status changed, the distribution of individual durations
measured are unlikely to be helpful. Instead, please compare total
durations.
This metric is recorded on Win/Mac/Linux/iOS/Android.
One caveat with this metric is that if the user has multiple profiles open
at the same time, their session activity will be logged from all the
profiles, instead of only from the profile that the user is using at that
moment.
This histogram is of special interest to the chrome-analysis-team@ and
chrome-signin-team@. Do not change its semantics or retire it without
talking to them first.
</summary>
</histogram>
<histogram name="Session.TotalDuration.NotOptedInToSyncWithAccountInAuthError"
units="ms" expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram is in the process of being replaced with the equivalent
histogram
Session.TotalDurationMax1Day.NotOptedInToSyncWithAccountInAuthError; the
only difference is the histogram bucket ranges.
The amount of active browsing time that was spent with sync disabled while
having a primary account with an invalid refresh token. This corresponds to
the case when the user did not opt in to sync, or sync is disabled due to
another reason, e.g. enterprise policy.
This time is measured from when the user starts interacting with the browser
until either they stopped interacting with the browser or their signin or
sync status changes. These end-points are when the metric is emitted. For
details on how "stopped interacting with the browser" is decided,
see the description of Session.TotalDuration.
Because a duration can end either because the user became inactive or
because their status changed, the distribution of individual durations
measured are unlikely to be helpful. Instead, please compare total
durations.
This metric is recorded on Win/Mac/Linux/iOS/Android.
One caveat with this metric is that if the user has multiple profiles open
at the same time, their session activity will be logged from all the
profiles, instead of only from the profile that the user is using at that
moment.
This histogram is of special interest to the chrome-analysis-team@ and
chrome-signin-team@. Do not change its semantics or retire it without
talking to them first.
</summary>
</histogram>
<histogram name="Session.TotalDuration.NotOptedInToSyncWithoutAccount"
units="ms" expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram is in the process of being replaced with the equivalent
histogram Session.TotalDurationMax1Day.NotOptedInToSyncWithoutAccount; the
only difference is the histogram bucket ranges.
The amount of active browsing time that was spent with sync disabled and
signed out of Chrome (no primary account or invalid token for the primary
account).
This time is measured from when the user starts interacting with the browser
until either they stopped interacting with the browser or their signin or
sync status changes. These end-points are when the metric is emitted. For
details on how "stopped interacting with the browser" is decided,
see the description of Session.TotalDuration.
Because a duration can end either because the user became inactive or
because their status changed, the distribution of individual durations
measured are unlikely to be helpful. Instead, please compare total
durations.
This metric is recorded on Win/Mac/Linux/iOS/Android.
One caveat with this metric is that if the user has multiple profiles open
at the same time, their session activity will be logged from all the
profiles, instead of only from the profile that the user is using at that
moment.
Note: As part of crbug/1223007, we discovered this histogram was recorded
for Guest and System profiles which wasn't intentional. This was fixed in
M93.
After launching background logging in the late February 2021 on Android,
this metric started recording for instances that were running in the
background, even if Chrome had never come to foreground. The bug was fixed
in M92, and after that the metric is recorded only after an instance becomes
foregrounded at least once. Hence a glitch is visible in the Feb-Aug 2021
data for Android.
This histogram is of special interest to the chrome-analysis-team@ and
chrome-signin-team@. Do not change its semantics or retire it without
talking to them first.
</summary>
</histogram>
<histogram name="Session.TotalDuration.OptedInToSyncWithAccount" units="ms"
expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram is in the process of being replaced with the equivalent
histogram Session.TotalDurationMax1Day.OptedInToSyncWithAccount; the only
difference is the histogram bucket ranges.
The total session duration (see Session.TotalDuration) that was spent with
sync enabled and signed in to Chrome (valid token for the primary account).
This time is measured from when the user starts interacting with the browser
until either they stopped interacting with the browser or their signin or
sync status changes. These end-points are when the metric is emitted. For
details on how "stopped interacting with the browser" is decided,
see the description of Session.TotalDuration.
Because a duration can end either because the user became inactive or
because their status changed, the distribution of individual durations
measured are unlikely to be helpful. Instead, please compare total
durations.
This metric is recorded on Win/Mac/Linux/iOS/Android.
One caveat with this metric is that if the user has multiple profiles open
at the same time, their session activity will be logged from all the
profiles, instead of only from the profile that the user is using at that
moment.
This histogram is of special interest to the chrome-analysis-team@ and
chrome-signin-team@. Do not change its semantics or retire it without
talking to them first.
</summary>
</histogram>
<histogram name="Session.TotalDuration.OptedInToSyncWithoutAccount" units="ms"
expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram is in the process of being replaced with the equivalent
histogram Session.TotalDurationMax1Day.OptedInToSyncWithoutAccount; the only
difference is the histogram bucket ranges.
The total session duration (see Session.TotalDuration) that was being spent
with sync inactive due to an invalid refresh token for the primary account
(a.k.a. sync in an auth error state). Note that in this state, the user has
already opted in to sync previously. This corresponds to the so-called
"Sync paused" state.
This can for example be the case when a user, that previously opted in to
sync, signed out of the web on desktop, changed their password, or otherwise
invalidated their signin.
This time is measured from when the user starts interacting with the browser
until either they stopped interacting with the browser or their signin or
sync status changes. These end-points are when the metric is emitted. For
details on how "stopped interacting with the browser" is decided,
see the description of Session.TotalDuration.
Because a duration can end either because the user became inactive or
because their status changed, the distribution of individual durations
measured are unlikely to be helpful. Instead, please compare total
durations.
This metric is recorded on Win/Mac/Linux/iOS/Android.
One caveat with this metric is that if the user has multiple profiles open
at the same time, their session activity will be logged from all the
profiles, instead of only from the profile that the user is using at that
moment.
After launching background logging in the late February 2021 on Android,
this metric started recording for instances that were running in the
background, even if Chrome had never come to foreground. The bug was fixed
in M92, and after that the metric is recorded only after an instance becomes
foregrounded at least once. Hence a glitch is visible in the Feb-Aug 2021
data for Android.
This histogram is of special interest to the chrome-analysis-team@ and
chrome-signin-team@. Do not change its semantics or retire it without
talking to them first.
</summary>
</histogram>
<histogram name="Session.TotalDuration.TouchMode" units="times"
expires_after="2024-01-14">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time spent in touch mode in each session (as defined by
DesktopSessionDurationTracker). Samples correspond one-to-one with
Session.TotalDuration samples.
This histogram should be analyzed with Session.TotalDuration. For example,
the sum of this histogram divided by the sum of Session.TotalDuration is the
total proportion of active browsing time spent in touch mode.
</summary>
</histogram>
<histogram name="Session.TotalDuration.WithAccount" units="ms"
expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram is in the process of being replaced with the equivalent
histogram Session.TotalDurationMax1Day.WithAccount; the only difference is
the histogram bucket ranges.
The total session duration (see Session.TotalDuration) that was spent with a
Google account signed into the content area.
The difference between the With(out)Account measurements and the
Opted(In/Out)ToSyncWith(out)Account measurements is that these metrics are
derived from the user's cookies, not their refresh tokens.
This time is measured from when the user starts interacting with the browser
until either they stopped interacting with the browser or their signin
status changes. These end-points are when the metric is emitted. For details
on how "stopped interacting with the browser" is decided, see the
description of Session.TotalDuration.
Because a duration can end either because the user became inactive or
because their status changed, the distribution of individual durations
measured are unlikely to be helpful. Instead, please compare total
durations.
This metric is recorded on Win/Mac/Linux/iOS/Android.
One caveat with this metric is that if the user has multiple profiles open
at the same time, their session activity will be logged from all the
profiles, instead of only from the profile that the user is using at that
moment.
This histogram is of special interest to the chrome-signin-team@. Do not
change its semantics or retire it without talking to them first.
</summary>
</histogram>
<histogram name="Session.TotalDuration.WithoutAccount" units="ms"
expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram is in the process of being replaced with the equivalent
histogram Session.TotalDurationMax1Day.WithoutAccount; the only difference
is the histogram bucket ranges.
The total session duration (see Session.TotalDuration) that was spent
without a Google account signed into the content area.
The difference between the With(out)Account measurements and the
Opted(In/Out)ToSyncWith(out)Account measurements is that these metrics are
derived from the user's cookies, not their refresh tokens.
This time is measured from when the user starts interacting with the browser
until either they stopped interacting with the browser or their signin
status changes. These end-points are when the metric is emitted. For details
on how "stopped interacting with the browser" is decided, see the
description of Session.TotalDuration.
Because a duration can end either because the user became inactive or
because their status changed, the distribution of individual durations
measured are unlikely to be helpful. Instead, please compare total
durations.
This metric is recorded on Win/Mac/Linux/iOS/Android.
One caveat with this metric is that if the user has multiple profiles open
at the same time, their session activity will be logged from all the
profiles, instead of only from the profile that the user is using at that
moment.
Note: As part of crbug/1223007, we discovered this histogram was recorded
for Guest and System profiles which wasn't intentional. This was fixed in
M93.
This histogram is of special interest to the chrome-signin-team@. Do not
change its semantics or retire it without talking to them first.
</summary>
</histogram>
<histogram name="Session.TotalDurationMax1Day" units="ms" expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The length of a session (launch/foregrounding to quitting/backgrounding) in
milliseconds, recorded at the end of the session. See Session.TotalDuration
for details on how the end of a session is decided. The histogram
Session.TotalDuration records exactly the same values as this histogram,
just with a smaller maximum value. (That one's maximum is 1 hour.)
This histogram is of special interest to the chrome-analysis-team@. Do not
change its semantics or retire it without talking to them first.
</summary>
</histogram>
<histogram name="Session.TotalDurationMax1Day.NotOptedInToSyncWithAccount"
units="ms" expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The amount of active browsing time that was spent with sync disabled while
having a valid refresh token for the primary account. This corresponds to
the case when the user did not opt in to sync, or sync is disabled due to
another reason, e.g. enterprise policy. Note that auth errors are not
counted here, but rather in
Session.TotalDurationMax1Day.NotOptedInToSyncWithAccountInAuthError.
This time is measured from when the user starts interacting with the browser
until either they stopped interacting with the browser or their signin or
sync status changes. These end-points are when the metric is emitted. For
details on how "stopped interacting with the browser" is decided,
see the description of Session.TotalDuration.
Because a duration can end either because the user became inactive or
because their status changed, the distribution of individual durations
measured are unlikely to be helpful. Instead, please compare total
durations.
This metric is recorded on Win/Mac/Linux/iOS/Android.
One caveat with this metric is that if the user has multiple profiles open
at the same time, their session activity will be logged from all the
profiles, instead of only from the profile that the user is using at that
moment.
This histogram is of special interest to the chrome-analysis-team@ and
chrome-signin-team@. Do not change its semantics or retire it without
talking to them first.
</summary>
</histogram>
<histogram
name="Session.TotalDurationMax1Day.NotOptedInToSyncWithAccountInAuthError"
units="ms" expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The amount of active browsing time that was spent with sync disabled while
having a primary account with an invalid refresh token. This corresponds to
the case when the user did not opt in to sync, or sync is disabled due to
another reason, e.g. enterprise policy.
This time is measured from when the user starts interacting with the browser
until either they stopped interacting with the browser or their signin or
sync status changes. These end-points are when the metric is emitted. For
details on how "stopped interacting with the browser" is decided,
see the description of Session.TotalDuration.
Because a duration can end either because the user became inactive or
because their status changed, the distribution of individual durations
measured are unlikely to be helpful. Instead, please compare total
durations.
This metric is recorded on Win/Mac/Linux/iOS/Android.
One caveat with this metric is that if the user has multiple profiles open
at the same time, their session activity will be logged from all the
profiles, instead of only from the profile that the user is using at that
moment.
This histogram is of special interest to the chrome-analysis-team@ and
chrome-signin-team@. Do not change its semantics or retire it without
talking to them first.
</summary>
</histogram>
<histogram name="Session.TotalDurationMax1Day.NotOptedInToSyncWithoutAccount"
units="ms" expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The amount of active browsing time that was spent with sync disabled and
signed out of Chrome (no primary account or invalid token for the primary
account).
This time is measured from when the user starts interacting with the browser
until either they stopped interacting with the browser or their signin or
sync status changes. These end-points are when the metric is emitted. For
details on how "stopped interacting with the browser" is decided,
see the description of Session.TotalDuration.
Because a duration can end either because the user became inactive or
because their status changed, the distribution of individual durations
measured are unlikely to be helpful. Instead, please compare total
durations.
This metric is recorded on Win/Mac/Linux/iOS/Android.
One caveat with this metric is that if the user has multiple profiles open
at the same time, their session activity will be logged from all the
profiles, instead of only from the profile that the user is using at that
moment.
Note: As part of crbug/1223007, we discovered this histogram was recorded
for Guest and System profiles which wasn't intentional. This was fixed in
M93.
After launching background logging in the late February 2021 on Android,
this metric started recording for instances that were running in the
background, even if Chrome had never come to foreground. The bug was fixed
in M92, and after that the metric is recorded only after an instance becomes
foregrounded at least once. Hence a glitch is visible in the Feb-Aug 2021
data for Android.
This histogram is of special interest to the chrome-analysis-team@ and
chrome-signin-team@. Do not change its semantics or retire it without
talking to them first.
</summary>
</histogram>
<histogram name="Session.TotalDurationMax1Day.OptedInToSyncWithAccount"
units="ms" expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The total session duration (see Session.TotalDuration) that was spent with
sync enabled and signed in to Chrome (valid token for the primary account).
This time is measured from when the user starts interacting with the browser
until either they stopped interacting with the browser or their signin or
sync status changes. These end-points are when the metric is emitted. For
details on how "stopped interacting with the browser" is decided,
see the description of Session.TotalDuration.
Because a duration can end either because the user became inactive or
because their status changed, the distribution of individual durations
measured are unlikely to be helpful. Instead, please compare total
durations.
This metric is recorded on Win/Mac/Linux/iOS/Android.
One caveat with this metric is that if the user has multiple profiles open
at the same time, their session activity will be logged from all the
profiles, instead of only from the profile that the user is using at that
moment.
This histogram is of special interest to the chrome-analysis-team@ and
chrome-signin-team@. Do not change its semantics or retire it without
talking to them first.
</summary>
</histogram>
<histogram name="Session.TotalDurationMax1Day.OptedInToSyncWithoutAccount"
units="ms" expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The total session duration (see Session.TotalDuration) that was being spent
with sync inactive due to an invalid refresh token for the primary account
(a.k.a. sync in an auth error state). Note that in this state, the user has
already opted in to sync previously. This corresponds to the so-called
"Sync paused" state.
This can for example be the case when a user, that previously opted in to
sync, signed out of the web on desktop, changed their password, or otherwise
invalidated their signin.
This time is measured from when the user starts interacting with the browser
until either they stopped interacting with the browser or their signin or
sync status changes. These end-points are when the metric is emitted. For
details on how "stopped interacting with the browser" is decided,
see the description of Session.TotalDuration.
Because a duration can end either because the user became inactive or
because their status changed, the distribution of individual durations
measured are unlikely to be helpful. Instead, please compare total
durations.
This metric is recorded on Win/Mac/Linux/iOS/Android.
One caveat with this metric is that if the user has multiple profiles open
at the same time, their session activity will be logged from all the
profiles, instead of only from the profile that the user is using at that
moment.
After launching background logging in the late February 2021 on Android,
this metric started recording for instances that were running in the
background, even if Chrome had never come to foreground. The bug was fixed
in M92, and after that the metric is recorded only after an instance becomes
foregrounded at least once. Hence a glitch is visible in the Feb-Aug 2021
data for Android.
This histogram is of special interest to the chrome-analysis-team@ and
chrome-signin-team@. Do not change its semantics or retire it without
talking to them first.
</summary>
</histogram>
<histogram name="Session.TotalDurationMax1Day.WithAccount" units="ms"
expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The total session duration (see Session.TotalDuration) that was spent with a
Google account signed into the content area.
The difference between the With(out)Account measurements and the
Opted(In/Out)ToSyncWith(out)Account measurements is that these metrics are
derived from the user's cookies, not their refresh tokens.
This time is measured from when the user starts interacting with the browser
until either they stopped interacting with the browser or their signin
status changes. These end-points are when the metric is emitted. For details
on how "stopped interacting with the browser" is decided, see the
description of Session.TotalDuration.
Because a duration can end either because the user became inactive or
because their status changed, the distribution of individual durations
measured are unlikely to be helpful. Instead, please compare total
durations.
This metric is recorded on Win/Mac/Linux/iOS/Android.
One caveat with this metric is that if the user has multiple profiles open
at the same time, their session activity will be logged from all the
profiles, instead of only from the profile that the user is using at that
moment.
This histogram is of special interest to the chrome-signin-team@. Do not
change its semantics or retire it without talking to them first.
</summary>
</histogram>
<histogram name="Session.TotalDurationMax1Day.WithoutAccount" units="ms"
expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The total session duration (see Session.TotalDuration) that was spent
without a Google account signed into the content area.
The difference between the With(out)Account measurements and the
Opted(In/Out)ToSyncWith(out)Account measurements is that these metrics are
derived from the user's cookies, not their refresh tokens.
This time is measured from when the user starts interacting with the browser
until either they stopped interacting with the browser or their signin
status changes. These end-points are when the metric is emitted. For details
on how "stopped interacting with the browser" is decided, see the
description of Session.TotalDuration.
Because a duration can end either because the user became inactive or
because their status changed, the distribution of individual durations
measured are unlikely to be helpful. Instead, please compare total
durations.
This metric is recorded on Win/Mac/Linux/iOS/Android.
One caveat with this metric is that if the user has multiple profiles open
at the same time, their session activity will be logged from all the
profiles, instead of only from the profile that the user is using at that
moment.
Note: As part of crbug/1223007, we discovered this histogram was recorded
for Guest and System profiles which wasn't intentional. This was fixed in
M93.
This histogram is of special interest to the chrome-signin-team@. Do not
change its semantics or retire it without talking to them first.
</summary>
</histogram>
<histogram name="Session.TotalDurationMax1Day.{HistorySyncState}" units="ms"
expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The amount of active browsing time that was spent with history sync
{HistorySyncState}.
History sync counts as enabled if EITHER the user opted in to sync and did
not disable history, OR (on supported platforms) the user is signed-in (but
not syncing) and specifically opted in to history. Either way, if history is
disabled by enterprise policy, that counts as NOT enabled.
This time is measured from when the user starts interacting with the browser
until either they stopped interacting with the browser or their history sync
status changes. These end-points are when the metric is emitted. For details
on how "stopped interacting with the browser" is decided, see the
description of Session.TotalDuration.
Because a duration can end either because the user became inactive or
because their status changed, the distribution of individual durations
measured are unlikely to be helpful. Instead, please compare total
durations.
This metric is recorded on Win/Mac/Linux/iOS/Android.
One caveat with this metric is that if the user has multiple profiles open
at the same time, their session activity will be logged from all the
profiles, instead of only from the profile that the user is using at that
moment.
</summary>
<token key="HistorySyncState">
<variant name="WithHistorySync" summary="enabled"/>
<variant name="WithoutHistorySync" summary="NOT enabled"/>
</token>
</histogram>
<histogram name="Session.TotalDurationMax1Day.{MsbbState}" units="ms"
expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The amount of active browsing time that was spent with "Make Searches
and Browsing Better" {MsbbState}.
This time is measured from when the user starts interacting with the browser
until either they stopped interacting with the browser or their history sync
status changes. These end-points are when the metric is emitted. For details
on how "stopped interacting with the browser" is decided, see the
description of Session.TotalDuration.
Because a duration can end either because the user became inactive or
because their status changed, the distribution of individual durations
measured are unlikely to be helpful. Instead, please compare total
durations.
This metric is recorded on Win/Mac/Linux/iOS/Android.
One caveat with this metric is that if the user has multiple profiles open
at the same time, their session activity will be logged from all the
profiles, instead of only from the profile that the user is using at that
moment.
</summary>
<token key="MsbbState">
<variant name="WithMsbb" summary="enabled"/>
<variant name="WithoutMsbb" summary="NOT enabled"/>
</token>
</histogram>
<histogram name="Session.TotalNewDefaultSearchEngineCount" units="count"
expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of times a user navigates to their default search engine per
session, resulting in the creation of a new renderer process.
This count measures instances where a user's navigation to their default
search engine triggers the browser to spawn a new renderer process. It
specifically excludes cases where continuous searches occur within the same
renderer, as these do not necessitate new renderer creation. The metric is
emitted at the end of each session.
The primary goal of this metric is to quantify how frequently, within a
given session, the browser needs to create a new renderer process
specifically for handling default search engine interactions.
This metric is recorded on Desktop.
One potential issue to consider is that if the user has multiple profiles
open at once, each profile will report its navigations to its own default
search engine, potentially inflating the overall count.
</summary>
</histogram>
<histogram name="Session.WebState.CustomWebViewSerializedSize" units="KB"
expires_after="2024-10-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The size of the data used to persist each WKWebView's serialized session
history. It's recorded every time the WKWebView is serialized, which happens
on page loads, tab changes and app backgrounding.
</summary>
</histogram>
<histogram name="Session.WebStates.AllSerializedCertPolicyCachesSize"
units="KB" expires_after="2024-10-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The size of all cert policy caches for all open tabs. Recorded when
SessionServiceIOS encodes the data, which happens on page loads, tab changes
and app backgrounding.
</summary>
</histogram>
<histogram name="Session.WebStates.ArchivedDataWithRootObjectTime" units="ms"
expires_after="2024-10-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time needed to convert iOS session webState data into something that can
be written to a file. It's recorded every time the file is written to
storage, which happens on page loads, tab changes and app backgrounding. The
time does not include the file writing.
</summary>
</histogram>
<histogram name="Session.WebStates.LoadingTimeOnMainThread" units="ms"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time spent on the main thread to restore a session as a continuous task.
It's recorded every time a session is loaded (which happens on application
startup or when the user re-open a recently closed windows on iPad). This
includes loading the data from disk as this happens on the main thread.
Large values for this histogram is indicative of jank for the user as the
main thread is blocked for the duration reported in the histogram in one
giant operation.
</summary>
</histogram>
<histogram name="Session.WebStates.NativeRestoreHasFetchers"
enum="BooleanHasFetchers" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether the WKWebView native session restore has any fetchers or
not. Recorded each time a native session restore is attempted.
</summary>
</histogram>
<histogram name="Session.WebStates.NativeRestoreSession" enum="BooleanSuccess"
expires_after="2025-02-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether generic WKWebView native session restore succeeded in
creating navigation items. Recorded each time a generic native session
restore is attempted (if data exists).
</summary>
</histogram>
<histogram name="Session.WebStates.NativeRestoreSessionFromCache"
enum="BooleanSuccess" expires_after="2025-02-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether WKWebView native session restore from cached data succeeded
in creating navigation items. Recorded each time a cached native session
restore is attempted (if data exists).
</summary>
</histogram>
<histogram name="Session.WebStates.NativeRestoreSessionFromCacheHasData"
enum="BooleanHasData" expires_after="2025-02-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether the WKWebView native session restore from cached data
fetcher has data or not. Recorded each time a cached native session restore
is attempted.
</summary>
</histogram>
<histogram name="Session.WebStates.NativeRestoreSessionHasData"
enum="BooleanHasData" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether the generic WKWebView native session restore fetcher has
data or not. Recorded each time a generic native session restore is
attempted.
</summary>
</histogram>
<histogram name="Session.WebStates.ReadFromFileTime" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time needed to read iOS session webState data from a file. It's recorded
every time a webState is restored, typically on app startup.
</summary>
</histogram>
<histogram name="Session.WebStates.SavingTimeOnMainThread" units="ms"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time spend on the main thread to save a session as a continuous task.
It's recorded every time a session is saved (which is scheduled on page
loads, tab changes and app backgrounding, but repeating events may be
collapsed). This does not include the time spent writing the file on disk
(since it is done on a background sequence).
Large values for this histogram is indicative of jank for the user as the
main thread is blocked for the duration reported in the histogram in one
giant operation.
</summary>
</histogram>
<histogram name="Session.WebStates.SerializedCertPolicyCacheSize" units="KB"
expires_after="2024-10-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The size of a single cert policy cache for one tab. Recorded when
CRWNavigationItemStorage encodes the data, which happens on page loads, tab
changes and app backgrounding.
</summary>
</histogram>
<histogram name="Session.WebStates.SerializedSize" units="KB"
expires_after="2024-10-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The size of the file used to persist iOS session history. It's recorded
every time the file is written to storage, which happens on page loads, tab
changes and app backgrounding.
</summary>
</histogram>
<histogram name="Session.WebStates.StorageFormat" enum="SessionStorageFormat"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The format used for the session storage. Recorded during every startup of
the application (after the migration if one is needed). Corresponds to the
actual format of the storage.
</summary>
</histogram>
<histogram name="Session.WebStates.StorageMigrationDuration" units="ms"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time spent to migrate the session storage. This corresponds to the time
the user has to wait during the application startup (and includes the time
spent to wait for the background processing to complete).
This is recorded only when the storage may require migration (either because
the storage needs to be converted or the format is unknown).
The application is unresponsive (but won't be killed by the watchdog) during
the migration, so large value for this histogram are bad.
</summary>
</histogram>
<histogram name="Session.WebStates.StorageMigrationStatus"
enum="SessionStorageMigrationStatus" expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The status of the session storage format migration (from legacy to optimized
or from optimized to legacy). Recorded during every startup of the
application (except if the storage format is undetermined), even if no
migration is attempted (in that case, the status of the previous migration
attempt will be reported).
See go/bling-session-restoration for information about the session storage
refactoring. This details the different storage format.
</summary>
</histogram>
<histogram name="Session.WebStates.WriteToFileTime" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time needed to write iOS session webState data to a file. It's recorded
every time the file is written to storage, which happens on page loads, tab
changes and app backgrounding.
</summary>
</histogram>
<histogram name="SessionRestore.ForegroundTabFirstPaint4" units="ms"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<improvement direction="LOWER_IS_BETTER"/>
<summary>
The time from SessionRestore start until a restored tab's first paint.
Recorded when a restored tab stays visible from the beginning of session
restore until its first paint, and no non-restored tab is painted during
that time. See SessionRestore.ForegroundTabFirstPaint4.FinishReason for when
this is not recorded.
Warning: this histogram was expired from 2022-10-23 to 2023-02-22; data may
be missing.
</summary>
</histogram>
<histogram name="SessionRestore.ForegroundTabFirstPaint4.FinishReason"
enum="SessionRestoreFinishReason" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The reason for which attempt to record
SessionRestore.ForegroundTabFirstPaint4 was deemed complete. Logged once per
session restore.
Warning: this histogram was expired from 2022-10-23 to 2024-02-15; data may
be missing.
</summary>
</histogram>
<histogram name="SessionRestore.UnrecoverableWriteErrorCount"
units="operations" expires_after="2022-08-07">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when SessionService is shutdown (which generally corresponds to
when chrome is shutdown). The count is the number of times a write error
happened at a time when it could not immediately be handled.
</summary>
</histogram>
<histogram name="SessionStorageContext.CachePurgedInKB" units="KB"
expires_after="2024-12-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Total size of the HTML5 SessionStorage browser-side cache purged in KB,
recorded when memory pressure signal is triggered or cache size hit the
limits.
Warning: Histogram expired between M95-M110. Data may be missing.
</summary>
</histogram>
<histogram name="SessionStorageContext.CacheSizeInKB" units="KB"
expires_after="2024-12-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Total size of the HTML5 SessionStorage databases in KB in the browser-side
cache. Recorded each time a new database is opened in memory.
Warning: Histogram expired between M95-M110. Data may be missing.
</summary>
</histogram>
<histogram name="SessionStorageContext.CommitResult" enum="LevelDBStatus"
expires_after="2024-12-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The result of an attempt to commit SessionStorage data to the database.
Recorded after the commit operation has completed.
Warning: Histogram expired between M95-M110. Data may be missing.
</summary>
</histogram>
<histogram name="SessionStorageContext.DatabaseOpenError" enum="LevelDBStatus"
expires_after="2024-12-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The result of a failed attempt to open a LevelDB database for
SessionStorage.
Warning: Histogram expired between M95-M110. Data may be missing.
</summary>
</histogram>
<histogram name="SessionStorageContext.DatabaseOpenError.Disk"
enum="LevelDBStatus" expires_after="2024-12-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The status of a failed attempt to open a LevelDB database for SessionStorage
on disk. Recorded when the operation returns and error.
Warning: Histogram expired between M95-M110. Data may be missing.
</summary>
</histogram>
<histogram name="SessionStorageContext.DatabaseOpenError.Memory"
enum="LevelDBStatus" expires_after="2024-12-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The status of a failed attempt to open a LevelDB database for SessionStorage
in memory. Recorded when the operation returns an error.
Warning: Histogram expired between M95-M110. Data may be missing.
</summary>
</histogram>
<histogram name="SessionStorageContext.DestroyDBResult" enum="LevelDBStatus"
expires_after="2024-12-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The result of attempting to delete the SessionStorage database. Recorded
when the operation completes and returns a status.
Warning: Histogram expired between M95-M110. Data may be missing.
</summary>
</histogram>
<histogram name="SessionStorageContext.OpenError" enum="LocalStorageOpenError"
expires_after="2024-12-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The reason opening the LevelDB database that backs SessionStorage failed.
Recorded after an error is encountered after an open operation.
Warning: Histogram expired between M95-M110. Data may be missing.
</summary>
</histogram>
<histogram base="true" name="SessionStorageContext.OpenResultAfter"
enum="LocalStorageOpenError" expires_after="2024-12-01">
<!-- Name completed by histogram_suffixes name="SessionStorageContextOpenReasons" -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The result of opening the LevelDB database that backs SessionStorage.
Recorded after an open operation attempt returns an error.
Warning: Histogram expired between M95-M110. Data may be missing.
</summary>
</histogram>
<histogram name="SessionStorageContext.ReadNamespacesError"
enum="LevelDBStatus" expires_after="2024-12-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The reason reading the namespaces metadata of the SessionStorage database
failed. Recorded after the operation returns an error.
Warning: Histogram expired between M95-M110. Data may be missing.
</summary>
</histogram>
<histogram name="SessionStorageContext.ReadNextMapIdError" enum="LevelDBStatus"
expires_after="2024-12-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The reason reading the next data map id metadata of the SessionStorage
database failed. Recorded after the operation returns an error.
Warning: Histogram expired between M95-M110. Data may be missing.
</summary>
</histogram>
<histogram name="SessionStorageContext.ReadVersionError" enum="LevelDBStatus"
expires_after="2024-12-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The reason reading the schema version of the SessionStorage database failed.
Warning: Histogram expired between M95-M110. Data may be missing.
</summary>
</histogram>
<histogram name="SessionStorageDatabase.Open" enum="SessionStorageDatabaseOpen"
expires_after="never">
<!-- expires-never: core storage metric; consumed in separate dashboard (go/chrome-storage-dashboard) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The result (success, failure, or database recreated) of trying to open the
LevelDB database for sessionStorage.
</summary>
</histogram>
</histograms>
</histogram-configuration>