Bug 1466926 - part2 : add a new preference to control autoplay from background script.
MozReview-Commit-ID: K4fX7gumON
--- a/dom/base/nsDocument.cpp
+++ b/dom/base/nsDocument.cpp
@@ -12615,17 +12615,18 @@ nsIDocument::HasBeenUserGestureActivated
}
return mUserGestureActivated;
}
bool
nsIDocument::IsExtensionPage() const
{
- return BasePrincipal::Cast(NodePrincipal())->AddonPolicy();
+ return Preferences::GetBool("media.autoplay.allow-extension-background-pages", true) &&
+ BasePrincipal::Cast(NodePrincipal())->AddonPolicy();
}
nsIDocument*
nsIDocument::GetSameTypeParentDocument()
{
nsCOMPtr<nsIDocShellTreeItem> current = GetDocShell();
if (!current) {
return nullptr;
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -570,16 +570,19 @@ pref("media.recorder.video.frame_drops",
pref("media.autoplay.default", 0);
// By default, don't block WebAudio from playing automatically.
pref("media.autoplay.block-webaudio", false);
// By default, don't block muted media from playing automatically.
pref("media.autoplay.allow-muted", true);
+// By default, don't block the media from extension background script.
+pref("media.autoplay.allow-extension-background-pages", true);
+
// If "media.autoplay.default" is not ALLOWED, and this pref is true,
// then audible media would only be allowed to autoplay after website has
// been activated by specific user gestures, but non-audible
// media won't be restricted.
#ifdef NIGHTLY_BUILD
pref("media.autoplay.enabled.user-gestures-needed", false);
#endif