[arch-commits] Commit in firefox/trunk (PKGBUILD bug677092.patch)

Jan Steffens heftig at archlinux.org
Thu Jan 10 21:06:13 UTC 2013


    Date: Thursday, January 10, 2013 @ 16:06:13
  Author: heftig
Revision: 175006

Fix langpack regression

Added:
  firefox/trunk/bug677092.patch
Modified:
  firefox/trunk/PKGBUILD

-----------------+
 PKGBUILD        |   12 +
 bug677092.patch |  330 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 339 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2013-01-10 17:58:12 UTC (rev 175005)
+++ PKGBUILD	2013-01-10 21:06:13 UTC (rev 175006)
@@ -4,7 +4,7 @@
 
 pkgname=firefox
 pkgver=18.0
-pkgrel=1
+pkgrel=2
 pkgdesc="Standalone web browser from mozilla.org"
 arch=('i686' 'x86_64')
 license=('MPL' 'GPL' 'LGPL')
@@ -18,13 +18,15 @@
 install=firefox.install
 options=(!emptydirs)
 source=(https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.bz2
-        mozconfig firefox.desktop firefox-install-dir.patch vendor.js shared-libs.patch)
+        mozconfig firefox.desktop firefox-install-dir.patch vendor.js shared-libs.patch
+        bug677092.patch)
 md5sums=('485d02563854c20a3788d89db07b0687'
          'efdd58626b2f56dea31e26879eb2db3b'
          '6174396b4788deffa399db3f6f010a94'
          '150ac0fb3ac7b2114c8e8851a9e0516c'
          '0d053487907de4376d67d8f499c5502b'
-         '52e52f840a49eb1d14be1c0065b03a93')
+         '52e52f840a49eb1d14be1c0065b03a93'
+         'e1204e0be964b6964ebfb6467e05141f')
 
 build() {
   cd mozilla-release
@@ -33,6 +35,10 @@
   patch -Np1 -i ../firefox-install-dir.patch
   patch -Np1 -i ../shared-libs.patch
 
+  # Back out https://bugzilla.mozilla.org/show_bug.cgi?id=677092
+  # in order to fix https://bugzilla.mozilla.org/show_bug.cgi?id=818468
+  patch -Rp1 -i ../bug677092.patch
+
   # Fix PRE_RELEASE_SUFFIX
   sed -i '/^PRE_RELEASE_SUFFIX := ""/s/ ""//' \
     browser/base/Makefile.in

Added: bug677092.patch
===================================================================
--- bug677092.patch	                        (rev 0)
+++ bug677092.patch	2013-01-10 21:06:13 UTC (rev 175006)
@@ -0,0 +1,330 @@
+exporting patch:
+# HG changeset patch
+# User Axel Hecht <axel at pike.org>
+# Date 1348128099 -7200
+# Node ID 812d0ba8317507c4026958a740960384eac1507a
+# Parent  97e49e7a33266a0680e5af59289264a07e4321f8
+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 -r 97e49e7a3326 -r 812d0ba83175 toolkit/mozapps/extensions/XPIProvider.jsm
+--- a/toolkit/mozapps/extensions/XPIProvider.jsm	Wed Sep 26 13:08:50 2012 +0200
++++ b/toolkit/mozapps/extensions/XPIProvider.jsm	Thu Sep 20 10:01:39 2012 +0200
+@@ -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 -r 97e49e7a3326 -r 812d0ba83175 toolkit/mozapps/extensions/test/addons/test_langpack/chrome.manifest
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/toolkit/mozapps/extensions/test/addons/test_langpack/chrome.manifest	Thu Sep 20 10:01:39 2012 +0200
+@@ -0,0 +1,1 @@
++locale test-langpack    x-testing locale/x-testing
+diff -r 97e49e7a3326 -r 812d0ba83175 toolkit/mozapps/extensions/test/addons/test_langpack/install.rdf
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/toolkit/mozapps/extensions/test/addons/test_langpack/install.rdf	Thu Sep 20 10:01:39 2012 +0200
+@@ -0,0 +1,23 @@
++<?xml version="1.0"?>
++
++<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
++     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
++
++  <Description about="urn:mozilla:install-manifest">
++    <em:id>langpack-x-testing at tests.mozilla.org</em:id>
++    <em:type>8</em:type>
++    <em:version>1.0</em:version>
++
++    <!-- Front End MetaData -->
++    <em:name>Language Pack x-testing</em:name>
++
++    <em:targetApplication>
++      <Description>
++        <em:id>xpcshell at tests.mozilla.org</em:id>
++        <em:minVersion>1</em:minVersion>
++        <em:maxVersion>2</em:maxVersion>
++      </Description>
++    </em:targetApplication>
++
++  </Description>
++</RDF>
+diff -r 97e49e7a3326 -r 812d0ba83175 toolkit/mozapps/extensions/test/xpcshell/test_langpack.js
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/toolkit/mozapps/extensions/test/xpcshell/test_langpack.js	Thu Sep 20 10:01:39 2012 +0200
+@@ -0,0 +1,247 @@
++/* Any copyright is dedicated to the Public Domain.
++ * http://creativecommons.org/publicdomain/zero/1.0/
++ */
++
++// 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
++Services.prefs.setIntPref("extensions.enabledScopes",
++                          AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER);
++
++createAppInfo("xpcshell at 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);
++
++var chrome = Components.classes["@mozilla.org/chrome/chrome-registry;1"]
++  .getService(Components.interfaces.nsIXULChromeRegistry);
++
++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();
++
++  startupManager();
++
++  run_test_1();
++}
++
++// Tests that installing doesn't require a restart
++function run_test_1() {
++  prepare_test({ }, [
++    "onNewInstall"
++  ]);
++
++  AddonManager.getInstallForFile(do_get_addon("test_langpack"), function(install) {
++    ensure_test_completed();
++
++    do_check_neq(install, null);
++    do_check_eq(install.type, "locale");
++    do_check_eq(install.version, "1.0");
++    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);
++
++    let addon = install.addon;
++    prepare_test({
++      "langpack-x-testing at tests.mozilla.org": [
++        ["onInstalling", false],
++        "onInstalled"
++      ]
++    }, [
++      "onInstallStarted",
++      "onInstallEnded",
++    ], function() {
++      do_check_true(addon.hasResource("install.rdf"));
++      check_test_1();
++    });
++    install.install();
++  });
++}
++
++function check_test_1() {
++  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("langpack-x-testing at 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);
++      // 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"));
++
++      let dir = do_get_addon_root_uri(profileDir, "langpack-x-testing at tests.mozilla.org");
++
++      AddonManager.getAddonsWithOperationsByTypes(null, function(list) {
++        do_check_eq(list.length, 0);
++
++        run_test_2();
++      });
++    });
++  });
++}
++
++// Tests that disabling doesn't require a restart
++function run_test_2() {
++  AddonManager.getAddonByID("langpack-x-testing at tests.mozilla.org", function(b1) {
++    prepare_test({
++      "langpack-x-testing at tests.mozilla.org": [
++        ["onDisabling", false],
++        "onDisabled"
++      ]
++    });
++
++    do_check_eq(b1.operationsRequiringRestart &
++                AddonManager.OP_NEEDS_RESTART_DISABLE, 0);
++    b1.userDisabled = true;
++    ensure_test_completed();
++
++    do_check_neq(b1, null);
++    do_check_eq(b1.version, "1.0");
++    do_check_false(b1.appDisabled);
++    do_check_true(b1.userDisabled);
++    do_check_false(b1.isActive);
++    // check chrome reg that language pack is not registered
++    do_check_locale_not_registered("test-langpack");
++
++    AddonManager.getAddonByID("langpack-x-testing at tests.mozilla.org", function(newb1) {
++      do_check_neq(newb1, null);
++      do_check_eq(newb1.version, "1.0");
++      do_check_false(newb1.appDisabled);
++      do_check_true(newb1.userDisabled);
++      do_check_false(newb1.isActive);
++
++      run_test_3();
++    });
++  });
++}
++
++// Test that restarting doesn't accidentally re-enable
++function run_test_3() {
++  shutdownManager();
++  startupManager(false);
++  // check chrome reg that language pack is not registered
++  do_check_locale_not_registered("test-langpack");
++
++  AddonManager.getAddonByID("langpack-x-testing at tests.mozilla.org", function(b1) {
++    do_check_neq(b1, null);
++    do_check_eq(b1.version, "1.0");
++    do_check_false(b1.appDisabled);
++    do_check_true(b1.userDisabled);
++    do_check_false(b1.isActive);
++
++    run_test_4();
++  });
++}
++
++// Tests that enabling doesn't require a restart
++function run_test_4() {
++  AddonManager.getAddonByID("langpack-x-testing at tests.mozilla.org", function(b1) {
++    prepare_test({
++      "langpack-x-testing at tests.mozilla.org": [
++        ["onEnabling", false],
++        "onEnabled"
++      ]
++    });
++
++    do_check_eq(b1.operationsRequiringRestart &
++                AddonManager.OP_NEEDS_RESTART_ENABLE, 0);
++    b1.userDisabled = false;
++    ensure_test_completed();
++
++    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);
++    // check chrome reg that language pack is registered
++    do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
++
++    AddonManager.getAddonByID("langpack-x-testing at tests.mozilla.org", function(newb1) {
++      do_check_neq(newb1, null);
++      do_check_eq(newb1.version, "1.0");
++      do_check_false(newb1.appDisabled);
++      do_check_false(newb1.userDisabled);
++      do_check_true(newb1.isActive);
++
++      run_test_5();
++    });
++  });
++}
++
++// Tests that a restart shuts down and restarts the add-on
++function run_test_5() {
++  shutdownManager();
++  startupManager(false);
++  // check chrome reg that language pack is registered
++  do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
++
++  AddonManager.getAddonByID("langpack-x-testing at 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_false(isExtensionInAddonsList(profileDir, b1.id));
++
++    run_test_7();
++  });
++}
++
++// Tests that uninstalling doesn't require a restart
++function run_test_7() {
++  AddonManager.getAddonByID("langpack-x-testing at tests.mozilla.org", function(b1) {
++    prepare_test({
++      "langpack-x-testing at tests.mozilla.org": [
++        ["onUninstalling", false],
++        "onUninstalled"
++      ]
++    });
++
++    do_check_eq(b1.operationsRequiringRestart &
++                AddonManager.OP_NEEDS_RESTART_UNINSTALL, 0);
++    b1.uninstall();
++
++    check_test_7();
++  });
++}
++
++function check_test_7() {
++  ensure_test_completed();
++  // check chrome reg that language pack is not registered
++  do_check_locale_not_registered("test-langpack");
++
++  AddonManager.getAddonByID("langpack-x-testing at tests.mozilla.org", function(b1) {
++    do_check_eq(b1, null);
++
++    restartManager();
++
++    AddonManager.getAddonByID("langpack-x-testing at tests.mozilla.org", function(newb1) {
++      do_check_eq(newb1, null);
++
++      do_test_finished();
++    });
++  });
++}
+diff -r 97e49e7a3326 -r 812d0ba83175 toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini
+--- a/toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini	Wed Sep 26 13:08:50 2012 +0200
++++ b/toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini	Thu Sep 20 10:01:39 2012 +0200
+@@ -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]




More information about the arch-commits mailing list