mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-10-15 17:24:27 +00:00
340 lines
10 KiB
JavaScript
340 lines
10 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
|
|
// This verifies that language packs can be used without restarts.
|
|
Components.utils.import("resource://gre/modules/Services.jsm");
|
|
|
|
// Enable loading extensions from the user scopes
|
|
Services.prefs.setIntPref("extensions.enabledScopes",
|
|
AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER);
|
|
// Enable installing distribution add-ons
|
|
Services.prefs.setBoolPref("extensions.installDistroAddons", true);
|
|
|
|
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
|
|
|
|
const profileDir = gProfD.clone();
|
|
profileDir.append("extensions");
|
|
const userExtDir = gProfD.clone();
|
|
userExtDir.append("extensions2");
|
|
userExtDir.append(gAppInfo.ID);
|
|
registerDirectory("XREUSysExt", userExtDir.parent);
|
|
const distroDir = gProfD.clone();
|
|
distroDir.append("distribution");
|
|
distroDir.append("extensions");
|
|
registerDirectory("XREAppDist", distroDir.parent);
|
|
|
|
var chrome = Components.classes["@mozilla.org/chrome/chrome-registry;1"]
|
|
.getService(Components.interfaces.nsIXULChromeRegistry);
|
|
|
|
function do_unregister_manifest() {
|
|
let path = getFileForAddon(profileDir, "langpack-x-testing@tests.mozilla.org");
|
|
Components.manager.removeBootstrappedManifestLocation(path);
|
|
}
|
|
|
|
function do_check_locale_not_registered(provider) {
|
|
let didThrow = false;
|
|
try {
|
|
chrome.getSelectedLocale(provider);
|
|
} catch (e) {
|
|
didThrow = true;
|
|
}
|
|
do_check_true(didThrow);
|
|
}
|
|
|
|
function run_test() {
|
|
do_test_pending();
|
|
|
|
startupManager();
|
|
|
|
run_test_1();
|
|
}
|
|
|
|
// Tests that installing doesn't require a restart
|
|
function run_test_1() {
|
|
do_check_locale_not_registered("test-langpack");
|
|
|
|
prepare_test({ }, [
|
|
"onNewInstall"
|
|
]);
|
|
|
|
AddonManager.getInstallForFile(do_get_addon("test_langpack"), function(install) {
|
|
ensure_test_completed();
|
|
|
|
do_check_neq(install, null);
|
|
do_check_eq(install.type, "locale");
|
|
do_check_eq(install.version, "1.0");
|
|
do_check_eq(install.name, "Language Pack x-testing");
|
|
do_check_eq(install.state, AddonManager.STATE_DOWNLOADED);
|
|
do_check_true(install.addon.hasResource("install.rdf"));
|
|
do_check_false(install.addon.hasResource("bootstrap.js"));
|
|
do_check_eq(install.addon.operationsRequiringRestart &
|
|
AddonManager.OP_NEEDS_RESTART_INSTALL, 0);
|
|
|
|
let addon = install.addon;
|
|
prepare_test({
|
|
"langpack-x-testing@tests.mozilla.org": [
|
|
["onInstalling", false],
|
|
"onInstalled"
|
|
]
|
|
}, [
|
|
"onInstallStarted",
|
|
"onInstallEnded",
|
|
], function() {
|
|
do_check_true(addon.hasResource("install.rdf"));
|
|
// spin to let the startup complete
|
|
do_execute_soon(check_test_1);
|
|
});
|
|
install.install();
|
|
});
|
|
}
|
|
|
|
function check_test_1() {
|
|
AddonManager.getAllInstalls(function(installs) {
|
|
// There should be no active installs now since the install completed and
|
|
// doesn't require a restart.
|
|
do_check_eq(installs.length, 0);
|
|
|
|
AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
|
|
do_check_neq(b1, null);
|
|
do_check_eq(b1.version, "1.0");
|
|
do_check_false(b1.appDisabled);
|
|
do_check_false(b1.userDisabled);
|
|
do_check_true(b1.isActive);
|
|
// check chrome reg that language pack is registered
|
|
do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
|
|
do_check_true(b1.hasResource("install.rdf"));
|
|
do_check_false(b1.hasResource("bootstrap.js"));
|
|
|
|
let dir = do_get_addon_root_uri(profileDir, "langpack-x-testing@tests.mozilla.org");
|
|
|
|
AddonManager.getAddonsWithOperationsByTypes(null, function(list) {
|
|
do_check_eq(list.length, 0);
|
|
|
|
run_test_2();
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
// Tests that disabling doesn't require a restart
|
|
function run_test_2() {
|
|
AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
|
|
prepare_test({
|
|
"langpack-x-testing@tests.mozilla.org": [
|
|
["onDisabling", false],
|
|
"onDisabled"
|
|
]
|
|
});
|
|
|
|
do_check_eq(b1.operationsRequiringRestart &
|
|
AddonManager.OP_NEEDS_RESTART_DISABLE, 0);
|
|
b1.userDisabled = true;
|
|
ensure_test_completed();
|
|
|
|
do_check_neq(b1, null);
|
|
do_check_eq(b1.version, "1.0");
|
|
do_check_false(b1.appDisabled);
|
|
do_check_true(b1.userDisabled);
|
|
do_check_false(b1.isActive);
|
|
// check chrome reg that language pack is not registered
|
|
do_check_locale_not_registered("test-langpack");
|
|
|
|
AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(newb1) {
|
|
do_check_neq(newb1, null);
|
|
do_check_eq(newb1.version, "1.0");
|
|
do_check_false(newb1.appDisabled);
|
|
do_check_true(newb1.userDisabled);
|
|
do_check_false(newb1.isActive);
|
|
|
|
do_execute_soon(run_test_3);
|
|
});
|
|
});
|
|
}
|
|
|
|
// Test that restarting doesn't accidentally re-enable
|
|
function run_test_3() {
|
|
shutdownManager();
|
|
startupManager(false);
|
|
// check chrome reg that language pack is not registered
|
|
do_check_locale_not_registered("test-langpack");
|
|
|
|
AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
|
|
do_check_neq(b1, null);
|
|
do_check_eq(b1.version, "1.0");
|
|
do_check_false(b1.appDisabled);
|
|
do_check_true(b1.userDisabled);
|
|
do_check_false(b1.isActive);
|
|
|
|
run_test_4();
|
|
});
|
|
}
|
|
|
|
// Tests that enabling doesn't require a restart
|
|
function run_test_4() {
|
|
AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
|
|
prepare_test({
|
|
"langpack-x-testing@tests.mozilla.org": [
|
|
["onEnabling", false],
|
|
"onEnabled"
|
|
]
|
|
});
|
|
|
|
do_check_eq(b1.operationsRequiringRestart &
|
|
AddonManager.OP_NEEDS_RESTART_ENABLE, 0);
|
|
b1.userDisabled = false;
|
|
ensure_test_completed();
|
|
|
|
do_check_neq(b1, null);
|
|
do_check_eq(b1.version, "1.0");
|
|
do_check_false(b1.appDisabled);
|
|
do_check_false(b1.userDisabled);
|
|
do_check_true(b1.isActive);
|
|
// check chrome reg that language pack is registered
|
|
do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
|
|
|
|
AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(newb1) {
|
|
do_check_neq(newb1, null);
|
|
do_check_eq(newb1.version, "1.0");
|
|
do_check_false(newb1.appDisabled);
|
|
do_check_false(newb1.userDisabled);
|
|
do_check_true(newb1.isActive);
|
|
|
|
do_execute_soon(run_test_5);
|
|
});
|
|
});
|
|
}
|
|
|
|
// Tests that a restart shuts down and restarts the add-on
|
|
function run_test_5() {
|
|
shutdownManager();
|
|
do_unregister_manifest();
|
|
// check chrome reg that language pack is not registered
|
|
do_check_locale_not_registered("test-langpack");
|
|
startupManager(false);
|
|
// check chrome reg that language pack is registered
|
|
do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
|
|
|
|
AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
|
|
do_check_neq(b1, null);
|
|
do_check_eq(b1.version, "1.0");
|
|
do_check_false(b1.appDisabled);
|
|
do_check_false(b1.userDisabled);
|
|
do_check_true(b1.isActive);
|
|
do_check_false(isExtensionInAddonsList(profileDir, b1.id));
|
|
|
|
run_test_7();
|
|
});
|
|
}
|
|
|
|
// Tests that uninstalling doesn't require a restart
|
|
function run_test_7() {
|
|
AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
|
|
prepare_test({
|
|
"langpack-x-testing@tests.mozilla.org": [
|
|
["onUninstalling", false],
|
|
"onUninstalled"
|
|
]
|
|
});
|
|
|
|
do_check_eq(b1.operationsRequiringRestart &
|
|
AddonManager.OP_NEEDS_RESTART_UNINSTALL, 0);
|
|
b1.uninstall();
|
|
|
|
check_test_7();
|
|
});
|
|
}
|
|
|
|
function check_test_7() {
|
|
ensure_test_completed();
|
|
// check chrome reg that language pack is not registered
|
|
do_check_locale_not_registered("test-langpack");
|
|
|
|
AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org",
|
|
callback_soon(function(b1) {
|
|
do_check_eq(b1, null);
|
|
|
|
restartManager();
|
|
|
|
AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(newb1) {
|
|
do_check_eq(newb1, null);
|
|
|
|
do_execute_soon(run_test_8);
|
|
});
|
|
}));
|
|
}
|
|
|
|
// Tests that a locale detected in the profile starts working immediately
|
|
function run_test_8() {
|
|
shutdownManager();
|
|
|
|
manuallyInstall(do_get_addon("test_langpack"), profileDir, "langpack-x-testing@tests.mozilla.org");
|
|
|
|
startupManager(false);
|
|
|
|
AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org",
|
|
callback_soon(function(b1) {
|
|
do_check_neq(b1, null);
|
|
do_check_eq(b1.version, "1.0");
|
|
do_check_false(b1.appDisabled);
|
|
do_check_false(b1.userDisabled);
|
|
do_check_true(b1.isActive);
|
|
// check chrome reg that language pack is registered
|
|
do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
|
|
do_check_true(b1.hasResource("install.rdf"));
|
|
do_check_false(b1.hasResource("bootstrap.js"));
|
|
|
|
shutdownManager();
|
|
do_unregister_manifest();
|
|
// check chrome reg that language pack is not registered
|
|
do_check_locale_not_registered("test-langpack");
|
|
startupManager(false);
|
|
// check chrome reg that language pack is registered
|
|
do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
|
|
|
|
AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b2) {
|
|
prepare_test({
|
|
"langpack-x-testing@tests.mozilla.org": [
|
|
["onUninstalling", false],
|
|
"onUninstalled"
|
|
]
|
|
});
|
|
|
|
b2.uninstall();
|
|
ensure_test_completed();
|
|
do_execute_soon(run_test_9);
|
|
});
|
|
}));
|
|
}
|
|
|
|
// Tests that a locale from distribution/extensions gets installed and starts
|
|
// working immediately
|
|
function run_test_9() {
|
|
shutdownManager();
|
|
manuallyInstall(do_get_addon("test_langpack"), distroDir, "langpack-x-testing@tests.mozilla.org");
|
|
gAppInfo.version = "2.0";
|
|
startupManager(true);
|
|
|
|
AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", callback_soon(function(b1) {
|
|
do_check_neq(b1, null);
|
|
do_check_eq(b1.version, "1.0");
|
|
do_check_false(b1.appDisabled);
|
|
do_check_false(b1.userDisabled);
|
|
do_check_true(b1.isActive);
|
|
// check chrome reg that language pack is registered
|
|
do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
|
|
do_check_true(b1.hasResource("install.rdf"));
|
|
do_check_false(b1.hasResource("bootstrap.js"));
|
|
|
|
shutdownManager();
|
|
do_unregister_manifest();
|
|
// check chrome reg that language pack is not registered
|
|
do_check_locale_not_registered("test-langpack");
|
|
startupManager(false);
|
|
// check chrome reg that language pack is registered
|
|
do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
|
|
|
|
do_test_finished();
|
|
}));
|
|
}
|