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 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
3 const Cc = Components.classes;
4 const Ci = Components.interfaces;
6 function info(s) {
7 dump("TEST-INFO | test_compmgr_warnings.js | " + s + "\n");
8 }
10 var gMessagesExpected = [
11 { line: 2, message: /Malformed CID/, found: false },
12 { line: 6, message: /re-register/, found: false },
13 { line: 9, message: /Could not/, found: false },
14 { line: 2, message: /binary component twice/, found: false },
15 { line: 3, message: /binary component twice/, found: false },
16 ];
18 const kConsoleListener = {
19 QueryInterface: XPCOMUtils.generateQI([Ci.nsIConsoleListener]),
21 observe: function listener_observe(message) {
22 if (!(message instanceof Ci.nsIScriptError)) {
23 info("Not a script error: " + message.message);
24 return;
25 }
27 info("Script error... " + message.sourceName + ":" + message.lineNumber + ": " + message.errorMessage);
28 for each (let expected in gMessagesExpected) {
29 if (message.lineNumber != expected.line)
30 continue;
32 if (!expected.message.test(message.errorMessage))
33 continue;
35 info("Found expected message: " + expected.message);
36 do_check_false(expected.found);
38 expected.found = true;
39 }
40 }
41 };
43 function run_deferred_event(fn) {
44 do_test_pending();
45 Components.classes["@mozilla.org/thread-manager;1"].
46 getService(Ci.nsIThreadManager).mainThread.dispatch(function() {
47 fn();
48 do_test_finished();
49 }, 0);
50 }
52 function run_test()
53 {
54 let cs = Components.classes["@mozilla.org/consoleservice;1"].
55 getService(Ci.nsIConsoleService);
56 cs.registerListener(kConsoleListener);
58 var manifest = do_get_file('compmgr_warnings.manifest');
59 Components.manager.QueryInterface(Ci.nsIComponentRegistrar).
60 autoRegister(manifest);
61 manifest = do_get_file('testcomponent.manifest');
62 Components.manager.autoRegister(manifest);
64 run_deferred_event(function() {
65 cs.unregisterListener(kConsoleListener);
67 for each (let expected in gMessagesExpected) {
68 info("checking " + expected.message);
69 do_check_true(expected.found);
70 }
71 });
72 }