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/
3 */
5 // Test whether a machine which differs only on OS version, but otherwise
6 // exactly matches the blacklist entry, is not blocked.
7 // Uses test_gfxBlacklist.xml
9 Components.utils.import("resource://testing-common/httpd.js");
11 var gTestserver = new HttpServer();
12 gTestserver.start(-1);
13 gPort = gTestserver.identity.primaryPort;
14 mapFile("/data/test_gfxBlacklist.xml", gTestserver);
16 function get_platform() {
17 var xulRuntime = Components.classes["@mozilla.org/xre/app-info;1"]
18 .getService(Components.interfaces.nsIXULRuntime);
19 return xulRuntime.OS;
20 }
22 function load_blocklist(file) {
23 Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" +
24 gPort + "/data/" + file);
25 var blocklist = Cc["@mozilla.org/extensions/blocklist;1"].
26 getService(Ci.nsITimerCallback);
27 blocklist.notify(null);
28 }
30 // Performs the initial setup
31 function run_test() {
32 try {
33 var gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo);
34 } catch (e) {
35 do_test_finished();
36 return;
37 }
39 // We can't do anything if we can't spoof the stuff we need.
40 if (!(gfxInfo instanceof Ci.nsIGfxInfoDebug)) {
41 do_test_finished();
42 return;
43 }
45 gfxInfo.QueryInterface(Ci.nsIGfxInfoDebug);
47 // Set the vendor/device ID, etc, to match the test file.
48 switch (get_platform()) {
49 case "WINNT":
50 gfxInfo.spoofVendorID("0xabcd");
51 gfxInfo.spoofDeviceID("0x1234");
52 gfxInfo.spoofDriverVersion("8.52.322.2201");
53 // Windows Vista
54 gfxInfo.spoofOSVersion(0x60000);
55 break;
56 case "Linux":
57 // We don't have any OS versions on Linux, just "Linux".
58 do_test_finished();
59 return;
60 case "Darwin":
61 gfxInfo.spoofVendorID("0xabcd");
62 gfxInfo.spoofDeviceID("0x1234");
63 // Snow Leopard
64 gfxInfo.spoofOSVersion(0x1060);
65 break;
66 case "Android":
67 // On Android, the driver version is used as the OS version (because
68 // there's so many of them).
69 do_test_finished();
70 return;
71 }
73 createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8");
74 startupManager();
76 do_test_pending();
78 function checkBlacklist()
79 {
80 var status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D);
81 do_check_eq(status, Ci.nsIGfxInfo.FEATURE_NO_INFO);
83 status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_9_LAYERS);
84 do_check_eq(status, Ci.nsIGfxInfo.FEATURE_NO_INFO);
86 gTestserver.stop(do_test_finished);
87 }
89 Services.obs.addObserver(function(aSubject, aTopic, aData) {
90 // If we wait until after we go through the event loop, gfxInfo is sure to
91 // have processed the gfxItems event.
92 do_execute_soon(checkBlacklist);
93 }, "blocklist-data-gfxItems", false);
95 load_blocklist("test_gfxBlacklist.xml");
96 }