Bug 1419349 - delay autoplay only when we enable it.
If we don't enable autoplay, we have no need to delay it.
MozReview-Commit-ID: DgYCi1UyF5O
--- a/dom/base/nsGlobalWindow.cpp
+++ b/dom/base/nsGlobalWindow.cpp
@@ -333,18 +333,20 @@ nsPIDOMWindow<T>::nsPIDOMWindow(nsPIDOMW
mMutationBits(0), mActivePeerConnections(0), mIsDocumentLoaded(false),
mIsHandlingResizeEvent(false), mIsInnerWindow(aOuterWindow != nullptr),
mMayHavePaintEventListener(false), mMayHaveTouchEventListener(false),
mMayHaveSelectionChangeEventListener(false),
mMayHaveMouseEnterLeaveEventListener(false),
mMayHavePointerEnterLeaveEventListener(false),
mInnerObjectsFreed(false),
mIsActive(false), mIsBackground(false),
- mMediaSuspend(Preferences::GetBool("media.block-autoplay-until-in-foreground", true) ?
- nsISuspendedTypes::SUSPENDED_BLOCK : nsISuspendedTypes::NONE_SUSPENDED),
+ mMediaSuspend(
+ Preferences::GetBool("media.block-autoplay-until-in-foreground", true) &&
+ Preferences::GetBool("media.autoplay.enabled", true) ?
+ nsISuspendedTypes::SUSPENDED_BLOCK : nsISuspendedTypes::NONE_SUSPENDED),
mAudioMuted(false), mAudioVolume(1.0), mAudioCaptured(false),
mDesktopModeViewport(false), mIsRootOuterWindow(false), mInnerWindow(nullptr),
mOuterWindow(aOuterWindow),
// Make sure no actual window ends up with mWindowID == 0
mWindowID(NextWindowID()), mHasNotifiedGlobalCreated(false),
mMarkedCCGeneration(0), mServiceWorkersTestingEnabled(false),
mLargeAllocStatus(LargeAllocStatus::NONE),
mHasTriedToCacheTopInnerWindow(false),
--- a/toolkit/content/widgets/browser.xml
+++ b/toolkit/content/widgets/browser.xml
@@ -779,17 +779,18 @@
<property name="audioMuted"
onget="return this._audioMuted;"
readonly="true"/>
<field name="_mediaBlocked">true</field>
<property name="mediaBlocked" readonly="true">
<getter>
<![CDATA[
- if (this.mPrefs.getBoolPref("media.block-autoplay-until-in-foreground", true)) {
+ if (this.mPrefs.getBoolPref("media.block-autoplay-until-in-foreground", true) &&
+ this.mPrefs.getBoolPref("media.autoplay.enabled", true)) {
return this._mediaBlocked;
}
return false;
]]>
</getter>
</property>
<field name="_hasAnyPlayingMediaBeenBlocked">false</field>