2
// Locale Amazon? Baidu? DDG? Google?
3
"en-US": [ true, false, true, true ],
4
"af": [ true, false, true, true ],
5
"ar": [ true, false, true, true ],
6
"as": [ true, false, true, true ],
7
"ast": [ false, false, true, true ],
8
"be": [ false, false, true, true ],
9
"bg": [ true, false, true, true ],
10
"bn-BD": [ false, false, true, true ],
11
"bn-IN": [ true, false, true, true ],
12
"br": [ true, false, true, true ],
13
"bs": [ false, false, true, true ],
14
"ca": [ false, false, true, true ],
15
"cs": [ false, false, true, true ],
16
"csb": [ false, false, true, true ],
17
"cy": [ true, false, true, true ],
18
"da": [ true, false, true, true ],
19
"de": [ true, false, true, true ],
20
"el": [ true, false, true, true ],
21
"en-GB": [ true, false, true, true ],
22
"en-ZA": [ true, false, true, true ],
23
"eo": [ true, false, true, true ],
24
"es-AR": [ true, false, true, true ],
25
"es-CL": [ false, false, true, true ],
26
"es-ES": [ false, false, true, true ],
27
"es-MX": [ false, false, true, true ],
28
"et": [ false, false, true, true ],
29
"eu": [ true, false, true, true ],
30
"fa": [ true, false, true, true ],
31
"fi": [ false, false, true, true ],
32
"fr": [ true, false, true, true ],
33
"fy-NL": [ false, false, true, true ],
34
"ga-IE": [ true, false, true, true ],
35
"gd": [ true, false, true, true ],
36
"gl": [ true, false, true, true ],
37
"gu-IN": [ false, false, true, true ],
38
"he": [ false, false, true, true ],
39
"hi-IN": [ false, false, true, true ],
40
"hr": [ true, false, true, true ],
41
"hu": [ false, false, true, true ],
42
"hy-AM": [ true, false, true, true ],
43
"id": [ false, false, true, true ],
44
"is": [ true, false, true, true ],
45
"it": [ true, false, true, true ],
46
"ja": [ true, false, true, true ],
47
"kk": [ false, false, true, true ],
48
"km": [ true, false, true, true ],
49
"kn": [ true, false, true, true ],
50
"ko": [ false, false, true, true ],
51
"ku": [ true, false, true, true ],
52
"lg": [ true, false, true, true ],
53
"lt": [ true, false, true, true ],
54
"lv": [ false, false, true, true ],
55
"mai": [ false, false, true, true ],
56
"mk": [ true, false, true, true ],
57
"ml": [ false, false, true, true ],
58
"mn": [ false, false, true, true ],
59
"mr": [ true, false, true, true ],
60
"nb-NO": [ true, false, true, true ],
61
"nl": [ false, false, true, true ],
62
"nn-NO": [ true, false, true, true ],
63
"nso": [ true, false, true, true ],
64
"or": [ true, false, true, true ],
65
"pa-IN": [ false, false, true, true ],
66
"pl": [ false, false, true, true ],
67
"pt-BR": [ false, false, true, true ],
68
"pt-PT": [ true, false, true, true ],
69
"ro": [ true, false, true, true ],
70
"ru": [ false, false, true, true ],
71
"si": [ true, false, true, true ],
72
"sk": [ false, false, true, true ],
73
"sl": [ false, false, true, true ],
74
"sq": [ true, false, true, true ],
75
"sr": [ true, false, true, true ],
76
"sv-SE": [ false, false, true, true ],
77
"sw": [ true, false, true, true ],
78
"ta": [ false, false, true, true ],
79
"te": [ true, false, true, true ],
80
"th": [ true, false, true, true ],
81
"tr": [ true, false, true, true ],
82
"uk": [ false, false, true, true ],
83
"vi": [ false, false, true, true ],
84
"zh-CN": [ true, true, true, true ],
85
"zh-TW": [ false, false, true, true ],
86
"zu": [ true, false, true, true ]
89
const PLUGIN_AMAZON = 0;
90
const PLUGIN_BAIDU = 1;
92
const PLUGIN_GOOGLE = 3;
94
if (Services.prefs.getCharPref("app.update.channel") == "nightly") {
95
TEST_MATRIX["bs"][PLUGIN_AMAZON] = true;
98
function get_query_params(aURL)
101
aURL.query.split('&').forEach(function(query) {
102
let parts = query.split('=');
103
do_check_eq(parts.length, 2);
104
params[parts[0]] = parts[1];
110
function test_baidu(aEngine)
112
let url = aEngine.getSubmission("foo").uri.QueryInterface(Ci.nsIURL);
114
// We ship the upstream plugin for this one
115
if (url.host == "zhidao.baidu.com") {
119
let params = get_query_params(url);
121
let ubuntu = "tn" in params && params["tn"] == "ubuntuu_cb" && "cl" in params && params["cl"] == 3;
123
// We only expect to see our Baidu searchplugin
124
do_check_true(ubuntu);
129
function test_duckduckgo(aEngine)
131
let url = aEngine.getSubmission("foo").uri.QueryInterface(Ci.nsIURL);
133
let params = get_query_params(url);
134
let ubuntu = "t" in params && params["t"] == "canonical";
136
// We only expect to see our DDG searchplugin
137
do_check_true(ubuntu);
142
function test_amazon(aEngine)
144
let url = aEngine.getSubmission("foo").uri.QueryInterface(Ci.nsIURL);
146
let params = get_query_params(url);
147
let ubuntu = "tag" in params && params["tag"] == "wwwcanoniccom-20";
149
// We only expect to see our Amazon searchplugin
150
do_check_true(ubuntu);
155
function test_google(aEngine)
168
function check_extra_params() {
169
for (let param in wanted) {
170
do_check_eq(params[param], wanted[param][_SEARCHPLUGIN_TEST_LOCALE]);
174
do_check_eq(Services.io.newURI(aEngine.searchForm, null, null).scheme, "https");
176
let url = aEngine.getSubmission("foo").uri.QueryInterface(Ci.nsIURL);
177
// Verify we are using a secure URL
178
do_check_eq(url.scheme, "https");
180
let params = get_query_params(url);
182
let ubuntu = "client" in params && params["client"] == "ubuntu" && "channel" in params && params["channel"] == "fs";
184
// We only expect to see our Google searchplugin
185
do_check_true(ubuntu);
187
check_extra_params();
189
url = aEngine.getSubmission("foo", "application/x-suggestions+json").uri.QueryInterface(Ci.nsIURL);
190
// Verify we are using a secure URL for suggestions
191
do_check_eq(url.scheme, "https");
193
params = get_query_params(url);
195
// "client=ubuntu" fails for suggestions
196
do_check_eq(params["client"], "firefox");
198
check_extra_params();
205
do_check_true(!!_SEARCHPLUGIN_TEST_LOCALE);
206
_XPCSHELL_PROCESS = "child-" + _SEARCHPLUGIN_TEST_LOCALE;
208
//Services.prefs.setBoolPref("browser.search.log", true);
209
Services.prefs.setCharPref("general.useragent.locale", _SEARCHPLUGIN_TEST_LOCALE);
210
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1");
212
let found_Google = false;
213
let found_Amazon = false;
214
let found_DDG = false;
215
let found_Baidu = false;
217
do_check_true(_SEARCHPLUGIN_TEST_LOCALE in TEST_MATRIX);
219
let want_Amazon = TEST_MATRIX[_SEARCHPLUGIN_TEST_LOCALE][PLUGIN_AMAZON];
220
let want_Baidu = TEST_MATRIX[_SEARCHPLUGIN_TEST_LOCALE][PLUGIN_BAIDU];
221
let want_DDG = TEST_MATRIX[_SEARCHPLUGIN_TEST_LOCALE][PLUGIN_DDG];
222
let want_Google = TEST_MATRIX[_SEARCHPLUGIN_TEST_LOCALE][PLUGIN_GOOGLE];
226
Services.search.init({
227
onInitComplete: function(aStatus) {
228
do_check_true(Components.isSuccessCode(aStatus));
230
Services.search.getEngines().forEach(function(engine) {
231
let host = engine.getSubmission("foo").uri.host;
232
if (host.match(/\.google\./)) {
233
let is_ours = test_google(engine);
234
do_check_true(!(is_ours && found_Google));
235
found_Google = is_ours || found_Google;
236
} else if (host.match(/\.amazon\./)) {
237
let is_ours = test_amazon(engine);
238
do_check_true(!(is_ours && found_Amazon));
239
found_Amazon = is_ours || found_Amazon;
240
} else if (host.match(/duckduckgo\./)) {
241
let is_ours = test_duckduckgo(engine);
242
do_check_true(!(is_ours && found_DDG));
243
found_DDG = is_ours || found_DDG;
244
} else if (host.match(/baidu\./)) {
245
let is_ours = test_baidu(engine);
246
do_check_true(!(is_ours && found_Baidu));
247
found_Baidu = is_ours || found_Baidu;
251
do_check_true(!((found_Amazon && !want_Amazon) || (!found_Amazon && want_Amazon)));
252
do_check_true(!((found_Baidu && !want_Baidu) || (!found_Baidu && want_Baidu)));
253
do_check_true(!((found_DDG && !want_DDG) || (!found_DDG && want_DDG)));
254
do_check_true(!((found_Google && !want_Google) || (!found_Google && want_Google)));