OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "core/html/AutoplayUmaHelper.h" | 5 #include "core/html/AutoplayUmaHelper.h" |
6 | 6 |
7 #include "core/dom/Document.h" | 7 #include "core/dom/Document.h" |
8 #include "core/dom/ElementVisibilityObserver.h" | 8 #include "core/dom/ElementVisibilityObserver.h" |
9 #include "core/events/Event.h" | 9 #include "core/events/Event.h" |
10 #include "core/frame/LocalDOMWindow.h" | 10 #include "core/frame/LocalDOMWindow.h" |
11 #include "core/frame/Settings.h" | |
11 #include "core/html/HTMLMediaElement.h" | 12 #include "core/html/HTMLMediaElement.h" |
12 #include "platform/Histogram.h" | 13 #include "platform/Histogram.h" |
13 | 14 |
14 namespace blink { | 15 namespace blink { |
15 | 16 |
16 namespace { | 17 namespace { |
17 | 18 |
18 void recordVideoAutoplayMutedPlayMethodBecomesVisibleUma(bool visible) | 19 void recordVideoAutoplayMutedPlayMethodBecomesVisibleUma(bool visible) |
19 { | 20 { |
20 DEFINE_STATIC_LOCAL(BooleanHistogram, histogram, ("Media.Video.Autoplay.Mute d.PlayMethod.BecomesVisible")); | 21 DEFINE_STATIC_LOCAL(BooleanHistogram, histogram, ("Media.Video.Autoplay.Mute d.PlayMethod.BecomesVisible")); |
(...skipping 18 matching lines...) Expand all Loading... | |
39 bool AutoplayUmaHelper::operator==(const EventListener& other) const | 40 bool AutoplayUmaHelper::operator==(const EventListener& other) const |
40 { | 41 { |
41 return this == &other; | 42 return this == &other; |
42 } | 43 } |
43 | 44 |
44 void AutoplayUmaHelper::onAutoplayInitiated(AutoplaySource source) | 45 void AutoplayUmaHelper::onAutoplayInitiated(AutoplaySource source) |
45 { | 46 { |
46 DEFINE_STATIC_LOCAL(EnumerationHistogram, videoHistogram, ("Media.Video.Auto play", static_cast<int>(AutoplaySource::NumberOfSources))); | 47 DEFINE_STATIC_LOCAL(EnumerationHistogram, videoHistogram, ("Media.Video.Auto play", static_cast<int>(AutoplaySource::NumberOfSources))); |
47 DEFINE_STATIC_LOCAL(EnumerationHistogram, mutedVideoHistogram, ("Media.Video .Autoplay.Muted", static_cast<int>(AutoplaySource::NumberOfSources))); | 48 DEFINE_STATIC_LOCAL(EnumerationHistogram, mutedVideoHistogram, ("Media.Video .Autoplay.Muted", static_cast<int>(AutoplaySource::NumberOfSources))); |
48 DEFINE_STATIC_LOCAL(EnumerationHistogram, audioHistogram, ("Media.Audio.Auto play", static_cast<int>(AutoplaySource::NumberOfSources))); | 49 DEFINE_STATIC_LOCAL(EnumerationHistogram, audioHistogram, ("Media.Audio.Auto play", static_cast<int>(AutoplaySource::NumberOfSources))); |
50 DEFINE_STATIC_LOCAL(EnumerationHistogram, blockedMutedVideoHistogram, ("Medi a.Video.Autoplay.Muted.Blocked", AutoplayBlockedReasonMax)); | |
49 | 51 |
50 m_source = source; | 52 m_source = source; |
51 | 53 |
54 // Record the source. | |
52 if (m_element->isHTMLVideoElement()) { | 55 if (m_element->isHTMLVideoElement()) { |
53 videoHistogram.count(static_cast<int>(m_source)); | 56 videoHistogram.count(static_cast<int>(m_source)); |
54 if (m_element->muted()) | 57 if (m_element->muted()) |
55 mutedVideoHistogram.count(static_cast<int>(m_source)); | 58 mutedVideoHistogram.count(static_cast<int>(m_source)); |
56 } else { | 59 } else { |
57 audioHistogram.count(static_cast<int>(m_source)); | 60 audioHistogram.count(static_cast<int>(m_source)); |
58 } | 61 } |
59 | 62 |
63 // Record if it will be blocked by Data Saver or Autoplay setting. | |
64 if (m_element->isHTMLVideoElement() && m_element->muted() && RuntimeEnabledF eatures::autoplayMutedVideosEnabled()) { | |
65 bool dataSaverEnabled = m_element->document().settings() && m_element->d ocument().settings()->dataSaverEnabled(); | |
66 bool blockedBySetting = !m_element->isAutoplayAllowedPerSettings(); | |
67 | |
68 if (dataSaverEnabled && blockedBySetting) { | |
69 blockedMutedVideoHistogram.count(AutoplayBlockedReasonDataSaverAndSe tting); | |
Zhiqiang Zhang (Slow)
2016/08/24 16:50:47
Autoplay is gray when DataSaver is on, might not b
mlamouri (slow - plz ping)
2016/08/24 21:39:24
It's really in the spirit of not leaking chrome/ b
| |
70 } else if (dataSaverEnabled) { | |
71 blockedMutedVideoHistogram.count(AutoplayBlockedReasonDataSaver); | |
72 } else if (blockedBySetting) { | |
73 blockedMutedVideoHistogram.count(AutoplayBlockedReasonSetting); | |
74 } | |
75 } | |
76 | |
60 if (m_source == AutoplaySource::Method && m_element->isHTMLVideoElement() && m_element->muted()) | 77 if (m_source == AutoplaySource::Method && m_element->isHTMLVideoElement() && m_element->muted()) |
61 m_element->addEventListener(EventTypeNames::playing, this, false); | 78 m_element->addEventListener(EventTypeNames::playing, this, false); |
62 } | 79 } |
63 | 80 |
64 void AutoplayUmaHelper::recordAutoplayUnmuteStatus(AutoplayUnmuteActionStatus st atus) | 81 void AutoplayUmaHelper::recordAutoplayUnmuteStatus(AutoplayUnmuteActionStatus st atus) |
65 { | 82 { |
66 DEFINE_STATIC_LOCAL(EnumerationHistogram, autoplayUnmuteHistogram, ("Media.V ideo.Autoplay.Muted.UnmuteAction", static_cast<int>(AutoplayUnmuteActionStatus:: NumberOfStatus))); | 83 DEFINE_STATIC_LOCAL(EnumerationHistogram, autoplayUnmuteHistogram, ("Media.V ideo.Autoplay.Muted.UnmuteAction", static_cast<int>(AutoplayUnmuteActionStatus:: NumberOfStatus))); |
67 | 84 |
68 autoplayUnmuteHistogram.count(static_cast<int>(status)); | 85 autoplayUnmuteHistogram.count(static_cast<int>(status)); |
69 } | 86 } |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
126 } | 143 } |
127 | 144 |
128 DEFINE_TRACE(AutoplayUmaHelper) | 145 DEFINE_TRACE(AutoplayUmaHelper) |
129 { | 146 { |
130 EventListener::trace(visitor); | 147 EventListener::trace(visitor); |
131 visitor->trace(m_element); | 148 visitor->trace(m_element); |
132 visitor->trace(m_videoMutedPlayMethodVisibilityObserver); | 149 visitor->trace(m_videoMutedPlayMethodVisibilityObserver); |
133 } | 150 } |
134 | 151 |
135 } // namespace blink | 152 } // namespace blink |
OLD | NEW |