Bug 1429163 - Policy: Disable Pocket. r=nateweiner draft
authorFelipe Gomes <felipc@gmail.com>
Thu, 15 Feb 2018 00:12:03 -0200
changeset 755246 a50447b178a521f2780545c0726722a492b51437
parent 755243 83e39ea03b3c3cc93d8b12738e1a03e0eeddc372
child 756294 283dba5313b8f8043b5d1a49511cd697d1e4f83f
child 757083 6ff1d297e8370b96c73b35249b36c3dc84105494
push id99134
push userfelipc@gmail.com
push dateThu, 15 Feb 2018 02:12:39 +0000
reviewersnateweiner
bugs1429163
milestone60.0a1
Bug 1429163 - Policy: Disable Pocket. r=nateweiner MozReview-Commit-ID: CwMw43DDssM
browser/components/enterprisepolicies/Policies.jsm
browser/components/enterprisepolicies/schemas/policies-schema.json
browser/components/enterprisepolicies/tests/browser/browser.ini
browser/components/enterprisepolicies/tests/browser/browser_policy_disable_pocket.js
--- a/browser/components/enterprisepolicies/Policies.jsm
+++ b/browser/components/enterprisepolicies/Policies.jsm
@@ -106,16 +106,24 @@ this.Policies = {
   "DisableMasterPassword": {
     onBeforeUIStartup(manager, param) {
       if (param == true) {
         manager.disallowFeature("masterPassword");
       }
     }
   },
 
+  "DisablePocket": {
+    onBeforeAddons(manager, param) {
+      if (param == true) {
+        setAndLockPref("extensions.pocket.enabled", false);
+      }
+    }
+  },
+
   "dont_check_default_browser": {
     onBeforeUIStartup(manager, param) {
       setAndLockPref("browser.shell.checkDefaultBrowser", false);
     }
   },
 
   "flash_plugin": {
     onBeforeUIStartup(manager, param) {
--- a/browser/components/enterprisepolicies/schemas/policies-schema.json
+++ b/browser/components/enterprisepolicies/schemas/policies-schema.json
@@ -61,16 +61,24 @@
     "DisableMasterPassword": {
       "description": "Removes access to setting a master password.",
       "first_available": "60.0",
 
       "type": "boolean",
       "enum": [true]
     },
 
+    "DisablePocket": {
+      "description": "Prevents usage of the \"Pocket\" feature.",
+      "first_available": "60.0",
+
+      "type": "boolean",
+      "enum": [true]
+    },
+
     "dont_check_default_browser": {
       "description": "Don't check for the default browser on startup.",
       "first_available": "60.0",
 
       "type": "boolean",
       "enum": [true]
     },
 
--- a/browser/components/enterprisepolicies/tests/browser/browser.ini
+++ b/browser/components/enterprisepolicies/tests/browser/browser.ini
@@ -13,11 +13,12 @@ support-files =
 [browser_policies_validate_and_parse_API.js]
 [browser_policy_block_set_desktop_background.js]
 [browser_policy_default_browser_check.js]
 [browser_policy_disable_fxscreenshots.js]
 [browser_policy_disable_masterpassword.js]
 [browser_policy_display_bookmarks.js]
 [browser_policy_disable_formhistory.js]
 [browser_policy_display_menu.js]
+[browser_policy_disable_pocket.js]
 [browser_policy_disable_shield.js]
 [browser_policy_remember_passwords.js]
 
new file mode 100644
--- /dev/null
+++ b/browser/components/enterprisepolicies/tests/browser/browser_policy_disable_pocket.js
@@ -0,0 +1,36 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const PREF_POCKET = "extensions.pocket.enabled";
+
+async function checkPocket(shouldBeEnabled) {
+  return BrowserTestUtils.waitForCondition(() => {
+    return !!PageActions.actionForID("pocket") == shouldBeEnabled;
+  }, "Expecting Pocket to be " + shouldBeEnabled);
+}
+
+add_task(async function test_disable_firefox_screenshots() {
+  await BrowserTestUtils.withNewTab("data:text/html,Test", async function() {
+
+    // Sanity check to make sure Pocket is enabled on tests
+    await checkPocket(true);
+
+    await setupPolicyEngineWithJson({
+      "policies": {
+        "DisablePocket": true
+      }
+    });
+
+    await checkPocket(false);
+
+    // Clear the change made by the engine to restore Pocket.
+    // This is needed in case this test runs twice in a row
+    // (such as in test-verify), in order for the first sanity check
+    // to pass again.
+    await setupPolicyEngineWithJson("");
+    Services.prefs.unlockPref(PREF_POCKET);
+    Services.prefs.getDefaultBranch("").setBoolPref(PREF_POCKET, true);
+  });
+});