forked from mirrors/gecko-dev
		
	 2a01092c90
			
		
	
	
		2a01092c90
		
	
	
	
	
		
			
			Renames all instances of the snake_case identifier to camelCase to match more closely to idiomatic JavaScript and to existing conventions throughout the code base. Differential Revision: https://phabricator.services.mozilla.com/D198826
		
			
				
	
	
		
			199 lines
		
	
	
	
		
			5.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			199 lines
		
	
	
	
		
			5.5 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 CHECKBOX_ID = "searchShowSearchTermCheckbox";
 | |
| const PREF_SEARCHTERMS = "browser.urlbar.showSearchTerms.enabled";
 | |
| const PREF_FEATUREGATE = "browser.urlbar.showSearchTerms.featureGate";
 | |
| 
 | |
| /*
 | |
|   If Nimbus experiment is enabled, check option visibility.
 | |
| */
 | |
| add_task(async function showSearchTermsVisibility_experiment_beforeOpen() {
 | |
|   await SpecialPowers.pushPrefEnv({
 | |
|     set: [[PREF_FEATUREGATE, false]],
 | |
|   });
 | |
|   await QuickSuggestTestUtils.withExperiment({
 | |
|     valueOverrides: {
 | |
|       showSearchTermsFeatureGate: true,
 | |
|     },
 | |
|     callback: async () => {
 | |
|       await openPreferencesViaOpenPreferencesAPI("search", {
 | |
|         leaveOpen: true,
 | |
|       });
 | |
|       let doc = gBrowser.selectedBrowser.contentDocument;
 | |
|       let container = doc.getElementById(CHECKBOX_ID);
 | |
|       Assert.ok(
 | |
|         BrowserTestUtils.isVisible(container),
 | |
|         "The option box is visible"
 | |
|       );
 | |
|       gBrowser.removeCurrentTab();
 | |
|     },
 | |
|   });
 | |
|   await SpecialPowers.popPrefEnv();
 | |
| });
 | |
| 
 | |
| /*
 | |
|   If Nimbus experiment is not enabled initially but eventually enabled,
 | |
|   check option visibility on Preferences page.
 | |
| */
 | |
| add_task(async function showSearchTermsVisibility_experiment_afterOpen() {
 | |
|   await SpecialPowers.pushPrefEnv({
 | |
|     set: [[PREF_FEATUREGATE, false]],
 | |
|   });
 | |
|   await openPreferencesViaOpenPreferencesAPI("search", { leaveOpen: true });
 | |
|   let doc = gBrowser.selectedBrowser.contentDocument;
 | |
|   let container = doc.getElementById(CHECKBOX_ID);
 | |
|   Assert.ok(
 | |
|     BrowserTestUtils.isHidden(container),
 | |
|     "The option box is initially hidden."
 | |
|   );
 | |
| 
 | |
|   // Install experiment.
 | |
|   await QuickSuggestTestUtils.withExperiment({
 | |
|     valueOverrides: {
 | |
|       showSearchTermsFeatureGate: true,
 | |
|     },
 | |
|     callback: async () => {
 | |
|       Assert.ok(
 | |
|         BrowserTestUtils.isVisible(container),
 | |
|         "The option box is visible"
 | |
|       );
 | |
|     },
 | |
|   });
 | |
| 
 | |
|   Assert.ok(
 | |
|     BrowserTestUtils.isHidden(container),
 | |
|     "The option box is hidden again after the experiment is uninstalled."
 | |
|   );
 | |
| 
 | |
|   gBrowser.removeCurrentTab();
 | |
|   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],
 | |
|       ["browser.search.widget.inNavBar", 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 hidden when search bar is enabled."
 | |
|   );
 | |
| 
 | |
|   // Clean-up.
 | |
|   gBrowser.removeCurrentTab();
 | |
|   await SpecialPowers.popPrefEnv();
 | |
| });
 | |
| 
 | |
| /*
 | |
|   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 SpecialPowers.pushPrefEnv({
 | |
|     set: [["browser.search.widget.inNavBar", true]],
 | |
|   });
 | |
|   Assert.ok(
 | |
|     checkbox.hidden,
 | |
|     "showSearchTerms checkbox should be hidden when search bar is enabled."
 | |
|   );
 | |
| 
 | |
|   // Clean-up.
 | |
|   await SpecialPowers.popPrefEnv();
 | |
|   Assert.ok(!checkbox.hidden, "showSearchTerms checkbox should be shown.");
 | |
| 
 | |
|   gBrowser.removeCurrentTab();
 | |
|   await SpecialPowers.popPrefEnv();
 | |
| });
 |