toolkit/components/search/tests/xpcshell/test_defaultEngine.js

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:e0040e9cb1d4
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 /*
5 * Test that currentEngine and defaultEngine properties can be set and yield the
6 * proper events and behavior (search results)
7 */
8
9 "use strict";
10
11 const Ci = Components.interfaces;
12
13 Components.utils.import("resource://testing-common/httpd.js");
14
15 let waitForEngines = {
16 "Test search engine": 1,
17 "A second test engine": 1
18 };
19
20 function search_observer(aSubject, aTopic, aData) {
21 let engine = aSubject.QueryInterface(Ci.nsISearchEngine);
22 do_print("Observer: " + aData + " for " + engine.name);
23
24 if (aData != "engine-added") {
25 return;
26 }
27
28 // If the engine is defined in `waitForEngines`, remove it from the list
29 if (waitForEngines[engine.name]) {
30 delete waitForEngines[engine.name];
31 } else {
32 // This engine is not one we're waiting for, so bail out early.
33 return;
34 }
35
36 // Only continue when both engines have been loaded.
37 if (Object.keys(waitForEngines).length)
38 return;
39
40 let search = Services.search;
41
42 let engine1 = search.getEngineByName("Test search engine");
43 let engine2 = search.getEngineByName("A second test engine");
44
45 search.defaultEngine = engine1;
46 do_check_eq(search.defaultEngine, engine1);
47 search.defaultEngine = engine2
48 do_check_eq(search.defaultEngine, engine2);
49 search.defaultEngine = engine1;
50 do_check_eq(search.defaultEngine, engine1);
51
52 // Test that hiding the currently-default engine affects the defaultEngine getter
53 // (when the default is hidden, we fall back to the first in the list, so move
54 // our second engine to that position)
55 search.moveEngine(engine2, 0);
56 engine1.hidden = true;
57 do_check_eq(search.defaultEngine, engine2);
58
59 // Test that the default engine is restored when it is unhidden
60 engine1.hidden = false;
61 do_check_eq(search.defaultEngine, engine1);
62
63 // Test that setting defaultEngine to an already-hidden engine works, but
64 // doesn't change the return value of the getter
65 engine2.hidden = true;
66 search.moveEngine(engine1, 0)
67 search.defaultEngine = engine2;
68 do_check_eq(search.defaultEngine, engine1);
69 engine2.hidden = false;
70 do_check_eq(search.defaultEngine, engine2);
71
72 do_test_finished();
73 }
74
75 function run_test() {
76 removeMetadata();
77 updateAppInfo();
78
79 let httpServer = new HttpServer();
80 httpServer.start(-1);
81 httpServer.registerDirectory("/", do_get_cwd());
82 let baseUrl = "http://localhost:" + httpServer.identity.primaryPort;
83
84 do_register_cleanup(function cleanup() {
85 httpServer.stop(function() {});
86 Services.obs.removeObserver(search_observer, "browser-search-engine-modified");
87 });
88
89 do_test_pending();
90
91 Services.obs.addObserver(search_observer, "browser-search-engine-modified", false);
92
93 Services.search.addEngine(baseUrl + "/data/engine.xml",
94 Ci.nsISearchEngine.DATA_XML,
95 null, false);
96 Services.search.addEngine(baseUrl + "/data/engine2.xml",
97 Ci.nsISearchEngine.DATA_XML,
98 null, false);
99 }

mercurial