Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

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);
});