Commit 6f5262dd authored by zqzhang's avatar zqzhang Committed by Commit bot

[Autoplay] Add histogram metrics for cross-origin autoplay muted experiment

We have already landed rappor metrics for cross-origin autoplay muted
experiment, we should land corresponding histogram metrics as well.

BUG=672526

Review-Url: https://codereview.chromium.org/2576463002
Cr-Commit-Position: refs/heads/master@{#438222}
parent 0781d318
......@@ -97,6 +97,11 @@ void AutoplayUmaHelper::onAutoplayInitiated(AutoplaySource source) {
void AutoplayUmaHelper::recordCrossOriginAutoplayResult(
CrossOriginAutoplayResult result) {
DEFINE_STATIC_LOCAL(
EnumerationHistogram, autoplayResultHistogram,
("Media.Autoplay.CrossOrigin.Result",
static_cast<int>(CrossOriginAutoplayResult::NumberOfResults)));
if (!m_element->isHTMLVideoElement())
return;
if (!m_element->isInCrossOriginFrame())
......@@ -117,6 +122,7 @@ void AutoplayUmaHelper::recordCrossOriginAutoplayResult(
Platform::current()->recordRapporURL(
"Media.Autoplay.CrossOrigin.Allowed.TopLevelFrame",
m_element->document().topDocument().url());
autoplayResultHistogram.count(static_cast<int>(result));
m_recordedCrossOriginAutoplayResults.insert(result);
break;
case CrossOriginAutoplayResult::AutoplayBlocked:
......@@ -126,6 +132,7 @@ void AutoplayUmaHelper::recordCrossOriginAutoplayResult(
Platform::current()->recordRapporURL(
"Media.Autoplay.CrossOrigin.Blocked.TopLevelFrame",
m_element->document().topDocument().url());
autoplayResultHistogram.count(static_cast<int>(result));
m_recordedCrossOriginAutoplayResults.insert(result);
break;
case CrossOriginAutoplayResult::PlayedWithGesture:
......@@ -143,6 +150,22 @@ void AutoplayUmaHelper::recordCrossOriginAutoplayResult(
"Media.Autoplay.CrossOrigin.PlayedWithGestureAfterBlock."
"TopLevelFrame",
m_element->document().topDocument().url());
autoplayResultHistogram.count(static_cast<int>(result));
m_recordedCrossOriginAutoplayResults.insert(result);
break;
case CrossOriginAutoplayResult::UserPaused:
if (!shouldRecordUserPausedAutoplayingCrossOriginVideo())
return;
if (m_element->ended() || m_element->seeking())
return;
Platform::current()->recordRapporURL(
"Media.Autoplay.CrossOrigin.UserPausedAutoplayingVideo.ChildFrame",
m_element->document().url());
Platform::current()->recordRapporURL(
"Media.Autoplay.CrossOrigin.UserPausedAutoplayingVideo."
"TopLevelFrame",
m_element->document().topDocument().url());
autoplayResultHistogram.count(static_cast<int>(result));
m_recordedCrossOriginAutoplayResults.insert(result);
break;
default:
......@@ -305,21 +328,7 @@ void AutoplayUmaHelper::maybeStopRecordingMutedVideoOffscreenDuration() {
}
void AutoplayUmaHelper::maybeRecordUserPausedAutoplayingCrossOriginVideo() {
if (!shouldRecordUserPausedAutoplayingCrossOriginVideo())
return;
if (m_element->ended() || m_element->seeking())
return;
Platform::current()->recordRapporURL(
"Media.Autoplay.CrossOrigin.UserPausedAutoplayingVideo.ChildFrame",
m_element->document().url());
Platform::current()->recordRapporURL(
"Media.Autoplay.CrossOrigin.UserPausedAutoplayingVideo."
"TopLevelFrame",
m_element->document().topDocument().url());
m_hasRecordedUserPausedAutoplayingCrossOriginVideo = true;
recordCrossOriginAutoplayResult(CrossOriginAutoplayResult::UserPaused);
maybeUnregisterMediaElementPauseListener();
}
......@@ -346,7 +355,8 @@ bool AutoplayUmaHelper::shouldRecordUserPausedAutoplayingCrossOriginVideo()
const {
return m_element->isInCrossOriginFrame() && m_element->isHTMLVideoElement() &&
m_source != AutoplaySource::NumberOfSources &&
!m_hasRecordedUserPausedAutoplayingCrossOriginVideo;
!m_recordedCrossOriginAutoplayResults.count(
CrossOriginAutoplayResult::UserPaused);
}
DEFINE_TRACE(AutoplayUmaHelper) {
......
......@@ -41,9 +41,12 @@ enum AutoplayBlockedReason {
};
enum class CrossOriginAutoplayResult {
AutoplayAllowed,
AutoplayBlocked,
PlayedWithGesture,
AutoplayAllowed = 0,
AutoplayBlocked = 1,
PlayedWithGesture = 2,
UserPaused = 3,
// Keep at the end.
NumberOfResults = 4,
};
class Document;
......@@ -130,9 +133,6 @@ class CORE_EXPORT AutoplayUmaHelper : public EventListener,
std::set<CrossOriginAutoplayResult> m_recordedCrossOriginAutoplayResults;
// Whether the UMA helper has recorded user pausing a cross-origin video.
bool m_hasRecordedUserPausedAutoplayingCrossOriginVideo;
// The observer is used to observer an autoplaying muted video changing it's
// visibility, which is used for offscreen duration UMA. The UMA is pending
// for recording as long as this observer is non-null.
......
......@@ -24258,6 +24258,16 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</summary>
</histogram>
<histogram name="Media.Autoplay.CrossOrigin.Result"
enum="CrossOriginAutoplayResult">
<owner>avayvod@chromium.org</owner>
<owner>mlamouri@chromium.org</owner>
<owner>zqzhang@chromium.org</owner>
<summary>
The result of autoplaying video elements in cross-origin iframes.
</summary>
</histogram>
<histogram name="Media.AVDA.FrameSentAsOverlay" enum="BooleanFrameAsOverlay">
<owner>liberato@chromium.org</owner>
<summary>
......@@ -80443,6 +80453,13 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
<int value="8" label="PlayMusic"/>
</enum>
<enum name="CrossOriginAutoplayResult" type="int">
<int value="0" label="Allowed"/>
<int value="1" label="Blocked"/>
<int value="2" label="PlayedWithGesture"/>
<int value="3" label="UserPaused"/>
</enum>
<enum name="CrosTPMDictionaryAttackResetStatusEnum" type="int">
<int value="0" label="Reset not necessary"/>
<int value="1" label="Reset attempt succeeded"/>
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