Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(73)

Side by Side Diff: third_party/WebKit/Source/core/html/AutoplayUmaHelper.cpp

Issue 2108403003: Measure whether muted videos that started playing with play() become visible at some point (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed mlamouri's comments Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "core/html/AutoplayUmaHelper.h"
6
7 #include "core/dom/ElementVisibilityObserver.h"
8 #include "core/html/HTMLMediaElement.h"
9 #include "platform/Histogram.h"
10
11 namespace blink {
12
13 namespace {
14
15 void recordVideoAutoplayMutedPlayMethodBecomesVisibleUma(bool visible)
16 {
17 DEFINE_STATIC_LOCAL(BooleanHistogram, histogram, ("Media.Video.Autoplay.Mute d.PlayMethod.BecomesVisible"));
18 histogram.count(visible);
19 }
20
21 void recordAutoplaySourceUma(HTMLMediaElement* element, AutoplaySource source)
22 {
23 DEFINE_STATIC_LOCAL(EnumerationHistogram, videoHistogram, ("Media.Video.Auto play", static_cast<int>(AutoplaySource::NumberOfSources)));
24 DEFINE_STATIC_LOCAL(EnumerationHistogram, mutedVideoHistogram, ("Media.Video .Autoplay.Muted", static_cast<int>(AutoplaySource::NumberOfSources)));
25 DEFINE_STATIC_LOCAL(EnumerationHistogram, audioHistogram, ("Media.Audio.Auto play", static_cast<int>(AutoplaySource::NumberOfSources)));
26
27 if (element->isHTMLVideoElement()) {
28 videoHistogram.count(static_cast<int>(source));
29 if (element->muted())
30 mutedVideoHistogram.count(static_cast<int>(source));
31 } else {
32 audioHistogram.count(static_cast<int>(source));
33 }
34 }
35
36 void recordAutoplayUnmuteStatus(AutoplayUnmuteActionStatus status)
37 {
38 DEFINE_STATIC_LOCAL(EnumerationHistogram, autoplayUnmuteHistogram, ("Media.V ideo.Autoplay.Muted.UnmuteAction", AutoplayUnmuteActionStatus::NumberOfStatus));
39
40 autoplayUnmuteHistogram.count(status);
41 }
42
43 } // namespace
44
45 AutoplayUmaHelper::AutoplayUmaHelper(HTMLMediaElement* element)
46 : m_source(AutoplaySource::NumberOfSources)
47 , m_element(element)
48 , m_videoMutedPlayMethodVisibilityObserver(nullptr)
49 {
50 }
51
52 AutoplayUmaHelper::~AutoplayUmaHelper() = default;
53
54 void AutoplayUmaHelper::onAutoplayInitiated(AutoplaySource source)
55 {
56 m_source = source;
57 recordAutoplaySourceUma(m_element, m_source);
58 }
59
60 void AutoplayUmaHelper::onAutoplayStarted()
61 {
62 if (m_source == AutoplaySource::Method && m_element->isHTMLVideoElement() && m_element->muted()) {
63 if (!m_videoMutedPlayMethodVisibilityObserver) {
64 m_videoMutedPlayMethodVisibilityObserver = new ElementVisibilityObse rver(m_element, WTF::bind(&AutoplayUmaHelper::onVisibilityChangedForVideoMutedPl ayMethod, wrapPersistent(this)));
65 m_videoMutedPlayMethodVisibilityObserver->start();
66 }
67 }
68 }
69
70 void AutoplayUmaHelper::onElementDestroyed()
71 {
72 if (m_videoMutedPlayMethodVisibilityObserver) {
73 recordVideoAutoplayMutedPlayMethodBecomesVisibleUma(false);
74 m_videoMutedPlayMethodVisibilityObserver->stop();
75 m_videoMutedPlayMethodVisibilityObserver = nullptr;
76 }
77 }
78
79 void AutoplayUmaHelper::recordAutoplayUnmuteStatus(AutoplayUnmuteActionStatus st atus)
80 {
81 blink::recordAutoplayUnmuteStatus(status);
82 }
83
84 void AutoplayUmaHelper::onVisibilityChangedForVideoMutedPlayMethod(bool isVisibl e)
85 {
86 if (!isVisible)
87 return;
88
89 recordVideoAutoplayMutedPlayMethodBecomesVisibleUma(true);
90 m_videoMutedPlayMethodVisibilityObserver->stop();
91 m_videoMutedPlayMethodVisibilityObserver = nullptr;
92 }
93
94 DEFINE_TRACE(AutoplayUmaHelper)
95 {
96 visitor->trace(m_element);
97 visitor->trace(m_videoMutedPlayMethodVisibilityObserver);
98 }
99
100 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698