mozilla-backout-677092.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Sun, 13 Jan 2013 14:26:10 +0100
branchfirefox18
changeset 603 cfcae96df099
parent 602 bd89d2f9ea1d
permissions -rw-r--r--
imported patch to fix PPC build

# HG changeset patch
# Parent 297b3a7802b2488cca8f2e6febc77e9dbf7f16e0
# User Wolfgang Rosenauer <wr@rosenauer.org>
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"