1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/toolkit/components/search/tests/xpcshell/test_resultDomain.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,79 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + * http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +/* 1.8 + * Tests getResultDomain API. 1.9 + */ 1.10 + 1.11 +"use strict"; 1.12 + 1.13 +const Ci = Components.interfaces; 1.14 + 1.15 +Components.utils.import("resource://testing-common/httpd.js"); 1.16 + 1.17 +let waitForEngines = new Set([ "Test search engine", 1.18 + "A second test engine", 1.19 + "bacon" ]); 1.20 + 1.21 +function promiseEnginesAdded() { 1.22 + let deferred = Promise.defer(); 1.23 + 1.24 + let observe = function observe(aSubject, aTopic, aData) { 1.25 + let engine = aSubject.QueryInterface(Ci.nsISearchEngine); 1.26 + do_print("Observer: " + aData + " for " + engine.name); 1.27 + if (aData != "engine-added") { 1.28 + return; 1.29 + } 1.30 + waitForEngines.delete(engine.name); 1.31 + if (waitForEngines.size > 0) { 1.32 + return; 1.33 + } 1.34 + 1.35 + let engine1 = Services.search.getEngineByName("Test search engine"); 1.36 + do_check_eq(engine1.getResultDomain(), "google.com"); 1.37 + do_check_eq(engine1.getResultDomain("text/html"), "google.com"); 1.38 + do_check_eq(engine1.getResultDomain("application/x-moz-default-purpose"), 1.39 + "purpose.google.com"); 1.40 + do_check_eq(engine1.getResultDomain("fake-response-type"), ""); 1.41 + let engine2 = Services.search.getEngineByName("A second test engine"); 1.42 + do_check_eq(engine2.getResultDomain(), "duckduckgo.com"); 1.43 + let engine3 = Services.search.getEngineByName("bacon"); 1.44 + do_check_eq(engine3.getResultDomain(), "bacon.moz"); 1.45 + deferred.resolve(); 1.46 + }; 1.47 + 1.48 + Services.obs.addObserver(observe, "browser-search-engine-modified", false); 1.49 + do_register_cleanup(function cleanup() { 1.50 + Services.obs.removeObserver(observe, "browser-search-engine-modified"); 1.51 + }); 1.52 + 1.53 + return deferred.promise; 1.54 +} 1.55 + 1.56 +function run_test() { 1.57 + removeMetadata(); 1.58 + updateAppInfo(); 1.59 + 1.60 + run_next_test(); 1.61 +} 1.62 + 1.63 +add_task(function* check_resultDomain() { 1.64 + let httpServer = new HttpServer(); 1.65 + httpServer.start(-1); 1.66 + httpServer.registerDirectory("/", do_get_cwd()); 1.67 + let baseUrl = "http://localhost:" + httpServer.identity.primaryPort; 1.68 + do_register_cleanup(function cleanup() { 1.69 + httpServer.stop(function() {}); 1.70 + }); 1.71 + 1.72 + let promise = promiseEnginesAdded(); 1.73 + Services.search.addEngine(baseUrl + "/data/engine.xml", 1.74 + Ci.nsISearchEngine.DATA_XML, 1.75 + null, false); 1.76 + Services.search.addEngine(baseUrl + "/data/engine2.xml", 1.77 + Ci.nsISearchEngine.DATA_XML, 1.78 + null, false); 1.79 + Services.search.addEngineWithDetails("bacon", "", "bacon", "Search Bacon", 1.80 + "GET", "http://www.bacon.moz/?search={searchTerms}"); 1.81 + yield promise; 1.82 +});