Bug 1429120 - Add enterprise policy to display the bookmarks toolbar by default
MozReview-Commit-ID: EZTAXdd9rN1
--- 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
+ }
+}