diff options
| -rw-r--r-- | mozilla-677092-restartless-lang.patch | 698 | ||||
| -rw-r--r-- | xulrunner.spec | 37 | 
2 files changed, 724 insertions, 11 deletions
diff --git a/mozilla-677092-restartless-lang.patch b/mozilla-677092-restartless-lang.patch new file mode 100644 index 0000000..a08de9b --- /dev/null +++ b/mozilla-677092-restartless-lang.patch @@ -0,0 +1,698 @@ +# HG changeset patch +# User Axel Hecht <axel@pike.org> +# Date 1348128099 -7200 +# Node ID 38adce439c3c0b5fd7a035dc53ffd853e80f87ba +# Parent 08d435dedc7fc19bfad3d31c62daec9013525c6d +bug 677092, make language packs restartless, r=Unfocused +Make language packs just trigger the chrome registration hooks, and +disable picking up bootstrap.js, and declare them restartless. + +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 +@@ -740,8 +740,8 @@ +     } +   } +   else { +-    // spell check dictionaries never require a restart +-    if (addon.type == "dictionary") ++    // spell check dictionaries and language packs never require a restart ++    if (addon.type == "dictionary" || addon.type == "locale") +       addon.bootstrap = true; +  +     // Only extensions are allowed to provide an optionsURL, optionsType or aboutURL. For +@@ -3695,6 +3695,11 @@ +       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); +diff --git a/toolkit/mozapps/extensions/test/addons/test_chromemanifest_1/chrome.manifest b/toolkit/mozapps/extensions/test/addons/test_langpack/chrome.manifest +copy from toolkit/mozapps/extensions/test/addons/test_chromemanifest_1/chrome.manifest +copy to toolkit/mozapps/extensions/test/addons/test_langpack/chrome.manifest +--- a/toolkit/mozapps/extensions/test/addons/test_chromemanifest_1/chrome.manifest ++++ b/toolkit/mozapps/extensions/test/addons/test_langpack/chrome.manifest +@@ -1,6 +1,1 @@ +-content test-addon-1 chrome/content +-# comment!   +-  locale test-addon-1 en-US locale/en-US +-      # commentaire!   +-  locale test-addon-1    fr-FR locale/fr-FR   +-overlay	chrome://browser/content/browser.xul    chrome://test-addon-1/content/overlay.xul ++locale test-langpack    x-testing locale/x-testing +diff --git a/toolkit/mozapps/extensions/test/addons/test_chromemanifest_1/install.rdf b/toolkit/mozapps/extensions/test/addons/test_langpack/install.rdf +copy from toolkit/mozapps/extensions/test/addons/test_chromemanifest_1/install.rdf +copy to toolkit/mozapps/extensions/test/addons/test_langpack/install.rdf +--- a/toolkit/mozapps/extensions/test/addons/test_chromemanifest_1/install.rdf ++++ b/toolkit/mozapps/extensions/test/addons/test_langpack/install.rdf +@@ -4,12 +4,12 @@ +      xmlns:em="http://www.mozilla.org/2004/em-rdf#"> +  +   <Description about="urn:mozilla:install-manifest"> +-    <em:id>addon1@tests.mozilla.org</em:id> ++    <em:id>langpack-x-testing@tests.mozilla.org</em:id> ++    <em:type>8</em:type> +     <em:version>1.0</em:version> +  +     <!-- Front End MetaData --> +-    <em:name>Test 1</em:name> +-    <em:description>Test Description</em:description> ++    <em:name>Language Pack x-testing</em:name> +  +     <em:targetApplication> +       <Description> +diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_dictionary.js b/toolkit/mozapps/extensions/test/xpcshell/test_langpack.js +copy from toolkit/mozapps/extensions/test/xpcshell/test_dictionary.js +copy to toolkit/mozapps/extensions/test/xpcshell/test_langpack.js +--- a/toolkit/mozapps/extensions/test/xpcshell/test_dictionary.js ++++ b/toolkit/mozapps/extensions/test/xpcshell/test_langpack.js +@@ -2,7 +2,7 @@ +  * http://creativecommons.org/publicdomain/zero/1.0/ +  */ +  +-// This verifies that bootstrappable add-ons can be used without restarts. ++// 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 +@@ -18,91 +18,22 @@ + userExtDir.append(gAppInfo.ID); + registerDirectory("XREUSysExt", userExtDir.parent); +  +-Components.utils.import("resource://testing-common/httpd.js"); +-var testserver; ++var chrome = Components.classes["@mozilla.org/chrome/chrome-registry;1"] ++  .getService(Components.interfaces.nsIXULChromeRegistry); +  +-/** +- * This object is both a factory and an mozISpellCheckingEngine implementation (so, it +- * is de-facto a service). It's also an interface requestor that gives out +- * itself when asked for mozISpellCheckingEngine. +- */ +-var HunspellEngine = { +-  dictionaryDirs: [], +-  listener: null, +-   +-  QueryInterface: function hunspell_qi(iid) { +-    if (iid.equals(Components.interfaces.nsISupports) || +-        iid.equals(Components.interfaces.nsIFactory) || +-        iid.equals(Components.interfaces.mozISpellCheckingEngine)) +-      return this; +-    throw Components.results.NS_ERROR_NO_INTERFACE; +-  }, +-  createInstance: function hunspell_ci(outer, iid) { +-    if (outer) +-      throw Components.results.NS_ERROR_NO_AGGREGATION; +-    return this.QueryInterface(iid); +-  }, +-  lockFactory: function hunspell_lockf(lock) { +-    throw Components.results.NS_ERROR_NOT_IMPLEMENTED; +-  }, +- +-  addDirectory: function hunspell_addDirectory(dir) { +-    this.dictionaryDirs.push(dir); +-    if (this.listener) +-      this.listener("addDirectory"); +-  }, +- +-  removeDirectory: function hunspell_addDirectory(dir) { +-    this.dictionaryDirs.splice(this.dictionaryDirs.indexOf(dir), 1); +-    if (this.listener) +-      this.listener("removeDirectory"); +-  }, +- +-  getInterface: function hunspell_gi(iid) { +-    if (iid.equals(Components.interfaces.mozISpellCheckingEngine)) +-      return this; +-    throw Components.results.NS_ERROR_NO_INTERFACE; +-  }, +- +-  contractID: "@mozilla.org/spellchecker/engine;1", +-  classID: Components.ID("{6f3c63bc-a4fd-449b-9a58-a2d9bd972cce}"), +- +-  activate: function hunspell_activate() { +-    this.origClassID = Components.manager.nsIComponentRegistrar +-      .contractIDToCID(this.contractID); +-    this.origFactory = Components.manager +-      .getClassObject(Components.classes[this.contractID], +-                      Components.interfaces.nsIFactory); +- +-    Components.manager.nsIComponentRegistrar +-      .unregisterFactory(this.origClassID, this.origFactory); +-    Components.manager.nsIComponentRegistrar.registerFactory(this.classID, +-      "Test hunspell", this.contractID, this); +-  }, +-   +-  deactivate: function hunspell_deactivate() { +-    Components.manager.nsIComponentRegistrar.unregisterFactory(this.classID, this); +-    Components.manager.nsIComponentRegistrar.registerFactory(this.origClassID, +-      "Hunspell", this.contractID, this.origFactory); +-  }, +- +-  isDictionaryEnabled: function hunspell_isDictionaryEnabled(name) { +-    return this.dictionaryDirs.some(function(dir) { +-      var dic = dir.clone(); +-      dic.append(name); +-      return dic.exists(); +-    }); ++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(); +  +-  // Create and configure the HTTP server. +-  testserver = new HttpServer(); +-  testserver.registerDirectory("/addons/", do_get_file("addons")); +-  testserver.start(4444); +- +   startupManager(); +  +   run_test_1(); +@@ -114,25 +45,22 @@ +     "onNewInstall" +   ]); +  +-  HunspellEngine.activate(); +- +-  AddonManager.getInstallForFile(do_get_addon("test_dictionary"), function(install) { ++  AddonManager.getInstallForFile(do_get_addon("test_langpack"), function(install) { +     ensure_test_completed(); +  +     do_check_neq(install, null); +-    do_check_eq(install.type, "dictionary"); ++    do_check_eq(install.type, "locale"); +     do_check_eq(install.version, "1.0"); +-    do_check_eq(install.name, "Test Dictionary"); ++    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); +-    do_check_not_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); +  +     let addon = install.addon; +     prepare_test({ +-      "ab-CD@dictionaries.addons.mozilla.org": [ ++      "langpack-x-testing@tests.mozilla.org": [ +         ["onInstalling", false], +         "onInstalled" +       ] +@@ -141,11 +69,7 @@ +       "onInstallEnded", +     ], function() { +       do_check_true(addon.hasResource("install.rdf")); +-      HunspellEngine.listener = function(aEvent) { +-        HunspellEngine.listener = null; +-        do_check_eq(aEvent, "addDirectory"); +-        check_test_1(); +-      }; ++      check_test_1(); +     }); +     install.install(); +   }); +@@ -157,18 +81,18 @@ +     // doesn't require a restart. +     do_check_eq(installs.length, 0); +  +-    AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { ++    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_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); ++      // 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")); +-      do_check_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); +  +-      let dir = do_get_addon_root_uri(profileDir, "ab-CD@dictionaries.addons.mozilla.org"); ++      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); +@@ -181,9 +105,9 @@ +  + // Tests that disabling doesn't require a restart + function run_test_2() { +-  AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { ++  AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) { +     prepare_test({ +-      "ab-CD@dictionaries.addons.mozilla.org": [ ++      "langpack-x-testing@tests.mozilla.org": [ +         ["onDisabling", false], +         "onDisabled" +       ] +@@ -199,10 +123,10 @@ +     do_check_false(b1.appDisabled); +     do_check_true(b1.userDisabled); +     do_check_false(b1.isActive); +-    do_check_false(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); +-    do_check_not_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); ++    // check chrome reg that language pack is not registered ++    do_check_locale_not_registered("test-langpack"); +  +-    AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(newb1) { ++    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); +@@ -217,12 +141,11 @@ + // Test that restarting doesn't accidentally re-enable + function run_test_3() { +   shutdownManager(); +-  do_check_false(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); +   startupManager(false); +-  do_check_false(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); +-  do_check_not_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); ++  // check chrome reg that language pack is not registered ++  do_check_locale_not_registered("test-langpack"); +  +-  AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { ++  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); +@@ -235,9 +158,9 @@ +  + // Tests that enabling doesn't require a restart + function run_test_4() { +-  AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { ++  AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) { +     prepare_test({ +-      "ab-CD@dictionaries.addons.mozilla.org": [ ++      "langpack-x-testing@tests.mozilla.org": [ +         ["onEnabling", false], +         "onEnabled" +       ] +@@ -253,10 +176,10 @@ +     do_check_false(b1.appDisabled); +     do_check_false(b1.userDisabled); +     do_check_true(b1.isActive); +-    do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); +-    do_check_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); ++    // check chrome reg that language pack is registered ++    do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing"); +  +-    AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(newb1) { ++    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); +@@ -271,13 +194,11 @@ + // Tests that a restart shuts down and restarts the add-on + function run_test_5() { +   shutdownManager(); +-  do_check_false(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); +-  do_check_not_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); +   startupManager(false); +-  do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); +-  do_check_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); ++  // check chrome reg that language pack is registered ++  do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing"); +  +-  AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { ++  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); +@@ -291,9 +212,9 @@ +  + // Tests that uninstalling doesn't require a restart + function run_test_7() { +-  AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { ++  AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) { +     prepare_test({ +-      "ab-CD@dictionaries.addons.mozilla.org": [ ++      "langpack-x-testing@tests.mozilla.org": [ +         ["onUninstalling", false], +         "onUninstalled" +       ] +@@ -309,333 +230,18 @@ +  + function check_test_7() { +   ensure_test_completed(); +-  do_check_false(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); +-  do_check_not_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); ++  // check chrome reg that language pack is not registered ++  do_check_locale_not_registered("test-langpack"); +  +-  AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { ++  AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) { +     do_check_eq(b1, null); +  +     restartManager(); +  +-    AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(newb1) { ++    AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(newb1) { +       do_check_eq(newb1, null); +  +-      run_test_8(); ++      do_test_finished(); +     }); +   }); + } +- +-// Test that a bootstrapped extension dropped into the profile loads properly +-// on startup and doesn't cause an EM restart +-function run_test_8() { +-  shutdownManager(); +- +-  let dir = profileDir.clone(); +-  dir.append("ab-CD@dictionaries.addons.mozilla.org"); +-  dir.create(AM_Ci.nsIFile.DIRECTORY_TYPE, 0755); +-  let zip = AM_Cc["@mozilla.org/libjar/zip-reader;1"]. +-            createInstance(AM_Ci.nsIZipReader); +-  zip.open(do_get_addon("test_dictionary")); +-  dir.append("install.rdf"); +-  zip.extract("install.rdf", dir); +-  dir = dir.parent; +-  dir.append("dictionaries"); +-  dir.create(AM_Ci.nsIFile.DIRECTORY_TYPE, 0755); +-  dir.append("ab-CD.dic"); +-  zip.extract("dictionaries/ab-CD.dic", dir); +-  zip.close(); +- +-  startupManager(false); +- +-  AddonManager.getAddonByID("ab-CD@dictionaries.addons.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_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); +-    do_check_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); +- +-    run_test_9(); +-  }); +-} +- +-// Test that items detected as removed during startup get removed properly +-function run_test_9() { +-  shutdownManager(); +- +-  let dir = profileDir.clone(); +-  dir.append("ab-CD@dictionaries.addons.mozilla.org"); +-  dir.remove(true); +-  startupManager(false); +- +-  AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { +-    do_check_eq(b1, null); +-    do_check_not_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); +- +-    run_test_12(); +-  }); +-} +- +- +-// Tests that bootstrapped extensions are correctly loaded even if the app is +-// upgraded at the same time +-function run_test_12() { +-  shutdownManager(); +- +-  let dir = profileDir.clone(); +-  dir.append("ab-CD@dictionaries.addons.mozilla.org"); +-  dir.create(AM_Ci.nsIFile.DIRECTORY_TYPE, 0755); +-  let zip = AM_Cc["@mozilla.org/libjar/zip-reader;1"]. +-            createInstance(AM_Ci.nsIZipReader); +-  zip.open(do_get_addon("test_dictionary")); +-  dir.append("install.rdf"); +-  zip.extract("install.rdf", dir); +-  dir = dir.parent; +-  dir.append("dictionaries"); +-  dir.create(AM_Ci.nsIFile.DIRECTORY_TYPE, 0755); +-  dir.append("ab-CD.dic"); +-  zip.extract("dictionaries/ab-CD.dic", dir); +-  zip.close(); +- +-  startupManager(true); +- +-  AddonManager.getAddonByID("ab-CD@dictionaries.addons.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_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); +-    do_check_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); +- +-    b1.uninstall(); +-    restartManager(); +- +-    run_test_16(); +-  }); +-} +- +- +-// Tests that bootstrapped extensions don't get loaded when in safe mode +-function run_test_16() { +-  installAllFiles([do_get_addon("test_dictionary")], function() { +-    AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { +-      // Should have installed and started +-      do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); +- +-      shutdownManager(); +- +-      // Should have stopped +-      do_check_false(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); +- +-      gAppInfo.inSafeMode = true; +-      startupManager(false); +- +-      AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { +-        // Should still be stopped +-        do_check_false(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); +-        do_check_false(b1.isActive); +- +-        shutdownManager(); +-        gAppInfo.inSafeMode = false; +-        startupManager(false); +- +-        // Should have started +-        do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); +- +-        AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { +-          b1.uninstall(); +- +-          run_test_17(); +-        }); +-      }); +-    }); +-  }); +-} +- +-// Check that a bootstrapped extension in a non-profile location is loaded +-function run_test_17() { +-  shutdownManager(); +- +-  let dir = userExtDir.clone(); +-  dir.append("ab-CD@dictionaries.addons.mozilla.org"); +-  dir.create(AM_Ci.nsIFile.DIRECTORY_TYPE, 0755); +-  let zip = AM_Cc["@mozilla.org/libjar/zip-reader;1"]. +-            createInstance(AM_Ci.nsIZipReader); +-  zip.open(do_get_addon("test_dictionary")); +-  dir.append("install.rdf"); +-  zip.extract("install.rdf", dir); +-  dir = dir.parent; +-  dir.append("dictionaries"); +-  dir.create(AM_Ci.nsIFile.DIRECTORY_TYPE, 0755); +-  dir.append("ab-CD.dic"); +-  zip.extract("dictionaries/ab-CD.dic", dir); +-  zip.close(); +- +-  startupManager(); +- +-  AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { +-    // Should have installed and started +-    do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); +-    do_check_neq(b1, null); +-    do_check_eq(b1.version, "1.0"); +-    do_check_true(b1.isActive); +- +-    // From run_test_21 +-    dir = userExtDir.clone(); +-    dir.append("ab-CD@dictionaries.addons.mozilla.org"); +-    dir.remove(true); +- +-    restartManager(); +- +-    run_test_23(); +-  }); +-} +- +-// Tests that installing from a URL doesn't require a restart +-function run_test_23() { +-  prepare_test({ }, [ +-    "onNewInstall" +-  ]); +- +-  let url = "http://localhost:4444/addons/test_dictionary.xpi"; +-  AddonManager.getInstallForURL(url, function(install) { +-    ensure_test_completed(); +- +-    do_check_neq(install, null); +- +-    prepare_test({ }, [ +-      "onDownloadStarted", +-      "onDownloadEnded" +-    ], function() { +-      do_check_eq(install.type, "dictionary"); +-      do_check_eq(install.version, "1.0"); +-      do_check_eq(install.name, "Test Dictionary"); +-      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); +-      do_check_not_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); +- +-      let addon = install.addon; +-      prepare_test({ +-        "ab-CD@dictionaries.addons.mozilla.org": [ +-          ["onInstalling", false], +-          "onInstalled" +-        ] +-      }, [ +-        "onInstallStarted", +-        "onInstallEnded", +-      ], function() { +-        do_check_true(addon.hasResource("install.rdf")); +-        check_test_23(); +-      }); +-    }); +-    install.install(); +-  }, "application/x-xpinstall"); +-} +- +-function check_test_23() { +-  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("ab-CD@dictionaries.addons.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_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); +-      do_check_true(b1.hasResource("install.rdf")); +-      do_check_false(b1.hasResource("bootstrap.js")); +-      do_check_in_crash_annotation("ab-CD@dictionaries.addons.mozilla.org", "1.0"); +- +-      let dir = do_get_addon_root_uri(profileDir, "ab-CD@dictionaries.addons.mozilla.org"); +- +-      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(); +- +-          testserver.stop(run_test_25); +-        }); +-      }); +-    }); +-  }); +-} +- +-// Tests that updating from a bootstrappable add-on to a normal add-on calls +-// the uninstall method +-function run_test_25() { +-  installAllFiles([do_get_addon("test_dictionary")], function() { +-    HunspellEngine.listener = function(aEvent) { +-      HunspellEngine.listener = null; +-      do_check_eq(aEvent, "addDirectory"); +-      do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); +-   +-      installAllFiles([do_get_addon("test_dictionary_2")], function() { +-        // Needs a restart to complete this so the old version stays running +-        do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); +-   +-        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_true(hasFlag(b1.pendingOperations, AddonManager.PENDING_UPGRADE)); +-   +-          restartManager(); +-   +-          do_check_false(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); +-   +-          AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { +-            do_check_neq(b1, null); +-            do_check_eq(b1.version, "2.0"); +-            do_check_true(b1.isActive); +-            do_check_eq(b1.pendingOperations, AddonManager.PENDING_NONE); +-   +-            run_test_26(); +-          }); +-        }); +-      }); +-    }; +-  }); +-} +- +-// Tests that updating from a normal add-on to a bootstrappable add-on calls +-// the install method +-function run_test_26() { +-  installAllFiles([do_get_addon("test_dictionary")], function() { +-    // Needs a restart to complete this +-    do_check_false(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); +- +-    AddonManager.getAddonByID("ab-CD@dictionaries.addons.mozilla.org", function(b1) { +-      do_check_neq(b1, null); +-      do_check_eq(b1.version, "2.0"); +-      do_check_true(b1.isActive); +-      do_check_true(hasFlag(b1.pendingOperations, AddonManager.PENDING_UPGRADE)); +- +-      restartManager(); +- +-      do_check_true(HunspellEngine.isDictionaryEnabled("ab-CD.dic")); +- +-      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(); +- +-        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 +@@ -139,6 +139,7 @@ + [test_corrupt_strictcompat.js] + [test_db_sanity.js] + [test_dictionary.js] ++[test_langpack.js] + [test_disable.js] + [test_distribution.js] + [test_dss.js] diff --git a/xulrunner.spec b/xulrunner.spec index e8f5993..007c4fd 100644 --- a/xulrunner.spec +++ b/xulrunner.spec @@ -12,7 +12,7 @@  %endif  # Use system sqlite? -%if 0%{?fedora} < 18 +%if 0%{?fedora} <= 18  %define system_sqlite     0  %else  %define system_sqlite     1 @@ -33,6 +33,7 @@  %global libvpx_version 1.0.0  %if %{?system_nss} +# grep 'min_ns.*=[0-9]' configure  %global nspr_version 4.9.3  %global nspr_build_version %(pkg-config --silence-errors --modversion nspr 2>/dev/null || echo 65536)  %global nss_version 3.14.1 @@ -40,7 +41,8 @@  %endif  %if %{?system_sqlite} -%global sqlite_version 3.7.13 +# grep '^SQLITE_VERSION' configure +%global sqlite_version 3.7.14.1  # The actual sqlite version (see #480989):  %global sqlite_build_version %(pkg-config --silence-errors --modversion sqlite3 2>/dev/null || echo 65536)  %endif @@ -107,6 +109,7 @@ Patch18:        xulrunner-16.0-jemalloc-ppc.patch  Patch20:        mozilla-193-pkgconfig.patch  # Upstream patches +Patch100:       mozilla-677092-restartless-lang.patch  # --------------------------------------------------- @@ -250,7 +253,8 @@ cd %{tarballdir}  %patch17 -p2 -b .gcc47  %patch18 -p2 -b .jemalloc-ppc -%patch20 -p2 -b .pk +%patch20  -p2 -b .pk +%patch100 -p1 -R -b .restartless-lang  %{__rm} -f .mozconfig  %{__cat} %{SOURCE10} \ @@ -314,16 +318,17 @@ echo "ac_add_options --with-float-abi=soft" >> .mozconfig  echo "ac_add_options --disable-elf-hack" >> .mozconfig  %endif -%ifnarch %{ix86} x86_64 +%ifnarch %{ix86} x86_64 armv7hl armv7hnl  echo "ac_add_options --disable-methodjit" >> .mozconfig  echo "ac_add_options --disable-monoic" >> .mozconfig  echo "ac_add_options --disable-polyic" >> .mozconfig  echo "ac_add_options --disable-tracejit" >> .mozconfig  %endif -%ifnarch %{ix86} x86_64 +# Disable WebRTC because of Bug 304121 +#%ifnarch %{ix86} x86_64  echo "ac_add_options --disable-webrtc" >> .mozconfig -%endif +#%endif  #--------------------------------------------------------------------- @@ -353,7 +358,7 @@ MOZ_OPT_FLAGS=$(echo "$RPM_OPT_FLAGS" | %{__sed} -e 's/-Wall//')  MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-O2//')  %endif  %ifarch s390 -MOZ_OPT_FLAGS=$(echo "$RPM_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/') +MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/')  %endif  %ifarch s390 %{arm} ppc  MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads" @@ -469,6 +474,9 @@ EOF  %{__rm} -rf ${RPM_BUILD_ROOT}%{mozappdir}/dictionaries  ln -s %{_datadir}/myspell ${RPM_BUILD_ROOT}%{mozappdir}/dictionaries +# Remove tmp files +find $RPM_BUILD_ROOT/%{mozappdir} -name '.mkdir.done' -exec rm -rf {} \; +  # ghost files  %{__mkdir_p} $RPM_BUILD_ROOT%{mozappdir}/components  touch $RPM_BUILD_ROOT%{mozappdir}/components/compreg.dat @@ -529,9 +537,6 @@ fi  %{mozappdir}/crashreporter.ini  %{mozappdir}/Throbber-small.gif  %endif -%exclude %{mozappdir}/components/.mkdir.done -%exclude %{mozappdir}/defaults/pref/.mkdir.done -%exclude %{mozappdir}/modules/.mkdir.done  %files devel  %defattr(-,root,root,-) @@ -545,9 +550,19 @@ fi  #---------------------------------------------------------------------  %changelog -* Tue Jan  8 2013 Remi Collet <RPMS@FamilleCollet.com> - 18.0-1 +* Wed Jan 9 2013 Remi Collet <RPMS@FamilleCollet.com> - 18.0-1  - Sync with rawhide, Update to 18.0 +* Wed Jan 9 2013 Martin Stransky <stransky@redhat.com> - 18.0-5 +- Added fix for langpacks + +* Wed Jan 9 2013 Martin Stransky <stransky@redhat.com> - 18.0-4 +- Fixed source files +- Disabled WebRTC due to rhbz#304121 + +* Wed Jan 9 2013 Martin Stransky <stransky@redhat.com> - 18.0-2 +- Disabled system sqlite on Fedora 18 +  * Mon Jan 7 2013 Martin Stransky <stransky@redhat.com> - 18.0-1  - Update to 18.0  | 
