1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
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");
});
|