Bug 1429120 - Add enterprise policy to display the bookmarks toolbar by default draft
authorKirk Steuber <ksteuber@mozilla.com>
Mon, 29 Jan 2018 10:20:52 -0800
changeset 748384 29dbf1830028d9bf9311b5b6bf74223d05b4ee6f
parent 748383 fd25fdd270833b34f4d27e721892c60d4a8ad9bc
push id97150
push userksteuber@mozilla.com
push dateMon, 29 Jan 2018 19:18:26 +0000
bugs1429120
milestone60.0a1
Bug 1429120 - Add enterprise policy to display the bookmarks toolbar by default MozReview-Commit-ID: EZTAXdd9rN1
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_display_bookmarks.js
browser/components/enterprisepolicies/tests/browser/config_display_bookmarks.json
--- a/browser/components/enterprisepolicies/Policies.jsm
+++ b/browser/components/enterprisepolicies/Policies.jsm
@@ -13,16 +13,17 @@ Cu.import("resource://gre/modules/XPCOMU
 Cu.import("resource://gre/modules/Services.jsm");
 XPCOMUtils.defineLazyServiceGetter(this, "gXulStore",
                                    "@mozilla.org/xul/xulstore;1",
                                    "nsIXULStore");
 
 const PREF_LOGLEVEL           = "browser.policies.loglevel";
 const PREF_MENU_ALREADY_DISPLAYED = "browser.policies.menuBarWasDisplayed";
 const BROWSER_DOCUMENT_URL        = "chrome://browser/content/browser.xul";
+const PREF_BOOKMARKS_ALREADY_DISPLAYED = "browser.policies.bookmarkBarWasDisplayed";
 
 XPCOMUtils.defineLazyGetter(this, "log", () => {
   let { ConsoleAPI } = Cu.import("resource://gre/modules/Console.jsm", {});
   return new ConsoleAPI({
     prefix: "Policies.jsm",
     // tip: set maxLogLevel to "debug" and use log.debug() to create detailed
     // messages during development. See LOG_LEVELS in Console.jsm for details.
     maxLogLevel: "error",
@@ -53,16 +54,33 @@ this.Policies = {
           Services.prefs.setBoolPref(PREF_MENU_ALREADY_DISPLAYED, true);
         } else {
           log.debug("Not showing the menu bar because it has already been shown.");
         }
       }
     }
   },
 
+  "display_bookmarks_toolbar": {
+    onBeforeUIStartup(manager, param) {
+      if (param == true) {
+        // This policy is meant to change the default behavior, not to force it.
+        // If this policy was alreay applied and the user chose to re-hide the
+        // bookmarks toolbar, do not show it again.
+        if (!Services.prefs.getBoolPref(PREF_BOOKMARKS_ALREADY_DISPLAYED, false)) {
+          log.debug("Showing the bookmarks toolbar");
+          gXulStore.setValue(BROWSER_DOCUMENT_URL, "PersonalToolbar", "collapsed", "false");
+          Services.prefs.setBoolPref(PREF_BOOKMARKS_ALREADY_DISPLAYED, true);
+        } else {
+          log.debug("Not showing the bookmarks toolbar because it has already been shown.");
+        }
+      }
+    }
+  },
+
   "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
@@ -13,16 +13,24 @@
     "display_menu_bar": {
       "description": "Causes the menu bar to be displayed by default.",
       "first_available": "60.0",
 
       "type": "boolean",
       "enum": [true]
     },
 
+    "display_bookmarks_toolbar": {
+      "description": "Causes the bookmarks toolbar to be displayed by default.",
+      "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
@@ -4,16 +4,18 @@ prefs =
 support-files =
   head.js
   config_dont_check_default_browser.json
   config_popups_cookies_addons_flash.json
   config_setAndLockPref.json
   config_simple_policies.json
   config_broken_json.json
   config_display_menu.json
+  config_display_bookmarks.json
 
 [browser_policies_broken_json.js]
 [browser_policies_popups_cookies_addons_flash.js]
 [browser_policies_setAndLockPref_API.js]
 [browser_policies_simple_policies.js]
 [browser_policies_validate_and_parse_API.js]
 [browser_policy_default_browser_check.js]
 [browser_policy_display_menu.js]
+[browser_policy_display_bookmarks.js]
new file mode 100644
--- /dev/null
+++ b/browser/components/enterprisepolicies/tests/browser/browser_policy_display_bookmarks.js
@@ -0,0 +1,19 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+add_task(async function setup() {
+  await setupPolicyEngineWithJson("config_display_bookmarks.json");
+});
+
+add_task(async function test_menu_shown() {
+  // Since testing will apply the policy after the browser has already started,
+  // we will need to open a new window to actually see the toolbar
+  let newWin = await BrowserTestUtils.openNewBrowserWindow();
+  let menuBar = newWin.document.getElementById("PersonalToolbar");
+  is(menuBar.getAttribute("collapsed"), "false",
+     "The bookmarks toolbar should not be hidden");
+
+  await BrowserTestUtils.closeWindow(newWin);
+});
new file mode 100644
--- /dev/null
+++ b/browser/components/enterprisepolicies/tests/browser/config_display_bookmarks.json
@@ -0,0 +1,5 @@
+{
+  "policies": {
+    "display_bookmarks_toolbar": true
+  }
+}