summaryrefslogtreecommitdiffstats
path: root/browser/components/customizableui/test/browser_887438_currentset_shim.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/customizableui/test/browser_887438_currentset_shim.js')
-rw-r--r--browser/components/customizableui/test/browser_887438_currentset_shim.js75
1 files changed, 75 insertions, 0 deletions
diff --git a/browser/components/customizableui/test/browser_887438_currentset_shim.js b/browser/components/customizableui/test/browser_887438_currentset_shim.js
new file mode 100644
index 000000000..a04299819
--- /dev/null
+++ b/browser/components/customizableui/test/browser_887438_currentset_shim.js
@@ -0,0 +1,75 @@
+/* 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";
+
+var navbar = document.getElementById("nav-bar");
+var navbarCT = navbar.customizationTarget;
+var overflowPanelList = document.getElementById("widget-overflow-list");
+
+// Reading currentset
+add_task(function() {
+ let nodeIds = [];
+ for (let node of navbarCT.childNodes) {
+ if (node.getAttribute("skipintoolbarset") != "true") {
+ nodeIds.push(node.id);
+ }
+ }
+ for (let node of overflowPanelList.childNodes) {
+ if (node.getAttribute("skipintoolbarset") != "true") {
+ nodeIds.push(node.id);
+ }
+ }
+ let currentSet = navbar.currentSet;
+ is(currentSet.split(',').length, nodeIds.length, "Should be just as many nodes as there are.");
+ is(currentSet, nodeIds.join(','), "Current set and node IDs should match.");
+});
+
+// Insert, then remove items
+add_task(function() {
+ let currentSet = navbar.currentSet;
+ let newCurrentSet = currentSet.replace('home-button', 'feed-button,sync-button,home-button');
+ navbar.currentSet = newCurrentSet;
+ is(newCurrentSet, navbar.currentSet, "Current set should match expected current set.");
+ let feedBtn = document.getElementById("feed-button");
+ let syncBtn = document.getElementById("sync-button");
+ ok(feedBtn, "Feed button should have been added.");
+ ok(syncBtn, "Sync button should have been added.");
+ if (feedBtn && syncBtn) {
+ let feedParent = feedBtn.parentNode;
+ let syncParent = syncBtn.parentNode;
+ ok(feedParent == navbarCT || feedParent == overflowPanelList,
+ "Feed button should be in navbar or overflow");
+ ok(syncParent == navbarCT || syncParent == overflowPanelList,
+ "Feed button should be in navbar or overflow");
+ is(feedBtn.nextElementSibling, syncBtn, "Feed button should be next to sync button.");
+ let homeBtn = document.getElementById("home-button");
+ is(syncBtn.nextElementSibling, homeBtn, "Sync button should be next to home button.");
+ }
+ navbar.currentSet = currentSet;
+ is(currentSet, navbar.currentSet, "Should be able to remove the added items.");
+});
+
+// Simultaneous insert/remove:
+add_task(function() {
+ let currentSet = navbar.currentSet;
+ let newCurrentSet = currentSet.replace('home-button', 'feed-button');
+ navbar.currentSet = newCurrentSet;
+ is(newCurrentSet, navbar.currentSet, "Current set should match expected current set.");
+ let feedBtn = document.getElementById("feed-button");
+ ok(feedBtn, "Feed button should have been added.");
+ let homeBtn = document.getElementById("home-button");
+ ok(!homeBtn, "Home button should have been removed.");
+ if (feedBtn) {
+ let feedParent = feedBtn.parentNode;
+ ok(feedParent == navbarCT || feedParent == overflowPanelList,
+ "Feed button should be in navbar or overflow");
+ }
+ navbar.currentSet = currentSet;
+ is(currentSet, navbar.currentSet, "Should be able to return to original state.");
+});
+
+add_task(function* asyncCleanup() {
+ yield resetCustomization();
+});