Sat, 03 Jan 2015 20:18:00 +0100
Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/ */
4 /*
5 * Tests getResultDomain API.
6 */
8 "use strict";
10 const Ci = Components.interfaces;
12 Components.utils.import("resource://testing-common/httpd.js");
14 let waitForEngines = new Set([ "Test search engine",
15 "A second test engine",
16 "bacon" ]);
18 function promiseEnginesAdded() {
19 let deferred = Promise.defer();
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 }
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 };
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 });
50 return deferred.promise;
51 }
53 function run_test() {
54 removeMetadata();
55 updateAppInfo();
57 run_next_test();
58 }
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 });
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 });