Add various time related AutoPip histograms with higher max value
The new histograms are similar to the existing ones but with a higher
max and bucket, to capture the overall distribution.
Bug: 368058093
Change-Id: I34b3e6dfed3e56df6e9807a1c0f74559cb28510b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6467654
Reviewed-by: Evan Liu <evliu@google.com>
Reviewed-by: Tommy Steimel <steimel@chromium.org>
Commit-Queue: Benjamin Keen <bkeen@google.com>
Cr-Commit-Position: refs/heads/main@{#1449533}
diff --git a/chrome/browser/picture_in_picture/auto_picture_in_picture_tab_helper.cc b/chrome/browser/picture_in_picture/auto_picture_in_picture_tab_helper.cc
index b1398b2..8945a13 100644
--- a/chrome/browser/picture_in_picture/auto_picture_in_picture_tab_helper.cc
+++ b/chrome/browser/picture_in_picture/auto_picture_in_picture_tab_helper.cc
@@ -127,6 +127,10 @@
"Media.AutoPictureInPicture.EnterPictureInPicture.AutomaticReason."
"VideoConferencing.TotalTime",
total_pip_time, base::Milliseconds(1), base::Minutes(2), 50);
+ UMA_HISTOGRAM_CUSTOM_TIMES(
+ "Media.AutoPictureInPicture.EnterPictureInPicture.AutomaticReason."
+ "VideoConferencing.TotalTimeV2",
+ total_pip_time, base::Milliseconds(1), base::Hours(10), 100);
AccumulateTotalPipTimeForSession(total_pip_time,
/*is_video_conferencing=*/true);
} else if (auto_pip_trigger_reason_ ==
@@ -135,6 +139,10 @@
"Media.AutoPictureInPicture.EnterPictureInPicture.AutomaticReason."
"MediaPlayback.TotalTime",
total_pip_time, base::Milliseconds(1), base::Minutes(2), 50);
+ UMA_HISTOGRAM_CUSTOM_TIMES(
+ "Media.AutoPictureInPicture.EnterPictureInPicture.AutomaticReason."
+ "MediaPlayback.TotalTimeV2",
+ total_pip_time, base::Milliseconds(1), base::Hours(10), 100);
AccumulateTotalPipTimeForSession(total_pip_time,
/*is_video_conferencing=*/false);
}
@@ -152,6 +160,11 @@
"VideoConferencing.TotalTimeForSession",
total_video_conferencing_pip_time_for_session_.value(),
base::Milliseconds(1), base::Minutes(2), 50);
+ base::UmaHistogramCustomTimes(
+ "Media.AutoPictureInPicture.EnterPictureInPicture.AutomaticReason."
+ "VideoConferencing.TotalTimeForSessionV2",
+ total_video_conferencing_pip_time_for_session_.value(),
+ base::Milliseconds(1), base::Hours(10), 100);
}
if (total_media_playback_pip_time_for_session_) {
@@ -160,6 +173,11 @@
"MediaPlayback.TotalTimeForSession",
total_media_playback_pip_time_for_session_.value(),
base::Milliseconds(1), base::Minutes(2), 50);
+ base::UmaHistogramCustomTimes(
+ "Media.AutoPictureInPicture.EnterPictureInPicture.AutomaticReason."
+ "MediaPlayback.TotalTimeForSessionV2",
+ total_media_playback_pip_time_for_session_.value(),
+ base::Milliseconds(1), base::Hours(10), 100);
}
total_video_conferencing_pip_time_for_session_ = std::nullopt;
diff --git a/chrome/browser/picture_in_picture/picture_in_picture_window_manager_uma_helper.cc b/chrome/browser/picture_in_picture/picture_in_picture_window_manager_uma_helper.cc
index adf08da..1b95f10 100644
--- a/chrome/browser/picture_in_picture/picture_in_picture_window_manager_uma_helper.cc
+++ b/chrome/browser/picture_in_picture/picture_in_picture_window_manager_uma_helper.cc
@@ -34,6 +34,9 @@
UMA_HISTOGRAM_CUSTOM_TIMES("Media.PictureInPicture.Window.TotalTime",
total_pip_time, base::Milliseconds(1),
base::Minutes(2), 50);
+ UMA_HISTOGRAM_CUSTOM_TIMES("Media.PictureInPicture.Window.TotalTimeV2",
+ total_pip_time, base::Milliseconds(1),
+ base::Hours(10), 100);
}
void PictureInPictureWindowManagerUmaHelper::SetClockForTest(
diff --git a/content/browser/media/session/media_session_uma_helper.cc b/content/browser/media/session/media_session_uma_helper.cc
index 2c877d98..a112520 100644
--- a/content/browser/media/session/media_session_uma_helper.cc
+++ b/content/browser/media/session/media_session_uma_helper.cc
@@ -58,6 +58,10 @@
UMA_HISTOGRAM_LONG_TIMES("Media.Session.PictureInPicture.TotalTimeForSession",
total_pip_time_for_session_.value());
+ UMA_HISTOGRAM_CUSTOM_TIMES(
+ "Media.Session.PictureInPicture.TotalTimeForSessionV2",
+ total_pip_time_for_session_.value(), base::Milliseconds(1),
+ base::Hours(10), 100);
total_pip_time_for_session_ = std::nullopt;
}
diff --git a/tools/metrics/histograms/metadata/media/histograms.xml b/tools/metrics/histograms/metadata/media/histograms.xml
index 4ad15ea..60e8a85 100644
--- a/tools/metrics/histograms/metadata/media/histograms.xml
+++ b/tools/metrics/histograms/metadata/media/histograms.xml
@@ -1997,6 +1997,56 @@
</token>
</histogram>
+<histogram
+ name="Media.AutoPictureInPicture.EnterPictureInPicture.AutomaticReason.{AutomaticReason}.TotalTimeForSessionV2"
+ units="ms" expires_after="2025-09-14">
+ <owner>bkeen@google.com</owner>
+ <owner>media-dev-uma@chromium.org</owner>
+ <summary>
+ Total time spent accross all Picture in Picture windows opened by the
+ `AutoPictureInPictureTabHelper`, for automatic picture in picture reason
+ "{AutomaticReason}". The timer starts counting every time the
+ AutoPictureInPictureTabHelper calls `EnterAutoPictureInPicture`; the time is
+ accumulated any time the tab helper opens and subsequently closes a picture
+ in picture window. The total picture in picture time is recorded when the
+ `AutoPictureInPictureTabHelper` is destroyed. This metric does not
+ differentiate between the Picture in Picture window types (document vs
+ video).
+
+ Similar to
+ Media.AutoPictureInPicture.EnterPictureInPicture.AutomaticReason.{AutomaticReason}.TotalTimeForSession,
+ but with a maximum of 10 hours and a bucket size of 100.
+ </summary>
+ <token key="AutomaticReason">
+ <variant name="MediaPlayback"/>
+ <variant name="VideoConferencing"/>
+ </token>
+</histogram>
+
+<histogram
+ name="Media.AutoPictureInPicture.EnterPictureInPicture.AutomaticReason.{AutomaticReason}.TotalTimeV2"
+ units="ms" expires_after="2025-09-14">
+ <owner>bkeen@google.com</owner>
+ <owner>media-dev-uma@chromium.org</owner>
+ <summary>
+ Total time spent on a Picture in Picture window for automatic picture in
+ picture reason "{AutomaticReason}". The timer starts counting
+ every time the AutoPictureInPictureTabHelper calls
+ `EnterAutoPictureInPicture`; the time elapsed is recorded when the Picture
+ in Picture window is closed. This metric is recorded regardless of the
+ Picture in Picture window type (document vs video), and of the reason for
+ closing the window (UI interaction, returning back to opener tab, etc.).
+
+ Similar to
+ Media.AutoPictureInPicture.EnterPictureInPicture.AutomaticReason.{AutomaticReason}.TotalTime,
+ but with a maximum of 10 hours and a bucket size of 100.
+ </summary>
+ <token key="AutomaticReason">
+ <variant name="MediaPlayback"/>
+ <variant name="VideoConferencing"/>
+ </token>
+</histogram>
+
<histogram name="Media.AutoPictureInPicture.PromptResultV2"
enum="MediaAutoPictureInPicturePromptResult" expires_after="2025-10-12">
<owner>steimel@chromium.org</owner>
@@ -4898,6 +4948,24 @@
</summary>
</histogram>
+<histogram name="Media.PictureInPicture.Window.TotalTimeV2" units="ms"
+ expires_after="2025-08-31">
+ <owner>bkeen@google.com</owner>
+ <owner>media-dev-uma@chromium.org</owner>
+ <summary>
+ Total time spent on a Picture in Picture window. The timer starts counting
+ every time the Picture in Picture window manager receives a call to enter
+ Picture in Picture; the time elapsed is recorded when the Picture in Picture
+ window manager receives a call to exit Picture in Picture. This metric is
+ recorded regardless of the Picture in Picture window type (document vs
+ video), and of the reason for closing the window (UI interaction, returning
+ back to opener tab, etc.).
+
+ Similar to Media.PictureInPicture.Window.TotalTime, but with a maximum of 10
+ hours and a bucket size of 100.
+ </summary>
+</histogram>
+
<histogram name="Media.PipelineStatus.AudioVideo.{VideoCodec}.{Pipeline}"
enum="PipelineStatus" expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
@@ -5605,6 +5673,24 @@
</summary>
</histogram>
+<histogram name="Media.Session.PictureInPicture.TotalTimeForSessionV2"
+ units="ms" expires_after="2025-10-05">
+ <owner>bkeen@google.com</owner>
+ <owner>media-dev-uma@chromium.org</owner>
+ <summary>
+ Time during which Picture in Picture windows have been open during a
+ MediaSession. The time spent is accumulated every time a Picture in Picture
+ window is opened using MediaSession and subsequently closed; The total time
+ is recorded when the MediaSession is destroyed. This metric is recorded
+ regardless of the Picture in Picture window type (document vs video), and of
+ the reason for closing the window (UI interaction, returning back to opener
+ tab, etc.).
+
+ Similar to Media.Session.PictureInPicture.TotalTimeForSession, but with a
+ maximum of 10 hours and a bucket size of 100.
+ </summary>
+</histogram>
+
<histogram name="Media.Session.Play" enum="MediaSessionActionSource"
expires_after="2024-05-05">
<owner>steimel@chromium.org</owner>