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
|
/* -*- Mode: JavaScript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
*
* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/licenses/publicdomain/
*
* ***** END LICENSE BLOCK ***** */
var { MailServices } = ChromeUtils.import(
"resource:///modules/MailServices.jsm"
);
function acObserver() {}
acObserver.prototype = {
_search: null,
_result: null,
onSearchResult(aSearch, aResult) {
this._search = aSearch;
this._result = aResult;
},
};
function run_test() {
setupLocalServer(119);
// create identity
let identity = MailServices.accounts.createIdentity();
_account.addIdentity(identity);
let acs = Cc["@mozilla.org/autocomplete/search;1?name=news"].getService(
Ci.nsIAutoCompleteSearch
);
let obs;
let paramsN = JSON.stringify({
idKey: identity.key,
accountKey: _account.key,
type: "addr_newsgroups",
});
let paramsF = JSON.stringify({
idKey: identity.key,
accountKey: _account.key,
type: "addr_followup",
});
let paramsMail = JSON.stringify({
idKey: identity.key,
accountKey: _account.key,
type: "addr_to",
});
// misc.test is not subscribed
obs = new acObserver();
acs.startSearch("misc", paramsN, null, obs);
Assert.ok(obs._result == null || obs._result.matchCount == 0);
obs = new acObserver();
acs.startSearch("misc", paramsF, null, obs);
Assert.ok(obs._result == null || obs._result.matchCount == 0);
obs = new acObserver();
acs.startSearch("misc", paramsMail, null, obs);
Assert.ok(obs._result == null || obs._result.matchCount == 0);
// test.filter is subscribed
obs = new acObserver();
acs.startSearch("filter", paramsN, null, obs);
Assert.equal(obs._result.matchCount, 1);
obs = new acObserver();
acs.startSearch("filter", paramsF, null, obs);
Assert.equal(obs._result.matchCount, 1);
// ... but no auto-complete should occur for addr_to
obs = new acObserver();
acs.startSearch("filter", paramsMail, null, obs);
Assert.ok(obs._result == null || obs._result.matchCount == 0);
// test.subscribe.empty and test.subscribe.simple are subscribed
obs = new acObserver();
acs.startSearch("subscribe", paramsN, null, obs);
Assert.equal(obs._result.matchCount, 2);
obs = new acObserver();
acs.startSearch("subscribe", paramsF, null, obs);
Assert.equal(obs._result.matchCount, 2);
// ... but no auto-complete should occur for addr_to
obs = new acObserver();
acs.startSearch("subscribe", paramsMail, null, obs);
Assert.ok(obs._result == null || obs._result.matchCount == 0);
// test.subscribe.empty is subscribed, test.empty is not
obs = new acObserver();
acs.startSearch("empty", paramsN, null, obs);
Assert.equal(obs._result.matchCount, 1);
obs = new acObserver();
acs.startSearch("empty", paramsF, null, obs);
Assert.equal(obs._result.matchCount, 1);
let thread = gThreadManager.currentThread;
while (thread.hasPendingEvents()) {
thread.processNextEvent(true);
}
}
|