Bug 1619658 - Add picture in picture policy. r=fluent-reviewers,mconley,flod
☠☠ backed out by 4b31e67c062b ☠ ☠
authorMichael Kaply <mozilla@kaply.com>
Thu, 21 May 2020 18:23:11 +0000
changeset 531517 fdfb16cb82a6fd84f0ebc11e1545c429a7852989
parent 531516 e63cc7a1cbaa25c86c9a4130e9d5195e5752d45d
child 531518 b04340bad99d70638efda2e7d528e89df77e47c4
push id116698
push usermozilla@kaply.com
push dateThu, 21 May 2020 19:31:13 +0000
treeherderautoland@fdfb16cb82a6 [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.