forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			231 lines
		
	
	
	
		
			6.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			231 lines
		
	
	
	
		
			6.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const SUGGEST_PREF_NAME = "browser.search.suggest.enabled";
 | |
| const URLBAR_SUGGEST_PREF_NAME = "browser.urlbar.suggest.searches";
 | |
| const PRIVATE_PREF_NAME = "browser.search.suggest.enabled.private";
 | |
| const SEARCHBAR_PREF_NAME = "browser.search.widget.inNavBar";
 | |
| 
 | |
| let initialUrlbarSuggestValue;
 | |
| let initialSuggestionsInPrivateValue;
 | |
| 
 | |
| add_setup(async function () {
 | |
|   const originalSuggest = Services.prefs.getBoolPref(SUGGEST_PREF_NAME);
 | |
|   initialUrlbarSuggestValue = Services.prefs.getBoolPref(
 | |
|     URLBAR_SUGGEST_PREF_NAME
 | |
|   );
 | |
|   initialSuggestionsInPrivateValue =
 | |
|     Services.prefs.getBoolPref(PRIVATE_PREF_NAME);
 | |
| 
 | |
|   registerCleanupFunction(() => {
 | |
|     Services.prefs.setBoolPref(SUGGEST_PREF_NAME, originalSuggest);
 | |
|     Services.prefs.setBoolPref(
 | |
|       PRIVATE_PREF_NAME,
 | |
|       initialSuggestionsInPrivateValue
 | |
|     );
 | |
|   });
 | |
| });
 | |
| 
 | |
| async function toggleElement(
 | |
|   id,
 | |
|   prefName,
 | |
|   element,
 | |
|   initialCheckboxValue,
 | |
|   initialPrefValue,
 | |
|   descCheckbox,
 | |
|   descPref,
 | |
|   shouldUpdatePref = false
 | |
| ) {
 | |
|   await BrowserTestUtils.synthesizeMouseAtCenter(
 | |
|     `#${id}`,
 | |
|     {},
 | |
|     gBrowser.selectedBrowser
 | |
|   );
 | |
|   is(
 | |
|     element.checked,
 | |
|     !initialCheckboxValue,
 | |
|     `Should have flipped the ${descCheckbox} checkbox`
 | |
|   );
 | |
|   let expectedPrefValue = shouldUpdatePref
 | |
|     ? !initialPrefValue
 | |
|     : initialPrefValue;
 | |
|   let prefValue = Services.prefs.getBoolPref(prefName);
 | |
| 
 | |
|   is(
 | |
|     prefValue,
 | |
|     expectedPrefValue,
 | |
|     `Should ${
 | |
|       shouldUpdatePref ? "" : "not"
 | |
|     } have updated the ${descPref} preference value`
 | |
|   );
 | |
| 
 | |
|   await BrowserTestUtils.synthesizeMouseAtCenter(
 | |
|     `#${id}`,
 | |
|     {},
 | |
|     gBrowser.selectedBrowser
 | |
|   );
 | |
|   is(
 | |
|     element.checked,
 | |
|     initialCheckboxValue,
 | |
|     `Should have flipped the ${descCheckbox} checkbox back to the original value`
 | |
|   );
 | |
|   prefValue = Services.prefs.getBoolPref(prefName);
 | |
|   expectedPrefValue = shouldUpdatePref ? !expectedPrefValue : initialPrefValue;
 | |
|   is(
 | |
|     prefValue,
 | |
|     expectedPrefValue,
 | |
|     `Should ${
 | |
|       shouldUpdatePref ? "" : "not"
 | |
|     } have updated the ${descPref} preference value`
 | |
|   );
 | |
| }
 | |
| 
 | |
| // Open with suggestions enabled
 | |
| add_task(async function test_suggestions_start_enabled() {
 | |
|   Services.prefs.setBoolPref(SUGGEST_PREF_NAME, true);
 | |
|   Services.prefs.setBoolPref(SEARCHBAR_PREF_NAME, true);
 | |
| 
 | |
|   await openPreferencesViaOpenPreferencesAPI("search", { leaveOpen: true });
 | |
| 
 | |
|   let doc = gBrowser.selectedBrowser.contentDocument;
 | |
|   let urlbarBox = doc.getElementById("urlBarSuggestion");
 | |
|   let privateBox = doc.getElementById("showSearchSuggestionsPrivateWindows");
 | |
|   ok(!urlbarBox.disabled, "Should have enabled the urlbar checkbox");
 | |
|   ok(
 | |
|     !privateBox.disabled,
 | |
|     "Should have enabled the private mode suggestions checkbox"
 | |
|   );
 | |
|   is(
 | |
|     urlbarBox.checked,
 | |
|     initialUrlbarSuggestValue,
 | |
|     "Should have the correct value for the urlbar checkbox"
 | |
|   );
 | |
|   is(
 | |
|     privateBox.checked,
 | |
|     initialSuggestionsInPrivateValue,
 | |
|     "Should have the correct value for the private mode suggestions checkbox"
 | |
|   );
 | |
| 
 | |
|   await toggleElement(
 | |
|     "urlBarSuggestion",
 | |
|     URLBAR_SUGGEST_PREF_NAME,
 | |
|     urlbarBox,
 | |
|     initialUrlbarSuggestValue,
 | |
|     initialUrlbarSuggestValue,
 | |
|     "urlbar",
 | |
|     "urlbar",
 | |
|     true
 | |
|   );
 | |
| 
 | |
|   await toggleElement(
 | |
|     "showSearchSuggestionsPrivateWindows",
 | |
|     PRIVATE_PREF_NAME,
 | |
|     privateBox,
 | |
|     initialSuggestionsInPrivateValue,
 | |
|     initialSuggestionsInPrivateValue,
 | |
|     "private suggestion",
 | |
|     "private suggestion",
 | |
|     true
 | |
|   );
 | |
| 
 | |
|   Services.prefs.setBoolPref(SUGGEST_PREF_NAME, false);
 | |
|   ok(!urlbarBox.checked, "Should have unchecked the urlbar box");
 | |
|   ok(urlbarBox.disabled, "Should have disabled the urlbar box");
 | |
|   Services.prefs.setBoolPref(SEARCHBAR_PREF_NAME, false);
 | |
|   ok(urlbarBox.hidden, "Should have hidden the urlbar box");
 | |
|   ok(!privateBox.checked, "Should have unchecked the private suggestions box");
 | |
|   ok(privateBox.disabled, "Should have disabled the private suggestions box");
 | |
| 
 | |
|   gBrowser.removeCurrentTab();
 | |
| });
 | |
