|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 * http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
3 |
|
4 /* |
|
5 * Tests getResultDomain API. |
|
6 */ |
|
7 |
|
8 "use strict"; |
|
9 |
|
10 const Ci = Components.interfaces; |
|
11 |
|
12 Components.utils.import("resource://testing-common/httpd.js"); |
|
13 |
|
14 let waitForEngines = new Set([ "Test search engine", |
|
15 "A second test engine", |
|
16 "bacon" ]); |
|
17 |
|
18 function promiseEnginesAdded() { |
|
19 let deferred = Promise.defer(); |
|
20 |
|
21 let observe = function observe(aSubject, aTopic, aData) { |
|
22 let engine = aSubject.QueryInterface(Ci.nsISearchEngine); |
|
23 do_print("Observer: " + aData + " for " + engine.name); |
|
24 if (aData != "engine-added") { |
|
25 return; |
|
26 } |
|
27 waitForEngines.delete(engine.name); |
|
28 if (waitForEngines.size > 0) { |
|
29 return; |
|
30 } |
|
31 |
|
32 let engine1 = Services.search.getEngineByName("Test search engine"); |
|
33 do_check_eq(engine1.getResultDomain(), "google.com"); |
|
34 do_check_eq(engine1.getResultDomain("text/html"), "google.com"); |
|
35 do_check_eq(engine1.getResultDomain("application/x-moz-default-purpose"), |
|
36 "purpose.google.com"); |
|
37 do_check_eq(engine1.getResultDomain("fake-response-type"), ""); |
|
38 let engine2 = Services.search.getEngineByName("A second test engine"); |
|
39 do_check_eq(engine2.getResultDomain(), "duckduckgo.com"); |
|
40 let engine3 = Services.search.getEngineByName("bacon"); |
|
41 do_check_eq(engine3.getResultDomain(), "bacon.moz"); |
|
42 deferred.resolve(); |
|
43 }; |
|
44 |
|
45 Services.obs.addObserver(observe, "browser-search-engine-modified", false); |
|
46 do_register_cleanup(function cleanup() { |
|
47 Services.obs.removeObserver(observe, "browser-search-engine-modified"); |
|
48 }); |
|
49 |
|
50 return deferred.promise; |
|
51 } |
|
52 |
|
53 function run_test() { |
|
54 removeMetadata(); |
|
55 updateAppInfo(); |
|
56 |
|
57 run_next_test(); |
|
58 } |
|
59 |
|
60 add_task(function* check_resultDomain() { |
|
61 let httpServer = new HttpServer(); |
|
62 httpServer.start(-1); |
|
63 httpServer.registerDirectory("/", do_get_cwd()); |
|
64 let baseUrl = "http://localhost:" + httpServer.identity.primaryPort; |
|
65 do_register_cleanup(function cleanup() { |
|
66 httpServer.stop(function() {}); |
|
67 }); |
|
68 |
|
69 let promise = promiseEnginesAdded(); |
|
70 Services.search.addEngine(baseUrl + "/data/engine.xml", |
|
71 Ci.nsISearchEngine.DATA_XML, |
|
72 null, false); |
|
73 Services.search.addEngine(baseUrl + "/data/engine2.xml", |
|
74 Ci.nsISearchEngine.DATA_XML, |
|
75 null, false); |
|
76 Services.search.addEngineWithDetails("bacon", "", "bacon", "Search Bacon", |
|
77 "GET", "http://www.bacon.moz/?search={searchTerms}"); |
|
78 yield promise; |
|
79 }); |