summaryrefslogtreecommitdiffstats
path: root/browser/components/customizableui/test/browser_bootstrapped_custom_toolbar.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/customizableui/test/browser_bootstrapped_custom_toolbar.js')
-rw-r--r--browser/components/customizableui/test/browser_bootstrapped_custom_toolbar.js81
1 files changed, 81 insertions, 0 deletions
diff --git a/browser/components/customizableui/test/browser_bootstrapped_custom_toolbar.js b/browser/components/customizableui/test/browser_bootstrapped_custom_toolbar.js
new file mode 100644
index 000000000..2c5f0c79c
--- /dev/null
+++ b/browser/components/customizableui/test/browser_bootstrapped_custom_toolbar.js
@@ -0,0 +1,81 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+requestLongerTimeout(2);
+
+const kTestBarID = "testBar";
+const kWidgetID = "characterencoding-button";
+
+function createTestBar(aLegacy) {
+ let testBar = document.createElement("toolbar");
+ testBar.id = kTestBarID;
+ testBar.setAttribute("customizable", "true");
+ CustomizableUI.registerArea(kTestBarID, {
+ type: CustomizableUI.TYPE_TOOLBAR,
+ legacy: aLegacy,
+ });
+ gNavToolbox.appendChild(testBar);
+ return testBar;
+}
+
+/**
+ * Helper function that does the following:
+ *
+ * 1) Creates a custom toolbar and registers it
+ * with CustomizableUI. Sets the legacy attribute
+ * of the object passed to registerArea to aLegacy.
+ * 2) Adds the widget with ID aWidgetID to that new
+ * toolbar.
+ * 3) Enters customize mode and makes sure that the
+ * widget is still in the right toolbar.
+ * 4) Exits customize mode, then removes and deregisters
+ * the custom toolbar.
+ * 5) Checks that the widget has no placement.
+ * 6) Re-adds and re-registers a custom toolbar with the same
+ * ID and options as the first one.
+ * 7) Enters customize mode and checks that the widget is
+ * properly back in the toolbar.
+ * 8) Exits customize mode, removes and de-registers the
+ * toolbar, and resets the toolbars to default.
+ */
+function checkRestoredPresence(aWidgetID, aLegacy) {
+ return Task.spawn(function* () {
+ let testBar = createTestBar(aLegacy);
+ CustomizableUI.addWidgetToArea(aWidgetID, kTestBarID);
+ let placement = CustomizableUI.getPlacementOfWidget(aWidgetID);
+ is(placement.area, kTestBarID,
+ "Expected " + aWidgetID + " to be in the test toolbar");
+
+ CustomizableUI.unregisterArea(testBar.id);
+ testBar.remove();
+
+ placement = CustomizableUI.getPlacementOfWidget(aWidgetID);
+ is(placement, null, "Expected " + aWidgetID + " to be in the palette");
+
+ testBar = createTestBar(aLegacy);
+
+ yield startCustomizing();
+ placement = CustomizableUI.getPlacementOfWidget(aWidgetID);
+ is(placement.area, kTestBarID,
+ "Expected " + aWidgetID + " to be in the test toolbar");
+ yield endCustomizing();
+
+ CustomizableUI.unregisterArea(testBar.id);
+ testBar.remove();
+
+ yield resetCustomization();
+ });
+}
+
+add_task(function* () {
+ yield checkRestoredPresence("downloads-button", false);
+ yield checkRestoredPresence("downloads-button", true);
+});
+
+add_task(function* () {
+ yield checkRestoredPresence("characterencoding-button", false);
+ yield checkRestoredPresence("characterencoding-button", true);
+});