summaryrefslogtreecommitdiffstats
path: root/browser/components/urlbar/tests/engagementTelemetry/browser/head-groups.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/urlbar/tests/engagementTelemetry/browser/head-groups.js')
-rw-r--r--browser/components/urlbar/tests/engagementTelemetry/browser/head-groups.js294
1 files changed, 294 insertions, 0 deletions
diff --git a/browser/components/urlbar/tests/engagementTelemetry/browser/head-groups.js b/browser/components/urlbar/tests/engagementTelemetry/browser/head-groups.js
new file mode 100644
index 0000000000..b34221d749
--- /dev/null
+++ b/browser/components/urlbar/tests/engagementTelemetry/browser/head-groups.js
@@ -0,0 +1,294 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/* import-globals-from head.js */
+
+async function doHeuristicsTest({ trigger, assert }) {
+ await doTest(async browser => {
+ await openPopup("x");
+
+ await trigger();
+ await assert();
+ });
+}
+
+async function doAdaptiveHistoryTest({ trigger, assert }) {
+ await SpecialPowers.pushPrefEnv({
+ set: [["browser.urlbar.autoFill", false]],
+ });
+
+ await doTest(async browser => {
+ await PlacesTestUtils.addVisits(["https://example.com/test"]);
+ await UrlbarUtils.addToInputHistory("https://example.com/test", "examp");
+
+ await openPopup("exa");
+ await selectRowByURL("https://example.com/test");
+
+ await trigger();
+ await assert();
+ });
+
+ await SpecialPowers.popPrefEnv();
+}
+
+async function doSearchHistoryTest({ trigger, assert }) {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["browser.urlbar.suggest.searches", true],
+ ["browser.urlbar.maxHistoricalSearchSuggestions", 2],
+ ],
+ });
+
+ await doTest(async browser => {
+ await UrlbarTestUtils.formHistory.add(["foofoo", "foobar"]);
+
+ await openPopup("foo");
+ await selectRowByURL("http://mochi.test:8888/?terms=foofoo");
+
+ await trigger();
+ await assert();
+ });
+
+ await SpecialPowers.popPrefEnv();
+}
+
+async function doSearchSuggestTest({ trigger, assert }) {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["browser.urlbar.suggest.searches", true],
+ ["browser.urlbar.maxHistoricalSearchSuggestions", 2],
+ ],
+ });
+
+ await doTest(async browser => {
+ await openPopup("foo");
+ await selectRowByURL("http://mochi.test:8888/?terms=foofoo");
+
+ await trigger();
+ await assert();
+ });
+
+ await SpecialPowers.popPrefEnv();
+}
+
+async function doTailSearchSuggestTest({ trigger, assert }) {
+ const cleanup = await _useTailSuggestionsEngine();
+
+ await doTest(async browser => {
+ await openPopup("hello");
+ await selectRowByProvider("SearchSuggestions");
+
+ await trigger();
+ await assert();
+ });
+
+ await cleanup();
+}
+
+async function doTopPickTest({ trigger, assert }) {
+ const cleanupQuickSuggest = await ensureQuickSuggestInit({
+ // eslint-disable-next-line mozilla/valid-lazy
+ config: lazy.QuickSuggestTestUtils.BEST_MATCH_CONFIG,
+ });
+
+ await SpecialPowers.pushPrefEnv({
+ set: [["browser.urlbar.bestMatch.enabled", true]],
+ });
+
+ await doTest(async browser => {
+ await openPopup("sponsored");
+ await selectRowByURL("https://example.com/sponsored");
+
+ await trigger();
+ await assert();
+ });
+
+ await SpecialPowers.popPrefEnv();
+ cleanupQuickSuggest();
+}
+
+async function doTopSiteTest({ trigger, assert }) {
+ await doTest(async browser => {
+ await addTopSites("https://example.com/");
+
+ await showResultByArrowDown();
+ await selectRowByURL("https://example.com/");
+
+ await trigger();
+ await assert();
+ });
+}
+
+async function doRemoteTabTest({ trigger, assert }) {
+ const remoteTab = await loadRemoteTab("https://example.com");
+
+ await doTest(async browser => {
+ await openPopup("example");
+ await selectRowByProvider("RemoteTabs");
+
+ await trigger();
+ await assert();
+ });
+
+ await remoteTab.unload();
+}
+
+async function doAddonTest({ trigger, assert }) {
+ const addon = loadOmniboxAddon({ keyword: "omni" });
+ await addon.startup();
+
+ await doTest(async browser => {
+ await openPopup("omni test");
+
+ await trigger();
+ await assert();
+ });
+
+ await addon.unload();
+}
+
+async function doGeneralBookmarkTest({ trigger, assert }) {
+ await doTest(async browser => {
+ await PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
+ url: "https://example.com/bookmark",
+ title: "bookmark",
+ });
+
+ await openPopup("bookmark");
+ await selectRowByURL("https://example.com/bookmark");
+
+ await trigger();
+ await assert();
+ });
+}
+
+async function doGeneralHistoryTest({ trigger, assert }) {
+ await SpecialPowers.pushPrefEnv({
+ set: [["browser.urlbar.autoFill", false]],
+ });
+
+ await doTest(async browser => {
+ await PlacesTestUtils.addVisits("https://example.com/test");
+
+ await openPopup("example");
+ await selectRowByURL("https://example.com/test");
+
+ await trigger();
+ await assert();
+ });
+
+ await SpecialPowers.popPrefEnv();
+}
+
+async function doSuggestTest({ trigger, assert }) {
+ const cleanupQuickSuggest = await ensureQuickSuggestInit();
+ await SpecialPowers.pushPrefEnv({
+ set: [["browser.urlbar.bestMatch.enabled", false]],
+ });
+
+ await doTest(async browser => {
+ await openPopup("nonsponsored");
+ await selectRowByURL("https://example.com/nonsponsored");
+
+ await trigger();
+ await assert();
+ });
+
+ await SpecialPowers.popPrefEnv();
+ cleanupQuickSuggest();
+}
+
+async function doAboutPageTest({ trigger, assert }) {
+ await SpecialPowers.pushPrefEnv({
+ set: [["browser.urlbar.maxRichResults", 3]],
+ });
+
+ await doTest(async browser => {
+ await openPopup("about:");
+ await selectRowByURL("about:robots");
+
+ await trigger();
+ await assert();
+ });
+
+ await SpecialPowers.popPrefEnv();
+}
+
+async function doSuggestedIndexTest({ trigger, assert }) {
+ await SpecialPowers.pushPrefEnv({
+ set: [["browser.urlbar.unitConversion.enabled", true]],
+ });
+
+ await doTest(async browser => {
+ await openPopup("1m to cm");
+ await selectRowByProvider("UnitConversion");
+
+ await trigger();
+ await assert();
+ });
+
+ await SpecialPowers.popPrefEnv();
+}
+
+/**
+ * Creates a search engine that returns tail suggestions and sets it as the
+ * default engine.
+ *
+ * @returns {Function}
+ * A cleanup function that will revert the default search engine and stop http
+ * server.
+ */
+async function _useTailSuggestionsEngine() {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["browser.search.suggest.enabled", true],
+ ["browser.urlbar.suggest.searches", true],
+ ["browser.urlbar.richSuggestions.tail", true],
+ ],
+ });
+
+ const engineName = "TailSuggestions";
+ const httpServer = new HttpServer();
+ httpServer.start(-1);
+ httpServer.registerPathHandler("/suggest", (req, resp) => {
+ const params = new URLSearchParams(req.queryString);
+ const searchStr = params.get("q");
+ const suggestions = [
+ searchStr,
+ [searchStr + "-tail"],
+ [],
+ {
+ "google:suggestdetail": [{ t: "-tail", mp: "… " }],
+ },
+ ];
+ resp.setHeader("Content-Type", "application/json", false);
+ resp.write(JSON.stringify(suggestions));
+ });
+
+ await SearchTestUtils.installSearchExtension({
+ name: engineName,
+ search_url: `http://localhost:${httpServer.identity.primaryPort}/search`,
+ suggest_url: `http://localhost:${httpServer.identity.primaryPort}/suggest`,
+ suggest_url_get_params: "?q={searchTerms}",
+ search_form: `http://localhost:${httpServer.identity.primaryPort}/search?q={searchTerms}`,
+ });
+
+ const tailEngine = Services.search.getEngineByName(engineName);
+ const originalEngine = await Services.search.getDefault();
+ Services.search.setDefault(
+ tailEngine,
+ Ci.nsISearchService.CHANGE_REASON_UNKNOWN
+ );
+
+ return async () => {
+ Services.search.setDefault(
+ originalEngine,
+ Ci.nsISearchService.CHANGE_REASON_UNKNOWN
+ );
+ httpServer.stop(() => {});
+ await SpecialPowers.popPrefEnv();
+ };
+}