summaryrefslogtreecommitdiffstats
path: root/toolkit/mozapps/extensions/test/browser/browser_html_discover_view_prefs.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/mozapps/extensions/test/browser/browser_html_discover_view_prefs.js')
-rw-r--r--toolkit/mozapps/extensions/test/browser/browser_html_discover_view_prefs.js83
1 files changed, 83 insertions, 0 deletions
diff --git a/toolkit/mozapps/extensions/test/browser/browser_html_discover_view_prefs.js b/toolkit/mozapps/extensions/test/browser/browser_html_discover_view_prefs.js
new file mode 100644
index 0000000000..474cd424b9
--- /dev/null
+++ b/toolkit/mozapps/extensions/test/browser/browser_html_discover_view_prefs.js
@@ -0,0 +1,83 @@
+/* eslint max-len: ["error", 80] */
+"use strict";
+
+const { AddonTestUtils } = ChromeUtils.importESModule(
+ "resource://testing-common/AddonTestUtils.sys.mjs"
+);
+
+AddonTestUtils.initMochitest(this);
+const server = AddonTestUtils.createHttpServer();
+const TEST_API_URL = `http://localhost:${server.identity.primaryPort}/discoapi`;
+
+async function checkIfDiscoverVisible(expectVisible) {
+ let requestCount = 0;
+ let requestPromise = new Promise(resolve => {
+ // Overwrites previous request handler, if any.
+ server.registerPathHandler("/discoapi", (request, response) => {
+ ++requestCount;
+ response.write(`{"results": []}`);
+ resolve();
+ });
+ });
+
+ // Open about:addons with default view.
+ let managerWindow = await open_manager(null);
+ let categoryUtilities = new CategoryUtilities(managerWindow);
+
+ is(
+ categoryUtilities.isTypeVisible("discover"),
+ expectVisible,
+ "Visibility of discopane"
+ );
+
+ await wait_for_view_load(managerWindow);
+ if (expectVisible) {
+ is(
+ categoryUtilities.selectedCategory,
+ "discover",
+ "Expected discopane as the default view"
+ );
+ await requestPromise;
+ is(requestCount, 1, "Expected discovery API request");
+ } else {
+ // The next view (after discopane) is the extension list.
+ is(
+ categoryUtilities.selectedCategory,
+ "extension",
+ "Should fall back to another view when the discopane is disabled"
+ );
+ is(requestCount, 0, "Discovery API should not be requested");
+ }
+
+ await close_manager(managerWindow);
+}
+
+add_setup(async function () {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["extensions.getAddons.discovery.api_url", TEST_API_URL],
+ // Disable recommendations at the HTML about:addons view to avoid sending
+ // a discovery API request from the fallback view (extension list) in the
+ // showPane_false test.
+ ["extensions.htmlaboutaddons.recommendations.enabled", false],
+ ],
+ });
+});
+
+add_task(async function showPane_true() {
+ await SpecialPowers.pushPrefEnv({
+ set: [[PREF_DISCOVER_ENABLED, true]],
+ clear: [[PREF_UI_LASTCATEGORY]],
+ });
+ await checkIfDiscoverVisible(true);
+ await SpecialPowers.popPrefEnv();
+});
+
+add_task(async function showPane_false() {
+ await SpecialPowers.pushPrefEnv({
+ set: [[PREF_DISCOVER_ENABLED, false]],
+ clear: [[PREF_UI_LASTCATEGORY]],
+ });
+ await checkIfDiscoverVisible(false);
+ await SpecialPowers.popPrefEnv();
+});