summaryrefslogtreecommitdiffstats
path: root/browser/components/urlbar/tests/browser/browser_UrlbarInput_searchTerms_strings.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/urlbar/tests/browser/browser_UrlbarInput_searchTerms_strings.js')
-rw-r--r--browser/components/urlbar/tests/browser/browser_UrlbarInput_searchTerms_strings.js79
1 files changed, 79 insertions, 0 deletions
diff --git a/browser/components/urlbar/tests/browser/browser_UrlbarInput_searchTerms_strings.js b/browser/components/urlbar/tests/browser/browser_UrlbarInput_searchTerms_strings.js
new file mode 100644
index 0000000000..866cb38760
--- /dev/null
+++ b/browser/components/urlbar/tests/browser/browser_UrlbarInput_searchTerms_strings.js
@@ -0,0 +1,79 @@
+/* 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: "resource:///modules/UrlbarUtils.sys.mjs",
+});
+
+let defaultTestEngine;
+
+add_setup(async function () {
+ await SpecialPowers.pushPrefEnv({
+ set: [["browser.urlbar.showSearchTerms.featureGate", true]],
+ });
+
+ await SearchTestUtils.installSearchExtension(
+ {
+ name: "MozSearch",
+ search_url: "https://www.example.com/",
+ search_url_get_params: "q={searchTerms}",
+ },
+ { setAsDefault: true }
+ );
+ defaultTestEngine = Services.search.getEngineByName("MozSearch");
+
+ registerCleanupFunction(async function () {
+ await PlacesUtils.history.clear();
+ });
+});
+
+// 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(
+ defaultTestEngine,
+ searchString
+ );
+ let browserLoadedPromise = BrowserTestUtils.browserLoaded(
+ tab.linkedBrowser,
+ false,
+ searchUrl
+ );
+ BrowserTestUtils.startLoadingURIString(gBrowser, searchUrl);
+ await browserLoadedPromise;
+ assertSearchStringIsInUrlbar(searchString);
+
+ info("Check that no formatting is applied.");
+ UrlbarTestUtils.checkFormatting(window, searchString);
+ }
+
+ BrowserTestUtils.removeTab(tab);
+});