| 
 | |
| // Open with suggestions disabled
 | |
| add_task(async function test_suggestions_start_disabled() {
 | |
|   Services.prefs.setBoolPref(SUGGEST_PREF_NAME, false);
 | |
| 
 | |
|   await openPreferencesViaOpenPreferencesAPI("search", { leaveOpen: true });
 | |
| 
 | |
|   let doc = gBrowser.selectedBrowser.contentDocument;
 | |
|   let urlbarBox = doc.getElementById("urlBarSuggestion");
 | |
|   ok(urlbarBox.disabled, "Should have the urlbar box disabled");
 | |
|   let privateBox = doc.getElementById("showSearchSuggestionsPrivateWindows");
 | |
|   ok(privateBox.disabled, "Should have the private suggestions box disabled");
 | |
| 
 | |
|   Services.prefs.setBoolPref(SUGGEST_PREF_NAME, true);
 | |
| 
 | |
|   ok(!urlbarBox.disabled, "Should have enabled the urlbar box");
 | |
|   ok(!privateBox.disabled, "Should have enabled the private suggestions box");
 | |
| 
 | |
|   gBrowser.removeCurrentTab();
 | |
| });
 | |
| 
 | |
| add_task(async function test_sync_search_suggestions_prefs() {
 | |
|   info("Adding the search bar to the toolbar");
 | |
|   Services.prefs.setBoolPref(SEARCHBAR_PREF_NAME, true);
 | |
|   Services.prefs.setBoolPref(SUGGEST_PREF_NAME, true);
 | |
|   Services.prefs.setBoolPref(URLBAR_SUGGEST_PREF_NAME, false);
 | |
|   await openPreferencesViaOpenPreferencesAPI("search", { leaveOpen: true });
 | |
| 
 | |
|   let doc = gBrowser.selectedBrowser.contentDocument;
 | |
|   let suggestionsInSearchFieldsCheckbox = doc.getElementById(
 | |
|     "suggestionsInSearchFieldsCheckbox"
 | |
|   );
 | |
| 
 | |
|   is(
 | |
|     suggestionsInSearchFieldsCheckbox.checked,
 | |
|     true,
 | |
|     "Should have the correct value for the search suggestions checkbox"
 | |
|   );
 | |
| 
 | |
|   is(
 | |
|     Services.prefs.getBoolPref(SUGGEST_PREF_NAME),
 | |
|     true,
 | |
|     `${SUGGEST_PREF_NAME} should be enabled`
 | |
|   );
 | |
|   is(
 | |
|     Services.prefs.getBoolPref(URLBAR_SUGGEST_PREF_NAME),
 | |
|     false,
 | |
|     `${URLBAR_SUGGEST_PREF_NAME} should be disabled`
 | |
|   );
 | |
| 
 | |
|   await toggleElement(
 | |
|     "suggestionsInSearchFieldsCheckbox",
 | |
|     URLBAR_SUGGEST_PREF_NAME,
 | |
|     suggestionsInSearchFieldsCheckbox,
 | |
|     suggestionsInSearchFieldsCheckbox.checked,
 | |
|     false,
 | |
|     "search suggestion",
 | |
|     "urlbar suggest"
 | |
|   );
 | |
| 
 | |
|   info("Removing the search bar from the toolbar");
 | |
|   Services.prefs.setBoolPref(SEARCHBAR_PREF_NAME, false);
 | |
| 
 | |
|   const suggestsPref = [true, false];
 | |
|   const urlbarSuggestsPref = [true, false];
 | |
| 
 | |
|   for (let suggestState of suggestsPref) {
 | |
|     for (let urlbarSuggestsState of urlbarSuggestsPref) {
 | |
|       Services.prefs.setBoolPref(SUGGEST_PREF_NAME, suggestState);
 | |
|       Services.prefs.setBoolPref(URLBAR_SUGGEST_PREF_NAME, urlbarSuggestsState);
 | |
| 
 | |
|       if (suggestState && urlbarSuggestsState) {
 | |
|         ok(
 | |
|           suggestionsInSearchFieldsCheckbox.checked,
 | |
|           "Should have checked the suggestions checkbox"
 | |
|         );
 | |
|       } else {
 | |
|         ok(
 | |
|           !suggestionsInSearchFieldsCheckbox.checked,
 | |
|           "Should have unchecked the suggestions checkbox"
 | |
|         );
 | |
|       }
 | |
|       ok(
 | |
|         !suggestionsInSearchFieldsCheckbox.disabled,
 | |
|         "Should have the suggestions checkbox enabled"
 | |
|       );
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   gBrowser.removeCurrentTab();
 | |
|   Services.prefs.clearUserPref(SEARCHBAR_PREF_NAME);
 | |
|   Services.prefs.clearUserPref(URLBAR_SUGGEST_PREF_NAME);
 | |
|   Services.prefs.clearUserPref(SUGGEST_PREF_NAME);
 | |
| });
 | 
