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

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:1c8d4254bc6f
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 });

mercurial