/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ // This test checks whether certain patterns of search terms will show // in the Urlbar as a search term. ChromeUtils.defineESModuleGetters(this, { UrlbarUtils: "moz-src:///browser/components/urlbar/UrlbarUtils.sys.mjs", }); add_setup(async function () { await SpecialPowers.pushPrefEnv({ set: [["browser.urlbar.showSearchTerms.featureGate", true]], }); let cleanup = await installPersistTestEngines(); registerCleanupFunction(async function () { await PlacesUtils.history.clear(); cleanup(); }); }); // Search terms should show up in the url bar if the pref is on // and the SERP url matches the one constructed in Firefox add_task(async function search_strings() { const searches = [ // Single word "chocolate", // Word with space "chocolate cake", // Allowable special characters. "chocolate;,?@&=+$-_!~*'()#cake", // Period used after the first word. "what is 255.255.255.255", // Protocol used after the first word. "what is https://", // Search with special characters '"chocolate cake" -recipes', "window.location how to use", "http", "https", // Long string within threshold. "h".repeat(UrlbarUtils.MAX_TEXT_LENGTH), ]; let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser); for (let searchString of searches) { info("Search for term:", searchString); let [searchUrl] = UrlbarUtils.getSearchQueryUrl( SearchService.defaultEngine, searchString ); let browserLoadedPromise = BrowserTestUtils.browserLoaded( tab.linkedBrowser, false, searchUrl ); BrowserTestUtils.startLoadingURIString(gBrowser, searchUrl); await browserLoadedPromise; assertSearchStringIsInUrlbar(searchString); info("Check that no formatting is applied."); await UrlbarTestUtils.checkFormatting(window, searchString); } BrowserTestUtils.removeTab(tab); });