OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #ifndef AutoplayExperimentHelper_h | 5 #ifndef AutoplayExperimentHelper_h |
6 #define AutoplayExperimentHelper_h | 6 #define AutoplayExperimentHelper_h |
7 | 7 |
8 #include "core/page/Page.h" | 8 #include "core/page/PageVisibilityState.h" |
9 #include "platform/Timer.h" | 9 #include "platform/Timer.h" |
10 #include "platform/geometry/IntRect.h" | 10 #include "platform/geometry/IntRect.h" |
11 | 11 |
12 namespace blink { | 12 namespace blink { |
| 13 |
13 class Document; | 14 class Document; |
14 class HTMLMediaElement; | |
15 class EventListener; | |
16 class LayoutObject; | |
17 class AutoplayExperimentTest; | 15 class AutoplayExperimentTest; |
18 | 16 |
19 // These values are used for a histogram. Do not reorder. | 17 // These values are used for a histogram. Do not reorder. |
20 enum AutoplayMetrics { | 18 enum AutoplayMetrics { |
21 // Media element with autoplay seen. | 19 // Media element with autoplay seen. |
22 AutoplayMediaFound = 0, | 20 AutoplayMediaFound = 0, |
23 // Autoplay enabled and user stopped media play at any point. | 21 // Autoplay enabled and user stopped media play at any point. |
24 AutoplayPaused = 1, | 22 AutoplayPaused = 1, |
25 // Autoplay enabled but user bailed out on media play early. | 23 // Autoplay enabled but user bailed out on media play early. |
26 AutoplayBailout = 2, | 24 AutoplayBailout = 2, |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
154 void recordSandboxFailure(); | 152 void recordSandboxFailure(); |
155 void loadingStarted(); | 153 void loadingStarted(); |
156 void playbackStarted(); | 154 void playbackStarted(); |
157 void playbackStopped(); | 155 void playbackStopped(); |
158 void initialPlayWithUserGesture(); | 156 void initialPlayWithUserGesture(); |
159 | 157 |
160 // Returns true if and only if any experiment is enabled (i.e., |m_mode| | 158 // Returns true if and only if any experiment is enabled (i.e., |m_mode| |
161 // is not ExperimentOff). | 159 // is not ExperimentOff). |
162 bool isExperimentEnabled(); | 160 bool isExperimentEnabled(); |
163 | 161 |
164 // Clean up. For Oilpan, this means "early in HTMLMediaElement's dispose". | |
165 // For non-Oilpan, just delete the object. | |
166 void dispose(); | |
167 | |
168 // Remove the user gesture requirement, and record why. If there is no | 162 // Remove the user gesture requirement, and record why. If there is no |
169 // gesture requirement, then this does nothing. | 163 // gesture requirement, then this does nothing. |
170 void unlockUserGesture(AutoplayMetrics); | 164 void unlockUserGesture(AutoplayMetrics); |
171 | 165 |
172 // Set the reason that we're overridding the user gesture. If there is no | 166 // Set the reason that we're overridding the user gesture. If there is no |
173 // gesture requirement, then this does nothing. | 167 // gesture requirement, then this does nothing. |
174 void setDeferredOverrideReason(AutoplayMetrics); | 168 void setDeferredOverrideReason(AutoplayMetrics); |
175 | 169 |
176 // Return true if and only if the user gesture requirement is currently | 170 // Return true if and only if the user gesture requirement is currently |
177 // overridden by the experiment, permitting playback. | 171 // overridden by the experiment, permitting playback. |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 // This method takes no action after it is called once. | 261 // This method takes no action after it is called once. |
268 void autoplayMediaEncountered(); | 262 void autoplayMediaEncountered(); |
269 | 263 |
270 // If we are about to enter a paused state, call this to record | 264 // If we are about to enter a paused state, call this to record |
271 // autoplay metrics. | 265 // autoplay metrics. |
272 void recordMetricsBeforePause(); | 266 void recordMetricsBeforePause(); |
273 | 267 |
274 // Process a timer for checking visibility. | 268 // Process a timer for checking visibility. |
275 void viewportTimerFired(Timer<AutoplayExperimentHelper>*); | 269 void viewportTimerFired(Timer<AutoplayExperimentHelper>*); |
276 | 270 |
277 // Return our media element's document. | 271 Client& client() const { return *m_client; } |
278 Document& document() const; | |
279 | |
280 Client& client() const; | |
281 | 272 |
282 bool isLockedPendingUserGesture() const; | 273 bool isLockedPendingUserGesture() const; |
283 | 274 |
284 inline bool enabled(Mode mode) const | 275 inline bool enabled(Mode mode) const |
285 { | 276 { |
286 return ((int)m_mode) & ((int)mode); | 277 return static_cast<int>(m_mode) & static_cast<int>(mode); |
287 } | 278 } |
288 | 279 |
289 Mode fromString(const String& mode); | 280 Mode fromString(const String& mode); |
290 | 281 |
291 void recordAutoplayMetric(AutoplayMetrics); | 282 void recordAutoplayMetric(AutoplayMetrics); |
292 | 283 |
293 // Could stopping at this point be considered a bailout of playback? | 284 // Could stopping at this point be considered a bailout of playback? |
294 // (as in, "The user really didn't want to play this"). | 285 // (as in, "The user really didn't want to play this"). |
295 bool isBailout() const; | 286 bool isBailout() const; |
296 | 287 |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
346 inline AutoplayExperimentHelper::Mode& operator|=(AutoplayExperimentHelper::Mode
& a, | 337 inline AutoplayExperimentHelper::Mode& operator|=(AutoplayExperimentHelper::Mode
& a, |
347 const AutoplayExperimentHelper::Mode& b) | 338 const AutoplayExperimentHelper::Mode& b) |
348 { | 339 { |
349 a = static_cast<AutoplayExperimentHelper::Mode>(static_cast<int>(a) | static
_cast<int>(b)); | 340 a = static_cast<AutoplayExperimentHelper::Mode>(static_cast<int>(a) | static
_cast<int>(b)); |
350 return a; | 341 return a; |
351 } | 342 } |
352 | 343 |
353 } // namespace blink | 344 } // namespace blink |
354 | 345 |
355 #endif // AutoplayExperimentHelper_h | 346 #endif // AutoplayExperimentHelper_h |
OLD | NEW |