diff options
Diffstat (limited to 'browser/components/uitour/test/browser_UITour_availableTargets.js')
-rw-r--r-- | browser/components/uitour/test/browser_UITour_availableTargets.js | 114 |
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"); +} |