Bug 1619658 - Add picture in picture policy. r=fluent-reviewers,mconley,flod
☠☠ backed out by 5bb98eb25269 ☠ ☠
authorMichael Kaply <mozilla@kaply.com>
Wed, 20 May 2020 23:58:55 +0000
changeset 531473 7daef473f5ebb2fce0b58a82972cf7b4a8079ae8
parent 531472 a58f5a460cf1b27c141c7840cb44cc9c8a6962c1
child 531474 55cc61b65e567fdb2908b4b0f49f05c7f8164f0d
push id116668
push usermozilla@kaply.com
push dateThu, 21 May 2020 16:48:10 +0000
treeherderautoland@7daef473f5eb [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersfluent-reviewers, mconley, flod
bugs1619658
milestone78.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1619658 - Add picture in picture policy. r=fluent-reviewers,mconley,flod Differential Revision: https://phabricator.services.mozilla.com/D74490
browser/components/enterprisepolicies/Policies.jsm
browser/components/enterprisepolicies/schemas/policies-schema.json
browser/components/enterprisepolicies/tests/xpcshell/test_simple_pref_policies.js
browser/locales/en-US/browser/policies/policies-descriptions.ftl
--- a/browser/components/enterprisepolicies/Policies.jsm
+++ b/browser/components/enterprisepolicies/Policies.jsm
@@ -1277,16 +1277,32 @@ var Policies = {
           param.Notifications.Allow,
           param.Notifications.Block
         );
         setDefaultPermission("desktop-notification", param.Notifications);
       }
     },
   },
 
+  PictureInPicture: {
+    onBeforeAddons(manager, param) {
+      if ("Enabled" in param) {
+        setDefaultPref(
+          "media.videocontrols.picture-in-picture.video-toggle.enabled",
+          param.Enabled
+        );
+      }
+      if (param.Locked) {
+        Services.prefs.lockPref(
+          "media.videocontrols.picture-in-picture.video-toggle.enabled"
+        );
+      }
+    },
+  },
+
   PopupBlocking: {
     onBeforeUIStartup(manager, param) {
       addAllowDenyPermissions("popup", param.Allow, null);
 
       if (param.Locked) {
         let blockValue = true;
         if (param.Default !== undefined && !param.Default) {
           blockValue = false;
--- a/browser/components/enterprisepolicies/schemas/policies-schema.json
+++ b/browser/components/enterprisepolicies/schemas/policies-schema.json
@@ -630,16 +630,28 @@
           "type": "boolean"
         },
         "EnablePermissions": {
           "type": "boolean"
         }
       }
     },
 
+    "PictureInPicture": {
+      "type": "object",
+      "properties": {
+        "Enabled": {
+          "type": "boolean"
+        },
+        "Locked": {
+          "type": "boolean"
+        }
+      }
+    },
+
     "Permissions": {
       "type": "object",
       "properties": {
         "Camera": {
           "type": "object",
           "properties": {
             "Allow": {
               "type": "array",
--- a/browser/components/enterprisepolicies/tests/xpcshell/test_simple_pref_policies.js
+++ b/browser/components/enterprisepolicies/tests/xpcshell/test_simple_pref_policies.js
@@ -695,16 +695,30 @@ const POLICIES_TESTS = [
         EnablePermissions: true,
       },
     },
     lockedPrefs: {
       "pdfjs.disabled": true,
       "pdfjs.enablePermissions": true,
     },
   },
+
+  // POLICY: PictureInPicture
+
+  {
+    policies: {
+      PictureInPicture: {
+        Enabled: false,
+        Locked: true,
+      },
+    },
+    lockedPrefs: {
+      "media.videocontrols.picture-in-picture.video-toggle.enabled": false,
+    },
+  },
 ];
 
 add_task(async function test_policy_simple_prefs() {
   for (let test of POLICIES_TESTS) {
     await setupPolicyEngineWithJson({
       policies: test.policies,
     });
 
--- a/browser/locales/en-US/browser/policies/policies-descriptions.ftl
+++ b/browser/locales/en-US/browser/policies/policies-descriptions.ftl
@@ -144,16 +144,18 @@ policy-OverridePostUpdatePage = Override the post-update “What’s New” page. Set this policy to blank if you want to disable the post-update page.
 
 policy-PasswordManagerEnabled = Enable saving passwords to the password manager.
 
 # PDF.js and PDF should not be translated
 policy-PDFjs = Disable or configure PDF.js, the built-in PDF viewer in { -brand-short-name }.
 
 policy-Permissions2 = Configure permissions for camera, microphone, location, notifications, and autoplay.
 
+policy-PictureInPicture = Enable or disable Picture-in-Picture.
+
 policy-PopupBlocking = Allow certain websites to display popups by default.
 
 policy-Preferences = Set and lock the value for a subset of preferences.
 
 policy-PromptForDownloadLocation = Ask where to save files when downloading.
 
 policy-Proxy = Configure proxy settings.