Source code

Revision control

Copy as Markdown

Other Tools

/* Any copyright is dedicated to the Public Domain.
"use strict";
Services.scriptloader.loadSubScript(
this
);
registerCleanupFunction(async () => {
await UrlbarTestUtils.promisePopupClose(window);
});
/**
* Asserts a search term is in the url bar and state values are
* what they should be.
*
* @param {string} searchString
* String that should be matched in the url bar.
* @param {object | null} options
* Options for the assertions.
* @param {Window | null} options.window
* Window to use for tests.
* @param {string | null} options.pageProxyState
* The pageproxystate that should be expected.
* @param {string | null} options.userTypedValue
* The userTypedValue that should be expected.
* @param {boolean | null} options.persistSearchTerms
* The attribute persistsearchterms that should be expected.
*/
function assertSearchStringIsInUrlbar(
searchString,
{
win = window,
pageProxyState = "invalid",
userTypedValue = searchString,
persistSearchTerms = true,
} = {}
) {
Assert.equal(
win.gURLBar.value,
searchString,
`Search string should be the urlbar value.`
);
let state = win.gURLBar.getBrowserState(win.gBrowser.selectedBrowser);
Assert.equal(
state.persist?.searchTerms,
searchString,
`Search terms should match.`
);
Assert.equal(
win.gBrowser.userTypedValue,
userTypedValue,
"userTypedValue should match."
);
Assert.equal(
win.gURLBar.getAttribute("pageproxystate"),
pageProxyState,
"Pageproxystate should match."
);
if (persistSearchTerms) {
Assert.ok(
win.gURLBar.hasAttribute("persistsearchterms"),
"Urlbar has persistsearchterms attribute."
);
} else {
Assert.ok(
!win.gURLBar.hasAttribute("persistsearchterms"),
"Urlbar does not have persistsearchterms attribute."
);
}
}
async function searchWithTab(
searchString,
tab = null,
engine = SearchService.defaultEngine,
expectedPersistedSearchTerms = true
) {
if (!tab) {
tab = await BrowserTestUtils.openNewForegroundTab(gBrowser);
}
let [expectedSearchUrl] = UrlbarUtils.getSearchQueryUrl(engine, searchString);
let browserLoadedPromise = BrowserTestUtils.browserLoaded(
tab.linkedBrowser,
false,
expectedSearchUrl
);
gURLBar.focus();
await UrlbarTestUtils.promiseAutocompleteResultPopup({
window,
waitForFocus,
value: searchString,
fireInputEvent: true,
selectionStart: 0,
selectionEnd: searchString.length - 1,
});
EventUtils.synthesizeKey("KEY_Enter");
await browserLoadedPromise;
if (expectedPersistedSearchTerms) {
info("Load a tab with search terms persisting in the urlbar.");
assertSearchStringIsInUrlbar(searchString);
}
return { tab, expectedSearchUrl };
}