Bug 1619658 - Add picture in picture policy. r=fluent-reviewers,mconley,flod
authorMichael Kaply <mozilla@kaply.com>
Thu, 21 May 2020 20:22:05 +0000
changeset 531534 fac6421d395d012e28c736a9035fed13fe0e598b
parent 531533 4b31e67c062b80e9091476fe0b4582c3ae5995f3
child 531535 6470dd78730775c6223da8ac9f4cb9edad68beb2
push id116708
push usercsabou@mozilla.com
push dateThu, 21 May 2020 21:33:25 +0000
treeherderautoland@6470dd787307 [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
@@ -781,16 +781,28 @@
             "Locked": {
               "type": "boolean"
             }
           }
         }
       }
     },
 
+    "PictureInPicture": {
+      "type": "object",
+      "properties": {
+        "Enabled": {
+          "type": "boolean"
+        },
+        "Locked": {
+          "type": "boolean"
+        }
+      }
+    },
+
     "PopupBlocking": {
       "type": "object",
       "properties": {
         "Allow": {
           "type": "array",
           "strict": false,
           "items": {
             "type": "origin"
--- 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.