Commit 14125c29 authored by Muyao Xu's avatar Muyao Xu Committed by Commit Bot

[Cast] Add UKM Metrics for Site-initiated Mirroring

Add UKM metrics to record the website that initiated a mirroring session
and whether audio playback happens on the sender device (used on Meet)
or the receiver device (used on Slides).

Bug: b/158093883, 1095967
Change-Id: I79ddbc7b3e20b39ad68dc2e821005d0c7d550fca
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2251201Reviewed-by: default avatarRobert Kaplow <rkaplow@chromium.org>
Reviewed-by: default avatarTakumi Fujimoto <takumif@chromium.org>
Commit-Queue: Muyao Xu <muyaoxu@google.com>
Cr-Commit-Position: refs/heads/master@{#782615}
parent 3f601692
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/common/media_router/media_source.h" #include "chrome/common/media_router/media_source.h"
#include "chrome/common/media_router/providers/cast/cast_media_source.h"
#include "chrome/grit/chromium_strings.h" #include "chrome/grit/chromium_strings.h"
#include "components/sessions/content/session_tab_helper.h" #include "components/sessions/content/session_tab_helper.h"
#include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_task_traits.h"
...@@ -296,6 +297,11 @@ void MediaRouterMojoImpl::CreateRoute(const MediaSource::Id& source_id, ...@@ -296,6 +297,11 @@ void MediaRouterMojoImpl::CreateRoute(const MediaSource::Id& source_id,
MediaRouterMojoMetrics::RecordTabMirroringMetrics(web_contents); MediaRouterMojoMetrics::RecordTabMirroringMetrics(web_contents);
} }
if (IsSiteInitiatedMirroringSource(source_id)) {
MediaRouterMojoMetrics::RecordSiteInitiatedMirroringStarted(web_contents,
source);
}
MediaRouterMetrics::RecordMediaSinkType(sink->icon_type()); MediaRouterMetrics::RecordMediaSinkType(sink->icon_type());
const MediaRouteProviderId provider_id = FixProviderId(sink->provider_id()); const MediaRouteProviderId provider_id = FixProviderId(sink->provider_id());
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_functions.h"
#include "base/metrics/histogram_macros.h" #include "base/metrics/histogram_macros.h"
#include "base/version.h" #include "base/version.h"
#include "chrome/common/media_router/providers/cast/cast_media_source.h"
#include "components/ukm/content/source_url_recorder.h" #include "components/ukm/content/source_url_recorder.h"
#include "components/version_info/version_info.h" #include "components/version_info/version_info.h"
#include "extensions/common/extension.h" #include "extensions/common/extension.h"
...@@ -137,6 +138,20 @@ void MediaRouterMojoMetrics::RecordTabMirroringMetrics( ...@@ -137,6 +138,20 @@ void MediaRouterMojoMetrics::RecordTabMirroringMetrics(
.Record(ukm::UkmRecorder::Get()); .Record(ukm::UkmRecorder::Get());
} }
// static
void MediaRouterMojoMetrics::RecordSiteInitiatedMirroringStarted(
content::WebContents* web_contents,
const MediaSource& media_source) {
ukm::SourceId source_id =
ukm::GetSourceIdForWebContentsDocument(web_contents);
auto cast_source = CastMediaSource::FromMediaSource(media_source);
if (cast_source) {
ukm::builders::MediaRouter_SiteInitiatedMirroringStarted(source_id)
.SetAllowAudioCapture(cast_source->allow_audio_capture())
.Record(ukm::UkmRecorder::Get());
}
}
// static // static
MediaRouteProviderVersion MediaRouterMojoMetrics::GetMediaRouteProviderVersion( MediaRouteProviderVersion MediaRouterMojoMetrics::GetMediaRouteProviderVersion(
const base::Version& extension_version, const base::Version& extension_version,
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "base/gtest_prod_util.h" #include "base/gtest_prod_util.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "chrome/common/media_router/media_route_provider_helper.h" #include "chrome/common/media_router/media_route_provider_helper.h"
#include "chrome/common/media_router/media_source.h"
#include "chrome/common/media_router/route_request_result.h" #include "chrome/common/media_router/route_request_result.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
...@@ -127,6 +128,11 @@ class MediaRouterMojoMetrics { ...@@ -127,6 +128,11 @@ class MediaRouterMojoMetrics {
// tab-mirrored. // tab-mirrored.
static void RecordTabMirroringMetrics(content::WebContents* web_contents); static void RecordTabMirroringMetrics(content::WebContents* web_contents);
// Records the audio capture setting of a site-initiated mirroring session.
static void RecordSiteInitiatedMirroringStarted(
content::WebContents* web_contents,
const MediaSource& media_source);
private: private:
FRIEND_TEST_ALL_PREFIXES(MediaRouterMojoMetricsTest, FRIEND_TEST_ALL_PREFIXES(MediaRouterMojoMetricsTest,
TestGetMediaRouteProviderVersion); TestGetMediaRouteProviderVersion);
......
...@@ -6359,6 +6359,29 @@ be describing additional metrics about the same event. ...@@ -6359,6 +6359,29 @@ be describing additional metrics about the same event.
</metric> </metric>
</event> </event>
<event name="MediaRouter.SiteInitiatedMirroringStarted">
<owner>muyaoxu@google.com</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
Recorded whenever user starts a site-initiated mirroring session via Media
Router.
</summary>
<metric name="AllowAudioCapture" enum="BooleanAllowed">
<summary>
Whether audio capture is allowed in the cast session. If allowed, audio
playback will happen on the receiver side. If not allowed, audio playback
will happen on the sender side.
</summary>
<aggregation>
<history>
<statistics>
<enumeration/>
</statistics>
</history>
</aggregation>
</metric>
</event>
<event name="MediaRouter.TabMirroringStarted"> <event name="MediaRouter.TabMirroringStarted">
<owner>takumif@chromium.org</owner> <owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner> <owner>openscreen-eng@google.com</owner>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment