Bug 1466926 - part2 : add a new preference to control autoplay from background script. draft
authoralwu <alwu@mozilla.com>
Tue, 31 Jul 2018 09:03:31 -0700
changeset 825454 bc85cbe1be278ba76700f9905eda6348924882a0
parent 825453 29f18aa2758b8d757fcf1cace12b7b79016f02df
child 825455 f7b0b54e31a7a3f1dc0090e8c65d9ddd8fe239e1
child 825457 71fd7747f9bd34b4ee8822e6b92aa5b194674759
child 825461 59db3a93a8a358b71787f5758f6889cffd387190
child 825463 78aa107147fccdff4c90ffe44e69d5efa09effd7
push id118119
push userbmo:alwu@mozilla.com
push dateWed, 01 Aug 2018 21:08:21 +0000
bugs1466926
milestone63.0a1
Bug 1466926 - part2 : add a new preference to control autoplay from background script. MozReview-Commit-ID: K4fX7gumON
dom/base/nsDocument.cpp
modules/libpref/init/all.js
--- 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