|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 * http://creativecommons.org/publicdomain/zero/1.0/ |
|
3 */ |
|
4 |
|
5 // Tests whether |
|
6 const Cc = Components.classes; |
|
7 const Ci = Components.interfaces; |
|
8 const Cu = Components.utils; |
|
9 |
|
10 Cu.import("resource://testing-common/httpd.js"); |
|
11 |
|
12 var gTestserver = new HttpServer(); |
|
13 gTestserver.start(-1); |
|
14 gPort = gTestserver.identity.primaryPort; |
|
15 mapFile("/data/test_bug619730.xml", gTestserver); |
|
16 |
|
17 function load_blocklist(file, aCallback) { |
|
18 Services.obs.addObserver(function() { |
|
19 Services.obs.removeObserver(arguments.callee, "blocklist-updated"); |
|
20 |
|
21 do_execute_soon(aCallback); |
|
22 }, "blocklist-updated", false); |
|
23 |
|
24 Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + |
|
25 gPort + "/data/" + file); |
|
26 var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. |
|
27 getService(Ci.nsITimerCallback); |
|
28 blocklist.notify(null); |
|
29 } |
|
30 |
|
31 var gSawGFX = false; |
|
32 var gSawTest = false; |
|
33 |
|
34 // Performs the initial setup |
|
35 function run_test() { |
|
36 createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8"); |
|
37 startupManager(); |
|
38 |
|
39 do_test_pending(); |
|
40 |
|
41 Services.obs.addObserver(function(aSubject, aTopic, aData) { |
|
42 do_check_true(aSubject instanceof AM_Ci.nsIDOMElement); |
|
43 do_check_eq(aSubject.getAttribute("testattr"), "GFX"); |
|
44 do_check_eq(aSubject.childNodes.length, 2); |
|
45 gSawGFX = true; |
|
46 }, "blocklist-data-gfxItems", false); |
|
47 |
|
48 Services.obs.addObserver(function(aSubject, aTopic, aData) { |
|
49 do_check_true(aSubject instanceof AM_Ci.nsIDOMElement); |
|
50 do_check_eq(aSubject.getAttribute("testattr"), "FOO"); |
|
51 do_check_eq(aSubject.childNodes.length, 3); |
|
52 gSawTest = true; |
|
53 }, "blocklist-data-testItems", false); |
|
54 |
|
55 Services.obs.addObserver(function(aSubject, aTopic, aData) { |
|
56 do_check_true(gSawGFX); |
|
57 do_check_true(gSawTest); |
|
58 }, "blocklist-data-fooItems", false); |
|
59 |
|
60 // Need to wait for the blocklist to load; Bad Things happen if the test harness |
|
61 // shuts down AddonManager before the blocklist service is done telling it about |
|
62 // changes |
|
63 load_blocklist("test_bug619730.xml", () => gTestserver.stop(do_test_finished)); |
|
64 } |