/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ // This verifies that plugins exist and can be enabled and disabled. var gID = null; function run_test() { do_test_pending(); createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); startupManager(1); AddonManager.addAddonListener(AddonListener); AddonManager.addInstallListener(InstallListener); run_test_1(); } // Tests that the test plugin exists function run_test_1() { AddonManager.getAddonsByTypes("plugin", function(addons) { do_check_true(addons.length > 0); addons.forEach(function(p) { if (p.name == "Test Plug-in") gID = p.id; }); do_check_neq(gID, null); AddonManager.getAddonByID(gID, function(p) { do_check_neq(p, null) do_check_eq(p.name, "Test Plug-in"); do_check_eq(p.description, "Plug-in for testing purposes."); do_check_eq(p.creator, ""); do_check_eq(p.version, "1.0.0.0"); do_check_eq(p.type, "plugin"); do_check_false(p.userDisabled); do_check_false(p.appDisabled); do_check_true(p.isActive); do_check_true(p.isCompatible); do_check_true(p.providesUpdatesSecurely); do_check_eq(p.blocklistState, 0); do_check_eq(p.permissions, AddonManager.PERM_CAN_DISABLE); do_check_eq(p.pendingOperations, 0); do_check_eq(p.scope, AddonManager.SCOPE_APPLICATION); do_check_true("isCompatibleWith" in p); do_check_true("findUpdates" in p); run_test_2(p); }); }); } // Tests that disabling a plugin works function run_test_2(p) { let test = {}; test[gID] = [ ["onDisabling", false], "onDisabled" ]; prepare_test(test); p.userDisabled = true; ensure_test_completed(); do_check_true(p.userDisabled); do_check_false(p.appDisabled); do_check_false(p.isActive); AddonManager.getAddonByID(gID, function(p) { do_check_neq(p, null) do_check_true(p.userDisabled); do_check_false(p.appDisabled); do_check_false(p.isActive); do_check_eq(p.name, "Test Plug-in"); run_test_3(p); }); } // Tests that enabling a plugin works function run_test_3(p) { let test = {}; test[gID] = [ ["onEnabling", false], "onEnabled" ]; prepare_test(test); p.userDisabled = false; ensure_test_completed(); do_check_false(p.userDisabled); do_check_false(p.appDisabled); do_check_true(p.isActive); AddonManager.getAddonByID(gID, function(p) { do_check_neq(p, null) do_check_false(p.userDisabled); do_check_false(p.appDisabled); do_check_true(p.isActive); do_check_eq(p.name, "Test Plug-in"); do_test_finished(); }); }