Chromium Code Reviews| 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; |
| }; |