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

Unified Diff: third_party/WebKit/Source/core/html/AutoplayExperimentHelper.cpp

Issue 1470153004: Autoplay experiment metric fixes and additions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cl feedback. Created 5 years, 1 month 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/AutoplayExperimentHelper.cpp
diff --git a/third_party/WebKit/Source/core/html/AutoplayExperimentHelper.cpp b/third_party/WebKit/Source/core/html/AutoplayExperimentHelper.cpp
index a06dc57a0eb3315f58a5bc6205000bc07364cb48..3bd4683141bb0dde7ba32b67020d73c3a69214ff 100644
--- a/third_party/WebKit/Source/core/html/AutoplayExperimentHelper.cpp
+++ b/third_party/WebKit/Source/core/html/AutoplayExperimentHelper.cpp
@@ -53,10 +53,11 @@ void AutoplayExperimentHelper::becameReadyToPlay()
{
// Assuming that we're eligible to override the user gesture requirement,
// either play if we meet the visibility checks, or install a listener
- // to wait for them to pass.
+ // to wait for them to pass. We do not actually start playback; our
+ // caller must do that.
if (isEligible()) {
if (meetsVisibilityRequirements())
- prepareToPlay(GesturelessPlaybackStartedByAutoplayFlagImmediately);
+ prepareToAutoplay(GesturelessPlaybackStartedByAutoplayFlagImmediately);
else
registerForPositionUpdatesIfNeeded();
}
@@ -70,7 +71,6 @@ void AutoplayExperimentHelper::playMethodCalled()
m_playPending = true;
if (!UserGestureIndicator::processingUserGesture()) {
-
if (isEligible()) {
// Remember that userGestureRequiredForPlay is required for
// us to be eligible for the experiment.
@@ -78,13 +78,12 @@ void AutoplayExperimentHelper::playMethodCalled()
// do so. Otherwise, install an event listener if we need one.
if (meetsVisibilityRequirements()) {
// Override the gesture and play.
- prepareToPlay(GesturelessPlaybackStartedByPlayMethodImmediately);
+ prepareToAutoplay(GesturelessPlaybackStartedByPlayMethodImmediately);
} else {
// Wait for viewport visibility.
registerForPositionUpdatesIfNeeded();
}
}
-
} else if (element().isUserGestureRequiredForPlay()) {
unregisterForPositionUpdatesIfNeeded();
}
@@ -255,9 +254,13 @@ bool AutoplayExperimentHelper::maybeStartPlaying()
}
// Start playing!
- prepareToPlay(element().shouldAutoplay()
+ prepareToAutoplay(element().shouldAutoplay()
? GesturelessPlaybackStartedByAutoplayFlagAfterScroll
: GesturelessPlaybackStartedByPlayMethodAfterScroll);
+
+ // Record that this played without a user gesture.
+ element().autoplayMediaEncountered();
+
element().playInternal();
return true;
@@ -313,22 +316,18 @@ void AutoplayExperimentHelper::muteIfNeeded()
}
}
-void AutoplayExperimentHelper::prepareToPlay(AutoplayMetrics metric)
+void AutoplayExperimentHelper::prepareToAutoplay(AutoplayMetrics metric)
{
- element().recordAutoplayMetric(metric);
-
// This also causes !isEligible, so that we don't allow autoplay more than
// once. Be sure to do this before muteIfNeeded().
- element().removeUserGestureRequirement();
+ element().removeUserGestureRequirement(metric);
+
+ // Don't bother to call autoplayMediaEncountered, since whoever initiates
+ // playback has do it anyway, in case we don't allow autoplay.
unregisterForPositionUpdatesIfNeeded();
muteIfNeeded();
- // Record that this autoplayed without a user gesture. This is normally
- // set when we discover an autoplay attribute, but we include all cases
- // where playback started without a user gesture, e.g., play().
- element().setInitialPlayWithoutUserGestures(true);
-
// Do not actually start playback here.
}

Powered by Google App Engine
This is Rietveld 408576698