1
0
Fork 0
firefox/browser/components/preferences/tests/browser_search_searchTerms.js
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

209 lines
5.8 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
/*
Tests the showSearchTerms option on the about:preferences#search page.
*/
"use strict";
ChromeUtils.defineLazyGetter(this, "QuickSuggestTestUtils", () => {
const { QuickSuggestTestUtils: module } = ChromeUtils.importESModule(
"resource://testing-common/QuickSuggestTestUtils.sys.mjs"
);
module.init(this);
return module;
});
const { CustomizableUITestUtils } = ChromeUtils.importESModule(
"resource://testing-common/CustomizableUITestUtils.sys.mjs"
);
let gCUITestUtils = new CustomizableUITestUtils(window);
const CHECKBOX_ID = "searchShowSearchTermCheckbox";
const PREF_SEARCHTERMS = "browser.urlbar.showSearchTerms.enabled";
const PREF_FEATUREGATE = "browser.urlbar.showSearchTerms.featureGate";
const PREF_SCOTCH_BONNET = "browser.urlbar.scotchBonnet.enableOverride";
add_task(async function showSearchTermsVisibility_scotchBonnet() {
await SpecialPowers.pushPrefEnv({
set: [[PREF_SCOTCH_BONNET, false]],
});
await BrowserTestUtils.withNewTab(
"about:preferences#search",
async browser => {
let container = browser.contentDocument.getElementById(CHECKBOX_ID);
Assert.ok(
!BrowserTestUtils.isVisible(container),
"The option box is not visible"
);
}
);
await SpecialPowers.pushPrefEnv({
set: [[PREF_SCOTCH_BONNET, true]],
});
await BrowserTestUtils.withNewTab(
"about:preferences#search",
async browser => {
let container = browser.contentDocument.getElementById(CHECKBOX_ID);
Assert.ok(
BrowserTestUtils.isVisible(container),
"The option box is visible"
);
}
);
await SpecialPowers.popPrefEnv();
});
// To avoid impacting users who could be using Persisted Search but not Scotch
// Bonnet, deprecate the feature gate preference only after Scotch Bonnet is
// enabled by default.
add_task(async function showSearchTermsVisibility_featureGate() {
await SpecialPowers.pushPrefEnv({
set: [[PREF_FEATUREGATE, false]],
});
await BrowserTestUtils.withNewTab(
"about:preferences#search",
async browser => {
let container = browser.contentDocument.getElementById(CHECKBOX_ID);
Assert.ok(
!BrowserTestUtils.isVisible(container),
"The option box is not visible"
);
}
);
await SpecialPowers.pushPrefEnv({
set: [[PREF_FEATUREGATE, true]],
});
await BrowserTestUtils.withNewTab(
"about:preferences#search",
async browser => {
let container = browser.contentDocument.getElementById(CHECKBOX_ID);
Assert.ok(
BrowserTestUtils.isVisible(container),
"The option box is visible"
);
}
);
await SpecialPowers.popPrefEnv();
await SpecialPowers.popPrefEnv();
});
/*
Check using the checkbox modifies the preference.
*/
add_task(async function showSearchTerms_checkbox() {
// Enable the feature.
await SpecialPowers.pushPrefEnv({
set: [[PREF_FEATUREGATE, true]],
});
await openPreferencesViaOpenPreferencesAPI("search", { leaveOpen: true });
let doc = gBrowser.selectedBrowser.contentDocument;
let option = doc.getElementById(CHECKBOX_ID);
// Evaluate checkbox pref is true.
Assert.ok(option.checked, "Option box should be checked.");
// Evaluate checkbox when pref is false.
await SpecialPowers.pushPrefEnv({
set: [[PREF_SEARCHTERMS, false]],
});
Assert.ok(!option.checked, "Option box should not be checked.");
await SpecialPowers.popPrefEnv();
// Evaluate pref when checkbox is un-checked.
await BrowserTestUtils.synthesizeMouseAtCenter(
"#" + CHECKBOX_ID,
{},
gBrowser.selectedBrowser
);
Assert.equal(
Services.prefs.getBoolPref(PREF_SEARCHTERMS),
false,
"Preference should be false if un-checked."
);
// Evaluate pref when checkbox is checked.
await BrowserTestUtils.synthesizeMouseAtCenter(
"#" + CHECKBOX_ID,
{},
gBrowser.selectedBrowser
);
Assert.equal(
Services.prefs.getBoolPref(PREF_SEARCHTERMS),
true,
"Preference should be true if checked."
);
// Clean-up.
Services.prefs.clearUserPref(PREF_SEARCHTERMS);
gBrowser.removeCurrentTab();
await SpecialPowers.popPrefEnv();
});
/*
When loading the search preferences panel, the
showSearchTerms checkbox should be hidden if
the search bar is enabled.
*/
add_task(async function showSearchTerms_and_searchBar_preference_load() {
// Enable the feature.
await SpecialPowers.pushPrefEnv({
set: [[PREF_FEATUREGATE, true]],
});
await gCUITestUtils.addSearchBar();
await openPreferencesViaOpenPreferencesAPI("search", { leaveOpen: true });
let doc = gBrowser.selectedBrowser.contentDocument;
let checkbox = doc.getElementById(CHECKBOX_ID);
Assert.ok(
checkbox.hidden,
"showSearchTerms checkbox should be hidden when search bar is enabled."
);
// Clean-up.
gBrowser.removeCurrentTab();
await SpecialPowers.popPrefEnv();
gCUITestUtils.removeSearchBar();
});
/*
If the search bar is enabled while the search
preferences panel is open, the showSearchTerms
checkbox should not be clickable.
*/
add_task(async function showSearchTerms_and_searchBar_preference_change() {
// Enable the feature.
await SpecialPowers.pushPrefEnv({
set: [[PREF_FEATUREGATE, true]],
});
await openPreferencesViaOpenPreferencesAPI("search", { leaveOpen: true });
let doc = gBrowser.selectedBrowser.contentDocument;
let checkbox = doc.getElementById(CHECKBOX_ID);
Assert.ok(!checkbox.hidden, "showSearchTerms checkbox should be shown.");
await gCUITestUtils.addSearchBar();
Assert.ok(
checkbox.hidden,
"showSearchTerms checkbox should be hidden when search bar is enabled."
);
// Clean-up.
gCUITestUtils.removeSearchBar();
Assert.ok(!checkbox.hidden, "showSearchTerms checkbox should be shown.");
gBrowser.removeCurrentTab();
await SpecialPowers.popPrefEnv();
});