summaryrefslogtreecommitdiffstats
path: root/browser/components/urlbar/tests/unit/test_quickactions.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/urlbar/tests/unit/test_quickactions.js')
-rw-r--r--browser/components/urlbar/tests/unit/test_quickactions.js126
1 files changed, 126 insertions, 0 deletions
diff --git a/browser/components/urlbar/tests/unit/test_quickactions.js b/browser/components/urlbar/tests/unit/test_quickactions.js
new file mode 100644
index 0000000000..ddeb5a7561
--- /dev/null
+++ b/browser/components/urlbar/tests/unit/test_quickactions.js
@@ -0,0 +1,126 @@
+/* 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/. */
+
+"use strict";
+
+ChromeUtils.defineESModuleGetters(this, {
+ UrlbarProviderQuickActions:
+ "resource:///modules/UrlbarProviderQuickActions.sys.mjs",
+});
+
+let expectedMatch = (key, inputLength) => ({
+ type: UrlbarUtils.RESULT_TYPE.DYNAMIC,
+ source: UrlbarUtils.RESULT_SOURCE.ACTIONS,
+ heuristic: false,
+ payload: {
+ results: [{ key }],
+ dynamicType: "quickactions",
+ helpUrl: UrlbarProviderQuickActions.helpUrl,
+ inputLength,
+ },
+});
+
+testEngine_setup();
+
+add_task(async function init() {
+ UrlbarPrefs.set("quickactions.enabled", true);
+ UrlbarPrefs.set("suggest.quickactions", true);
+
+ UrlbarProviderQuickActions.addAction("newaction", {
+ commands: ["newaction"],
+ });
+
+ registerCleanupFunction(async () => {
+ UrlbarPrefs.clear("quickactions.enabled");
+ UrlbarPrefs.clear("suggest.quickactions");
+ UrlbarProviderQuickActions.removeAction("newaction");
+ });
+});
+
+add_task(async function nomatch() {
+ let context = createContext("this doesnt match", {
+ providers: [UrlbarProviderQuickActions.name],
+ isPrivate: false,
+ });
+ await check_results({
+ context,
+ matches: [],
+ });
+});
+
+add_task(async function quickactions_disabled() {
+ UrlbarPrefs.set("suggest.quickactions", false);
+ let context = createContext("new", {
+ providers: [UrlbarProviderQuickActions.name],
+ isPrivate: false,
+ });
+ await check_results({
+ context,
+ matches: [],
+ });
+});
+
+add_task(async function quickactions_match() {
+ UrlbarPrefs.set("suggest.quickactions", true);
+ let context = createContext("new", {
+ providers: [UrlbarProviderQuickActions.name],
+ isPrivate: false,
+ });
+ await check_results({
+ context,
+ matches: [expectedMatch("newaction", 3)],
+ });
+});
+
+add_task(async function duplicate_matches() {
+ UrlbarProviderQuickActions.addAction("testaction", {
+ commands: ["testaction", "test"],
+ });
+
+ let context = createContext("testaction", {
+ providers: [UrlbarProviderQuickActions.name],
+ isPrivate: false,
+ });
+
+ await check_results({
+ context,
+ matches: [expectedMatch("testaction", 10)],
+ });
+
+ UrlbarProviderQuickActions.removeAction("testaction");
+});
+
+add_task(async function remove_action() {
+ UrlbarProviderQuickActions.addAction("testaction", {
+ commands: ["testaction"],
+ });
+ UrlbarProviderQuickActions.removeAction("testaction");
+
+ let context = createContext("test", {
+ providers: [UrlbarProviderQuickActions.name],
+ isPrivate: false,
+ });
+
+ await check_results({
+ context,
+ matches: [],
+ });
+});
+
+add_task(async function minimum_search_string() {
+ let searchString = "newa";
+ for (let minimumSearchString of [0, 3]) {
+ UrlbarPrefs.set("quickactions.minimumSearchString", minimumSearchString);
+ for (let i = 1; i < 4; i++) {
+ let context = createContext(searchString.substring(0, i), {
+ providers: [UrlbarProviderQuickActions.name],
+ isPrivate: false,
+ });
+ let matches =
+ i >= minimumSearchString ? [expectedMatch("newaction", i)] : [];
+ await check_results({ context, matches });
+ }
+ }
+ UrlbarPrefs.clear("quickactions.minimumSearchString");
+});