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

Unified Diff: third_party/WebKit/Source/core/html/HTMLMediaElement.h

Issue 1470153004: Autoplay experiment metric fixes and additions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased. Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
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;
};

Powered by Google App Engine
This is Rietveld 408576698