diff options
Diffstat (limited to 'toolkit/mozapps/extensions/test/xpcshell/test_bug619730.js')
-rw-r--r-- | toolkit/mozapps/extensions/test/xpcshell/test_bug619730.js | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug619730.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug619730.js new file mode 100644 index 0000000000..761daf4eba --- /dev/null +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug619730.js @@ -0,0 +1,64 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ + */ + +// Tests whether +const Cc = Components.classes; +const Ci = Components.interfaces; +const Cu = Components.utils; + +Cu.import("resource://testing-common/httpd.js"); + +var gTestserver = new HttpServer(); +gTestserver.start(-1); +gPort = gTestserver.identity.primaryPort; +mapFile("/data/test_bug619730.xml", gTestserver); + +function load_blocklist(file, aCallback) { + Services.obs.addObserver(function() { + Services.obs.removeObserver(arguments.callee, "blocklist-updated"); + + do_execute_soon(aCallback); + }, "blocklist-updated", false); + + Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" + + gPort + "/data/" + file); + var blocklist = Cc["@mozilla.org/extensions/blocklist;1"]. + getService(Ci.nsITimerCallback); + blocklist.notify(null); +} + +var gSawGFX = false; +var gSawTest = false; + +// Performs the initial setup +function run_test() { + createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8"); + startupManager(); + + do_test_pending(); + + Services.obs.addObserver(function(aSubject, aTopic, aData) { + do_check_true(aSubject instanceof AM_Ci.nsIDOMElement); + do_check_eq(aSubject.getAttribute("testattr"), "GFX"); + do_check_eq(aSubject.childNodes.length, 2); + gSawGFX = true; + }, "blocklist-data-gfxItems", false); + + Services.obs.addObserver(function(aSubject, aTopic, aData) { + do_check_true(aSubject instanceof AM_Ci.nsIDOMElement); + do_check_eq(aSubject.getAttribute("testattr"), "FOO"); + do_check_eq(aSubject.childNodes.length, 3); + gSawTest = true; + }, "blocklist-data-testItems", false); + + Services.obs.addObserver(function(aSubject, aTopic, aData) { + do_check_true(gSawGFX); + do_check_true(gSawTest); + }, "blocklist-data-fooItems", false); + + // Need to wait for the blocklist to load; Bad Things happen if the test harness + // shuts down AddonManager before the blocklist service is done telling it about + // changes + load_blocklist("test_bug619730.xml", () => gTestserver.stop(do_test_finished)); +} |