summaryrefslogtreecommitdiffstats
path: root/browser/components/uitour/test/browser_UITour_availableTargets.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/uitour/test/browser_UITour_availableTargets.js')
-rw-r--r--browser/components/uitour/test/browser_UITour_availableTargets.js114
1 files changed, 114 insertions, 0 deletions
diff --git a/browser/components/uitour/test/browser_UITour_availableTargets.js b/browser/components/uitour/test/browser_UITour_availableTargets.js
new file mode 100644
index 000000000..a6e96e31f
--- /dev/null
+++ b/browser/components/uitour/test/browser_UITour_availableTargets.js
@@ -0,0 +1,114 @@
+"use strict";
+
+var gTestTab;
+var gContentAPI;
+var gContentWindow;
+
+var hasWebIDE = Services.prefs.getBoolPref("devtools.webide.widget.enabled");
+var hasPocket = Services.prefs.getBoolPref("extensions.pocket.enabled");
+
+requestLongerTimeout(2);
+add_task(setup_UITourTest);
+
+add_UITour_task(function* test_availableTargets() {
+ let data = yield getConfigurationPromise("availableTargets");
+ ok_targets(data, [
+ "accountStatus",
+ "addons",
+ "appMenu",
+ "backForward",
+ "bookmarks",
+ "customize",
+ "help",
+ "home",
+ "devtools",
+ ...(hasPocket ? ["pocket"] : []),
+ "privateWindow",
+ "quit",
+ "readerMode-urlBar",
+ "search",
+ "searchIcon",
+ "trackingProtection",
+ "urlbar",
+ ...(hasWebIDE ? ["webide"] : [])
+ ]);
+
+ ok(UITour.availableTargetsCache.has(window),
+ "Targets should now be cached");
+});
+
+add_UITour_task(function* test_availableTargets_changeWidgets() {
+ CustomizableUI.removeWidgetFromArea("bookmarks-menu-button");
+ ok(!UITour.availableTargetsCache.has(window),
+ "Targets should be evicted from cache after widget change");
+ let data = yield getConfigurationPromise("availableTargets");
+ ok_targets(data, [
+ "accountStatus",
+ "addons",
+ "appMenu",
+ "backForward",
+ "customize",
+ "help",
+ "devtools",
+ "home",
+ ...(hasPocket ? ["pocket"] : []),
+ "privateWindow",
+ "quit",
+ "readerMode-urlBar",
+ "search",
+ "searchIcon",
+ "trackingProtection",
+ "urlbar",
+ ...(hasWebIDE ? ["webide"] : [])
+ ]);
+
+ ok(UITour.availableTargetsCache.has(window),
+ "Targets should now be cached again");
+ CustomizableUI.reset();
+ ok(!UITour.availableTargetsCache.has(window),
+ "Targets should not be cached after reset");
+});
+
+add_UITour_task(function* test_availableTargets_exceptionFromGetTarget() {
+ // The query function for the "search" target will throw if it's not found.
+ // Make sure the callback still fires with the other available targets.
+ CustomizableUI.removeWidgetFromArea("search-container");
+ let data = yield getConfigurationPromise("availableTargets");
+ // Default minus "search" and "searchIcon"
+ ok_targets(data, [
+ "accountStatus",
+ "addons",
+ "appMenu",
+ "backForward",
+ "bookmarks",
+ "customize",
+ "help",
+ "home",
+ "devtools",
+ ...(hasPocket ? ["pocket"] : []),
+ "privateWindow",
+ "quit",
+ "readerMode-urlBar",
+ "trackingProtection",
+ "urlbar",
+ ...(hasWebIDE ? ["webide"] : [])
+ ]);
+
+ CustomizableUI.reset();
+});
+
+function ok_targets(actualData, expectedTargets) {
+ // Depending on how soon after page load this is called, the selected tab icon
+ // may or may not be showing the loading throbber. Check for its presence and
+ // insert it into expectedTargets if it's visible.
+ let selectedTabIcon =
+ document.getAnonymousElementByAttribute(gBrowser.selectedTab,
+ "anonid",
+ "tab-icon-image");
+ if (selectedTabIcon && UITour.isElementVisible(selectedTabIcon))
+ expectedTargets.push("selectedTabIcon");
+
+ ok(Array.isArray(actualData.targets), "data.targets should be an array");
+ is(actualData.targets.sort().toString(), expectedTargets.sort().toString(),
+ "Targets should be as expected");
+}