Commit b92cb9ca authored by Becca Hughes's avatar Becca Hughes Committed by Commit Bot

[Autoplay] Add audio context feature

Add a feature to disable AudioContext playbacks counting
towards the MEI score.

BUG=878460

Change-Id: I486f3853ebc26a703e52712bee13600c99c7be14
Reviewed-on: https://chromium-review.googlesource.com/1204728Reviewed-by: default avatarMounir Lamouri <mlamouri@chromium.org>
Commit-Queue: Becca Hughes <beccahughes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#589046}
parent f22f8191
......@@ -529,6 +529,9 @@ void MediaEngagementContentsObserver::UpdatePageTimer() {
}
bool MediaEngagementContentsObserver::AreAudioContextConditionsMet() const {
if (!base::FeatureList::IsEnabled(media::kRecordWebAudioEngagement))
return false;
if (audio_context_players_.empty())
return false;
......
......@@ -28,6 +28,7 @@
#include "content/public/browser/web_contents.h"
#include "content/public/test/test_service_manager_context.h"
#include "content/public/test/web_contents_tester.h"
#include "media/base/media_switches.h"
#include "services/metrics/public/cpp/ukm_builders.h"
#include "services/metrics/public/cpp/ukm_source.h"
#include "testing/gtest/include/gtest/gtest.h"
......@@ -39,9 +40,6 @@ class MediaEngagementContentsObserverTest
: task_runner_(new base::TestMockTimeTaskRunner()) {}
void SetUp() override {
scoped_feature_list_.InitFromCommandLine("RecordMediaEngagementScores",
std::string());
ChromeRenderViewHostTestHarness::SetUp();
test_service_manager_context_ =
......@@ -449,8 +447,6 @@ class MediaEngagementContentsObserverTest
std::unique_ptr<MediaEngagementService> service_;
base::test::ScopedFeatureList scoped_feature_list_;
ukm::TestAutoSetUkmRecorder test_ukm_recorder_;
base::HistogramTester histogram_tester_;
......@@ -1373,3 +1369,19 @@ TEST_F(MediaEngagementContentsObserverTest, GetOrCreateSession_WithOpener) {
EXPECT_EQ(GetSessionFor(other_observer),
GetOrCreateSession(url::Origin::Create(url), opener.get()));
}
TEST_F(MediaEngagementContentsObserverTest, IgnoreAudioContextIfDisabled) {
base::test::ScopedFeatureList feature_list;
feature_list.InitAndDisableFeature(media::kRecordWebAudioEngagement);
Navigate(GURL("https://www.example.com"));
SimulateAudioContextStarted(0);
SimulateAudible();
EXPECT_FALSE(AreAudioContextConditionsMet());
EXPECT_FALSE(IsAudioContextTimerRunning());
EXPECT_FALSE(WasSignificantAudioContextPlaybackRecorded());
SimulateAudioContextPlaybackTimerFired();
EXPECT_FALSE(WasSignificantAudioContextPlaybackRecorded());
}
......@@ -429,6 +429,10 @@ const base::Feature kUseModernMediaControls{"UseModernMediaControls",
const base::Feature kRecordMediaEngagementScores{
"RecordMediaEngagementScores", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables Media Engagement Index recording for Web Audio playbacks.
const base::Feature kRecordWebAudioEngagement{"RecordWebAudioEngagement",
base::FEATURE_ENABLED_BY_DEFAULT};
// The following Media Engagement flags are not enabled on mobile platforms:
// - MediaEngagementBypassAutoplayPolicies: enables the Media Engagement Index
// data to be esude to override autoplay policies. An origin with a high MEI
......
......@@ -109,6 +109,7 @@ MEDIA_EXPORT extern const base::Feature kHardwareSecureDecryption;
MEDIA_EXPORT extern const base::Feature kLowDelayVideoRenderingOnLiveStream;
MEDIA_EXPORT extern const base::Feature kMediaCastOverlayButton;
MEDIA_EXPORT extern const base::Feature kRecordMediaEngagementScores;
MEDIA_EXPORT extern const base::Feature kRecordWebAudioEngagement;
MEDIA_EXPORT extern const base::Feature kMediaEngagementBypassAutoplayPolicies;
MEDIA_EXPORT extern const base::Feature kMemoryPressureBasedSourceBufferGC;
MEDIA_EXPORT extern const base::Feature kMojoVideoDecoder;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment