# HG changeset patch # Parent 297b3a7802b2488cca8f2e6febc77e9dbf7f16e0 # User Wolfgang Rosenauer Bug 818468 - Langpacks bundled in distribution/extensions are registered but disabled even if shown enabled (backing out Bug 677092 - Make language packs restartless by default) diff --git a/toolkit/mozapps/extensions/XPIProvider.jsm b/toolkit/mozapps/extensions/XPIProvider.jsm --- a/toolkit/mozapps/extensions/XPIProvider.jsm +++ b/toolkit/mozapps/extensions/XPIProvider.jsm @@ -757,18 +757,18 @@ function loadManifestFromRDF(aUri, aStre if (addon.optionsType && addon.optionsType != AddonManager.OPTIONS_TYPE_DIALOG && addon.optionsType != AddonManager.OPTIONS_TYPE_INLINE && addon.optionsType != AddonManager.OPTIONS_TYPE_TAB) { throw new Error("Install manifest specifies unknown type: " + addon.optionsType); } } else { - // spell check dictionaries and language packs never require a restart - if (addon.type == "dictionary" || addon.type == "locale") + // spell check dictionaries never require a restart + if (addon.type == "dictionary") addon.bootstrap = true; // Only extensions are allowed to provide an optionsURL, optionsType or aboutURL. For // all other types they are silently ignored addon.optionsURL = null; addon.optionsType = null; addon.aboutURL = null; @@ -3712,21 +3712,16 @@ var XPIProvider = { // Never call any bootstrap methods in safe mode if (Services.appinfo.inSafeMode) return; if (aMethod == "startup") Components.manager.addBootstrappedManifestLocation(aFile); try { - // Don't call bootstrap.js methods for language packs, - // they only contain chrome. - if (aType == "locale") - return; - // Load the scope if it hasn't already been loaded if (!(aId in this.bootstrapScopes)) this.loadBootstrapScope(aId, aFile, aVersion, aType); if (!(aMethod in this.bootstrapScopes[aId])) { WARN("Add-on " + aId + " is missing bootstrap method " + aMethod); return; } diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_dictionary.js b/toolkit/mozapps/extensions/test/xpcshell/test_dictionary.js --- a/toolkit/mozapps/extensions/test/xpcshell/test_dictionary.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_dictionary.js @@ -4,19 +4,16 @@ // This verifies that bootstrappable add-ons 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); -// The test extension uses an insecure update url. -Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false); - 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); @@ -98,17 +95,16 @@ var HunspellEngine = { } }; function run_test() { do_test_pending(); // Create and configure the HTTP server. testserver = new HttpServer(); - testserver.registerDirectory("/data/", do_get_file("data")); testserver.registerDirectory("/addons/", do_get_file("addons")); testserver.start(4444); startupManager(); run_test_1(); } @@ -563,17 +559,17 @@ function check_test_23() { AddonManager.getAddonsWithOperationsByTypes(null, function(list) { do_check_eq(list.length, 0); restartManager(); AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { b1.uninstall(); restartManager(); - run_test_25(); + testserver.stop(run_test_25); }); }); }); }); } // Tests that updating from a bootstrappable add-on to a normal add-on calls // the uninstall method @@ -631,160 +627,15 @@ function run_test_26() { AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { do_check_neq(b1, null); do_check_eq(b1.version, "1.0"); do_check_true(b1.isActive); do_check_eq(b1.pendingOperations, AddonManager.PENDING_NONE); HunspellEngine.deactivate(); - b1.uninstall(); - restartManager(); - run_test_27(); + + do_test_finished(); }); }); }); } -// Tests that an update check from a normal add-on to a bootstrappable add-on works -function run_test_27() { - writeInstallRDFForExtension({ - id: "ab-CD@dictionaries.addons.mozilla.org", - version: "1.0", - updateURL: "http://localhost:4444/data/test_dictionary.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Dictionary", - }, profileDir); - restartManager(); - - prepare_test({ - "ab-CD@dictionaries.addons.mozilla.org": [ - "onInstalling" - ] - }, [ - "onNewInstall", - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded" - ], check_test_27); - - AddonManagerPrivate.backgroundUpdateCheck(); -} - -function check_test_27(install) { - do_check_eq(install.existingAddon.pendingUpgrade.install, install); - - restartManager(); - AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { - do_check_neq(b1, null); - do_check_eq(b1.version, "2.0"); - do_check_eq(b1.type, "dictionary"); - b1.uninstall(); - restartManager(); - - run_test_28(); - }); -} - -// Tests that an update check from a bootstrappable add-on to a normal add-on works -function run_test_28() { - writeInstallRDFForExtension({ - id: "ef@dictionaries.addons.mozilla.org", - version: "1.0", - type: "64", - updateURL: "http://localhost:4444/data/test_dictionary.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Dictionary ef", - }, profileDir); - restartManager(); - - prepare_test({ - "ef@dictionaries.addons.mozilla.org": [ - "onInstalling" - ] - }, [ - "onNewInstall", - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded" - ], check_test_28); - - AddonManagerPrivate.backgroundUpdateCheck(); -} - -function check_test_28(install) { - do_check_eq(install.existingAddon.pendingUpgrade.install, install); - - restartManager(); - AddonManager.getAddonByID("ef@dictionaries.addons.mozilla.org", function(b2) { - do_check_neq(b2, null); - do_check_eq(b2.version, "2.0"); - do_check_eq(b2.type, "extension"); - b2.uninstall(); - restartManager(); - - run_test_29(); - }); -} - -// Tests that an update check from a bootstrappable add-on to a bootstrappable add-on works -function run_test_29() { - writeInstallRDFForExtension({ - id: "gh@dictionaries.addons.mozilla.org", - version: "1.0", - type: "64", - updateURL: "http://localhost:4444/data/test_dictionary.rdf", - targetApplications: [{ - id: "xpcshell@tests.mozilla.org", - minVersion: "1", - maxVersion: "1" - }], - name: "Test Dictionary gh", - }, profileDir); - restartManager(); - - prepare_test({ - "gh@dictionaries.addons.mozilla.org": [ - ["onInstalling", false /* = no restart */], - ["onInstalled", false] - ] - }, [ - "onNewInstall", - "onDownloadStarted", - "onDownloadEnded", - "onInstallStarted", - "onInstallEnded" - ], check_test_29); - - AddonManagerPrivate.backgroundUpdateCheck(); -} - -function check_test_29(install) { - AddonManager.getAddonByID("gh@dictionaries.addons.mozilla.org", function(b2) { - do_check_neq(b2, null); - do_check_eq(b2.version, "2.0"); - do_check_eq(b2.type, "dictionary"); - - prepare_test({ - "gh@dictionaries.addons.mozilla.org": [ - ["onUninstalling", false], - ["onUninstalled", false], - ] - }, [ - ], finish_test_29); - - b2.uninstall(); - }); -} - -function finish_test_29() { - testserver.stop(do_test_finished); -} diff --git a/toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini b/toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini --- a/toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini +++ b/toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini @@ -136,17 +136,16 @@ fail-if = os == "android" [test_cacheflush.js] [test_checkcompatibility.js] [test_ChromeManifestParser.js] [test_compatoverrides.js] [test_corrupt.js] [test_corrupt_strictcompat.js] [test_db_sanity.js] [test_dictionary.js] -[test_langpack.js] [test_disable.js] [test_distribution.js] [test_dss.js] # Bug 676992: test consistently fails on Android fail-if = os == "android" [test_duplicateplugins.js] # Bug 676992: test consistently hangs on Android skip-if = os == "android"