From 96afc7c19eeb7f5cb4f8b3ad0bd9d7070a6cd40f Mon Sep 17 00:00:00 2001 From: alwu Date: Wed, 5 Aug 2020 23:12:16 +0000 Subject: [PATCH] Bug 1657224 - add a pref to control stopping media after media reaches to the end. r=chunmin In bug1654045, we would stop controlling media once media reaches to the end. Considering some user might still want to control media by pressing media keys even if it has ended, so adding a pref to control this abilitiy. Differential Revision: https://phabricator.services.mozilla.com/D85930 --- dom/html/HTMLMediaElement.cpp | 4 +++- .../browser_stop_control_after_media_reaches_to_end.js | 6 ++++++ modules/libpref/init/StaticPrefList.yaml | 7 +++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/dom/html/HTMLMediaElement.cpp b/dom/html/HTMLMediaElement.cpp index 855404fb1f23..15420619a822 100644 --- a/dom/html/HTMLMediaElement.cpp +++ b/dom/html/HTMLMediaElement.cpp @@ -5678,7 +5678,9 @@ void HTMLMediaElement::PlaybackEnded() { mAutoplaying = true; } - mMediaControlKeyListener->StopIfNeeded(); + if (StaticPrefs::media_mediacontrol_stopcontrol_aftermediaends()) { + mMediaControlKeyListener->StopIfNeeded(); + } DispatchAsyncEvent(u"ended"_ns); } diff --git a/dom/media/mediacontrol/tests/browser_stop_control_after_media_reaches_to_end.js b/dom/media/mediacontrol/tests/browser_stop_control_after_media_reaches_to_end.js index 35e3be081fd4..76e4f96fcc21 100644 --- a/dom/media/mediacontrol/tests/browser_stop_control_after_media_reaches_to_end.js +++ b/dom/media/mediacontrol/tests/browser_stop_control_after_media_reaches_to_end.js @@ -2,6 +2,12 @@ const PAGE_URL = "https://example.com/browser/dom/media/mediacontrol/tests/file_non_looping_media.html"; +add_task(async function setupTestingPref() { + await SpecialPowers.pushPrefEnv({ + set: [["media.mediacontrol.stopcontrol.aftermediaends", true]], + }); +}); + /** * This test is used to ensure that we would stop controlling media after it * reaches to the end. diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml index 5328793639b2..89f4d9a3700d 100644 --- a/modules/libpref/init/StaticPrefList.yaml +++ b/modules/libpref/init/StaticPrefList.yaml @@ -7565,6 +7565,13 @@ value: 60000 mirror: always +# If this pref is on, we would stop controlling media after it reaches to the +# end. +- name: media.mediacontrol.stopcontrol.aftermediaends + type: bool + value: true + mirror: always + # We would only use media control to control media which duration is longer # than this value. - name: media.mediacontrol.eligible.media.duration.s