michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/publicdomain/zero/1.0/ michael@0: */ michael@0: michael@0: // This verifies that the themes switch as expected michael@0: michael@0: const PREF_GENERAL_SKINS_SELECTEDSKIN = "general.skins.selectedSkin"; michael@0: michael@0: const profileDir = gProfD.clone(); michael@0: profileDir.append("extensions"); michael@0: michael@0: function run_test() { michael@0: do_test_pending(); michael@0: createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); michael@0: michael@0: writeInstallRDFForExtension({ michael@0: id: "default@tests.mozilla.org", michael@0: version: "1.0", michael@0: name: "Default", michael@0: internalName: "classic/1.0", michael@0: targetApplications: [{ michael@0: id: "xpcshell@tests.mozilla.org", michael@0: minVersion: "1", michael@0: maxVersion: "2" michael@0: }] michael@0: }, profileDir); michael@0: michael@0: writeInstallRDFForExtension({ michael@0: id: "alternate@tests.mozilla.org", michael@0: version: "1.0", michael@0: name: "Test 1", michael@0: type: 4, michael@0: internalName: "alternate/1.0", michael@0: targetApplications: [{ michael@0: id: "xpcshell@tests.mozilla.org", michael@0: minVersion: "1", michael@0: maxVersion: "2" michael@0: }] michael@0: }, profileDir); michael@0: michael@0: startupManager(); michael@0: michael@0: do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); michael@0: michael@0: AddonManager.getAddonsByIDs(["default@tests.mozilla.org", michael@0: "alternate@tests.mozilla.org"], function([d, a]) { michael@0: do_check_neq(d, null); michael@0: do_check_false(d.userDisabled); michael@0: do_check_false(d.appDisabled); michael@0: do_check_true(d.isActive); michael@0: do_check_true(isThemeInAddonsList(profileDir, d.id)); michael@0: do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); michael@0: do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); michael@0: michael@0: do_check_neq(a, null); michael@0: do_check_true(a.userDisabled); michael@0: do_check_false(a.appDisabled); michael@0: do_check_false(a.isActive); michael@0: do_check_false(isThemeInAddonsList(profileDir, a.id)); michael@0: do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); michael@0: do_check_true(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); michael@0: michael@0: run_test_1(d, a); michael@0: }); michael@0: } michael@0: michael@0: function end_test() { michael@0: do_execute_soon(do_test_finished); michael@0: } michael@0: michael@0: // Checks switching to a different theme and back again leaves everything the michael@0: // same michael@0: function run_test_1(d, a) { michael@0: a.userDisabled = false; michael@0: michael@0: do_check_true(d.userDisabled); michael@0: do_check_false(d.appDisabled); michael@0: do_check_true(d.isActive); michael@0: do_check_true(isThemeInAddonsList(profileDir, d.id)); michael@0: do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); michael@0: do_check_true(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); michael@0: michael@0: do_check_false(a.userDisabled); michael@0: do_check_false(a.appDisabled); michael@0: do_check_false(a.isActive); michael@0: do_check_false(isThemeInAddonsList(profileDir, a.id)); michael@0: do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); michael@0: do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); michael@0: michael@0: do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); michael@0: michael@0: d.userDisabled = false; michael@0: michael@0: do_check_false(d.userDisabled); michael@0: do_check_false(d.appDisabled); michael@0: do_check_true(d.isActive); michael@0: do_check_true(isThemeInAddonsList(profileDir, d.id)); michael@0: do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); michael@0: do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); michael@0: michael@0: do_check_true(a.userDisabled); michael@0: do_check_false(a.appDisabled); michael@0: do_check_false(a.isActive); michael@0: do_check_false(isThemeInAddonsList(profileDir, a.id)); michael@0: do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); michael@0: do_check_true(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); michael@0: michael@0: do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); michael@0: michael@0: do_execute_soon(run_test_2); michael@0: } michael@0: michael@0: // Tests that after the restart themes can be changed as expected michael@0: function run_test_2() { michael@0: restartManager(); michael@0: AddonManager.getAddonsByIDs(["default@tests.mozilla.org", michael@0: "alternate@tests.mozilla.org"], function([d, a]) { michael@0: do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); michael@0: michael@0: do_check_neq(d, null); michael@0: do_check_false(d.userDisabled); michael@0: do_check_false(d.appDisabled); michael@0: do_check_true(d.isActive); michael@0: do_check_true(isThemeInAddonsList(profileDir, d.id)); michael@0: do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); michael@0: do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); michael@0: michael@0: do_check_neq(a, null); michael@0: do_check_true(a.userDisabled); michael@0: do_check_false(a.appDisabled); michael@0: do_check_false(a.isActive); michael@0: do_check_false(isThemeInAddonsList(profileDir, a.id)); michael@0: do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); michael@0: do_check_true(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); michael@0: michael@0: do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); michael@0: michael@0: a.userDisabled = false; michael@0: michael@0: do_check_true(d.userDisabled); michael@0: do_check_false(d.appDisabled); michael@0: do_check_true(d.isActive); michael@0: do_check_true(isThemeInAddonsList(profileDir, d.id)); michael@0: do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); michael@0: do_check_true(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); michael@0: michael@0: do_check_false(a.userDisabled); michael@0: do_check_false(a.appDisabled); michael@0: do_check_false(a.isActive); michael@0: do_check_false(isThemeInAddonsList(profileDir, a.id)); michael@0: do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); michael@0: do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); michael@0: michael@0: do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); michael@0: michael@0: d.userDisabled = false; michael@0: michael@0: do_check_false(d.userDisabled); michael@0: do_check_false(d.appDisabled); michael@0: do_check_true(d.isActive); michael@0: do_check_true(isThemeInAddonsList(profileDir, d.id)); michael@0: do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); michael@0: do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); michael@0: michael@0: do_check_true(a.userDisabled); michael@0: do_check_false(a.appDisabled); michael@0: do_check_false(a.isActive); michael@0: do_check_false(isThemeInAddonsList(profileDir, a.id)); michael@0: do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); michael@0: do_check_true(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); michael@0: michael@0: do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); michael@0: michael@0: a.userDisabled = false; michael@0: michael@0: do_check_true(d.userDisabled); michael@0: do_check_false(d.appDisabled); michael@0: do_check_true(d.isActive); michael@0: do_check_true(isThemeInAddonsList(profileDir, d.id)); michael@0: do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); michael@0: do_check_true(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); michael@0: michael@0: do_check_false(a.userDisabled); michael@0: do_check_false(a.appDisabled); michael@0: do_check_false(a.isActive); michael@0: do_check_false(isThemeInAddonsList(profileDir, a.id)); michael@0: do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); michael@0: do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); michael@0: michael@0: do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); michael@0: michael@0: do_execute_soon(check_test_2); michael@0: }); michael@0: } michael@0: michael@0: function check_test_2() { michael@0: restartManager(); michael@0: AddonManager.getAddonsByIDs(["default@tests.mozilla.org", michael@0: "alternate@tests.mozilla.org"], callback_soon(function([d, a]) { michael@0: do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "alternate/1.0"); michael@0: michael@0: do_check_true(d.userDisabled); michael@0: do_check_false(d.appDisabled); michael@0: do_check_false(d.isActive); michael@0: do_check_false(isThemeInAddonsList(profileDir, d.id)); michael@0: do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); michael@0: do_check_true(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); michael@0: michael@0: do_check_false(a.userDisabled); michael@0: do_check_false(a.appDisabled); michael@0: do_check_true(a.isActive); michael@0: do_check_true(isThemeInAddonsList(profileDir, a.id)); michael@0: do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); michael@0: do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); michael@0: michael@0: d.userDisabled = false; michael@0: michael@0: do_check_false(d.userDisabled); michael@0: do_check_false(d.appDisabled); michael@0: do_check_false(d.isActive); michael@0: do_check_false(isThemeInAddonsList(profileDir, d.id)); michael@0: do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); michael@0: do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); michael@0: michael@0: do_check_true(a.userDisabled); michael@0: do_check_false(a.appDisabled); michael@0: do_check_true(a.isActive); michael@0: do_check_true(isThemeInAddonsList(profileDir, a.id)); michael@0: do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); michael@0: do_check_true(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); michael@0: michael@0: do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "alternate/1.0"); michael@0: michael@0: restartManager(); michael@0: michael@0: do_check_eq(Services.prefs.getCharPref(PREF_GENERAL_SKINS_SELECTEDSKIN), "classic/1.0"); michael@0: michael@0: AddonManager.getAddonsByIDs(["default@tests.mozilla.org", michael@0: "alternate@tests.mozilla.org"], function([d, a]) { michael@0: do_check_neq(d, null); michael@0: do_check_false(d.userDisabled); michael@0: do_check_false(d.appDisabled); michael@0: do_check_true(d.isActive); michael@0: do_check_true(isThemeInAddonsList(profileDir, d.id)); michael@0: do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_DISABLE)); michael@0: do_check_false(hasFlag(d.permissions, AddonManager.PERM_CAN_ENABLE)); michael@0: michael@0: do_check_neq(a, null); michael@0: do_check_true(a.userDisabled); michael@0: do_check_false(a.appDisabled); michael@0: do_check_false(a.isActive); michael@0: do_check_false(isThemeInAddonsList(profileDir, a.id)); michael@0: do_check_false(hasFlag(a.permissions, AddonManager.PERM_CAN_DISABLE)); michael@0: do_check_true(hasFlag(a.permissions, AddonManager.PERM_CAN_ENABLE)); michael@0: michael@0: end_test(); michael@0: }); michael@0: })); michael@0: }