toolkit/components/places/tests/unit/test_priorityUrlProvider.js

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:7e74427ae6e0
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
5 Cu.import("resource://gre/modules/PriorityUrlProvider.jsm");
6
7 function run_test() {
8 run_next_test();
9 }
10
11 add_task(function* search_engine_match() {
12 let engine = yield promiseDefaultSearchEngine();
13 let token = engine.getResultDomain();
14 let match = yield PriorityUrlProvider.getMatch(token.substr(0, 1));
15 do_check_eq(match.url, engine.searchForm);
16 do_check_eq(match.title, engine.name);
17 do_check_eq(match.iconUrl, engine.iconURI ? engine.iconURI.spec : null);
18 do_check_eq(match.reason, "search");
19 });
20
21 add_task(function* no_match() {
22 do_check_eq(null, yield PriorityUrlProvider.getMatch("test"));
23 });
24
25 add_task(function* hide_search_engine_nomatch() {
26 let engine = yield promiseDefaultSearchEngine();
27 let token = engine.getResultDomain();
28 let promiseTopic = promiseSearchTopic("engine-changed");
29 Services.search.removeEngine(engine);
30 yield promiseTopic;
31 do_check_true(engine.hidden);
32 do_check_eq(null, yield PriorityUrlProvider.getMatch(token.substr(0, 1)));
33 });
34
35 add_task(function* add_search_engine_match() {
36 let promiseTopic = promiseSearchTopic("engine-added");
37 do_check_eq(null, yield PriorityUrlProvider.getMatch("bacon"));
38 Services.search.addEngineWithDetails("bacon", "", "bacon", "Search Bacon",
39 "GET", "http://www.bacon.moz/?search={searchTerms}");
40 yield promiseSearchTopic;
41 let match = yield PriorityUrlProvider.getMatch("bacon");
42 do_check_eq(match.url, "http://www.bacon.moz");
43 do_check_eq(match.title, "bacon");
44 do_check_eq(match.iconUrl, null);
45 do_check_eq(match.reason, "search");
46 });
47
48 add_task(function* remove_search_engine_nomatch() {
49 let engine = Services.search.getEngineByName("bacon");
50 let promiseTopic = promiseSearchTopic("engine-removed");
51 Services.search.removeEngine(engine);
52 yield promiseTopic;
53 do_check_eq(null, yield PriorityUrlProvider.getMatch("bacon"));
54 });
55
56 function promiseDefaultSearchEngine() {
57 let deferred = Promise.defer();
58 Services.search.init( () => {
59 deferred.resolve(Services.search.defaultEngine);
60 });
61 return deferred.promise;
62 }
63
64 function promiseSearchTopic(expectedVerb) {
65 let deferred = Promise.defer();
66 Services.obs.addObserver( function observe(subject, topic, verb) {
67 do_log_info("browser-search-engine-modified: " + verb);
68 if (verb == expectedVerb) {
69 Services.obs.removeObserver(observe, "browser-search-engine-modified");
70 deferred.resolve();
71 }
72 }, "browser-search-engine-modified", false);
73 return deferred.promise;
74 }

mercurial