Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/
3 */
5 // Test whether the blacklist succesfully adds and removes the prefs that store
6 // its decisions when the remote blacklist is changed.
7 // Uses test_gfxBlacklist.xml and test_gfxBlacklist2.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 7
54 gfxInfo.spoofOSVersion(0x60001);
55 break;
56 case "Linux":
57 gfxInfo.spoofVendorID("0xabcd");
58 gfxInfo.spoofDeviceID("0x1234");
59 break;
60 case "Darwin":
61 gfxInfo.spoofVendorID("0xabcd");
62 gfxInfo.spoofDeviceID("0x1234");
63 gfxInfo.spoofOSVersion(0x1050);
64 break;
65 case "Android":
66 gfxInfo.spoofVendorID("abcd");
67 gfxInfo.spoofDeviceID("asdf");
68 gfxInfo.spoofDriverVersion("5");
69 break;
70 }
72 createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8");
73 startupManager();
75 do_test_pending();
77 function blacklistAdded(aSubject, aTopic, aData)
78 {
79 // If we wait until after we go through the event loop, gfxInfo is sure to
80 // have processed the gfxItems event.
81 do_execute_soon(ensureBlacklistSet);
82 }
83 function ensureBlacklistSet()
84 {
85 var status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D);
86 do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION);
88 // Make sure unrelated features aren't affected
89 status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_9_LAYERS);
90 do_check_eq(status, Ci.nsIGfxInfo.FEATURE_NO_INFO);
92 var prefs = Cc["@mozilla.org/preferences-service;1"].
93 getService(Ci.nsIPrefBranch);
94 do_check_eq(prefs.getIntPref("gfx.blacklist.direct2d"),
95 Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION);
97 Services.obs.removeObserver(blacklistAdded, "blocklist-data-gfxItems");
98 Services.obs.addObserver(blacklistRemoved, "blocklist-data-gfxItems", false);
99 load_blocklist("test_gfxBlacklist2.xml");
100 }
102 function blacklistRemoved(aSubject, aTopic, aData)
103 {
104 // If we wait until after we go through the event loop, gfxInfo is sure to
105 // have processed the gfxItems event.
106 do_execute_soon(ensureBlacklistUnset);
107 }
108 function ensureBlacklistUnset()
109 {
110 var status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D);
111 do_check_eq(status, Ci.nsIGfxInfo.FEATURE_NO_INFO);
113 // Make sure unrelated features aren't affected
114 status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_9_LAYERS);
115 do_check_eq(status, Ci.nsIGfxInfo.FEATURE_NO_INFO);
117 var prefs = Cc["@mozilla.org/preferences-service;1"].
118 getService(Ci.nsIPrefBranch);
119 var exists = false;
120 try {
121 prefs.getIntPref("gfx.blacklist.direct2d");
122 exists = true;
123 } catch(e) {}
125 do_check_false(exists);
127 gTestserver.stop(do_test_finished);
128 }
130 Services.obs.addObserver(blacklistAdded, "blocklist-data-gfxItems", false);
131 load_blocklist("test_gfxBlacklist.xml");
132 }