mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 10:18:41 +02:00 
			
		
		
		
	I also removed the Nimbus feature since there are no future plans to run experiments solely on this feature. Differential Revision: https://phabricator.services.mozilla.com/D234135
		
			
				
	
	
		
			209 lines
		
	
	
	
		
			5.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			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();
 | 
						|
});
 |