summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Collet <fedora@famillecollet.com>2013-01-09 13:50:52 +0100
committerRemi Collet <fedora@famillecollet.com>2013-01-09 13:50:52 +0100
commita8afa0214de056c38a7fa6f5fe49948065bb21cf (patch)
tree47f9762d906bfa6e3eeb1b747fdd37f728f98c48
parent632485efde2e832d66ae4fa08e58d042e67ee1b3 (diff)
Xulrunner / Firerfox 18.0
-rw-r--r--mozilla-677092-restartless-lang.patch698
-rw-r--r--xulrunner.spec37
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