From a8afa0214de056c38a7fa6f5fe49948065bb21cf Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Wed, 9 Jan 2013 13:50:52 +0100 Subject: Xulrunner / Firerfox 18.0 --- mozilla-677092-restartless-lang.patch | 698 ++++++++++++++++++++++++++++++++++ xulrunner.spec | 37 +- 2 files changed, 724 insertions(+), 11 deletions(-) create mode 100644 mozilla-677092-restartless-lang.patch 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 +# 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#"> + + +- addon1@tests.mozilla.org ++ langpack-x-testing@tests.mozilla.org ++ 8 + 1.0 + + +- Test 1 +- Test Description ++ Language Pack x-testing + + + +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 - 18.0-1 +* Wed Jan 9 2013 Remi Collet - 18.0-1 - Sync with rawhide, Update to 18.0 +* Wed Jan 9 2013 Martin Stransky - 18.0-5 +- Added fix for langpacks + +* Wed Jan 9 2013 Martin Stransky - 18.0-4 +- Fixed source files +- Disabled WebRTC due to rhbz#304121 + +* Wed Jan 9 2013 Martin Stransky - 18.0-2 +- Disabled system sqlite on Fedora 18 + * Mon Jan 7 2013 Martin Stransky - 18.0-1 - Update to 18.0 -- cgit