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 * Test that currentEngine and defaultEngine properties can be set and yield the
6 * proper events and behavior (search results)
7 */
9 "use strict";
11 const Ci = Components.interfaces;
13 Components.utils.import("resource://testing-common/httpd.js");
15 let waitForEngines = {
16 "Test search engine": 1,
17 "A second test engine": 1
18 };
20 function search_observer(aSubject, aTopic, aData) {
21 let engine = aSubject.QueryInterface(Ci.nsISearchEngine);
22 do_print("Observer: " + aData + " for " + engine.name);
24 if (aData != "engine-added") {
25 return;
26 }
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 }
36 // Only continue when both engines have been loaded.
37 if (Object.keys(waitForEngines).length)
38 return;
40 let search = Services.search;
42 let engine1 = search.getEngineByName("Test search engine");
43 let engine2 = search.getEngineByName("A second test engine");
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);
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);
59 // Test that the default engine is restored when it is unhidden
60 engine1.hidden = false;
61 do_check_eq(search.defaultEngine, engine1);
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);
72 do_test_finished();
73 }
75 function run_test() {
76 removeMetadata();
77 updateAppInfo();
79 let httpServer = new HttpServer();
80 httpServer.start(-1);
81 httpServer.registerDirectory("/", do_get_cwd());
82 let baseUrl = "http://localhost:" + httpServer.identity.primaryPort;
84 do_register_cleanup(function cleanup() {
85 httpServer.stop(function() {});
86 Services.obs.removeObserver(search_observer, "browser-search-engine-modified");
87 });
89 do_test_pending();
91 Services.obs.addObserver(search_observer, "browser-search-engine-modified", false);
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 }