Index: third_party/WebKit/Source/core/html/HTMLMediaElement.h |
diff --git a/third_party/WebKit/Source/core/html/HTMLMediaElement.h b/third_party/WebKit/Source/core/html/HTMLMediaElement.h |
index ae5033569631d07a9986b4e3798e5d7d846b73ce..e35156f2b05a87d99737242e84873bb508568c80 100644 |
--- a/third_party/WebKit/Source/core/html/HTMLMediaElement.h |
+++ b/third_party/WebKit/Source/core/html/HTMLMediaElement.h |
@@ -133,8 +133,7 @@ public: |
TimeRanges* seekable() const; |
bool ended() const; |
bool autoplay() const; |
- enum class RecordMetricsBehavior { DoNotRecord, DoRecord }; |
- bool shouldAutoplay(const RecordMetricsBehavior = RecordMetricsBehavior::DoNotRecord); |
+ bool shouldAutoplay(const AutoplayExperimentHelper::Client::RecordMetricsBehavior = AutoplayExperimentHelper::Client::RecordMetricsBehavior::DoNotRecord); |
philipj_slow
2016/01/12 15:12:19
Can using RecordMetricsBehavior = AutoplayExperime
liberato (no reviews please)
2016/01/29 08:25:25
seems to work. good idea.
philipj_slow
2016/02/02 08:08:15
Isn't it possible to also replace AutoplayExperime
liberato (no reviews please)
2016/02/24 18:44:05
Done. in the interim, RecordMetricsBehavior was u
|
bool loop() const; |
void setLoop(bool); |
void play(); |
@@ -271,6 +270,8 @@ protected: |
DisplayMode displayMode() const { return m_displayMode; } |
virtual void setDisplayMode(DisplayMode mode) { m_displayMode = mode; } |
+ void recordAutoplayMetric(AutoplayMetrics); |
+ |
private: |
void resetMediaPlayerAndMediaSource(); |
@@ -376,14 +377,6 @@ private: |
// This does not change the buffering strategy. |
void pauseInternal(); |
- // If we are about to enter a paused state, call this to record |
- // autoplay metrics. If we were already in a stopped state, then |
- // this does nothing. |
- void recordMetricsIfPausing(); |
- // Could stopping at this point be considered a bailout of playback? |
- // (as in, "The user really didn't want to play this"). |
- bool isBailout() const; |
- void autoplayMediaEncountered(); |
void allowVideoRendering(); |
void updateVolume(); |
@@ -415,8 +408,6 @@ private: |
void setAllowHiddenVolumeControls(bool); |
- void recordAutoplayMetric(AutoplayMetrics); |
- |
WebMediaPlayer::CORSMode corsMode() const; |
// Returns the "direction of playback" value as specified in the HTML5 spec. |
@@ -436,8 +427,11 @@ private: |
// Return true if and only if we require a user gesture before letting |
// the media play. |
bool isUserGestureRequiredForPlay() const; |
+ |
+ // If the user gesture is required, then this will remove it. Note that |
+ // one should not generally call this method directly; use the one on |
+ // m_helper and give it a reason. |
void removeUserGestureRequirement(); |
- void setInitialPlayWithoutUserGestures(bool); |
void setNetworkState(NetworkState); |
@@ -545,8 +539,6 @@ private: |
bool m_remoteRoutesAvailable : 1; |
bool m_playingRemotely : 1; |
bool m_isFinalizing : 1; |
- bool m_initialPlayWithoutUserGesture : 1; |
- bool m_autoplayMediaCounted : 1; |
// Whether this element is in overlay fullscreen mode. |
bool m_inOverlayFullscreenVideo : 1; |
@@ -616,7 +608,39 @@ private: |
friend class AutoplayExperimentHelper; |
friend class MediaControlsTest; |
- AutoplayExperimentHelper m_autoplayHelper; |
+ class AutoplayHelperClientImpl : public AutoplayExperimentHelper::Client { |
+ public: |
+ AutoplayHelperClientImpl(HTMLMediaElement& element) : m_element(element) {} |
+ virtual ~AutoplayHelperClientImpl(); |
+ |
+ double currentTime() const override { return m_element.currentTime(); } |
+ double duration() const override { return m_element.duration(); } |
+ bool paused() const override { return m_element.paused(); } |
+ bool muted() const override { return m_element.muted(); } |
+ void setMuted(bool muted) override { m_element.setMuted(muted); } |
+ void playInternal() override { m_element.playInternal(); } |
+ bool isUserGestureRequiredForPlay() const override { return m_element.isUserGestureRequiredForPlay(); } |
+ void removeUserGestureRequirement() override { m_element.removeUserGestureRequirement(); } |
+ void recordAutoplayMetric(AutoplayMetrics metric) override { m_element.recordAutoplayMetric(metric); } |
+ bool shouldAutoplay(RecordMetricsBehavior behavior) override { return m_element.shouldAutoplay(behavior); } |
+ bool isHTMLVideoElement() const override { return m_element.isHTMLVideoElement(); } |
+ bool isHTMLAudioElement() const override { return m_element.isHTMLAudioElement(); } |
+ |
+ // Document |
+ bool isLegacyViewportType() override; |
+ PageVisibilityState pageVisibilityState() const override; |
+ WTF::String autoplayExperimentMode() const override; |
+ |
+ // LayoutObject |
+ void setRequestPositionUpdates(bool) override; |
+ IntRect absoluteBoundingBoxRect() const override; |
+ |
+ private: |
+ HTMLMediaElement& m_element; |
+ }; |
+ |
+ AutoplayExperimentHelper::Client* m_autoplayHelperClient; |
philipj_slow
2016/01/12 15:12:19
Why can't both of these be references still?
liberato (no reviews please)
2016/01/29 08:25:25
i don't like relying on destruction order, since i
philipj_slow
2016/02/02 08:08:15
Not sure why I said "references still" when it was
|
+ AutoplayExperimentHelper* m_autoplayHelper; |
static URLRegistry* s_mediaStreamRegistry; |
}; |