--- firefox-7.0+build2+nobinonly.orig/mozilla-release-7.0+build2-source.tar.bz2.cdbs-config_list +++ firefox-7.0+build2+nobinonly/mozilla-release-7.0+build2-source.tar.bz2.cdbs-config_list @@ -0,0 +1,257 @@ +mozilla/build/autoconf/config.guess +mozilla/build/autoconf/config.sub +mozilla/config/config.mk +mozilla/ipc/chromium/src/third_party/libevent/config.guess +mozilla/ipc/chromium/src/third_party/libevent/config.h.in +mozilla/ipc/chromium/src/third_party/libevent/config.sub +mozilla/ipc/chromium/src/third_party/libevent/linux/config.h +mozilla/ipc/chromium/src/third_party/libevent/mac/config.h +mozilla/js/src/build/autoconf/config.guess +mozilla/js/src/build/autoconf/config.sub +mozilla/js/src/config/config.mk +mozilla/js/src/ctypes/libffi/config.guess +mozilla/js/src/ctypes/libffi/config.sub +mozilla/js/src/tracevis/config.py +mozilla/media/libtheora/lib/config.h +mozilla/media/libvpx/vpx_ports/config.h +mozilla/mobile/chrome/content/config.js +mozilla/mobile/chrome/content/config.xul +mozilla/mobile/locales/en-US/chrome/config.dtd +mozilla/mobile/themes/core/config.css +mozilla/modules/freetype2/builds/unix/config.guess +mozilla/modules/freetype2/builds/unix/config.sub +mozilla/nsprpub/build/autoconf/config.guess +mozilla/nsprpub/build/autoconf/config.sub +mozilla/nsprpub/config/config.mk +mozilla/security/coreconf/config.mk +mozilla/security/dbm/config/config.mk +mozilla/security/dbm/src/config.mk +mozilla/security/nss/cmd/crmf-cgi/config.mk +mozilla/security/nss/cmd/crmftest/config.mk +mozilla/security/nss/cmd/lib/config.mk +mozilla/security/nss/cmd/libpkix/config.mk +mozilla/security/nss/cmd/libpkix/testutil/config.mk +mozilla/security/nss/lib/base/config.mk +mozilla/security/nss/lib/certdb/config.mk +mozilla/security/nss/lib/certhigh/config.mk +mozilla/security/nss/lib/ckfw/builtins/config.mk +mozilla/security/nss/lib/ckfw/capi/config.mk +mozilla/security/nss/lib/ckfw/config.mk +mozilla/security/nss/lib/ckfw/dbm/config.mk +mozilla/security/nss/lib/ckfw/nssmkey/config.mk +mozilla/security/nss/lib/crmf/config.mk +mozilla/security/nss/lib/cryptohi/config.mk +mozilla/security/nss/lib/dev/config.mk +mozilla/security/nss/lib/freebl/config.mk +mozilla/security/nss/lib/jar/config.mk +mozilla/security/nss/lib/libpkix/config.mk +mozilla/security/nss/lib/libpkix/include/config.mk +mozilla/security/nss/lib/libpkix/pkix/certsel/config.mk +mozilla/security/nss/lib/libpkix/pkix/checker/config.mk +mozilla/security/nss/lib/libpkix/pkix/config.mk +mozilla/security/nss/lib/libpkix/pkix/crlsel/config.mk +mozilla/security/nss/lib/libpkix/pkix/params/config.mk +mozilla/security/nss/lib/libpkix/pkix/results/config.mk +mozilla/security/nss/lib/libpkix/pkix/store/config.mk +mozilla/security/nss/lib/libpkix/pkix/top/config.mk +mozilla/security/nss/lib/libpkix/pkix/util/config.mk +mozilla/security/nss/lib/libpkix/pkix_pl_nss/config.mk +mozilla/security/nss/lib/libpkix/pkix_pl_nss/module/config.mk +mozilla/security/nss/lib/libpkix/pkix_pl_nss/pki/config.mk +mozilla/security/nss/lib/libpkix/pkix_pl_nss/system/config.mk +mozilla/security/nss/lib/nss/config.mk +mozilla/security/nss/lib/pk11wrap/config.mk +mozilla/security/nss/lib/pkcs12/config.mk +mozilla/security/nss/lib/pkcs7/config.mk +mozilla/security/nss/lib/pki/config.mk +mozilla/security/nss/lib/smime/config.mk +mozilla/security/nss/lib/softoken/config.mk +mozilla/security/nss/lib/softoken/legacydb/config.mk +mozilla/security/nss/lib/sqlite/config.mk +mozilla/security/nss/lib/ssl/config.mk +mozilla/security/nss/lib/sysinit/config.mk +mozilla/security/nss/lib/util/config.mk +mozilla/security/nss/lib/zlib/config.mk +mozilla/security/nss/tests/pkcs11/netscape/suites/config.mk +mozilla/security/nss/tests/pkcs11/netscape/suites/security/config.mk +mozilla/security/nss/tests/pkcs11/netscape/suites/security/pkcs11/config.mk +mozilla/security/nss/tests/pkcs11/netscape/suites/security/ssl/config.mk +mozilla/security/nss/tests/pkcs11/netscape/trivial/config.h.in +mozilla/toolkit/components/viewconfig/content/config.js +mozilla/toolkit/components/viewconfig/content/config.xul +mozilla/toolkit/crashreporter/google-breakpad/autotools/config.guess +mozilla/toolkit/crashreporter/google-breakpad/autotools/config.sub +mozilla/toolkit/crashreporter/google-breakpad/src/config.h.in +mozilla/toolkit/locales/en-US/chrome/global/config.dtd +mozilla/toolkit/locales/en-US/chrome/global/config.properties +mozilla/toolkit/themes/pinstripe/global/config.css +mozilla/toolkit/themes/winstripe/global/config.css +mozilla/tools/jprof/stub/config.h +mozilla/tools/leaky/config.h +mozilla/l10n/af/toolkit/chrome/global/config.dtd +mozilla/l10n/af/toolkit/chrome/global/config.properties +mozilla/l10n/ak/toolkit/chrome/global/config.dtd +mozilla/l10n/ak/toolkit/chrome/global/config.properties +mozilla/l10n/ar/toolkit/chrome/global/config.dtd +mozilla/l10n/ar/toolkit/chrome/global/config.properties +mozilla/l10n/ast/toolkit/chrome/global/config.dtd +mozilla/l10n/ast/toolkit/chrome/global/config.properties +mozilla/l10n/be/toolkit/chrome/global/config.dtd +mozilla/l10n/be/toolkit/chrome/global/config.properties +mozilla/l10n/bg/toolkit/chrome/global/config.dtd +mozilla/l10n/bg/toolkit/chrome/global/config.properties +mozilla/l10n/bn-BD/toolkit/chrome/global/config.dtd +mozilla/l10n/bn-BD/toolkit/chrome/global/config.properties +mozilla/l10n/bn-IN/toolkit/chrome/global/config.dtd +mozilla/l10n/bn-IN/toolkit/chrome/global/config.properties +mozilla/l10n/br/toolkit/chrome/global/config.dtd +mozilla/l10n/br/toolkit/chrome/global/config.properties +mozilla/l10n/bs/toolkit/chrome/global/config.dtd +mozilla/l10n/bs/toolkit/chrome/global/config.properties +mozilla/l10n/ca/toolkit/chrome/global/config.dtd +mozilla/l10n/ca/toolkit/chrome/global/config.properties +mozilla/l10n/cs/toolkit/chrome/global/config.dtd +mozilla/l10n/cs/toolkit/chrome/global/config.properties +mozilla/l10n/cy/toolkit/chrome/global/config.dtd +mozilla/l10n/cy/toolkit/chrome/global/config.properties +mozilla/l10n/da/toolkit/chrome/global/config.dtd +mozilla/l10n/da/toolkit/chrome/global/config.properties +mozilla/l10n/de/toolkit/chrome/global/config.dtd +mozilla/l10n/de/toolkit/chrome/global/config.properties +mozilla/l10n/el/toolkit/chrome/global/config.dtd +mozilla/l10n/el/toolkit/chrome/global/config.properties +mozilla/l10n/en-GB/toolkit/chrome/global/config.dtd +mozilla/l10n/en-GB/toolkit/chrome/global/config.properties +mozilla/l10n/en-ZA/toolkit/chrome/global/config.dtd +mozilla/l10n/en-ZA/toolkit/chrome/global/config.properties +mozilla/l10n/eo/toolkit/chrome/global/config.dtd +mozilla/l10n/eo/toolkit/chrome/global/config.properties +mozilla/l10n/es-AR/toolkit/chrome/global/config.dtd +mozilla/l10n/es-AR/toolkit/chrome/global/config.properties +mozilla/l10n/es-CL/toolkit/chrome/global/config.dtd +mozilla/l10n/es-CL/toolkit/chrome/global/config.properties +mozilla/l10n/es-ES/toolkit/chrome/global/config.dtd +mozilla/l10n/es-ES/toolkit/chrome/global/config.properties +mozilla/l10n/es-MX/toolkit/chrome/global/config.dtd +mozilla/l10n/es-MX/toolkit/chrome/global/config.properties +mozilla/l10n/et/toolkit/chrome/global/config.dtd +mozilla/l10n/et/toolkit/chrome/global/config.properties +mozilla/l10n/eu/toolkit/chrome/global/config.dtd +mozilla/l10n/eu/toolkit/chrome/global/config.properties +mozilla/l10n/fa/toolkit/chrome/global/config.dtd +mozilla/l10n/fa/toolkit/chrome/global/config.properties +mozilla/l10n/fi/toolkit/chrome/global/config.dtd +mozilla/l10n/fi/toolkit/chrome/global/config.properties +mozilla/l10n/fr/toolkit/chrome/global/config.dtd +mozilla/l10n/fr/toolkit/chrome/global/config.properties +mozilla/l10n/fy-NL/toolkit/chrome/global/config.dtd +mozilla/l10n/fy-NL/toolkit/chrome/global/config.properties +mozilla/l10n/ga-IE/toolkit/chrome/global/config.dtd +mozilla/l10n/ga-IE/toolkit/chrome/global/config.properties +mozilla/l10n/gd/toolkit/chrome/global/config.dtd +mozilla/l10n/gd/toolkit/chrome/global/config.properties +mozilla/l10n/gl/toolkit/chrome/global/config.dtd +mozilla/l10n/gl/toolkit/chrome/global/config.properties +mozilla/l10n/gu-IN/toolkit/chrome/global/config.dtd +mozilla/l10n/gu-IN/toolkit/chrome/global/config.properties +mozilla/l10n/he/toolkit/chrome/global/config.dtd +mozilla/l10n/he/toolkit/chrome/global/config.properties +mozilla/l10n/hi-IN/toolkit/chrome/global/config.dtd +mozilla/l10n/hi-IN/toolkit/chrome/global/config.properties +mozilla/l10n/hr/toolkit/chrome/global/config.dtd +mozilla/l10n/hr/toolkit/chrome/global/config.properties +mozilla/l10n/hu/toolkit/chrome/global/config.dtd +mozilla/l10n/hu/toolkit/chrome/global/config.properties +mozilla/l10n/hy-AM/toolkit/chrome/global/config.dtd +mozilla/l10n/hy-AM/toolkit/chrome/global/config.properties +mozilla/l10n/id/toolkit/chrome/global/config.dtd +mozilla/l10n/id/toolkit/chrome/global/config.properties +mozilla/l10n/is/toolkit/chrome/global/config.dtd +mozilla/l10n/is/toolkit/chrome/global/config.properties +mozilla/l10n/it/toolkit/chrome/global/config.dtd +mozilla/l10n/it/toolkit/chrome/global/config.properties +mozilla/l10n/ja/toolkit/chrome/global/config.dtd +mozilla/l10n/ja/toolkit/chrome/global/config.properties +mozilla/l10n/ja-JP-mac/toolkit/chrome/global/config.dtd +mozilla/l10n/ja-JP-mac/toolkit/chrome/global/config.properties +mozilla/l10n/kk/toolkit/chrome/global/config.dtd +mozilla/l10n/kk/toolkit/chrome/global/config.properties +mozilla/l10n/kn/toolkit/chrome/global/config.dtd +mozilla/l10n/kn/toolkit/chrome/global/config.properties +mozilla/l10n/ko/toolkit/chrome/global/config.dtd +mozilla/l10n/ko/toolkit/chrome/global/config.properties +mozilla/l10n/ku/toolkit/chrome/global/config.dtd +mozilla/l10n/ku/toolkit/chrome/global/config.properties +mozilla/l10n/lg/toolkit/chrome/global/config.dtd +mozilla/l10n/lg/toolkit/chrome/global/config.properties +mozilla/l10n/lt/toolkit/chrome/global/config.dtd +mozilla/l10n/lt/toolkit/chrome/global/config.properties +mozilla/l10n/lv/toolkit/chrome/global/config.dtd +mozilla/l10n/lv/toolkit/chrome/global/config.properties +mozilla/l10n/mai/toolkit/chrome/global/config.dtd +mozilla/l10n/mai/toolkit/chrome/global/config.properties +mozilla/l10n/mk/toolkit/chrome/global/config.dtd +mozilla/l10n/mk/toolkit/chrome/global/config.properties +mozilla/l10n/ml/toolkit/chrome/global/config.dtd +mozilla/l10n/ml/toolkit/chrome/global/config.properties +mozilla/l10n/mr/toolkit/chrome/global/config.dtd +mozilla/l10n/mr/toolkit/chrome/global/config.properties +mozilla/l10n/nb-NO/toolkit/chrome/global/config.dtd +mozilla/l10n/nb-NO/toolkit/chrome/global/config.properties +mozilla/l10n/nl/toolkit/chrome/global/config.dtd +mozilla/l10n/nl/toolkit/chrome/global/config.properties +mozilla/l10n/nn-NO/toolkit/chrome/global/config.dtd +mozilla/l10n/nn-NO/toolkit/chrome/global/config.properties +mozilla/l10n/nso/toolkit/chrome/global/config.dtd +mozilla/l10n/nso/toolkit/chrome/global/config.properties +mozilla/l10n/or/toolkit/chrome/global/config.dtd +mozilla/l10n/or/toolkit/chrome/global/config.properties +mozilla/l10n/pa-IN/toolkit/chrome/global/config.dtd +mozilla/l10n/pa-IN/toolkit/chrome/global/config.properties +mozilla/l10n/pl/toolkit/chrome/global/config.dtd +mozilla/l10n/pl/toolkit/chrome/global/config.properties +mozilla/l10n/pt-BR/toolkit/chrome/global/config.dtd +mozilla/l10n/pt-BR/toolkit/chrome/global/config.properties +mozilla/l10n/pt-PT/toolkit/chrome/global/config.dtd +mozilla/l10n/pt-PT/toolkit/chrome/global/config.properties +mozilla/l10n/rm/toolkit/chrome/global/config.dtd +mozilla/l10n/rm/toolkit/chrome/global/config.properties +mozilla/l10n/ro/toolkit/chrome/global/config.dtd +mozilla/l10n/ro/toolkit/chrome/global/config.properties +mozilla/l10n/ro/chrome/config.dtd +mozilla/l10n/ru/toolkit/chrome/global/config.dtd +mozilla/l10n/ru/toolkit/chrome/global/config.properties +mozilla/l10n/si/toolkit/chrome/global/config.dtd +mozilla/l10n/si/toolkit/chrome/global/config.properties +mozilla/l10n/sk/toolkit/chrome/global/config.dtd +mozilla/l10n/sk/toolkit/chrome/global/config.properties +mozilla/l10n/sl/toolkit/chrome/global/config.dtd +mozilla/l10n/sl/toolkit/chrome/global/config.properties +mozilla/l10n/son/toolkit/chrome/global/config.dtd +mozilla/l10n/son/toolkit/chrome/global/config.properties +mozilla/l10n/sq/toolkit/chrome/global/config.dtd +mozilla/l10n/sq/toolkit/chrome/global/config.properties +mozilla/l10n/sr/toolkit/chrome/global/config.dtd +mozilla/l10n/sr/toolkit/chrome/global/config.properties +mozilla/l10n/sv-SE/toolkit/chrome/global/config.dtd +mozilla/l10n/sv-SE/toolkit/chrome/global/config.properties +mozilla/l10n/ta/toolkit/chrome/global/config.dtd +mozilla/l10n/ta/toolkit/chrome/global/config.properties +mozilla/l10n/ta-LK/toolkit/chrome/global/config.dtd +mozilla/l10n/ta-LK/toolkit/chrome/global/config.properties +mozilla/l10n/te/toolkit/chrome/global/config.dtd +mozilla/l10n/te/toolkit/chrome/global/config.properties +mozilla/l10n/th/toolkit/chrome/global/config.dtd +mozilla/l10n/th/toolkit/chrome/global/config.properties +mozilla/l10n/tr/toolkit/chrome/global/config.dtd +mozilla/l10n/tr/toolkit/chrome/global/config.properties +mozilla/l10n/uk/toolkit/chrome/global/config.dtd +mozilla/l10n/uk/toolkit/chrome/global/config.properties +mozilla/l10n/vi/toolkit/chrome/global/config.dtd +mozilla/l10n/vi/toolkit/chrome/global/config.properties +mozilla/l10n/zh-CN/toolkit/chrome/global/config.dtd +mozilla/l10n/zh-CN/toolkit/chrome/global/config.properties +mozilla/l10n/zh-TW/toolkit/chrome/global/config.dtd +mozilla/l10n/zh-TW/toolkit/chrome/global/config.properties +mozilla/l10n/zu/toolkit/chrome/global/config.dtd +mozilla/l10n/zu/toolkit/chrome/global/config.properties --- firefox-7.0+build2+nobinonly.orig/debian/locales.unavailable +++ firefox-7.0+build2+nobinonly/debian/locales.unavailable @@ -0,0 +1,5 @@ +as:Assamese +ka:Georgian +mn:Mongolian +oc:Occitan (post 1500) +sw:Swahili --- firefox-7.0+build2+nobinonly.orig/debian/locales.blacklist +++ firefox-7.0+build2+nobinonly/debian/locales.blacklist @@ -0,0 +1,4 @@ +ak +rm +son +ta-LK --- firefox-7.0+build2+nobinonly.orig/debian/control.langpacks +++ firefox-7.0+build2+nobinonly/debian/control.langpacks @@ -0,0 +1,8 @@ + +Package: @MOZ_APP_NAME@-locale-@LANGCODE@ +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-@LANGCODE@-base +Description: @LANG@ language pack for Firefox + This package contains @LANG@ translations and search plugins + for Firefox --- firefox-7.0+build2+nobinonly.orig/debian/firefox.prerm.in +++ firefox-7.0+build2+nobinonly/debian/firefox.prerm.in @@ -0,0 +1,16 @@ +#!/bin/sh + +set -e + +MOZ_APP_NAME=@MOZ_APP_NAME@ + +if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ] ; then + update-alternatives --remove gnome-www-browser /usr/bin/$MOZ_APP_NAME + update-alternatives --remove x-www-browser /usr/bin/$MOZ_APP_NAME +fi + +if [ -f /usr/share/apport/package-hooks/$MOZ_APP_NAME.pyc ] ; then + rm -f /usr/share/apport/package-hooks/$MOZ_APP_NAME.pyc +fi + +#DEBHELPER# --- firefox-7.0+build2+nobinonly.orig/debian/copyright +++ firefox-7.0+build2+nobinonly/debian/copyright @@ -0,0 +1,738 @@ +This package was debianized by Eric Dorland on +Thu, 05 Jun 2003 01:01:22 -0400 + +It was downloaded from http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/ + +The source tarball is an aggregate of several different works in which the +main one, developed by the Mozilla Project, is firefox. + +Other works include gzip, bzip2, sqlite, libjpeg, libpng, cairo, and others. +Please see the sections following the copyright statements for firefox for +these. + +=== firefox + +Overall, the firefox project is licensed under the terms of the Mozilla +Public License version 1.1 or, at your option, under the terms of the GNU +eneral Public License version 2 or subsequent, or the terms of the GNU +Lesser General Public License version 2.1 or subsequent. + +On Debian systems, the complete text of the GNU General Public +License can be found in the file `/usr/share/common-licenses/GPL' ; +the complete text of the GNU Lesser General Public License can be +found in the file `/usr/share/common-licenses/LGPL'. + +The complete text of the Mozilla Public License can be found in the MPL file +in the same directory as this file. + +Some files may still contain licensing notices claiming licensing under +other combinations of NPL, MPL, GPL and LGPL. They are files that were missed +by the upstream relicensing script, but all the permissions required for +relicensing were indeed provided. + +The file db/mork/src/morkQuickSort.cpp is licensed under the following terms: + + Copyright (c) 1992, 1993 + The Regents of the University of California. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +The embedding/qa/mozembed/public/nsIQABrowserUIGlue.idl file and the files +under the embedding/tests directory are licensed under the following terms: + + Copyright (c) 2002 Netscape Communications Corporation and + other contributors + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this Mozilla sample software and associated documentation files + (the "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +The modules/plugin/base/public/npruntime.h file is licensed under the +following terms: + + Copyright (c) 2004, Apple Computer, Inc. and The Mozilla Foundation. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the names of Apple Computer, Inc. ("Apple") or The Mozilla + Foundation ("Mozilla") nor the names of their contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY APPLE, MOZILLA AND THEIR CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE, MOZILLA OR + THEIR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The toolkit/mozapps/update/src/updater/bspatch.cpp and +toolkit/mozapps/update/src/updater/bspatch.h files are licensed under the +following terms: + + Copyright 2003,2004 Colin Percival + All rights reserved + + Redistribution and use in source and binary forms, with or without + modification, are permitted providing that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +Some but not all the files in netwerk/dns/src/ are licensed under the +following terms: + + Copyright (c) 2001,2002 Japan Network Information Center. + All rights reserved. + + By using this file, you agree to the terms and conditions set forth bellow. + + LICENSE TERMS AND CONDITIONS + + The following License Terms and Conditions apply, unless a different + license is obtained from Japan Network Information Center ("JPNIC"), + a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + Chiyoda-ku, Tokyo 101-0047, Japan. + + 1. Use, Modification and Redistribution (including distribution of any + modified or derived work) in source and/or binary forms is permitted + under this License Terms and Conditions. + + 2. Redistribution of source code must retain the copyright notices as they + appear in each source code file, this License Terms and Conditions. + + 3. Redistribution in binary form must reproduce the Copyright Notice, + this License Terms and Conditions, in the documentation and/or other + materials provided with the distribution. For the purposes of binary + distribution the "Copyright Notice" refers to the following language: + "Copyright (c) 2000-2002 Japan Network Information Center. All rights reserved." + + 4. The name of JPNIC may not be used to endorse or promote products + derived from this Software without specific prior written approval of + JPNIC. + + 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +Some files in plugin/oji/JEP/ are licensed under the following terms: + + Copyright (c) 2004, Steven Michaud, All Rights Reserved + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +The extensions/auth/gssapi.h file is licensed under the following terms: + + Copyright 1993 by OpenVision Technologies, Inc. + + Permission to use, copy, modify, distribute, and sell this software + and its documentation for any purpose is hereby granted without fee, + provided that the above copyright notice appears in all copies and + that both that copyright notice and this permission notice appear in + supporting documentation, and that the name of OpenVision not be used + in advertising or publicity pertaining to distribution of the software + without specific, written prior permission. OpenVision makes no + representations about the suitability of this software for any + purpose. It is provided "as is" without express or implied warranty. + + OPENVISION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + EVENT SHALL OPENVISION BE LIABLE FOR ANY SPECIAL, INDIRECT OR + CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF + USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + +The gfx/src/xlib/xregion.h and gfx/src/gtk/xregion.h are licensed under the +following terms: + + Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts, + and the Massachusetts Institute of Technology, Cambridge, Massachusetts. + + All Rights Reserved + + Permission to use, copy, modify, and distribute this software and its + documentation for any purpose and without fee is hereby granted, + provided that the above copyright notice appear in all copies and that + both that copyright notice and this permission notice appear in + supporting documentation, and that the names of Digital or MIT not be + used in advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING + ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL + DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR + ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, + ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + SOFTWARE. + +=== sqlite + +The db/sqlite3 directory contains a copy of sqlite with the following +licensing terms: + + The author disclaims copyright to this source code. In place of + a legal notice, here is a blessing: + + May you do good and not evil. + May you find forgiveness for yourself and forgive others. + May you share freely, never taking more than you give. + +=== dbm + +The dbm directory, except some files added by the mozilla project, is +licensed under the following terms: + + Copyright (c) 1991, 1993, 1994 + The Regents of the University of California. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. + 4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +=== myspell + +The extensions/spellcheck/myspell directory is licensed under the following +terms: + + Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada + And Contributors. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. All modifications to the source code must be clearly marked as + such. Binary redistributions based on modified source code + must be clearly marked as modified versions in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +=== boehm + +The gc/boehm directory, except the files listed under the xulrunner section, +is licensed under the following terms: + + Copyright 1988, 1989 Hans-J. Boehm, Alan J. Demers + Copyright (c) 1991-1996 by Xerox Corporation. All rights reserved. + Copyright (c) 1996-1998 by Silicon Graphics. All rights reserved. + + THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED + OR IMPLIED. ANY USE IS AT YOUR OWN RISK. + + Permission is hereby granted to use or copy this program + for any purpose, provided the above notices are retained on all copies. + Permission to modify the code and to distribute modified code is granted, + provided the above notices are retained, and a notice that the code was + modified is included with the above copyright notice. + +=== cairo + +The gfx/cairo/cairo directory is licensed under the following terms: + + Copyright (c) 2003 University of Southern California + Copyright (c) 1999 Tom Tromey + Copyright (c) 2002, 2003 University of Southern California + Copyright (c) 2004 Calum Robinson + Copyright (c) 2004 David Reveman + Copyright (c) 2000, 2002, 2004 Keith Packard + Copyright (c) 2004, 2005 Red Hat, Inc + + Cairo is free software and is available to be redistributed and/or + modified under the terms of either the GNU Lesser General Public + License (LGPL) version 2.1 or the Mozilla Public License (MPL) version + 1.1. + +=== libpixman + +The gfx/cairo/libpixman directory is licensed under the following terms: +(from gfx/cairo/libpixman/COPYING) + + libpixregion + + Copyright 1987, 1998 The Open Group + + Permission to use, copy, modify, distribute, and sell this software and its + documentation for any purpose is hereby granted without fee, provided that + the above copyright notice appear in all copies and that both that + copyright notice and this permission notice appear in supporting + documentation. + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of The Open Group shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from The Open Group. + + + Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + + Permission to use, copy, modify, and distribute this software and its + documentation for any purpose and without fee is hereby granted, + provided that the above copyright notice appear in all copies and that + both that copyright notice and this permission notice appear in + supporting documentation, and that the name of Digital not be + used in advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING + ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL + DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR + ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, + ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + SOFTWARE. + + ---------------------------------------------------------------------- + libic + + Copyright © 2001 Keith Packard + + Permission to use, copy, modify, distribute, and sell this software and its + documentation for any purpose is hereby granted without fee, provided that + the above copyright notice appear in all copies and that both that + copyright notice and this permission notice appear in supporting + documentation, and that the name of Keith Packard not be used in + advertising or publicity pertaining to distribution of the software without + specific, written prior permission. Keith Packard makes no + representations about the suitability of this software for any purpose. It + is provided "as is" without express or implied warranty. + + KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + + ---------------------------------------------------------------------- + slim + + slim is Copyright © 2003 Richard Henderson + + Permission to use, copy, modify, distribute, and sell this software + and its documentation for any purpose is hereby granted without fee, + provided that the above copyright notice appear in all copies and that + both that copyright notice and this permission notice appear in + supporting documentation, and that the name of Richard Henderson not be + used in advertising or publicity pertaining to distribution of the + software without specific, written prior permission. Richard Henderson + makes no representations about the suitability of this software for + any purpose. It is provided "as is" without express or implied + warranty. + + RICHARD HENDERSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + EVENT SHALL RICHARD HENDERSON BE LIABLE FOR ANY SPECIAL, INDIRECT OR + CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF + USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + +=== libjpeg + +The jpeg directory, except the files under the xulrunner section, are licensed +under the following terms: + + The authors make NO WARRANTY or representation, either express or implied, + with respect to this software, its quality, accuracy, merchantability, or + fitness for a particular purpose. This software is provided "AS IS", and you, + its user, assume the entire risk as to its quality and accuracy. + + This software is copyright (C) 1991-1998, Thomas G. Lane. + All Rights Reserved except as specified below. + + Permission is hereby granted to use, copy, modify, and distribute this + software (or portions thereof) for any purpose, without fee, subject to these + conditions: + (1) If any part of the source code for this software is distributed, then this + README file must be included, with this copyright and no-warranty notice + unaltered; and any additions, deletions, or changes to the original files + must be clearly indicated in accompanying documentation. + (2) If only executable code is distributed, then the accompanying + documentation must state that "this software is based in part on the work of + the Independent JPEG Group". + (3) Permission for use of this software is granted only if the user accepts + full responsibility for any undesirable consequences; the authors accept + NO LIABILITY for damages of any kind. + + These conditions apply to any software derived from or based on the IJG code, + not just to the unmodified library. If you use our work, you ought to + acknowledge us. + + Permission is NOT granted for the use of any IJG author's name or company name + in advertising or publicity relating to this software or products derived from + it. This software may be referred to only as "the Independent JPEG Group's + software". + + We specifically permit and encourage the use of this software as the basis of + commercial products, provided that all warranty or liability claims are + assumed by the product vendor. + +=== bzip2 + +The modules/libbz2/src directory is licensed under the following terms: +(from modules/libbz2/src/LICENSE) + + This program, "bzip2", the associated library "libbzip2", and all + documentation, are copyright (C) 1996-2005 Julian R Seward. All + rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Julian Seward, Cambridge, UK. + jseward@acm.org + bzip2/libbzip2 version 1.0.3 of 15 February 2005 + +=== libpng + +The directory modules/libimg/png is licensed under the following terms: +(from modules/libimg/png/LICENSE) + + This copy of the libpng notices is provided for your convenience. In case of + any discrepancy between this copy and the notices in the file png.h that is + included in the libpng distribution, the latter shall prevail. + + COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: + + If you modify libpng you may insert additional notices immediately following + this sentence. + + libpng version 1.2.6, September 12, 2004, is + Copyright (c) 2004 Glenn Randers-Pehrson, and is + distributed according to the same disclaimer and license as libpng-1.2.5 + with the following individual added to the list of Contributing Authors + + Cosmin Truta + + libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are + Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are + distributed according to the same disclaimer and license as libpng-1.0.6 + with the following individuals added to the list of Contributing Authors + + Simon-Pierre Cadieux + Eric S. Raymond + Gilles Vollant + + and with the following additions to the disclaimer: + + There is no warranty against interference with your enjoyment of the + library or against infringement. There is no warranty that our + efforts or the library will fulfill any of your particular purposes + or needs. This library is provided with all faults, and the entire + risk of satisfactory quality, performance, accuracy, and effort is with + the user. + + libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are + Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are + distributed according to the same disclaimer and license as libpng-0.96, + with the following individuals added to the list of Contributing Authors: + + Tom Lane + Glenn Randers-Pehrson + Willem van Schaik + + libpng versions 0.89, June 1996, through 0.96, May 1997, are + Copyright (c) 1996, 1997 Andreas Dilger + Distributed according to the same disclaimer and license as libpng-0.88, + with the following individuals added to the list of Contributing Authors: + + John Bowler + Kevin Bracey + Sam Bushell + Magnus Holmgren + Greg Roelofs + Tom Tanner + + libpng versions 0.5, May 1995, through 0.88, January 1996, are + Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. + + For the purposes of this copyright and license, "Contributing Authors" + is defined as the following set of individuals: + + Andreas Dilger + Dave Martindale + Guy Eric Schalnat + Paul Schmidt + Tim Wegner + + The PNG Reference Library is supplied "AS IS". The Contributing Authors + and Group 42, Inc. disclaim all warranties, expressed or implied, + including, without limitation, the warranties of merchantability and of + fitness for any purpose. The Contributing Authors and Group 42, Inc. + assume no liability for direct, indirect, incidental, special, exemplary, + or consequential damages, which may result from the use of the PNG + Reference Library, even if advised of the possibility of such damage. + + Permission is hereby granted to use, copy, modify, and distribute this + source code, or portions hereof, for any purpose, without fee, subject + to the following restrictions: + + 1. The origin of this source code must not be misrepresented. + + 2. Altered versions must be plainly marked as such and must not + be misrepresented as being the original source. + + 3. This Copyright notice may not be removed or altered from any + source or altered source distribution. + + The Contributing Authors and Group 42, Inc. specifically permit, without + fee, and encourage the use of this source code as a component to + supporting the PNG file format in commercial products. If you use this + source code in a product, acknowledgment is not required but would be + appreciated. + + + A "png_get_copyright" function is available, for convenient use in "about" + boxes and the like: + + printf("%s",png_get_copyright(NULL)); + + Also, the PNG logo (in PNG format, of course) is supplied in the + files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). + + Libpng is OSI Certified Open Source Software. OSI Certified Open Source is a + certification mark of the Open Source Initiative. + + Glenn Randers-Pehrson + glennrp@users.sourceforge.net + September 12, 2004 + +=== zlib + +The directories modules/zlib/src and security/nss/cmd/zlib are licensed under +the following terms: + + (C) 1995-2004 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + + If you use the zlib library in a product, we would appreciate *not* + receiving lengthy legal documents to sign. The sources are provided + for free but without warranty of any kind. The library has been + entirely written by Jean-loup Gailly and Mark Adler; it does not + include third-party code. + + If you redistribute modified sources, we would appreciate that you include + in the file ChangeLog history information documenting your changes. Please + read the FAQ for more information on the distribution of modified source + versions. + +=== expat + +The directory parser/expat is licensed under the following terms: +(from parser/expat/COPYING) + + Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd + and Clark Cooper + Copyright (c) 2001, 2002 Expat maintainers. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --- firefox-7.0+build2+nobinonly.orig/debian/firefox-dev.links.in +++ firefox-7.0+build2+nobinonly/debian/firefox-dev.links.in @@ -0,0 +1,16 @@ +%%ifdef MOZ_USE_SYSTEM_NSPR +/usr/include/nspr @MOZ_INCDIR@/nspr +/usr/bin/nspr-config @MOZ_SDKDIR@/sdk/bin/nspr-config +%%else +@MOZ_LIBDIR@/libnspr4.so @MOZ_SDKDIR@/sdk/lib/libnspr4.so +@MOZ_LIBDIR@/libplc4.so @MOZ_SDKDIR@/sdk/lib/libplc4.so +@MOZ_LIBDIR@/libplds4.so @MOZ_SDKDIR@/sdk/lib/libplds4.so +%%endif +%%ifdef MOZ_USE_SYSTEM_CAIRO +/usr/include/cairo @MOZ_INCDIR@/cairo +%%endif +@MOZ_LIBDIR@/libmozalloc.so @MOZ_SDKDIR@/sdk/lib/libmozalloc.so +@MOZ_LIBDIR@/libxpcom.so @MOZ_SDKDIR@/sdk/lib/libxpcom.so +@MOZ_LIBDIR@/libxul.so @MOZ_SDKDIR@/sdk/lib/libxul.so +@MOZ_SDKDIR@/sdk/bin/xpidl @MOZ_LIBDIR@/xpidl +@MOZ_SDKDIR@/sdk/bin/xpt.py @MOZ_LIBDIR@/xpt.py --- firefox-7.0+build2+nobinonly.orig/debian/refresh-supported-locales.pl +++ firefox-7.0+build2+nobinonly/debian/refresh-supported-locales.pl @@ -0,0 +1,166 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use Cwd; + +my $moz_supported_file; +my $lpom_dir; + +my %blacklist; +my %locale2pkgname; +my %languages; + +my %oldsupported; + +my $dir=getcwd; +chomp($dir); + +my $file; + +while (@ARGV) { + my $arg = shift(@ARGV); + if ($arg eq '-s') { + $moz_supported_file = shift(@ARGV); + } elsif ($arg eq '-l') { + $lpom_dir = shift(@ARGV); + } else { + die "Unknown argument '$arg'"; + } +} + +(defined($moz_supported_file)) || die "Need to specify a supported language list"; + +if (defined($lpom_dir)) { + my $lang_file = "$lpom_dir/maps/languages"; + my $map_file = "$lpom_dir/maps/locale2pkgname"; + my $variant_file = "$lpom_dir/maps/variants"; + + open($file, $lang_file); + while (<$file>) { + my $line = $_; + chomp($line); + my $langcode = $line; + my $lang = $line; + $langcode =~ s/([^:]*):*([^:]*)/$1/; + $lang =~ s/([^:]*):*([^:]*)/$2/; + if ($lang ne "") { $languages{$langcode} = $lang; } + } + close($file); + + open($file, $map_file); + while (<$file>) { + my $line = $_; + chomp($line); + my $langcode = $line; + my $pkgname = $line; + $langcode =~ s/([^:]*):*([^:]*)/$1/; + $pkgname =~ s/([^:]*):*([^:]*)/$2/; + if ($pkgname ne "") { $locale2pkgname{$langcode} = $pkgname; } + } + close($file); + + open($file, $variant_file); + while (<$file>) { + my $line = $_; + chomp($line); + my $langcode = $line; + my $lang = $line; + $langcode =~ s/([^:]*):*([^:]*)/$1/; + $lang =~ s/([^:]*):*([^:]*)/$2/; + if ($lang ne "") { $languages{$langcode} = $lang; } + } + close($file); +} + +if (-e "$dir/debian/locales.shipped") { + open($file, "$dir/debian/locales.shipped"); + while (<$file>) { + if ((not $_ =~ /^$/) && (not $_ =~ /^#.*/)) { + my $line = $_; + chomp($line); + my $langcode = $line; + my $pkgname = $line; + my $lang = $line; + $langcode =~ s/([^:]*):*([^:]*):*([^:]*)/$1/; + $pkgname =~ s/([^:]*):*([^:]*):*([^:]*)/$2/; + $lang =~ s/([^:]*):*([^:]*):*([^:]*)/$3/; + if (($pkgname eq "") || ($lang eq "")) { die "Malformed locales.shipped file"; } + $languages{$pkgname} = $lang; + $oldsupported{$pkgname} = 1; + $locale2pkgname{lc($langcode)} = $pkgname; + } + } + close($file); +} + +if (-e "$dir/debian/locales.unavailable") { + open($file, "$dir/debian/locales.unavailable"); + while (<$file>) { + if ((not $_ =~ /^$/) && (not $_ =~ /^#.*/)) { + my $line = $_; + chomp($line); + my $pkgname = $line; + my $desc = $line; + $pkgname =~ s/([^:]*):*([^:]*)/$1/; + $desc =~ s/([^:]*):*([^:]*)/$2/; + $oldsupported{$pkgname} = 1; + if ($desc ne "") { $languages{$pkgname} = $desc; } + } + } + close($file); +} + +if (-e "$dir/debian/locales.blacklist") { + open($file, "$dir/debian/locales.blacklist"); + while (<$file>) { + if ((not $_ =~ /^$/) && (not $_ =~ /^#.*/)) { + my $line = $_; + chomp($line); + $blacklist{$line} = 1; + } + } + close($file); +} + +my $have_language = 0; + +open($file, $moz_supported_file); +open(my $outfile, ">$dir/debian/locales.shipped"); +while (<$file>) { + my $line = $_; + chomp($line); + my $langcode = $line; + my $platforms = $line; + $langcode =~ s/^([[:alnum:]\-]*)[[:space:]]*(.*)/$1/; + $platforms =~ s/^([[:alnum:]\-]*)[[:space:]]*(.*)/$2/; + if (($langcode eq "en-US") || (($platforms ne "") && (rindex($platforms, "linux") eq -1)) || (exists $blacklist{$langcode})) { next; } + my $llangcode = lc($langcode); + my $pkgname = $llangcode; + if (exists $locale2pkgname{$llangcode}) { $pkgname = $locale2pkgname{$llangcode}; } + if (not exists $languages{$pkgname}) { + if ($pkgname eq $llangcode) { $pkgname =~ s/\-.*//; } + if (not exists $languages{$pkgname}) { die "No description for $pkgname"; } + } + $have_language = 1; + my $description = $languages{$pkgname}; + print $outfile "$langcode:$pkgname:$description\n"; + delete $oldsupported{$pkgname}; +} + +if ($have_language eq 0) { print $outfile "# Placeholder file for the list of shipped languages. Do not delete"; } +close($file); +close($outfile); + +open($outfile, ">$dir/debian/locales.unavailable"); +my @unavailable = keys(%oldsupported); +if (scalar(@unavailable) gt 0) { + @unavailable = sort(@unavailable); + foreach my $lang (@unavailable) { + if (exists $languages{$lang}) { + my $desc = $languages{$lang}; + print $outfile "$lang:$desc\n"; + } else { print $outfile "$lang\n"; } + } +} else { print $outfile "# Placeholder file for the list of unavailable languages. Do not delete"; } +close($outfile); --- firefox-7.0+build2+nobinonly.orig/debian/distribution.ini +++ firefox-7.0+build2+nobinonly/debian/distribution.ini @@ -0,0 +1,9 @@ +[Global] +id=canonical +version=1.0 +about=Mozilla Firefox for Ubuntu + +[Preferences] +app.distributor = “canonical” +app.distributor.channel = “ubuntu” +app.partner.ubuntu = “ubuntu” --- firefox-7.0+build2+nobinonly.orig/debian/firefox.xml.in +++ firefox-7.0+build2+nobinonly/debian/firefox.xml.in @@ -0,0 +1,17 @@ + + + + + + @MOZ_DISPLAY_NAME@ + @MOZ_APP_NAME@ + @MOZ_APP_NAME@ %s + @MOZ_APP_NAME@ + false + true + @MOZ_APP_NAME@ -new-tab "%s" + @MOZ_APP_NAME@ -new-window "%s" + + + + --- firefox-7.0+build2+nobinonly.orig/debian/firefox.preinst.in +++ firefox-7.0+build2+nobinonly/debian/firefox.preinst.in @@ -0,0 +1,114 @@ +#!/bin/sh + +set -e + +APP_DIR="/etc/apparmor.d" +APP_PROFILE="usr.bin.@MOZ_APP_NAME@" +APP_CONFFILE="$APP_DIR/$APP_PROFILE" +APP_DISABLE="$APP_DIR/disable/$APP_PROFILE" +APP_NAME=@MOZ_APP_NAME@ + +# Prepare to move a conffile without triggering a dpkg question +prep_mv_conffile() { + local PKGNAME="$1" + local CONFFILE="$2" + + [ -e "$CONFFILE" ] || return 0 + + local md5sum="$(md5sum $CONFFILE | sed -e 's/ .*//')" + local old_md5sum="$(dpkg-query -W -f='${Conffiles}' $PKGNAME | \ + sed -n -e "\' $CONFFILE ' { s/ obsolete$//; s/.* //; p }")" + #' + if [ "$md5sum" = "$old_md5sum" ]; then + rm -f "$CONFFILE" + fi +} + +# Remove a no-longer used conffile +rm_conffile() { + local PKGNAME="$1" + local CONFFILE="$2" + + [ -e "$CONFFILE" ] || return 0 + + local md5sum="$(md5sum $CONFFILE | sed -e 's/ .*//')" + local old_md5sum="$(dpkg-query -W -f='${Conffiles}' $PKGNAME | \ + sed -n -e "\' $CONFFILE ' { s/ obsolete$//; s/.* //; p }")" + # The quotes above confuse gedit, which considers the rest of the script to be inside quotes, so balance that out' + if [ "$md5sum" != "$old_md5sum" ]; then + echo "Obsolete conffile $CONFFILE has been modified by you." + echo "Saving as $CONFFILE.dpkg-bak ..." + mv -f "$CONFFILE" "$CONFFILE".dpkg-bak + else + echo "Removing obsolete conffile $CONFFILE ..." + rm -f "$CONFFILE" + fi +} + +disable_profile() { + # Create a symlink to the yet-to-be-unpacked profile + if [ ! -e "$APP_CONFFILE" ]; then + mkdir -p `dirname $APP_DISABLE` 2>/dev/null || true + ln -sf $APP_CONFFILE $APP_DISABLE + fi +} + +# Unconditionally disable AppArmor profile for Ubuntu 9.04 and under, since +# it requires abstractions found only in 9.10 and higher. +major=`lsb_release -r | awk '{print $2}' | cut -d '.' -f 1` +version=`lsb_release -r | awk '{print $2}'` +if [ "$major" -lt 10 ] && [ "$version" != "9.10" ]; then + disable_profile +else + if [ "$1" = "install" ]; then + # Disable AppArmor profile on install, unless the last profile they + # modified is enabled. + base=`echo $APP_PROFILE | cut -d '-' -f 1` + last_modified=`ls -rt $APP_DIR/$base* 2>/dev/null | grep -v '\.dpkg' | tail -n1` + if [ -s "$last_modified" ]; then + if [ -e "$APP_DIR/disable/`basename $last_modified`" ]; then + disable_profile + fi + else + # Fresh install and no other firefox profiles exist, so disable. + disable_profile + fi + elif [ "$1" = "upgrade" ]; then + # Disable AppArmor on upgrade from earlier than when we first shipped + # the profile if the user does not already have a profile defined. + if dpkg --compare-versions "$2" lt "3.7~a1~hg20091203" ; then + disable_profile + fi + fi +fi + +# These conffiles used to belong to the package we replaced. However, that +# package may no longer exist on the system anymore if the user was previously using abrowser, +# so we deal with cleaning up the conffiles here. I'm not totally sure what order everything +# happens in. I think if we conflict and replace the old package, it will get removed (or the new +# version unpacked) first, before we arrive here. This means that dpkg-query will still show +# these conffiles as existing on the system (but obsolete), until we upgrade once more. +case "$1" in +install|upgrade) + if dpkg --compare-versions "$2" le "4.0~b7"; then + rm_conffile "${APP_NAME}" "/etc/${APP_NAME}/profile/bookmarks.html" + rm_conffile "${APP_NAME}" "/etc/${APP_NAME}/profile/localstore.rdf" + rm_conffile "${APP_NAME}" "/etc/${APP_NAME}/profile/mimeTypes.rdf" + rm_conffile "${APP_NAME}" "/etc/${APP_NAME}/profile/prefs.js" + rm_conffile "${APP_NAME}" "/etc/${APP_NAME}/profile/chrome/userChrome-example.css" + rm_conffile "${APP_NAME}" "/etc/${APP_NAME}/profile/chrome/userContent-example.css" + fi + # What we want to do here is migrate this conffile when: + # 1) Upgrading from any version older than Natty. Note, as all releases will track the + # the latest Firefox version in the future, we can't just simply compare package + # versions + # 2) Upgrading from any version older than Firefox 5.0~b2+build1+nobinonly-0ubuntu3 in Oneiric + PREV_MAJOR_UBUNTU_VER=`echo "$2" | sed 's/.*ubuntu\(.*\)/\1/' | sed 's/\([[:digit:]]*\)\.*\([[:digit:]]*\)\.*\([[:digit:]]*\)\.*\(.*\)/\2/'` + if dpkg --compare-versions "$2" le "5.0~b2+build1+nobinonly-0ubuntu2" || \ + ([ "x$PREV_MAJOR_UBUNTU_VER" != "x" ] && [ "$PREV_MAJOR_UBUNTU_VER" -lt "11" ]); then + prep_mv_conffile "${APP_NAME}" "/etc/${APP_NAME}/pref/firefox.js" + fi +esac + +#DEBHELPER# + --- firefox-7.0+build2+nobinonly.orig/debian/control +++ firefox-7.0+build2+nobinonly/debian/control @@ -0,0 +1,798 @@ +Source: firefox +Section: web +Priority: optional +Maintainer: Ubuntu Mozilla Team +Vcs-Bzr: https://code.launchpad.net/~mozillateam/firefox/firefox-beta.head +Build-Depends: cdbs, + debhelper (>= 5), + m4, + autotools-dev, + autoconf2.13, + quilt, + patchutils (>= 0.2.25), + bzip2, + zip, + libx11-dev, + libxt-dev, + libgtk2.0-dev (>= 2.10), + liborbit2-dev, + libidl-dev (>= 0.8.0), + libxft-dev, + libfreetype6-dev, + libxrender-dev, + libxinerama-dev, + libgnome2-dev, + libgconf2-dev, + libgnomeui-dev, + libstartup-notification0-dev, + libasound2-dev, + libcurl4-openssl-dev, + libdbus-glib-1-dev (>= 0.60), + mozilla-devscripts (>= 0.10~), + hardening-wrapper, + lsb-release, + libiw-dev, + mesa-common-dev, + libnotify-dev (>= 0.4), + libgnomevfs2-dev, + yasm, + xvfb, + imagemagick, + libdbusmenu-gtk-dev +Standards-Version: 3.9.1 + +Package: firefox +Architecture: any +Depends: fontconfig, + psmisc, + lsb-release, + debianutils (>= 1.16), + ${misc:Depends}, + ${shlibs:Depends} +Recommends: ubufox, + firefox-globalmenu +Provides: www-browser, + iceweasel, + gnome-www-browser +Suggests: firefox-gnome-support | firefox-kde-support, + latex-xft-fonts, + libthai0 +Replaces: abrowser, + abrowser-branding, + firefox-branding, + kubuntu-firefox-installer +Breaks: abrowser (<= 4.0~b11+build3+nobinonly-0ubuntu1), + abrowser-branding (<= 4.0~b11+build3+nobinonly-0ubuntu1), + firefox-branding (<= 4.0~b11+build3+nobinonly-0ubuntu1) +XB-Xul-AppId: {ec8030f7-c20a-464f-9b0e-13a3a9e97384} +Description: Safe and easy web browser from Mozilla + Firefox delivers safe, easy web browsing. A familiar user interface, + enhanced security features including protection from online identity theft, + and integrated search let you get the most out of the web. + +Package: firefox-gnome-support +Architecture: any +Section: gnome +Depends: ${shlibs:Depends}, + ${misc:Depends}, + firefox +Description: Safe and easy web browser from Mozilla - GNOME support + Firefox delivers safe, easy web browsing. A familiar user interface, + enhanced security features including protection from online identity theft, + and integrated search let you get the most out of the web. + . + This package depends on the GNOME libraries which allow Firefox to take + advantage of technologies such as GConf, GIO libnotify + +Package: firefox-dbg +Architecture: any +Section: debug +Priority: extra +Depends: ${shlibs:Depends}, + ${misc:Depends}, + firefox (= ${binary:Version}) +Description: Safe and easy web browser from Mozilla - debug symbols + Firefox delivers safe, easy web browsing. A familiar user interface, + enhanced security features including protection from online identity theft, + and integrated search let you get the most out of the web. + . + This package contains the debugging symbols for the Firefox web + browser + +Package: firefox-dev +Architecture: any +Section: devel +Priority: extra +Depends: ${shlibs:Depends}, + ${misc:Depends}, + firefox (= ${binary:Version}), + ${nspr:Depends}, + ${nss:Depends}, + ${cairo:Depends} +Conflicts: xulrunner-2.0-dev, + xulrunner-1.9.2-dev +Description: Safe and easy web browser from Mozilla - development files + Firefox delivers safe, easy web browsing. A familiar user interface, + enhanced security features including protection from online identity theft, + and integrated search let you get the most out of the web. + . + This package contains the headers and SDK for building plugins with Firefox + +Package: firefox-mozsymbols +Architecture: amd64 i386 armel +Section: debug +Priority: extra +Depends: ${shlibs:Depends}, + ${misc:Depends} +Description: Safe and easy web browser from Mozilla - Breakpad symbols + Firefox delivers safe, easy web browsing. A familiar user interface, + enhanced security features including protection from online identity theft, + and integrated search let you get the most out of the web. + . + This package contains the Firefox symbols in a format expected by Mozilla's + Breakpad. Eventually this package should go away and the symbol upload be + implemented in soyuz (or other builders that build this package) + +Package: firefox-globalmenu +Architecture: any +Depends: ${shlibs:Depends}, + ${misc:Depends}, + firefox (= ${binary:Version}) +Description: Unity appmenu integration for Firefox + This package provides an extension which adds support for the Unity + appmenu to Firefox + +# Transitional packages below here + +Package: abrowser +Architecture: any +Depends: ${misc:Depends}, firefox +Description: Safe and easy web browser from Mozilla - transitional package + This is a transitional package to ensure that upgrades work correctly. + It can be safely removed + +Package: firefox-branding +Architecture: any +Depends: ${misc:Depends}, firefox +Description: Safe and easy web browser from Mozilla - transitional package + This is a transitional package to ensure that upgrades work correctly. + It can be safely removed + +Package: abrowser-branding +Architecture: any +Depends: ${misc:Depends}, firefox +Description: Safe and easy web browser from Mozilla - transitional package + This is a transitional package to ensure that upgrades work correctly. + It can be safely removed + +Package: firefox-gnome-support-dbg +Architecture: any +Section: debug +Priority: extra +Depends: ${misc:Depends}, firefox-gnome-support, firefox-dbg (= ${binary:Version}) +Description: Safe and easy web browser from Mozilla - transitional package + This is a transitional package to ensure that upgrades work correctly. + It can be safely removed + +# Language packs below here + +Package: firefox-locale-af +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-af-base +Description: Afrikaans language pack for Firefox + This package contains Afrikaans translations and search plugins + for Firefox + +Package: firefox-locale-ar +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-ar-base +Description: Arabic language pack for Firefox + This package contains Arabic translations and search plugins + for Firefox + +Package: firefox-locale-ast +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-ast-base +Description: Asturian language pack for Firefox + This package contains Asturian translations and search plugins + for Firefox + +Package: firefox-locale-be +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-be-base +Description: Belarusian language pack for Firefox + This package contains Belarusian translations and search plugins + for Firefox + +Package: firefox-locale-bg +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-bg-base +Description: Bulgarian language pack for Firefox + This package contains Bulgarian translations and search plugins + for Firefox + +Package: firefox-locale-bn +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-bn-base +Description: Bengali language pack for Firefox + This package contains Bengali translations and search plugins + for Firefox + +Package: firefox-locale-br +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-br-base +Description: Breton language pack for Firefox + This package contains Breton translations and search plugins + for Firefox + +Package: firefox-locale-bs +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-bs-base +Description: Bosnian language pack for Firefox + This package contains Bosnian translations and search plugins + for Firefox + +Package: firefox-locale-ca +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-ca-base +Description: Catalan; Valencian language pack for Firefox + This package contains Catalan; Valencian translations and search plugins + for Firefox + +Package: firefox-locale-cs +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-cs-base +Description: Czech language pack for Firefox + This package contains Czech translations and search plugins + for Firefox + +Package: firefox-locale-cy +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-cy-base +Description: Welsh language pack for Firefox + This package contains Welsh translations and search plugins + for Firefox + +Package: firefox-locale-da +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-da-base +Description: Danish language pack for Firefox + This package contains Danish translations and search plugins + for Firefox + +Package: firefox-locale-de +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-de-base +Description: German language pack for Firefox + This package contains German translations and search plugins + for Firefox + +Package: firefox-locale-el +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-el-base +Description: Greek language pack for Firefox + This package contains Greek translations and search plugins + for Firefox + +Package: firefox-locale-en +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-en-base +Description: English language pack for Firefox + This package contains English translations and search plugins + for Firefox + +Package: firefox-locale-eo +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-eo-base +Description: Esperanto language pack for Firefox + This package contains Esperanto translations and search plugins + for Firefox + +Package: firefox-locale-es +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-es-base +Description: Spanish; Castilian language pack for Firefox + This package contains Spanish; Castilian translations and search plugins + for Firefox + +Package: firefox-locale-et +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-et-base +Description: Estonian language pack for Firefox + This package contains Estonian translations and search plugins + for Firefox + +Package: firefox-locale-eu +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-eu-base +Description: Basque language pack for Firefox + This package contains Basque translations and search plugins + for Firefox + +Package: firefox-locale-fa +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-fa-base +Description: Persian language pack for Firefox + This package contains Persian translations and search plugins + for Firefox + +Package: firefox-locale-fi +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-fi-base +Description: Finnish language pack for Firefox + This package contains Finnish translations and search plugins + for Firefox + +Package: firefox-locale-fr +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-fr-base +Description: French language pack for Firefox + This package contains French translations and search plugins + for Firefox + +Package: firefox-locale-fy +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-fy-base +Description: Western Frisian language pack for Firefox + This package contains Western Frisian translations and search plugins + for Firefox + +Package: firefox-locale-ga +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-ga-base +Description: Irish language pack for Firefox + This package contains Irish translations and search plugins + for Firefox + +Package: firefox-locale-gd +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-gd-base +Description: Gaelic; Scottish Gaelic language pack for Firefox + This package contains Gaelic; Scottish Gaelic translations and search plugins + for Firefox + +Package: firefox-locale-gl +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-gl-base +Description: Galician language pack for Firefox + This package contains Galician translations and search plugins + for Firefox + +Package: firefox-locale-gu +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-gu-base +Description: Gujarati language pack for Firefox + This package contains Gujarati translations and search plugins + for Firefox + +Package: firefox-locale-he +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-he-base +Description: Hebrew language pack for Firefox + This package contains Hebrew translations and search plugins + for Firefox + +Package: firefox-locale-hi +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-hi-base +Description: Hindi language pack for Firefox + This package contains Hindi translations and search plugins + for Firefox + +Package: firefox-locale-hr +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-hr-base +Description: Croatian language pack for Firefox + This package contains Croatian translations and search plugins + for Firefox + +Package: firefox-locale-hu +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-hu-base +Description: Hungarian language pack for Firefox + This package contains Hungarian translations and search plugins + for Firefox + +Package: firefox-locale-hy +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-hy-base +Description: Armenian language pack for Firefox + This package contains Armenian translations and search plugins + for Firefox + +Package: firefox-locale-id +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-id-base +Description: Indonesian language pack for Firefox + This package contains Indonesian translations and search plugins + for Firefox + +Package: firefox-locale-is +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-is-base +Description: Icelandic language pack for Firefox + This package contains Icelandic translations and search plugins + for Firefox + +Package: firefox-locale-it +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-it-base +Description: Italian language pack for Firefox + This package contains Italian translations and search plugins + for Firefox + +Package: firefox-locale-ja +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-ja-base +Description: Japanese language pack for Firefox + This package contains Japanese translations and search plugins + for Firefox + +Package: firefox-locale-kk +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-kk-base +Description: Kazakh language pack for Firefox + This package contains Kazakh translations and search plugins + for Firefox + +Package: firefox-locale-kn +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-kn-base +Description: Kannada language pack for Firefox + This package contains Kannada translations and search plugins + for Firefox + +Package: firefox-locale-ko +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-ko-base +Description: Korean language pack for Firefox + This package contains Korean translations and search plugins + for Firefox + +Package: firefox-locale-ku +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-ku-base +Description: Kurdish language pack for Firefox + This package contains Kurdish translations and search plugins + for Firefox + +Package: firefox-locale-lg +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-lg-base +Description: Ganda language pack for Firefox + This package contains Ganda translations and search plugins + for Firefox + +Package: firefox-locale-lt +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-lt-base +Description: Lithuanian language pack for Firefox + This package contains Lithuanian translations and search plugins + for Firefox + +Package: firefox-locale-lv +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-lv-base +Description: Latvian language pack for Firefox + This package contains Latvian translations and search plugins + for Firefox + +Package: firefox-locale-mai +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-mai-base +Description: Maithili language pack for Firefox + This package contains Maithili translations and search plugins + for Firefox + +Package: firefox-locale-mk +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-mk-base +Description: Macedonian language pack for Firefox + This package contains Macedonian translations and search plugins + for Firefox + +Package: firefox-locale-ml +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-ml-base +Description: Malayalam language pack for Firefox + This package contains Malayalam translations and search plugins + for Firefox + +Package: firefox-locale-mr +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-mr-base +Description: Marathi language pack for Firefox + This package contains Marathi translations and search plugins + for Firefox + +Package: firefox-locale-nb +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-nb-base +Description: Norwegian language pack for Firefox + This package contains Norwegian translations and search plugins + for Firefox + +Package: firefox-locale-nl +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-nl-base +Description: Dutch; Flemish language pack for Firefox + This package contains Dutch; Flemish translations and search plugins + for Firefox + +Package: firefox-locale-nn +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-nn-base +Description: Norwegian Nynorsk; Nynorsk, Norwegian language pack for Firefox + This package contains Norwegian Nynorsk; Nynorsk, Norwegian translations and search plugins + for Firefox + +Package: firefox-locale-nso +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-nso-base +Description: Sotho, Northern language pack for Firefox + This package contains Sotho, Northern translations and search plugins + for Firefox + +Package: firefox-locale-or +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-or-base +Description: Oriya language pack for Firefox + This package contains Oriya translations and search plugins + for Firefox + +Package: firefox-locale-pa +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-pa-base +Description: Panjabi; Punjabi language pack for Firefox + This package contains Panjabi; Punjabi translations and search plugins + for Firefox + +Package: firefox-locale-pl +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-pl-base +Description: Polish language pack for Firefox + This package contains Polish translations and search plugins + for Firefox + +Package: firefox-locale-pt +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-pt-base +Description: Portuguese language pack for Firefox + This package contains Portuguese translations and search plugins + for Firefox + +Package: firefox-locale-ro +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-ro-base +Description: Romanian language pack for Firefox + This package contains Romanian translations and search plugins + for Firefox + +Package: firefox-locale-ru +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-ru-base +Description: Russian language pack for Firefox + This package contains Russian translations and search plugins + for Firefox + +Package: firefox-locale-si +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-si-base +Description: Sinhala; Sinhalese language pack for Firefox + This package contains Sinhala; Sinhalese translations and search plugins + for Firefox + +Package: firefox-locale-sk +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-sk-base +Description: Slovak language pack for Firefox + This package contains Slovak translations and search plugins + for Firefox + +Package: firefox-locale-sl +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-sl-base +Description: Slovenian language pack for Firefox + This package contains Slovenian translations and search plugins + for Firefox + +Package: firefox-locale-sq +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-sq-base +Description: Albanian language pack for Firefox + This package contains Albanian translations and search plugins + for Firefox + +Package: firefox-locale-sr +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-sr-base +Description: Serbian language pack for Firefox + This package contains Serbian translations and search plugins + for Firefox + +Package: firefox-locale-sv +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-sv-base +Description: Swedish language pack for Firefox + This package contains Swedish translations and search plugins + for Firefox + +Package: firefox-locale-ta +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-ta-base +Description: Tamil language pack for Firefox + This package contains Tamil translations and search plugins + for Firefox + +Package: firefox-locale-te +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-te-base +Description: Telugu language pack for Firefox + This package contains Telugu translations and search plugins + for Firefox + +Package: firefox-locale-th +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-th-base +Description: Thai language pack for Firefox + This package contains Thai translations and search plugins + for Firefox + +Package: firefox-locale-tr +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-tr-base +Description: Turkish language pack for Firefox + This package contains Turkish translations and search plugins + for Firefox + +Package: firefox-locale-uk +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-uk-base +Description: Ukrainian language pack for Firefox + This package contains Ukrainian translations and search plugins + for Firefox + +Package: firefox-locale-vi +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-vi-base +Description: Vietnamese language pack for Firefox + This package contains Vietnamese translations and search plugins + for Firefox + +Package: firefox-locale-zh-hans +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-zh-hans-base +Description: Simplified Chinese language pack for Firefox + This package contains Simplified Chinese translations and search plugins + for Firefox + +Package: firefox-locale-zh-hant +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-zh-hant-base +Description: Traditional Chinese language pack for Firefox + This package contains Traditional Chinese translations and search plugins + for Firefox + +Package: firefox-locale-zu +Architecture: all +Depends: ${misc:Depends} +Replaces: language-pack-zu-base +Description: Zulu language pack for Firefox + This package contains Zulu translations and search plugins + for Firefox + +Package: firefox-locale-as +Architecture: all +Depends: ${misc:Depends} +Description: Transitional package for unavailable language + This language is unavailable for the current version of Firefox + . + This is an empty transitional package to ensure a clean upgrade + process. You can safely remove this package after installation. + +Package: firefox-locale-ka +Architecture: all +Depends: ${misc:Depends} +Description: Transitional package for unavailable language + This language is unavailable for the current version of Firefox + . + This is an empty transitional package to ensure a clean upgrade + process. You can safely remove this package after installation. + +Package: firefox-locale-mn +Architecture: all +Depends: ${misc:Depends} +Description: Transitional package for unavailable language + This language is unavailable for the current version of Firefox + . + This is an empty transitional package to ensure a clean upgrade + process. You can safely remove this package after installation. + +Package: firefox-locale-oc +Architecture: all +Depends: ${misc:Depends} +Description: Transitional package for unavailable language + This language is unavailable for the current version of Firefox + . + This is an empty transitional package to ensure a clean upgrade + process. You can safely remove this package after installation. + +Package: firefox-locale-sw +Architecture: all +Depends: ${misc:Depends} +Description: Transitional package for unavailable language + This language is unavailable for the current version of Firefox + . + This is an empty transitional package to ensure a clean upgrade + process. You can safely remove this package after installation. --- firefox-7.0+build2+nobinonly.orig/debian/syspref.js +++ firefox-7.0+build2+nobinonly/debian/syspref.js @@ -0,0 +1,4 @@ +// This file can be used to configure global preferences for Firefox +// Example: Homepage +//pref("browser.startup.homepage", "http://www.weebls-stuff.com/wab/"); + --- firefox-7.0+build2+nobinonly.orig/debian/MPL +++ firefox-7.0+build2+nobinonly/debian/MPL @@ -0,0 +1,567 @@ + MOZILLA PUBLIC LICENSE + Version 1.1 + + --------------- + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + + 1.5. "Executable" means Covered Code in any form other than Source + Code. + + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or + previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, + to cause the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty percent + (50%) of the outstanding shares or beneficial ownership of such + entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + +3. Distribution Obligations. + + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, + Contributor must include a text file with the Source Code + distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will + know whom to contact. If Contributor obtains such knowledge after + the Modification is made available as described in Section 3.2, + Contributor shall promptly modify the LEGAL file in all copies + Contributor makes available thereafter and shall take other steps + (such as notifying appropriate mailing lists or newsgroups) + reasonably calculated to inform those who received the Covered + Code that new knowledge has been obtained. + + (b) Contributor APIs. + If Contributor's Modifications include an application programming + interface and Contributor has knowledge of patent licenses which + are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + + (c) Representations. + Contributor represents that, except as disclosed pursuant to + Section 3.4(a) above, Contributor believes that Contributor's + Modifications are Contributor's original creation(s) and/or + Contributor has sufficient rights to grant the rights conveyed by + this License. + + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description + must be included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised + and/or new versions of the License from time to time. Each version + will be given a distinguishing version number. + + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must (a) rename Your license so that + the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", + "MPL", "NPL" or any confusingly similar phrase do not appear in your + license (except to note that your license differs from this License) + and (b) otherwise make it clear that Your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial + Developer, Original Code or Contributor in the notice described in + Exhibit A shall not of themselves be deemed to be modifications of + this License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declatory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + + 8.4. In the event of termination under Sections 8.1 or 8.2 above, + all end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, + WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO + THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a "commercial item," as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + California law provisions (except to the extent applicable law, if + any, provides otherwise), excluding its conflict-of-law provisions. + With respect to disputes in which at least one party is a citizen of, + or an entity chartered or registered to do business in the United + States of America, any litigation relating to this License shall be + subject to the jurisdiction of the Federal Courts of the Northern + District of California, with venue lying in Santa Clara County, + California, with the losing party responsible for costs, including + without limitation, court costs and reasonable attorneys' fees and + expenses. The application of the United Nations Convention on + Contracts for the International Sale of Goods is expressly excluded. + Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this + License. + +12. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + +13. MULTIPLE-LICENSED CODE. + + Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial + Developer permits you to utilize portions of the Covered Code under + Your choice of the NPL or the alternative licenses, if any, specified + by the Initial Developer in the file described in Exhibit A. + +EXHIBIT A -Mozilla Public License. + + ``The contents of this file are subject to the Mozilla Public License + Version 1.1 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + + The Original Code is ______________________________________. + + The Initial Developer of the Original Code is ________________________. + Portions created by ______________________ are Copyright (C) ______ + _______________________. All Rights Reserved. + + Contributor(s): ______________________________________. + + Alternatively, the contents of this file may be used under the terms + of the _____ license (the "[___] License"), in which case the + provisions of [______] License are applicable instead of those + above. If you wish to allow use of your version of this file only + under the terms of the [____] License and not to allow others to use + your version of this file under the MPL, indicate your decision by + deleting the provisions above and replace them with the notice and + other provisions required by the [___] License. If you do not delete + the provisions above, a recipient may use your version of this file + under either the MPL or the [___] License." + + [NOTE: The text of this Exhibit A may differ slightly from the text of + the notices in the Source Code files of the Original Code. You should + use the text of this Exhibit A rather than the text found in the + Original Code Source Code for Your Modifications.] + + ---------------------------------------------------------------------- + + AMENDMENTS + + The Netscape Public License Version 1.1 ("NPL") consists of the + Mozilla Public License Version 1.1 with the following Amendments, + including Exhibit A-Netscape Public License. Files identified with + "Exhibit A-Netscape Public License" are governed by the Netscape + Public License Version 1.1. + + Additional Terms applicable to the Netscape Public License. + I. Effect. + These additional terms described in this Netscape Public + License -- Amendments shall apply to the Mozilla Communicator + client code and to all Covered Code under this License. + + II. "Netscape's Branded Code" means Covered Code that Netscape + distributes and/or permits others to distribute under one or more + trademark(s) which are controlled by Netscape but which are not + licensed for use under this License. + + III. Netscape and logo. + This License does not grant any rights to use the trademarks + "Netscape", the "Netscape N and horizon" logo or the "Netscape + lighthouse" logo, "Netcenter", "Gecko", "Java" or "JavaScript", + "Smart Browsing" even if such marks are included in the Original + Code or Modifications. + + IV. Inability to Comply Due to Contractual Obligation. + Prior to licensing the Original Code under this License, Netscape + has licensed third party code for use in Netscape's Branded Code. + To the extent that Netscape is limited contractually from making + such third party code available under this License, Netscape may + choose to reintegrate such code into Covered Code without being + required to distribute such code in Source Code form, even if + such code would otherwise be considered "Modifications" under + this License. + + V. Use of Modifications and Covered Code by Initial Developer. + V.1. In General. + The obligations of Section 3 apply to Netscape, except to + the extent specified in this Amendment, Section V.2 and V.3. + + V.2. Other Products. + Netscape may include Covered Code in products other than the + Netscape's Branded Code which are released by Netscape + during the two (2) years following the release date of the + Original Code, without such additional products becoming + subject to the terms of this License, and may license such + additional products on different terms from those contained + in this License. + + V.3. Alternative Licensing. + Netscape may license the Source Code of Netscape's Branded + Code, including Modifications incorporated therein, without + such Netscape Branded Code becoming subject to the terms of + this License, and may license such Netscape Branded Code on + different terms from those contained in this License. + + VI. Litigation. + Notwithstanding the limitations of Section 11 above, the + provisions regarding litigation in Section 11(a), (b) and (c) of + the License shall apply to all disputes relating to this License. + + EXHIBIT A-Netscape Public License. + + "The contents of this file are subject to the Netscape Public + License Version 1.1 (the "License"); you may not use this file + except in compliance with the License. You may obtain a copy of + the License at http://www.mozilla.org/NPL/ + + Software distributed under the License is distributed on an "AS + IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + implied. See the License for the specific language governing + rights and limitations under the License. + + The Original Code is Mozilla Communicator client code, released + March 31, 1998. + + The Initial Developer of the Original Code is Netscape + Communications Corporation. Portions created by Netscape are + Copyright (C) 1998-1999 Netscape Communications Corporation. All + Rights Reserved. + + Contributor(s): ______________________________________. + + Alternatively, the contents of this file may be used under the + terms of the _____ license (the "[___] License"), in which case + the provisions of [______] License are applicable instead of + those above. If you wish to allow use of your version of this + file only under the terms of the [____] License and not to allow + others to use your version of this file under the NPL, indicate + your decision by deleting the provisions above and replace them + with the notice and other provisions required by the [___] + License. If you do not delete the provisions above, a recipient + may use your version of this file under either the NPL or the + [___] License." --- firefox-7.0+build2+nobinonly.orig/debian/firefox.manpages.in +++ firefox-7.0+build2+nobinonly/debian/firefox.manpages.in @@ -0,0 +1 @@ +debian/@MOZ_APP_NAME@.1 --- firefox-7.0+build2+nobinonly.orig/debian/usr.bin.firefox.apparmor.9.10 +++ firefox-7.0+build2+nobinonly/debian/usr.bin.firefox.apparmor.9.10 @@ -0,0 +1,342 @@ +# vim:syntax=apparmor +# Author: Jamie Strandboge + +#include + +# We want to confine the binaries that match: +# @MOZ_LIBDIR@/@MOZ_APP_NAME@ +# @MOZ_LIBDIR@/firefox +# but not: +# @MOZ_LIBDIR@/firefox.sh +@MOZ_LIBDIR@/firefox{,*[^s][^h]} { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + + # for networking + network inet stream, + network inet6 stream, + @{PROC}/[0-9]*/net/if_inet6 r, + @{PROC}/[0-9]*/net/ipv6_route r, + + # sounds + /etc/sound/ r, + /etc/sound/** r, + /etc/wildmidi/wildmidi.cfg r, + + # should maybe be in abstractions + /etc/ r, + /etc/gnome/defaults.list r, + /etc/mime.types r, + /etc/mailcap r, + /etc/timezone r, + /usr/bin/dbus-launch ixr, + /usr/bin/apport-bug Ux, + /usr/bin/scim Ux, + /usr/bin/scim-bridge Ux, + /usr/lib/gstreamer0.10/gstreamer-0.10/gst-plugin-scanner ix, + /usr/bin/apturl Uxr, + /tmp/.X[0-9]*-lock r, + + # firefox specific + /etc/firefox*/ r, + /etc/firefox*/** r, + /etc/xul-ext/** r, + /etc/xulrunner-2.0*/ r, + /etc/xulrunner-2.0*/** r, + /etc/gre.d/ r, + /etc/gre.d/* r, + + # noisy + deny @MOZ_LIBDIR@/** w, + deny /usr/lib/@MOZ_APP_NAME@-addons/** w, + deny /usr/lib/xulrunner-addons/** w, + deny /usr/lib/xulrunner-*/components/*.tmp w, + deny /.suspended r, + deny /boot/initrd.img* r, + deny /boot/vmlinuz* r, + deny /var/cache/fontconfig/ w, + + # TODO: investigate + deny /usr/bin/gconftool-2 x, + + # These are needed when a new user starts firefox and firefox.sh is used + @MOZ_LIBDIR@/** ixr, + /usr/bin/basename ixr, + /usr/bin/dirname ixr, + /usr/bin/pwd ixr, + /sbin/killall5 ixr, + /bin/which ixr, + /usr/bin/tr ixr, + @{PROC}/ r, + @{PROC}/[0-9]*/cmdline r, + @{PROC}/[0-9]*/mountinfo r, + @{PROC}/[0-9]*/stat r, + owner @{PROC}/[0-9]*/task/[0-9]*/stat r, + @{PROC}/[0-9]*/status r, + @{PROC}/filesystems r, + capability sys_ptrace, + + /etc/mtab r, + /etc/fstab r, + @{PROC}/[0-9]*/mounts r, + @{PROC}/[0-9]*/maps r, + + # allow access to documentation and other files the user may want to look + # at in /usr + /usr/ r, + /usr/** r, + + # so browsing directories works + / r, + /**/ r, + + # allow read and write to all user's files, except explicitly denied ones + @{HOME}/ r, + @{HOME}/** rw, + @{HOME}/Desktop/** rw, + @{HOME}/Firefox_wallpaper* rw, + /media/** rw, + owner /mnt/** rw, + owner /srv/** rw, + + #include + audit deny @{HOME}/.ssh/** mrwkl, + audit deny @{HOME}/.gnome2_private/** mrwkl, + + # comment this out if using gpg plugin/addons + audit deny @{HOME}/.gnupg/** mrwkl, + + # per-user firefox configuration + owner @{HOME}/.{firefox,mozilla}/ rw, + owner @{HOME}/.{firefox,mozilla}/** rw, + owner @{HOME}/.{firefox,mozilla}/**/*.{db,parentlock,sqlite}* k, + owner @{HOME}/.{firefox,mozilla}/plugins/** rm, + owner @{HOME}/.{firefox,mozilla}/**/plugins/** rm, + + # per-user common plugin configuration + @{HOME}/.adobe/ rw, + @{HOME}/.adobe/** rw, + @{HOME}/.macromedia/ rw, + @{HOME}/.macromedia/** rw, + + # + # Extensions + # /usr/share/.../extensions/... is already covered by '/usr/** r', above. + # Allow 'x' for downloaded extensions, but inherit policy for safety + owner @{HOME}/.mozilla/**/extensions/** mixr, + + deny @MOZ_LIBDIR@/update.test w, + deny /usr/lib/mozilla/extensions/**/ w, + deny /usr/lib/xulrunner-addons/extensions/**/ w, + deny /usr/share/mozilla/extensions/**/ w, + deny /usr/share/mozilla/ w, + + # + # Plugins/helpers + # + @{PROC}/[0-9]*/fd/ r, + /usr/lib/** rm, + /bin/bash ixr, + /bin/dash ixr, + /bin/grep ixr, + /bin/sed ixr, + /bin/ps Uxr, + /bin/uname Uxr, + /usr/bin/gnome-codec-install Uxr, + /usr/bin/m4 ixr, + /usr/bin/mkfifo Uxr, + /usr/lib/nspluginwrapper/i386/linux/npviewer Uxr, + /var/lib/ r, + /var/lib/** mr, + + # Needed for container to work in xul builds + /usr/lib/xulrunner-*/plugin-container ixr, + + # for maximum plugin/helper compatibility + #/usr/bin/* Uxr, + #/usr/lib/*/** ixr, + + # + # For stricter access, comment out the 'maximum plugin/helper compatibility' + # lines above and uncomment these + # + + # evince has its own profile, so change to it + /usr/bin/evince PUxr, + + # miscellaneous + /usr/bin/eog Uxr, + /usr/bin/gedit Uxr, + /usr/bin/gimp* Uxr, + /usr/bin/file-roller Uxr, + /usr/bin/ooffice Uxr, + /usr/bin/oocalc Uxr, + /usr/bin/oodraw Uxr, + /usr/bin/ooimpress Uxr, + /usr/bin/oowriter Uxr, + /usr/lib/openoffice/program/soffice Uxr, + /usr/bin/gtk-gnash ixr, + /usr/bin/pulseaudio ixr, + /usr/bin/nautilus Uxr, + /usr/bin/deluge Uxr, + /usr/bin/okular Uxr, + /usr/bin/transmission Uxr, + /usr/bin/liferea-add-feed Uxr, + /usr/bin/azureus Uxr, + /usr/bin/leafpad Uxr, + /usr/bin/mousepad Uxr, + + # Adobe Acrobat Reader + /opt/Adobe/Reader9/bin/acroread Uxr, + /opt/Adobe/Reader9/** r, + + # totem + /usr/lib/totem/** ixr, + /usr/bin/totem-gstreamer Uxr, + /usr/bin/totem-xine Uxr, + /usr/bin/totem Uxr, + + # mozplugger + /etc/mozpluggerrc r, + /usr/bin/mozplugger-helper Uxr, + + # mplayer plugin + /etc/mplayerplug-in.conf r, + /usr/bin/mplayer Uxr, + + # Java + @{HOME}/.java/deployment/deployment.properties k, + /etc/java-*/ r, + /etc/java-*/** r, + /usr/lib/jvm/java-6-openjdk/jre/bin/java cx -> firefox_openjdk, + /usr/lib/jvm/java-*-sun-1.*/jre/bin/java{,_vm} cx -> firefox_java, + /usr/lib/jvm/java-*-sun-1.*/jre/lib/*/libnp*.so cx -> firefox_java, + /usr/lib/j2*-ibm/jre/bin/java cx -> firefox_java, + + # for mailto: + #include + #include + + # Terminals for using console applications. These abstractions should ideally + # have 'ix' to restrct access to what only firefox is allowed to do + #include + + # By default, we won't support launching a terminal program in Xterm or + # KDE's konsole. It opens up too many unnecessary files for most users. + # People who need this functionality can uncomment the following: + ##include + ##include + + + # + # Child profiles + # + + # Profile for the supported OpenJDK in Ubuntu. This doesn't require the + # unfortunate workarounds of the proprietary Javas, so have a separate + # profile. + profile firefox_openjdk { + #include + #include + #include + #include + #include + #include + #include + #include + + network inet stream, + network inet6 stream, + @{PROC}/[0-9]*/net/if_inet6 r, + @{PROC}/[0-9]*/net/ipv6_route r, + + /etc/java-*/ r, + /etc/java-*/** r, + /etc/lsb-release r, + /etc/ssl/certs/java/* r, + /etc/timezone r, + + @{PROC}/[0-9]*/ r, + @{PROC}/[0-9]*/fd/ r, + @{PROC}/filesystems r, + /sys/devices/system/cpu/ r, + /sys/devices/system/cpu/** r, + /usr/share/** r, + /var/lib/dbus/machine-id r, + + /usr/bin/env ix, + /usr/lib/jvm/java-6-openjdk/jre/bin/java ix, + /usr/lib/jvm/java-6-openjdk/jre/lib/i386/client/classes.jsa m, + + # Why would java need this? + deny /usr/bin/gconftool-2 x, + + owner @{HOME}/ r, + owner @{HOME}/** rwk, + } + + # Profile for commercial Javas. These need workarounds to work right (eg + # Sun's forcing of an executable stack (LP: #535247)). + profile firefox_java { + #include + #include + #include + #include + #include + #include + #include + #include + + network inet stream, + network inet6 stream, + @{PROC}/[0-9]*/net/if_inet6 r, + @{PROC}/[0-9]*/net/ipv6_route r, + @{PROC}/loadavg r, + + /etc/debian_version r, + /etc/java-*/ r, + /etc/java-*/** r, + /etc/lsb-release r, + /etc/ssl/certs/java/* r, + /etc/timezone r, + + @{PROC}/[0-9]*/ r, + @{PROC}/[0-9]*/fd/ r, + @{PROC}/filesystems r, + /sys/devices/system/cpu/ r, + /sys/devices/system/cpu/** r, + /usr/share/** r, + /var/lib/dbus/machine-id r, + + /usr/bin/env ix, + /usr/lib/jvm/java-*-sun-1.*/jre/bin/java{,_vm} ix, + /usr/lib/jvm/java-*-sun-1.*/jre/lib/i386/client/classes.jsa m, + /usr/lib/j2*-ibm/jre/bin/java ix, + + # noisy, can't write here anyway + deny /etc/.java/ w, + deny /etc/.java/** w, + + deny /usr/bin/gconftool-2 x, + + owner @{HOME}/ r, + owner @{HOME}/** rwk, + owner @{HOME}/.fontconfig/*.cache* m, + + # These are seriously unfortunate, but required due to LP: #535247 + /etc/passwd m, + owner @{HOME}/.java/**/cache/** m, + owner /tmp/** m, + /usr/lib{,32,64}/jvm/**/*.jar mr, + /usr/share/fonts/** m, + } +} --- firefox-7.0+build2+nobinonly.orig/debian/firefox.desktop.in +++ firefox-7.0+build2+nobinonly/debian/firefox.desktop.in @@ -0,0 +1,195 @@ +[Desktop Entry] +Version=1.0 +%%ifdef MOZ_OFFICIAL_BRANDING +Name=Firefox Web Browser +Name[ar]=متصفح الوِب فَيَرفُكْس +Name[ast]=Restolador web Firefox +Name[bn]=ফায়ারফক্স ওয়েব ব্রাউজার +Name[ca]=Navegador web Firefox +Name[cs]=Firefox Webový prohlížeč +Name[da]=Firefox - internetbrowser +Name[es]=Navegador web Firefox +Name[et]=Firefoxi veebibrauser +Name[fa]=مرورگر اینترنتی Firefox +Name[fi]=Firefox-selain +Name[fr]=Navigateur Web Firefox +Name[gl]=Navegador web Firefox +Name[he]=דפדפן האינטרנט Firefox +Name[hr]=Firefox web preglednik +Name[hu]=Firefox webböngésző +Name[it]=Firefox Browser Web +Name[ja]=Firefox ウェブ・ブラウザ +Name[ko]=Firefox 웹 브라우저 +Name[ku]=Geroka torê Firefox +Name[lt]=Firefox interneto naršyklė +Name[nb]=Firefox Nettleser +Name[nl]=Firefox webbrowser +Name[nn]=Firefox Nettlesar +Name[no]=Firefox Nettleser +Name[pl]=Przeglądarka WWW Firefox +Name[pt]=Firefox Navegador Web +Name[pt_BR]=Navegador Web Firefox +Name[ro]=Firefox – Navigator Internet +Name[ru]=Веб-браузер Firefox +Name[sk]=Firefox - internetový prehliadač +Name[sl]=Firefox spletni brskalnik +Name[sv]=Webbläsaren Firefox +Name[ug]=Firefox توركۆرگۈ +Name[uk]=Веб-браузер Firefox +Name[vi]=Trình duyệt web Firefox +Name[zh_CN]=Firefox 网络浏览器 +Name[zh_TW]=Firefox 網路瀏覽器 +%%else +Name=@MOZ_DISPLAY_NAME@ Web Browser +Name[ast]=Restolador web @MOZ_DISPLAY_NAME@ +Name[ca]=Navegador web @MOZ_DISPLAY_NAME@ +Name[cs]=@MOZ_DISPLAY_NAME@ Webový prohlížeč +Name[da]=@MOZ_DISPLAY_NAME@ - internetbrowser +Name[es]=Navegador web @MOZ_DISPLAY_NAME@ +Name[et]=@MOZ_DISPLAY_NAME@i veebibrauser +Name[fa]=مرورگر اینترنتی @MOZ_DISPLAY_NAME@ +Name[fi]=@MOZ_DISPLAY_NAME@-selain +Name[fr]=Navigateur Web @MOZ_DISPLAY_NAME@ +Name[gl]=Navegador web @MOZ_DISPLAY_NAME@ +Name[he]=דפדפן האינטרנט @MOZ_DISPLAY_NAME@ +Name[hr]=@MOZ_DISPLAY_NAME@ web preglednik +Name[hu]=@MOZ_DISPLAY_NAME@ webböngésző +Name[it]=@MOZ_DISPLAY_NAME@ Browser Web +Name[ja]=@MOZ_DISPLAY_NAME@ ウェブ・ブラウザ +Name[ko]=@MOZ_DISPLAY_NAME@ 웹 브라우저 +Name[ku]=Geroka torê @MOZ_DISPLAY_NAME@ +Name[lt]=@MOZ_DISPLAY_NAME@ interneto naršyklė +Name[nb]=@MOZ_DISPLAY_NAME@ Nettleser +Name[nl]=@MOZ_DISPLAY_NAME@ webbrowser +Name[nn]=@MOZ_DISPLAY_NAME@ Nettlesar +Name[no]=@MOZ_DISPLAY_NAME@ Nettleser +Name[pl]=Przeglądarka WWW @MOZ_DISPLAY_NAME@ +Name[pt]=@MOZ_DISPLAY_NAME@ Navegador Web +Name[pt_BR]=Navegador Web @MOZ_DISPLAY_NAME@ +Name[ro]=@MOZ_DISPLAY_NAME@ – Navigator Internet +Name[ru]=Веб-браузер @MOZ_DISPLAY_NAME@ +Name[sk]=@MOZ_DISPLAY_NAME@ - internetový prehliadač +Name[sl]=@MOZ_DISPLAY_NAME@ spletni brskalnik +Name[sv]=Webbläsaren @MOZ_DISPLAY_NAME@ +Name[ug]=@MOZ_DISPLAY_NAME@ توركۆرگۈ +Name[uk]=Веб-браузер @MOZ_DISPLAY_NAME@ +Name[vi]=Trình duyệt web @MOZ_DISPLAY_NAME@ +Name[zh_CN]=@MOZ_DISPLAY_NAME@ 网络浏览器 +Name[zh_TW]=@MOZ_DISPLAY_NAME@ 網路瀏覽器 +%%endif +Comment=Browse the World Wide Web +Comment[ar]=تصفح الشبكة العنكبوتية العالمية +Comment[ast]=Restola pela Rede +Comment[bn]=ইন্টারনেট ব্রাউজ করুন +Comment[ca]=Navegueu per la web +Comment[cs]=Prohlížení stránek World Wide Webu +Comment[da]=Surf på internettet +Comment[de]=Im Internet surfen +Comment[es]=Navegue por la web +Comment[et]=Lehitse veebi +Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید +Comment[fi]=Selaa Internetin WWW-sivuja +Comment[fr]=Naviguer sur le Web +Comment[gl]=Navegar pola rede +Comment[he]=גלישה ברחבי האינטרנט +Comment[hr]=Pretražite web +Comment[hu]=A világháló böngészése +Comment[it]=Esplora il web +Comment[ja]=ウェブを閲覧します +Comment[ko]=웹을 돌아 다닙니다 +Comment[ku]=Li torê bigere +Comment[lt]=Naršykite internete +Comment[nb]=Surf på nettet +Comment[nl]=Verken het internet +Comment[nn]=Surf på nettet +Comment[no]=Surf på nettet +Comment[pl]=Przeglądanie stron WWW +Comment[pt]=Navegue na Internet +Comment[pt_BR]=Navegue na Internet +Comment[ro]=Navigați pe Internet +Comment[ru]=Доступ в Интернет +Comment[sk]=Prehliadanie internetu +Comment[sl]=Brskajte po spletu +Comment[sv]=Surfa på webben +Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ +Comment[uk]=Перегляд сторінок Інтернету +Comment[vi]=Để duyệt các trang web +Comment[zh_CN]=浏览互联网 +Comment[zh_TW]=瀏覽網際網路 +GenericName=Web Browser +GenericName[ar]=متصفح وب +GenericName[ast]=Restolador Web +GenericName[bn]=ওয়েব ব্রাউজার +GenericName[ca]=Navegador web +GenericName[cs]=Webový prohlížeč +GenericName[da]=Webbrowser +GenericName[es]=Navegador web +GenericName[et]=Veebibrauser +GenericName[fa]=مرورگر اینترنتی +GenericName[fi]=WWW-selain +GenericName[fr]=Navigateur Web +GenericName[gl]=Navegador Web +GenericName[he]=דפדפן אינטרנט +GenericName[hr]=Web preglednik +GenericName[hu]=Webböngésző +GenericName[it]=Browser web +GenericName[ja]=ウェブ・ブラウザ +GenericName[ko]=웹 브라우저 +GenericName[ku]=Geroka torê +GenericName[lt]=Interneto naršyklė +GenericName[nb]=Nettleser +GenericName[nl]=Webbrowser +GenericName[nn]=Nettlesar +GenericName[no]=Nettleser +GenericName[pl]=Przeglądarka WWW +GenericName[pt]=Navegador Web +GenericName[pt_BR]=Navegador Web +GenericName[ro]=Navigator Internet +GenericName[ru]=Веб-браузер +GenericName[sk]=Internetový prehliadač +GenericName[sl]=Spletni brskalnik +GenericName[sv]=Webbläsare +GenericName[ug]=توركۆرگۈ +GenericName[uk]=Веб-браузер +GenericName[vi]=Trình duyệt Web +GenericName[zh_CN]=网络浏览器 +GenericName[zh_TW]=網路瀏覽器 +Exec=@MOZ_APP_NAME@ %u +Terminal=false +X-MultipleArgs=false +Type=Application +Icon=@MOZ_APP_NAME@ +Categories=GNOME;GTK;Network;WebBrowser; +MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/vnd.mozilla.xul+xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm; +StartupWMClass=@MOZ_DISPLAY_NAME@ +StartupNotify=true +X-Ayatana-Desktop-Shortcuts=NewWindow; + +[NewWindow Shortcut Group] +Name=Open a New Window +Name[ast]=Abrir una ventana nueva +Name[bn]=Abrir una ventana nueva +Name[ca]=Obre una finestra nova +Name[da]=Åbn et nyt vindue +Name[de]=Ein neues Fenster öffnen +Name[es]=Abrir una ventana nueva +Name[fi]=Avaa uusi ikkuna +Name[fr]=Ouvrir une nouvelle fenêtre +Name[gl]=Abrir unha nova xanela +Name[he]=פתיחת חלון חדש +Name[hr]=Otvori novi prozor +Name[hu]=Új ablak nyitása +Name[it]=Apri una nuova finestra +Name[ja]=新しいウィンドウを開く +Name[ku]=Paceyeke nû veke +Name[lt]=Atverti naują langą +Name[nl]=Nieuw venster openen +Name[ro]=Deschide o fereastră nouă +Name[ru]=Открыть новое окно +Name[sv]=Öppna ett nytt fönster +Name[ug]=يېڭى كۆزنەك ئېچىش +Name[uk]=Відкрити нове вікно +Name[zh_CN]=新建窗口 +Name[zh_TW]=開啟新視窗 +Exec=@MOZ_APP_NAME@ -new-window about:blank +TargetEnvironment=Unity --- firefox-7.0+build2+nobinonly.orig/debian/control.langpacks.unavail +++ firefox-7.0+build2+nobinonly/debian/control.langpacks.unavail @@ -0,0 +1,9 @@ + +Package: @MOZ_APP_NAME@-locale-@LANGCODE@ +Architecture: all +Depends: ${misc:Depends} +Description: Transitional package for unavailable language + This language is unavailable for the current version of Firefox + . + This is an empty transitional package to ensure a clean upgrade + process. You can safely remove this package after installation. --- firefox-7.0+build2+nobinonly.orig/debian/usr.bin.firefox.apparmor.10.04 +++ firefox-7.0+build2+nobinonly/debian/usr.bin.firefox.apparmor.10.04 @@ -0,0 +1,348 @@ +# vim:syntax=apparmor +# Author: Jamie Strandboge + +#include + +# We want to confine the binaries that match: +# @MOZ_LIBDIR@/@MOZ_APP_NAME@ +# @MOZ_LIBDIR@/firefox +# but not: +# @MOZ_LIBDIR@/firefox.sh +@MOZ_LIBDIR@/firefox{,*[^s][^h]} { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + + # for networking + network inet stream, + network inet6 stream, + @{PROC}/[0-9]*/net/if_inet6 r, + @{PROC}/[0-9]*/net/ipv6_route r, + + # should maybe be in abstractions + /etc/ r, + /etc/mime.types r, + /etc/mailcap r, + /etc/timezone r, + /etc/wildmidi/wildmidi.cfg r, + /etc/xdg/xubuntu/applications/defaults.list r, + /usr/bin/dbus-launch ixr, + /usr/bin/scim Ux, + /usr/bin/scim-bridge Ux, + /usr/bin/apport-bug Ux, + /usr/local/lib{,32,64}/*.so* mr, + /usr/lib/gstreamer0.10/gstreamer-0.10/gst-plugin-scanner ix, + /usr/bin/apturl Uxr, + /tmp/.X[0-9]*-lock r, + + # firefox specific + /etc/firefox*/ r, + /etc/firefox*/** r, + /etc/xul-ext/** r, + /etc/xulrunner-2.0*/ r, + /etc/xulrunner-2.0*/** r, + /etc/gre.d/ r, + /etc/gre.d/* r, + + # noisy + deny @MOZ_LIBDIR@/** w, + deny /usr/lib/@MOZ_APP_NAME@-addons/** w, + deny /usr/lib/xulrunner-addons/** w, + deny /usr/lib/xulrunner-*/components/*.tmp w, + deny /.suspended r, + deny /boot/initrd.img* r, + deny /boot/vmlinuz* r, + deny /var/cache/fontconfig/ w, + + # What is firefox doing with this? + deny /usr/bin/gconftool-2 x, + + # These are needed when a new user starts firefox and firefox.sh is used + @MOZ_LIBDIR@/** ixr, + /usr/bin/basename ixr, + /usr/bin/dirname ixr, + /usr/bin/pwd ixr, + /sbin/killall5 ixr, + /bin/which ixr, + /usr/bin/tr ixr, + @{PROC}/ r, + @{PROC}/[0-9]*/cmdline r, + @{PROC}/[0-9]*/mountinfo r, + @{PROC}/[0-9]*/stat r, + owner @{PROC}/[0-9]*/task/[0-9]*/stat r, + @{PROC}/[0-9]*/status r, + @{PROC}/filesystems r, + + /etc/mtab r, + /etc/fstab r, + + # Needed for the crash reporter + owner @{PROC}/[0-9]*/environ r, + owner @{PROC}/[0-9]*/auxv r, + /etc/lsb-release r, + /usr/bin/expr ix, + + # allow access to documentation and other files the user may want to look + # at in /usr + /usr/ r, + /usr/** r, + + # so browsing directories works + / r, + /**/ r, + + # allow read and write to all user's files, except explicitly denied ones + @{HOME}/ r, + @{HOME}/** r, + owner @{HOME}/** w, + owner @{HOME}/Desktop/** r, + + # removable media and filesystems + /media/** r, + /mnt/** r, + /srv/** r, + owner /media/** w, + owner /mnt/** w, + owner /srv/** w, + + #include + audit deny @{HOME}/.ssh/** mrwkl, + audit deny @{HOME}/.gnome2_private/** mrwkl, + + # comment this out if using gpg plugin/addons + audit deny @{HOME}/.gnupg/** mrwkl, + + # per-user firefox configuration + owner @{HOME}/.{firefox,mozilla}/ rw, + owner @{HOME}/.{firefox,mozilla}/** rw, + owner @{HOME}/.{firefox,mozilla}/**/*.{db,parentlock,sqlite}* k, + owner @{HOME}/.{firefox,mozilla}/plugins/** rm, + owner @{HOME}/.{firefox,mozilla}/**/plugins/** rm, + + # + # Extensions + # /usr/share/.../extensions/... is already covered by '/usr/** r', above. + # Allow 'x' for downloaded extensions, but inherit policy for safety + owner @{HOME}/.mozilla/**/extensions/** mixr, + + deny @MOZ_LIBDIR@/update.test w, + deny /usr/lib/mozilla/extensions/**/ w, + deny /usr/lib/xulrunner-addons/extensions/**/ w, + deny /usr/share/mozilla/extensions/**/ w, + deny /usr/share/mozilla/ w, + + # + # Plugins/helpers + # + @{PROC}/[0-9]*/fd/ r, + /usr/lib/** rm, + /bin/bash ixr, + /bin/dash ixr, + /bin/grep ixr, + /bin/sed ixr, + /bin/ps Uxr, + /bin/uname Uxr, + /usr/bin/gnome-codec-install Uxr, + /usr/bin/m4 ixr, + /usr/bin/mkfifo Uxr, + /usr/lib/nspluginwrapper/i386/linux/npviewer Uxr, + /usr/bin/pulseaudio ixr, + /var/lib/ r, + /var/lib/** mr, + + # Needed for container to work in xul builds + /usr/lib/xulrunner-*/plugin-container ixr, + + # for maximum plugin/helper compatibility + #/usr/bin/* Uxr, + #/usr/lib/*/** ixr, + + # + # For stricter access, comment out the 'maximum plugin/helper compatibility' + # lines above and uncomment these + # + + # for PDFs + owner @{HOME}/.adobe/** rw, + /opt/Adobe/Reader9/bin/acroread Uxr, + /opt/Adobe/Reader9/** r, + /usr/bin/evince PUxr, + /usr/bin/okular Uxr, + + # Image viewers + /usr/bin/eog Uxr, + /usr/bin/gimp* Uxr, + + # Openoffice.org + /usr/bin/ooffice Uxr, + /usr/bin/oocalc Uxr, + /usr/bin/oodraw Uxr, + /usr/bin/ooimpress Uxr, + /usr/bin/oowriter Uxr, + /usr/lib/openoffice/program/soffice Uxr, + + # Multimedia + #include + owner @{HOME}/.macromedia/** rw, + /opt/real/RealPlayer/mozilla/nphelix.so rm, + + # Bittorrent clients + #include + + # Archivers + /usr/bin/ark Uxr, + /usr/bin/file-roller Uxr, + /usr/bin/xarchiver Uxr, + + # Text editors (It's All Text [https://addons.mozilla.org/en-US/firefox/addon/4125]) + /usr/bin/emacsclient.emacs-snapshot Uxr, + /usr/bin/emacsclient.emacs22 Uxr, + /usr/bin/gedit Uxr, + /usr/bin/vim.gnome Uxr, + /usr/bin/leafpad Uxr, + /usr/bin/mousepad Uxr, + + # Mozplugger + /etc/mozpluggerrc r, + /usr/bin/mozplugger-helper Uxr, + + # Java + @{HOME}/.java/deployment/deployment.properties k, + /etc/java-*/ r, + /etc/java-*/** r, + /usr/lib/jvm/java-6-openjdk/jre/bin/java cx -> firefox_openjdk, + /usr/lib/jvm/java-*-sun-1.*/jre/bin/java{,_vm} cx -> firefox_java, + /usr/lib/jvm/java-*-sun-1.*/jre/lib/*/libnp*.so cx -> firefox_java, + /usr/lib/j2*-ibm/jre/bin/java cx -> firefox_java, + + # for mailto: + #include + #include + + # Terminals for using console applications. These abstractions should ideally + # have 'ix' to restrct access to what only firefox is allowed to do + #include + + # By default, we won't support launching a terminal program in Xterm or + # KDE's konsole. It opens up too many unnecessary files for most users. + # People who need this functionality can uncomment the following: + ##include + ##include + + # Miscellaneous (to be abstracted) + /usr/bin/nautilus Uxr, + /usr/bin/thunar Uxr, + /usr/bin/liferea-add-feed Uxr, + + + # + # Child profiles + # + + # Profile for the supported OpenJDK in Ubuntu. This doesn't require the + # unfortunate workarounds of the proprietary Javas, so have a separate + # profile. + profile firefox_openjdk { + #include + #include + #include + #include + #include + #include + #include + #include + + network inet stream, + network inet6 stream, + @{PROC}/[0-9]*/net/if_inet6 r, + @{PROC}/[0-9]*/net/ipv6_route r, + + /etc/java-*/ r, + /etc/java-*/** r, + /etc/lsb-release r, + /etc/ssl/certs/java/* r, + /etc/timezone r, + + @{PROC}/[0-9]*/ r, + @{PROC}/[0-9]*/fd/ r, + @{PROC}/filesystems r, + /sys/devices/system/cpu/ r, + /sys/devices/system/cpu/** r, + /usr/share/** r, + /var/lib/dbus/machine-id r, + + /usr/bin/env ix, + /usr/lib/jvm/java-6-openjdk/jre/bin/java ix, + /usr/lib/jvm/java-6-openjdk/jre/lib/i386/client/classes.jsa m, + + # Why would java need this? + deny /usr/bin/gconftool-2 x, + + owner @{HOME}/ r, + owner @{HOME}/** rwk, + } + + # Profile for commercial Javas. These need workarounds to work right (eg + # Sun's forcing of an executable stack (LP: #535247)). + profile firefox_java { + #include + #include + #include + #include + #include + #include + #include + #include + + network inet stream, + network inet6 stream, + @{PROC}/[0-9]*/net/if_inet6 r, + @{PROC}/[0-9]*/net/ipv6_route r, + @{PROC}/loadavg r, + + /etc/debian_version r, + /etc/java-*/ r, + /etc/java-*/** r, + /etc/lsb-release r, + /etc/ssl/certs/java/* r, + /etc/timezone r, + + @{PROC}/[0-9]*/ r, + @{PROC}/[0-9]*/fd/ r, + @{PROC}/filesystems r, + /sys/devices/system/cpu/ r, + /sys/devices/system/cpu/** r, + /usr/share/** r, + /var/lib/dbus/machine-id r, + + /usr/bin/env ix, + /usr/lib/jvm/java-*-sun-1.*/jre/bin/java{,_vm} ix, + /usr/lib/jvm/java-*-sun-1.*/jre/lib/i386/client/classes.jsa m, + /usr/lib/j2*-ibm/jre/bin/java ix, + + # noisy, can't write here anyway + deny /etc/.java/ w, + deny /etc/.java/** w, + + deny /usr/bin/gconftool-2 x, + + owner @{HOME}/ r, + owner @{HOME}/** rwk, + owner @{HOME}/.fontconfig/*.cache* m, + + # These are seriously unfortunate, but required due to LP: #535247 + /etc/passwd m, + owner @{HOME}/.java/**/cache/** m, + owner /tmp/** m, + /usr/lib{,32,64}/jvm/**/*.jar mr, + /usr/share/fonts/** m, + } +} --- firefox-7.0+build2+nobinonly.orig/debian/firefox.sh.in +++ firefox-7.0+build2+nobinonly/debian/firefox.sh.in @@ -0,0 +1,111 @@ +#!/bin/sh + +set -e + +# Firefox launcher containing a Profile migration helper for +# temporary profiles used during alpha and beta phases. + +# Authors: +# Alexander Sack +# Fabien Tassin +# Steve Langasek +# Chris Coulson +# License: GPLv2 or later + +MOZ_LIBDIR=@MOZ_LIBDIR@ +MOZ_APP_LAUNCHER=`which $0` +MOZ_APP_NAME=@MOZ_APP_NAME@ +MOZ_APP_BASENAME=@MOZ_APP_BASENAME@ +MOZ_PROFILE_PREFIX=@MOZ_PROFILE_PREFIX@ + +export MOZ_APP_LAUNCHER + +while [ ! -x $MOZ_LIBDIR/$MOZ_APP_NAME ] ; do + if [ -L "$MOZ_APP_LAUNCHER" ] ; then + MOZ_APP_LAUNCHER=`readlink -f $MOZ_APP_LAUNCHER` + MOZ_LIBDIR=`dirname $MOZ_APP_LAUNCHER` + else + echo "Can't find $MOZ_LIBDIR/$MOZ_APP_NAME" + exit 1 + fi +done + +usage () { + $MOZ_LIBDIR/$MOZ_APP_NAME -h | sed -e 's,/.*/,,' + echo + echo " -g or --debug Start within debugger" + echo " -d or --debugger Specify debugger to start with (eg, gdb or valgrind)" + echo " -a or --debugger-args Specify arguments for debugger" +} + +moz_debug=0 +moz_debugger_args="" +moz_debugger="gdb" + +while [ $# -gt 0 ]; do + case "$1" in + -h | --help ) + usage + exit 0 + ;; + -g | --debug ) + moz_debug=1 + shift + ;; + -d | --debugger) + moz_debugger=$2; + if [ "${moz_debugger}" != "" ]; then + shift 2 + else + echo "-d requires an argument" + exit 1 + fi + ;; + -a | --debugger-args ) + moz_debugger_args=$2; + if [ "${moz_debugger_args}" != "" ] ; then + shift 2 + else + echo "-a requires an argument" + exit 1 + fi + ;; + -- ) # Stop option processing + shift + break + ;; + * ) + break + ;; + esac +done + +%%if MOZ_APP_NAME != MOZ_APP_BASENAME +if [ $MOZ_APP_NAME != $MOZ_APP_BASENAME ] && + [ ! -e ${HOME}/${MOZ_PROFILE_PREFIX}${MOZ_APP_NAME} ] && + [ -d ${HOME}/${MOZ_PROFILE_PREFIX}${MOZ_APP_BASENAME} ] ; then + cp -r ${HOME}/${MOZ_PROFILE_PREFIX}${MOZ_APP_BASENAME} ${HOME}/${MOZ_PROFILE_PREFIX}${MOZ_APP_NAME} +fi +%%endif + +if [ $moz_debug -eq 1 ] ; then + debugger=`which $moz_debugger` + if [ ! -x $debugger ] ; then + echo "Invalid debugger" + exit 1 + fi + + case `basename $debugger` in + gdb) + exec $debugger $moz_debugger_args --args $MOZ_LIBDIR/$MOZ_APP_NAME "$@" + ;; + valgrind) + exec $debugger $moz_debugger_args $MOZ_LIBDIR/$MOZ_APP_NAME "$@" + ;; + *) + exec $debugger $moz_debugger_args $MOZ_LIBDIR/$MOZ_APP_NAME "$@" + ;; + esac +else + exec $MOZ_LIBDIR/$MOZ_APP_NAME "$@" +fi --- firefox-7.0+build2+nobinonly.orig/debian/firefox-mozsymbols.install.in +++ firefox-7.0+build2+nobinonly/debian/firefox-mozsymbols.install.in @@ -0,0 +1,3 @@ +%%ifdef MOZ_ENABLE_BREAKPAD +@MOZ_DISTDIR@/*symbols.zip @MOZ_LIBDIR@ +%%endif --- firefox-7.0+build2+nobinonly.orig/debian/control.in +++ firefox-7.0+build2+nobinonly/debian/control.in @@ -0,0 +1,177 @@ +Source: @MOZ_APP_NAME@ +Section: web +Priority: optional +Maintainer: Ubuntu Mozilla Team +Vcs-Bzr: https://code.launchpad.net/~mozillateam/firefox/firefox-beta.head +Build-Depends: cdbs, + debhelper (>= 5), + m4, + autotools-dev, + autoconf2.13, + quilt, + patchutils (>= 0.2.25), + bzip2, + zip, + libx11-dev, + libxt-dev, + libgtk2.0-dev (>= 2.10), + liborbit2-dev, + libidl-dev (>= 0.8.0), + libxft-dev, + libfreetype6-dev, + libxrender-dev, + libxinerama-dev, + libgnome2-dev, + libgconf2-dev, + libgnomeui-dev, + libstartup-notification0-dev, + libasound2-dev, + libcurl4-openssl-dev, + libdbus-glib-1-dev (>= 0.60), + mozilla-devscripts (>= 0.10~), + hardening-wrapper, + lsb-release, + libiw-dev, + mesa-common-dev, + libnotify-dev (>= 0.4), @EXTRA_BD@ + libgnomevfs2-dev, + yasm, + xvfb, + imagemagick, + libdbusmenu-gtk-dev +Standards-Version: 3.9.1 + +Package: @MOZ_APP_NAME@ +Architecture: any +Depends: fontconfig, + psmisc, + lsb-release, + debianutils (>= 1.16), + ${misc:Depends}, + ${shlibs:Depends} +Recommends: ubufox, + @MOZ_APP_NAME@-globalmenu +Provides: www-browser, + iceweasel, + gnome-www-browser +Suggests: @MOZ_APP_NAME@-gnome-support | firefox-kde-support, + latex-xft-fonts, + libthai0 +Replaces: abrowser, + abrowser-branding, + firefox-branding, + kubuntu-firefox-installer +Breaks: abrowser (<= 4.0~b11+build3+nobinonly-0ubuntu1), + abrowser-branding (<= 4.0~b11+build3+nobinonly-0ubuntu1), + firefox-branding (<= 4.0~b11+build3+nobinonly-0ubuntu1) +XB-Xul-AppId: {ec8030f7-c20a-464f-9b0e-13a3a9e97384} +Description: Safe and easy web browser from Mozilla + Firefox delivers safe, easy web browsing. A familiar user interface, + enhanced security features including protection from online identity theft, + and integrated search let you get the most out of the web. + +Package: @MOZ_APP_NAME@-gnome-support +Architecture: any +Section: gnome +Depends: ${shlibs:Depends}, + ${misc:Depends}, + @MOZ_APP_NAME@ +Description: Safe and easy web browser from Mozilla - GNOME support + Firefox delivers safe, easy web browsing. A familiar user interface, + enhanced security features including protection from online identity theft, + and integrated search let you get the most out of the web. + . + This package depends on the GNOME libraries which allow Firefox to take + advantage of technologies such as GConf, GIO libnotify + +Package: @MOZ_APP_NAME@-dbg +Architecture: any +Section: debug +Priority: extra +Depends: ${shlibs:Depends}, + ${misc:Depends}, + @MOZ_APP_NAME@ (= ${binary:Version}) +Description: Safe and easy web browser from Mozilla - debug symbols + Firefox delivers safe, easy web browsing. A familiar user interface, + enhanced security features including protection from online identity theft, + and integrated search let you get the most out of the web. + . + This package contains the debugging symbols for the Firefox web + browser + +Package: @MOZ_APP_NAME@-dev +Architecture: any +Section: devel +Priority: extra +Depends: ${shlibs:Depends}, + ${misc:Depends}, + @MOZ_APP_NAME@ (= ${binary:Version}), + ${nspr:Depends}, + ${nss:Depends}, + ${cairo:Depends} +Conflicts: xulrunner-2.0-dev, + xulrunner-1.9.2-dev +Description: Safe and easy web browser from Mozilla - development files + Firefox delivers safe, easy web browsing. A familiar user interface, + enhanced security features including protection from online identity theft, + and integrated search let you get the most out of the web. + . + This package contains the headers and SDK for building plugins with Firefox + +Package: @MOZ_APP_NAME@-mozsymbols +Architecture: amd64 i386 armel +Section: debug +Priority: extra +Depends: ${shlibs:Depends}, + ${misc:Depends} +Description: Safe and easy web browser from Mozilla - Breakpad symbols + Firefox delivers safe, easy web browsing. A familiar user interface, + enhanced security features including protection from online identity theft, + and integrated search let you get the most out of the web. + . + This package contains the Firefox symbols in a format expected by Mozilla's + Breakpad. Eventually this package should go away and the symbol upload be + implemented in soyuz (or other builders that build this package) + +Package: @MOZ_APP_NAME@-globalmenu +Architecture: any +Depends: ${shlibs:Depends}, + ${misc:Depends}, + @MOZ_APP_NAME@ (= ${binary:Version}) +Description: Unity appmenu integration for Firefox + This package provides an extension which adds support for the Unity + appmenu to Firefox + +# Transitional packages below here + +Package: abrowser +Architecture: any +Depends: ${misc:Depends}, firefox +Description: Safe and easy web browser from Mozilla - transitional package + This is a transitional package to ensure that upgrades work correctly. + It can be safely removed + +Package: firefox-branding +Architecture: any +Depends: ${misc:Depends}, firefox +Description: Safe and easy web browser from Mozilla - transitional package + This is a transitional package to ensure that upgrades work correctly. + It can be safely removed + +Package: abrowser-branding +Architecture: any +Depends: ${misc:Depends}, firefox +Description: Safe and easy web browser from Mozilla - transitional package + This is a transitional package to ensure that upgrades work correctly. + It can be safely removed + +Package: firefox-gnome-support-dbg +Architecture: any +Section: debug +Priority: extra +Depends: ${misc:Depends}, firefox-gnome-support, firefox-dbg (= ${binary:Version}) +Description: Safe and easy web browser from Mozilla - transitional package + This is a transitional package to ensure that upgrades work correctly. + It can be safely removed + +# Language packs below here --- firefox-7.0+build2+nobinonly.orig/debian/firefox-globalmenu.dirs.in +++ firefox-7.0+build2+nobinonly/debian/firefox-globalmenu.dirs.in @@ -0,0 +1,3 @@ +%%ifdef MOZ_ENABLE_GLOBALMENU +@MOZ_PREFIX@/lib/@MOZ_APP_NAME@-addons/extensions/globalmenu@ubuntu.com +%%endif --- firefox-7.0+build2+nobinonly.orig/debian/firefox.lintian-overrides.in +++ firefox-7.0+build2+nobinonly/debian/firefox.lintian-overrides.in @@ -0,0 +1,9 @@ +@MOZ_APP_NAME@ binary: embedded-libjpeg .@MOZ_LIBDIR@/libxul.so +@MOZ_APP_NAME@ binary: embedded-zlib .@MOZ_LIBDIR@/libxul.so +@MOZ_APP_NAME@ binary: image-file-in-usr-lib usr/lib/@MOZ_APP_NAME@-@MOZ_VERSION@/icons/document.png +@MOZ_APP_NAME@ binary: image-file-in-usr-lib usr/lib/@MOZ_APP_NAME@-@MOZ_VERSION@/icons/mozicon128.png +@MOZ_APP_NAME@ binary: image-file-in-usr-lib usr/lib/@MOZ_APP_NAME@-@MOZ_VERSION@/chrome/icons/default/default16.png +@MOZ_APP_NAME@ binary: image-file-in-usr-lib usr/lib/@MOZ_APP_NAME@-@MOZ_VERSION@/chrome/icons/default/default32.png +@MOZ_APP_NAME@ binary: image-file-in-usr-lib usr/lib/@MOZ_APP_NAME@-@MOZ_VERSION@/chrome/icons/default/default48.png +@MOZ_APP_NAME@ binary: image-file-in-usr-lib usr/lib/@MOZ_APP_NAME@-addons/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png +@MOZ_APP_NAME@ binary: image-file-in-usr-lib usr/lib/@MOZ_APP_NAME@-addons/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/preview.png --- firefox-7.0+build2+nobinonly.orig/debian/README.source +++ firefox-7.0+build2+nobinonly/debian/README.source @@ -0,0 +1,27 @@ +1) To create the fully patched source, just run "debian/rules apply-patches" in the source directory. The fully patched source will be available in build-tree/mozilla + +2) This package uses the quilt patch system. To create or edit patches which are applied at build time, you must first extract the source tarball. To do this, run "debian/rules pre-build". cd in to build-tree/mozilla and use quilt in the usual fashion (see "man quilt"). + +Your life will be much easier if you add the following to ~/.quiltrc: + +for where in ./ ../ ../../ ../../../ ../../../../ ../../../../../; do + if [ -e ${where}debian/rules -a -d ${where}debian/patches ]; then + export QUILT_PATCHES=${where}debian/patches + fi +done + +So, basically: + + a) debian/rules pre-build + b) cd build-tree/mozilla + c) quilt push + .....or..... + quilt push + .....or..... + quilt push -a + .....or..... + quilt new + +You get the idea..... + +3) To remove any changes applied to the packaging, run "fakeroot debian/rules clean". This will remove all patches and delete auto-generated files --- firefox-7.0+build2+nobinonly.orig/debian/firefox.dirs.in +++ firefox-7.0+build2+nobinonly/debian/firefox.dirs.in @@ -0,0 +1,5 @@ +/usr/lib/@MOZ_APP_NAME@-addons/extensions +/usr/lib/@MOZ_APP_NAME@-addons/plugins +/etc/apparmor.d/disable +/etc/apport/native-origins.d +/etc/apport/blacklist.d --- firefox-7.0+build2+nobinonly.orig/debian/README.Debian.in +++ firefox-7.0+build2+nobinonly/debian/README.Debian.in @@ -0,0 +1,15 @@ +Apparmor Profile +---------------- +If your system uses AppArmor, please note that the shipped profile is disabled +by default. The profile can be enabled by performing: + +$ sudo aa-enforce /etc/apparmor.d/usr.bin.@MOZ_APP_NAME@ + +The profile can be disabled by performing: +$ sudo aparmor_parser -R /etc/apparmor.d/usr.bin.@MOZ_APP_NAME@ +$ sudo ln -s /etc/apparmor.d/usr.bin.@MOZ_APP_NAME@ /etc/apparmor.d/disable/usr.bin.@MOZ_APP_NAME@ + +This profile should work without modification for most plugins available in +Ubuntu, but may require adjusting for your environment. Please see +https://wiki.ubuntu.com/DebuggingApparmor before filing a bug against this +software. --- firefox-7.0+build2+nobinonly.orig/debian/vendor.js +++ firefox-7.0+build2+nobinonly/debian/vendor.js @@ -0,0 +1,13 @@ +// Use LANG environment variable to choose locale +pref("intl.locale.matchOS", true); + +// Disable default browser checking. +pref("browser.shell.checkDefaultBrowser", false); + +// identify default locale to use if no /usr/lib/firefox-addons/searchplugins/LOCALE +// exists for the current used LOCALE +pref("distribution.searchplugins.defaultLocale", "en-US"); + +// Enable the NetworkManager integration +pref("network.manage-offline-status", true); + --- firefox-7.0+build2+nobinonly.orig/debian/moz-rev.sh +++ firefox-7.0+build2+nobinonly/debian/moz-rev.sh @@ -0,0 +1,48 @@ +#!/bin/sh + +# Copyright (c) 2009 Fabien Tassin +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +URL=$1 +BRANCH=$2 + +set -e + +if [ Z$1 = Z ] ; then + echo "Usage: $0 MOZ_URL [BRANCH]" + echo + echo "Ex: $0 http://hg.mozilla.org/releases/mozilla-1.9.2 default" + exit 1 +fi + +if [ Z$BRANCH = Z ] ; then + BRANCH="default" +fi + +# Get the tip of $BRANCH +URL_BASE=`echo $URL | sed -e 's,^\(http://[^/]*\)/.*,\1,'` +TIP=`wget -qO- $URL/summary | sed -e '1,/>branches$BRANCH<" | \ + sed -e 's,.*'$BRANCH'changeset.*,\1,'` + +# Get the rev-id and hash of this top +REVS=`wget -qO- $URL_BASE$TIP | grep '^' | sed -e 's/.* changeset \([^<]*\).*/\1/'` +REV=`echo $REVS | cut -d: -f1` +HASH=`echo $REVS | cut -d: -f2` + +# Get the date of this tip +DATE=`wget -qO- "$URL/pushlog?changeset=$HASH" | grep '^ <updated>' | tr '<>' '"' | cut -d'"' -f3 | cut -dT -f1 | tr -d '-'` + +echo "${DATE}r${REV}" --- firefox-7.0+build2+nobinonly.orig/debian/firefox.postinst.in +++ firefox-7.0+build2+nobinonly/debian/firefox.postinst.in @@ -0,0 +1,147 @@ +#!/bin/sh + +set -e + +MOZ_LIBDIR=@MOZ_LIBDIR@ +MOZ_APP_NAME=@MOZ_APP_NAME@ + +if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] ; then + if [ `dpkg-divert --truename /usr/bin/$MOZ_APP_NAME` != "/usr/bin/$MOZ_APP_NAME" ] ; then + # Ubuntuzilla has trashed this install. Grrrrrrrrrr! + BROKEN=1 + else + BROKEN=0 + fi + + if [ ! -x /usr/bin/$MOZ_APP_NAME ] && [ "$BROKEN" = "1" ] ; then + echo "***Your system has been left in a broken state by a third party package***" + echo "This is usually caused by installing packages from Ubuntuzilla. Fixing this now" + dpkg-divert --rename --remove /usr/bin/$MOZ_APP_NAME + # Yay! We are sane again now \o/ + BROKEN=0 + fi + + if [ "$BROKEN" = "0" ] ; then + update-alternatives --install /usr/bin/gnome-www-browser \ + gnome-www-browser /usr/bin/$MOZ_APP_NAME 40 + + update-alternatives --install /usr/bin/x-www-browser \ + x-www-browser /usr/bin/$MOZ_APP_NAME 40 + else + PACKAGE=`dpkg-divert --listpackage /usr/bin/$MOZ_APP_NAME` + if [ "$PACKAGE" = "LOCAL" ] ; then + echo "/usr/bin/$MOZ_APP_NAME has been diverted by a third party package which didn't specify" + echo "a package name to dpkg-divert. This is usually as a result of installing unsupported" + echo "packages from Ubuntuzilla." + echo "***This is a BUG. Please report this bug to the vendor of the third party package you installed***" + else + echo "/usr/bin/$MOZ_APP_NAME has been diverted by $PACKAGE" + fi + fi + + # + # AppArmor + # + APP_PROFILE="/etc/apparmor.d/usr.bin.$MOZ_APP_NAME" + if [ -f "$APP_PROFILE" ]; then + if [ -e /etc/lsb-release ] ; then + ubuntu_version=`grep ^DISTRIB_RELEASE /etc/lsb-release | cut -d= -f2 | cut -d '.' -f-2 | tr -d '.'` + else + ubuntu_version=`lsb_release -rs | cut -d '.' -f-2 | tr -d '.'` + fi + + # Setup the extra include files for Ubuntu 10.10 and higher + if [ "$ubuntu_version" -ge '1010' ]; then + # Add the local/ include + LOCAL_APP_PROFILE="/etc/apparmor.d/local/usr.bin.$MOZ_APP_NAME" + test -e "$LOCAL_APP_PROFILE" || { + tmp=`mktemp` + cat <<EOM > "$tmp" +# Site-specific additions and overrides for usr.bin.firefox. +# For more details, please see /etc/apparmor.d/local/README. +EOM + mkdir `dirname $LOCAL_APP_PROFILE` 2>/dev/null || true + mv -f "$tmp" "$LOCAL_APP_PROFILE" + chmod 644 "$LOCAL_APP_PROFILE" + } + + # Add the addons include + ADDONS_APP_PROFILE="/etc/apparmor.d/abstractions/ubuntu-browsers.d/$MOZ_APP_NAME" + test -e "$ADDONS_APP_PROFILE" || { + tmp=`mktemp` + cat <<EOM > "$tmp" +# This file is updated by 'aa-update-browser' and may be overwritten on +# upgrades. +# +# For site-specific adjustments, please see /etc/apparmor.d/local/<binary> + +#include <abstractions/ubuntu-browsers.d/plugins-common> +#include <abstractions/ubuntu-browsers.d/mailto> +#include <abstractions/ubuntu-browsers.d/multimedia> +#include <abstractions/ubuntu-browsers.d/productivity> +#include <abstractions/ubuntu-browsers.d/java> +#include <abstractions/ubuntu-browsers.d/kde> +#include <abstractions/ubuntu-browsers.d/text-editors> +#include <abstractions/ubuntu-browsers.d/ubuntu-integration> +#include <abstractions/ubuntu-browsers.d/user-files> +EOM + mkdir -p `dirname $ADDONS_APP_PROFILE` 2>/dev/null || true + mv -f "$tmp" "$ADDONS_APP_PROFILE" + chmod 644 "$ADDONS_APP_PROFILE" + } + fi + + # Reload AppArmor profile + DISABLE_APP_PROFILE="/etc/apparmor.d/disable/usr.bin.$MOZ_APP_NAME" + if [ ! -f "$DISABLE_APP_PROFILE" ] && aa-status --enabled 2>/dev/null; then + apparmor_parser -r -T -W "$APP_PROFILE" || true + fi + fi + # + # End AppArmor + # +fi + +# Move a conffile without triggering a dpkg question +mv_conffile() { + local OLDCONFFILE="$1" + local NEWCONFFILE="$2" + + [ -e "$OLDCONFFILE" ] || return 0 + + echo "Preserving user changes to $NEWCONFFILE ..." + mv -f "$NEWCONFFILE" "$NEWCONFFILE".dpkg-new + mv -f "$OLDCONFFILE" "$NEWCONFFILE" +} + +case "$1" in +configure) + # What we want to do here is migrate this conffile when: + # 1) Upgrading from any version older than Natty. Note, as all releases will track the + # the latest Firefox version in the future, we can't just simply compare package + # versions + # 2) Upgrading from any version older than Firefox 5.0~b2+build1+nobinonly-0ubuntu3 in Oneiric + PREV_MAJOR_UBUNTU_VER=`echo "$2" | sed 's/.*ubuntu\(.*\)/\1/' | sed 's/\([[:digit:]]*\)\.*\([[:digit:]]*\)\.*\([[:digit:]]*\)\.*\(.*\)/\2/'` + if dpkg --compare-versions "$2" le "5.0~b2+build1+nobinonly-0ubuntu2" || \ + ([ "x$PREV_MAJOR_UBUNTU_VER" != "x" ] && [ "$PREV_MAJOR_UBUNTU_VER" -lt "11" ]); then + mv_conffile "/etc/${MOZ_APP_NAME}/pref/firefox.js" "/etc/${MOZ_APP_NAME}/syspref.js" + fi + + # XXX: Remove this in the next upstream version, as this install location changes anyway + if dpkg --compare-versions "$2" le "7.0+build2+nobinonly-0ubuntu1"; then + if [ -d /usr/lib/firefox-7.0/distribution ] && [ ! -h /usr/lib/firefox-7.0/distribution ]; then \ + rmdir --ignore-fail-on-non-empty /usr/lib/firefox-7.0/distribution + fi + if [ ! -e /usr/lib/firefox-7.0/distribution ]; then + ln -s /usr/lib/firefox-addons/distribution /usr/lib/firefox-7.0/distribution + fi + fi +esac + +echo "Please restart all running instances of $MOZ_APP_NAME, or you will experience problems." + +if [ -d /var/run ] ; then + touch /var/run/$MOZ_APP_NAME-restart-required +fi + +#DEBHELPER# --- firefox-7.0+build2+nobinonly.orig/debian/rules +++ firefox-7.0+build2+nobinonly/debian/rules @@ -0,0 +1,514 @@ +#!/usr/bin/make -f + +MOZ_APP_BASENAME := firefox +CHANNEL := release +MOZ_MOZDIR := + +# Various build options +# 1 = Use bundled libs +MOZ_MIN_SYSDEPS ?= 1 +# 1 = Enable crashreporter (if supported) +MOZ_ENABLE_BREAKPAD ?= 1 +# 1 = Disable official branding and crash reporter (the crash reporter builds but is not enabled in application.ini) +MOZ_BUILD_UNOFFICIAL ?= 0 +# 1 = Build without jemalloc suitable for valgrind debugging +MOZ_VALGRIND ?= 0 +# 1 = Profile guided build +MOZ_BUILD_PGO ?= 0 +# 1 = Build and run the testsuite +MOZ_WANT_UNIT_TESTS ?= 1 +# 1 = Turn on debugging bits and disable optimizations +MOZ_DEBUG ?= 0 +# 1 = Disable optimizations +MOZ_NO_OPTIMIZE ?= 0 + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) +DEB_HOST_GNU_CPU ?= $(shell dpkg-architecture -qDEB_HOST_GNU_CPU) +# Other things which should be defined before including the CDBS rules +DEB_TAR_SRCDIR := mozilla +DEB_DH_STRIP_ARGS = --dbg-package=$(MOZ_APP_NAME)-dbg +# We don't want build-tree/mozilla/README to be shipped as a doc +DEB_INSTALL_DOCS_ALL := $(NULL) +# Needed for mozclient +MOZCLIENT_PROJECTNAME := $(MOZ_APP_BASENAME) +MOZCLIENT_PROJECTDIR := $(CURDIR)/debian/mozclient + +ifneq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS))) + MOZ_WANT_UNIT_TESTS=0 +endif + +-include /usr/share/cdbs/1/rules/tarball.mk +-include /usr/share/cdbs/1/rules/debhelper.mk +-include /usr/share/cdbs/1/rules/patchsys-quilt.mk +-include /usr/share/cdbs/1/class/makefile.mk +include $(CURDIR)/debian/mozclient/$(MOZ_APP_BASENAME).mk + +MOZ_OBJDIR := $(DEB_BUILDDIR)/$(MOZ_MOZDIR)/obj-$(DEB_HOST_GNU_TYPE) +MOZ_DISTDIR := $(MOZ_OBJDIR)/$(MOZ_MOZDIR)/dist + +ifeq (1,$(MOZ_VALGRIND)) + MOZ_BUILD_UNOFFICIAL = 1 +endif + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + MOZ_BUILD_PGO = 0 + MOZ_NO_OPTIMIZE = 1 +endif + +ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS))) + MOZ_NO_OPTIMIZE = 1 + MOZ_DEBUG = 1 + MOZ_BUILD_UNOFFICIAL = 1 +endif + +ifeq (1, $(MOZ_BUILD_PGO)) + # See https://bugzilla.mozilla.org/show_bug.cgi?id=602245 + MOZ_WANT_UNIT_TESTS = 0 + # We don't really want the crash reporter on for PGO builds yet + MOZ_ENABLE_BREAKPAD = 0 + MOZ_BUILD_UNOFFICIAL = 1 +endif + +include $(CURDIR)/debian/testsuite.mk + +# Define other variables used throughout the build +MOZ_APP_NAME := $(shell dpkg-parsechangelog | sed -n 's/^Source: *\(.*\)$$/\1/ p') +MOZ_APP_NAME_SUFFIX := $(shell echo $(MOZ_APP_NAME) | sed 's/\($(MOZ_APP_BASENAME)\)\-*\(.*\)/\2/' ) + +DEB_MAKE_MAKEFILE := client.mk + +# Without this, CDBS passes CFLAGS and CXXFLAGS options to client.mk, which breaks the build +DEB_MAKE_EXTRA_ARGS := + +# These normally come from autotools.mk, which we no longer include (because we +# don't want to run configure) +ifeq (1, $(MOZ_BUILD_PGO)) + DEB_MAKE_BUILD_TARGET := profiledbuild +endif +DEB_MAKE_INSTALL_TARGET := install DESTDIR=$(CURDIR)/debian/tmp +DEB_MAKE_CLEAN_TARGET := distclean + +MOZ_VERSION = $(shell cat $(DEB_BUILDDIR)/browser/config/version.txt) +MOZ_PREFIX := /usr +MOZ_LIBDIR = $(MOZ_PREFIX)/lib/$(MOZ_APP_NAME)-$(MOZ_VERSION) +MOZ_INCDIR = $(MOZ_PREFIX)/include/$(MOZ_APP_NAME)-$(MOZ_VERSION) +MOZ_IDLDIR = $(MOZ_PREFIX)/share/idl/$(MOZ_APP_NAME)-$(MOZ_VERSION) +MOZ_SDKDIR = $(MOZ_PREFIX)/lib/$(MOZ_APP_NAME)-devel-$(MOZ_VERSION) +MOZ_SERIES = $(shell echo $(MOZ_VERSION) | sed -e 's/pre//; s/[ab].*//' | cut -d '.' -f 1,2) + +NSPR_DEPENDS := $(NULL) +NSS_DEPENDS := $(NULL) +CAIRO_DEPENDS := $(NULL) +DEB_DH_GENCONTROL_ARGS = -- -Vnspr:Depends=$(NSPR_DEPENDS) -Vnss:Depends=$(NSS_DEPENDS) -Vcairo:Depends=$(CAIRO_DEPENDS) +DEB_AUTO_UPDATE_DEBIAN_CONTROL = no + +MOZ_PYTHON := $(shell which python) +DISTRIB := $(shell lsb_release -i -s) + +ifneq (,$(filter $(DISTRIB),Ubuntu)) + DISTRIB_VERSION_MAJOR := $(shell lsb_release -s -r | cut -d '.' -f 1) + DISTRIB_VERSION_MINOR := $(shell lsb_release -s -r | cut -d '.' -f 2) +endif + +ifneq ($(MOZ_APP_NAME),$(MOZ_APP_BASENAME)) + # We don't want to make builds which change MOZ_APP_NAME official + MOZ_BUILD_UNOFFICIAL = 1 +endif + +# enable the crash reporter only on i386, amd64 and armel +ifeq (,$(filter i386 amd64 armel,$(DEB_HOST_ARCH))) + MOZ_ENABLE_BREAKPAD = 0 +endif + +BRANDING = $(CHANNEL) +ifneq (,$(filter release beta, $(BRANDING))) + BRANDING = official +endif +ifeq (1,$(MOZ_BUILD_UNOFFICIAL)) +ifneq (,$(filter official aurora, $(BRANDING))) + BRANDING = unofficial +endif +endif +ifeq (official,$(BRANDING)) + MOZ_BRANDING_OPTION = --enable-official-branding +else + MOZ_BRANDING_OPTION = --with-branding=$(BRANDING_DIR) +endif +BRANDING_DIR = browser/branding/$(BRANDING) +MOZ_DISPLAY_NAME = $(shell cat $(DEB_BUILDDIR)/$(BRANDING_DIR)/locales/en-US/brand.properties \ + | grep brandShortName | sed -e 's/brandShortName\=//') + +ifeq (nightly,$(CHANNEL)) +ifeq (1,$(shell test "$(DISTRIB_VERSION_MAJOR)$(DISTRIB_VERSION_MINOR)" -lt "1104" && echo "1")) + # Disable crashreporter on nightly builds older than Natty + MOZ_ENABLE_BREAKPAD = 0 +endif +endif + +CFLAGS = -g +CXXFLAGS = -g + +LDFLAGS = $(shell echo $$LDFLAGS | sed -e 's/-Wl,-Bsymbolic-functions//') +export LDFLAGS +export DEB_BUILD_HARDENING=1 +ifeq (1,$(shell test "$(DISTRIB_VERSION_MAJOR)$(DISTRIB_VERSION_MINOR)" -ge "1104" && echo "1")) + MOZ_ENABLE_GLOBALMENU := 1 +endif +ifeq (1,$(shell test "$(DISTRIB_VERSION_MAJOR)$(DISTRIB_VERSION_MINOR)" -ge "1010" && echo "1")) + MOZ_SYSTEM_DICTDIR = /usr/share/hunspell +else + MOZ_SYSTEM_DICTDIR = /usr/share/myspell/dicts +endif +export MOZCONFIG=$(CURDIR)/debian/mozconfig +ifneq (1,$(MOZ_BUILD_UNOFFICIAL)) + export BUILD_OFFICIAL=1 +endif +ifeq (1,$(MOZ_ENABLE_BREAKPAD)) + # Needed to enable crashreported in application.ini + export MOZILLA_OFFICIAL=1 +endif +ifeq (1,$(MOZ_BUILD_PGO)) + CC = $(shell which gcc-4.5) + CXX = $(shell which g++-4.5) + export CC + export CXX +endif + +ifneq (1, $(MOZ_MIN_SYSDEPS)) +ifneq (1, $(MOZ_DEBUG)) + MOZ_USE_SYSTEM_NSPR := $(shell pkg-config --exists 'nspr >= 4.8.7'; a=$$?; if test $$a != 1; then echo 1; fi) + MOZ_USE_SYSTEM_CAIRO := $(shell pkg-config --exists 'cairo >= 1.8.8'; a=$$?; if test $$a != 1; then echo 1; fi) + MOZ_USE_SYSTEM_SQLITE := $(shell pkg-config --exists 'sqlite3 >= 3.7.1'; a=$$?; if test $$a != 1; then echo 1; fi) + MOZ_USE_SYSTEM_NSS := $(shell pkg-config --exists 'nss >= 3.12.9'; a=$$?; if test $$a != 1; then echo 1; fi) + MOZ_USE_SYSTEM_HUNSPELL := $(shell pkg-config --exists 'hunspell >= 1.2' && echo 1) +ifeq (1, $(MOZ_USE_SYSTEM_CAIRO)) + MOZ_USE_SYSTEM_CAIRO := $(shell printf "\#include <cairo-tee.h>\nint main(int argc, char *argv[]) { return 0; }" > test.c && \ + gcc `pkg-config --cflags --libs cairo` -lc -o test test.c > /dev/null 2>&1 && echo "1"; rm -f test test.c) +endif +endif +endif + +# Defines used for the Mozilla text preprocessor +DEB_DEFINES = -DMOZ_LIBDIR="$(MOZ_LIBDIR)" -DMOZ_APP_NAME="$(MOZ_APP_NAME)" -DMOZ_SERIES="$(MOZ_SERIES)" -DMOZ_APP_BASENAME="$(MOZ_APP_BASENAME)"\ + -DMOZ_INCDIR="$(MOZ_INCDIR)" -DMOZ_IDLDIR="$(MOZ_IDLDIR)" -DMOZ_VERSION="$(MOZ_VERSION)" -DDEB_HOST_ARCH="$(DEB_HOST_ARCH)" \ + -DMOZ_DISPLAY_NAME="$(MOZ_DISPLAY_NAME)" -DMOZ_SYSTEM_DICTDIR="$(MOZ_SYSTEM_DICTDIR)" \ + -DMOZ_BRANDING_OPTION="$(MOZ_BRANDING_OPTION)" -DTOPSRCDIR="$(CURDIR)" -DDEB_HOST_GNU_TYPE="$(DEB_HOST_GNU_TYPE)" \ + -DMOZ_PREFIX="$(MOZ_PREFIX)" -DMOZ_SDKDIR="$(MOZ_SDKDIR)" -DMOZ_DISTDIR="$(MOZ_DISTDIR)" \ + -DMOZ_OBJDIR="$(MOZ_OBJDIR)" -DDEB_BUILDDIR="$(DEB_BUILDDIR)" -DMOZ_PYTHON="$(MOZ_PYTHON)" -DMOZ_PROFILE_PREFIX=".mozilla/" +ifeq (1, $(MOZ_MIN_SYSDEPS)) + DEB_DEFINES += -DMOZ_MIN_SYSDEPS +endif +ifeq (1, $(MOZ_ENABLE_BREAKPAD)) + DEB_DEFINES += -DMOZ_ENABLE_BREAKPAD +endif +ifeq (1, $(MOZ_VALGRIND)) + DEB_DEFINES += -DMOZ_VALGRIND +endif +ifeq (1,$(MOZ_NO_OPTIMIZE)) + DEB_DEFINES += -DMOZ_NO_OPTIMIZE +endif +ifeq (1, $(MOZ_USE_SYSTEM_NSPR)) + DEB_DEFINES += -DMOZ_USE_SYSTEM_NSPR + NSPR_DEPENDS = libnspr4-dev +endif +ifeq (1, $(MOZ_USE_SYSTEM_CAIRO)) + DEB_DEFINES += -DMOZ_USE_SYSTEM_CAIRO + CAIRO_DEPENDS = libcairo2-dev +endif +ifeq (1, $(MOZ_USE_SYSTEM_SQLITE)) + DEB_DEFINES += -DMOZ_USE_SYSTEM_SQLITE +endif +ifeq (1, $(MOZ_USE_SYSTEM_NSS)) + DEB_DEFINES += -DMOZ_USE_SYSTEM_NSS + NSS_DEPENDS = libnss3-dev +endif +ifeq (1,$(MOZ_USE_SYSTEM_HUNSPELL)) + DEB_DEFINES += -DMOZ_USE_SYSTEM_HUNSPELL +endif +ifeq (1,$(MOZ_WANT_UNIT_TESTS)) + DEB_DEFINES += -DMOZ_WANT_UNIT_TESTS +endif +ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + DEB_DEFINES += -DDEB_BUILD_GNU_TYPE="$(DEB_BUILD_GNU_TYPE)" +endif +ifeq (1,$(MOZ_BUILD_PGO)) + DEB_DEFINES += -DMOZ_BUILD_PGO +endif +ifeq (1,$(shell test "$(DISTRIB_VERSION_MAJOR)$(DISTRIB_VERSION_MINOR)" -ge "1104" && echo "1")) + DEB_DEFINES += -DMOZ_DISABLE_GNOMEVFS + DEB_DEFINES += -DMOZ_DISABLE_CONTROL_CENTER +endif +ifneq (,$(filter aurora beta, $(CHANNEL))) + DEB_DEFINES += -DMOZ_UPDATE_CHANNEL="$(CHANNEL)" +endif +ifeq (1,$(MOZ_DEBUG)) + DEB_DEFINES += -DMOZ_DEBUG +endif +ifneq (,$(findstring armel,$(DEB_HOST_ARCH))) + DEB_DEFINES += -DDEB_ENABLE_THUMB2 +endif +ifeq (1,$(MOZ_ENABLE_GLOBALMENU)) + DEB_DEFINES += -DMOZ_ENABLE_GLOBALMENU +endif +ifeq (official, $(BRANDING)) + DEB_DEFINES += -DMOZ_OFFICIAL_BRANDING +endif +ifneq ($(MOZ_APP_NAME),$(MOZ_APP_BASENAME)) + DEB_DEFINES += -DMOZ_APP_RENAME +endif + +DEBIAN_EXECUTABLES = $(MOZ_APP_NAME)$(MOZ_LIBDIR)/firefox.sh \ + $(NULL) + +subst_files = \ + debian/usr.bin.$(MOZ_APP_NAME) \ + debian/README.Debian \ + debian/firefox.sh \ + debian/apport/blacklist \ + debian/apport/native-origins \ + debian/apport/$(MOZ_APP_NAME).py \ + debian/$(MOZ_APP_NAME).desktop \ + debian/$(MOZ_APP_NAME).xml \ + debian/$(MOZ_APP_NAME)-gnome-support.install \ + debian/$(MOZ_APP_NAME).dirs \ + debian/$(MOZ_APP_NAME).install \ + debian/$(MOZ_APP_NAME).links \ + debian/$(MOZ_APP_NAME).manpages \ + debian/$(MOZ_APP_NAME).menu \ + debian/$(MOZ_APP_NAME).postinst \ + debian/$(MOZ_APP_NAME).postrm \ + debian/$(MOZ_APP_NAME).preinst \ + debian/$(MOZ_APP_NAME).prerm \ + debian/$(MOZ_APP_NAME).1 \ + debian/$(MOZ_APP_NAME)-mozsymbols.install \ + debian/$(MOZ_APP_NAME)-dev.install \ + debian/$(MOZ_APP_NAME)-dev.links \ + debian/$(MOZ_APP_NAME).lintian-overrides \ + debian/$(MOZ_APP_NAME)-globalmenu.dirs \ + debian/mozconfig \ + $(NULL) + +pkgconfig_files = \ + debian/pkgconfig/mozilla-plugin.pc \ + debian/pkgconfig/libxul.pc \ + debian/pkgconfig/mozilla-nspr.pc \ + $(NULL) + +ifneq (1, $(MOZ_MIN_SYSDEPS)) +EXTRA_BD = \n\tlibnspr4-dev,\n\tlibnss3-dev,\n\tlibcairo2-dev,\n\tlibsqlite3-dev,\n\tlibpixman-1-dev,\n\tlibjpeg62-dev,\n\tlibpng12-dev,\n\tzlib1g-dev,\n\tlibhunspell-dev, +else +EXTRA_BD = $(NULL) +endif + +debian/control:: debian/control.in debian/control.langpacks debian/control.langpacks.unavail debian/locales.shipped debian/locales.unavailable + mv debian/control debian/control.old + sed -e 's/@EXTRA_BD@/$(EXTRA_BD)/g' \ + -e 's/@MOZ_APP_NAME@/$(MOZ_APP_NAME)/g' < debian/control.in > debian/control + + while read line ; \ + do \ + line=`echo $$line | sed 's/#.*//' | sed '/^$$/d'` ; \ + if [ ! -z "$$line" ] ; \ + then \ + language=`echo $$line | sed 's/\([^:]*\):*\([^:]*\):*\([^:]*\)/\2/'` ; \ + desc=`echo $$line | sed 's/\([^:]*\):*\([^:]*\):*\([^:]*\)/\3/'` ; \ + tmp=`echo $$language | sed 's/\-/_/'` ; \ + eval b=\$$$$tmp ; \ + if [ -z $$b ] ; \ + then \ + sed -e "s/@LANGCODE@/$$language/g" \ + -e "s/@LANG@/$$desc/g" \ + -e 's/@MOZ_APP_NAME@/$(MOZ_APP_NAME)/g' < debian/control.langpacks >> debian/control ; \ + eval $$tmp=1 ; \ + fi \ + fi \ + done < debian/locales.shipped + + while read line ; \ + do \ + line=`echo $$line | sed 's/#.*//' | sed '/^$$/d'` ; \ + if [ ! -z "$$line" ] ; \ + then \ + language=`echo $$line | sed 's/\([^:]*\):*\([^:]*\)/\1/'` ; \ + sed -e "s/@LANGCODE@/$$language/g" \ + -e 's/@MOZ_APP_NAME@/$(MOZ_APP_NAME)/g' < debian/control.langpacks.unavail >> debian/control ; \ + fi \ + done < debian/locales.unavailable ; \ + + if ! cmp -s debian/control debian/control.old ; \ + then \ + echo "debian/control file is out of date" ; \ + rm debian/control.old ; \ + exit 1 ; \ + fi + rm debian/control.old + +BRANCH := +ifneq (,$(MOZ_APP_NAME_SUFFIX)) + BRANCH = -$(MOZ_APP_NAME_SUFFIX) +endif +$(subst_files): $(foreach file, $(subst_files), $(subst $(BRANCH),,$(file).in)) + $(MOZ_PYTHON) $(DEB_BUILDDIR)/$(MOZ_MOZDIR)/config/Preprocessor.py -Fsubstitution --marker="%%" $(DEB_DEFINES) $(CURDIR)/$(subst $(BRANCH),,$@.in) > $(CURDIR)/$@ + +%.pc: WCHAR_CFLAGS = $(shell cat $(MOZ_OBJDIR)/config/autoconf.mk | grep WCHAR_CFLAGS | sed 's/^[^=]*=[[:space:]]*\(.*\)$$/\1/') +%.pc: %.pc.in debian/stamp-makefile-build + $(MOZ_PYTHON) $(DEB_BUILDDIR)/$(MOZ_MOZDIR)/config/Preprocessor.py -Fsubstitution --marker="%%" $(DEB_DEFINES) -DWCHAR_CFLAGS="$(WCHAR_CFLAGS)" $(CURDIR)/$< > $(CURDIR)/$@ + +%.pc: WCHAR_CFLAGS = $(shell cat $(MOZ_OBJDIR)/config/autoconf.mk | grep WCHAR_CFLAGS | sed 's/^[^=]*=[[:space:]]*\(.*\)$$/\1/') +%.pc: %.pc.in debian/stamp-makefile-build + $(MOZ_PYTHON) $(DEB_BUILDDIR)/$(MOZ_MOZDIR)/config/Preprocessor.py -Fsubstitution --marker="%%" $(DEB_DEFINES) -DWCHAR_CFLAGS="$(WCHAR_CFLAGS)" $(CURDIR)/$< > $(CURDIR)/$@ + +debian/usr.bin.firefox.in: + if [ '$(DISTRIB_VERSION_MAJOR)$(DISTRIB_VERSION_MINOR)' -ge '1104' ]; then \ + cp $(CURDIR)/debian/usr.bin.firefox.apparmor.11.04 $(CURDIR)/debian/usr.bin.firefox.in ; \ + elif [ '$(DISTRIB_VERSION_MAJOR)$(DISTRIB_VERSION_MINOR)' -ge '1010' ]; then \ + cp $(CURDIR)/debian/usr.bin.firefox.apparmor.10.10 $(CURDIR)/debian/usr.bin.firefox.in ; \ + elif [ "$(DISTRIB_VERSION_MAJOR)" -ge "10" ]; then \ + cp $(CURDIR)/debian/usr.bin.firefox.apparmor.10.04 $(CURDIR)/debian/usr.bin.firefox.in ; \ + else \ + cp $(CURDIR)/debian/usr.bin.firefox.apparmor.9.10 $(CURDIR)/debian/usr.bin.firefox.in ; \ + fi + +debian/stamp-buildsymbols: debian/stamp-makefile-build +ifeq (1, $(MOZ_ENABLE_BREAKPAD)) + # create build symbols + cd $(MOZ_OBJDIR); \ + $(MAKE) buildsymbols MOZ_SYMBOLS_EXTRA_BUILDID=$(shell date -d "`dpkg-parsechangelog | grep Date: | sed -e 's/^Date: //'`" +%y%m%d%H%M%S)-$(DEB_HOST_GNU_CPU) +endif + touch $@ + +compare-locales/scripts/compare-locales: + cp -r $(CURDIR)/debian/compare-locales $(CURDIR) + chmod +x $(CURDIR)/compare-locales/scripts/* + +debian/stamp-langpack-xpi-build: compare-locales/scripts/compare-locales + rm -rf $(CURDIR)/debian/l10n-mergedirs + mkdir $(CURDIR)/debian/l10n-mergedirs + + export PATH=$(CURDIR)/compare-locales/scripts/:$$PATH ; \ + export PYTHONPATH=$(CURDIR)/compare-locales/lib ; \ + cd $(MOZ_OBJDIR)/browser/locales ; \ + while read line ; \ + do \ + line=`echo $$line | sed 's/#.*//' | sed '/^$$/d'` ; \ + if [ ! -z "$$line" ] ; \ + then \ + language=`echo $$line | sed 's/\([^:]*\):*\([^:]*\):*\([^:]*\)/\1/'` ; \ + $(MAKE) merge-$$language LOCALE_MERGEDIR=$(CURDIR)/debian/l10n-mergedirs/$$language ; \ + $(MAKE) langpack-$$language LOCALE_MERGEDIR=$(CURDIR)/debian/l10n-mergedirs/$$language ; \ + fi \ + done < $(CURDIR)/debian/locales.shipped + + touch $@ + +common-build-arch:: debian/stamp-testsuite $(pkgconfig_files) + +common-build-indep:: debian/stamp-langpack-xpi-build + +common-binary-arch:: debian/stamp-buildsymbols + +common-binary-post-install-indep:: + while read line ; \ + do \ + line=`echo $$line | sed 's/#.*//' | sed '/^$$/d'` ; \ + if [ ! -z "$$line" ] ; \ + then \ + language=`echo $$line | sed 's/\([^:]*\):*\([^:]*\):*\([^:]*\)/\1/'` ; \ + pkgname=`echo $$line | sed 's/\([^:]*\):*\([^:]*\):*\([^:]*\)/\2/'` ; \ + id=`python $(CURDIR)/debian/get-xpi-id.py $(CURDIR)/$(MOZ_DISTDIR)/linux-$(DEB_HOST_GNU_CPU)/xpi/$(MOZ_APP_NAME)-$(MOZ_VERSION).$${language}.langpack.xpi` ; \ + dh_installdirs -p$(MOZ_APP_NAME)-locale-$${pkgname} usr/lib/$(MOZ_APP_NAME)-addons/extensions ; \ + cp $(CURDIR)/$(MOZ_DISTDIR)/linux-$(DEB_HOST_GNU_CPU)/xpi/$(MOZ_APP_NAME)-$(MOZ_VERSION).$${language}.langpack.xpi \ + $(CURDIR)/debian/$(MOZ_APP_NAME)-locale-$${pkgname}/usr/lib/$(MOZ_APP_NAME)-addons/extensions/$${id}.xpi ; \ + dh_installdirs -p$(MOZ_APP_NAME)-locale-$${pkgname} usr/lib/$(MOZ_APP_NAME)-addons/searchplugins/$${language} ; \ + cp -r $(CURDIR)/$(MOZ_DISTDIR)/xpi-stage/locale-$${language}/searchplugins/*.xml \ + $(CURDIR)/debian/$(MOZ_APP_NAME)-locale-$${pkgname}/usr/lib/$(MOZ_APP_NAME)-addons/searchplugins/$${language}/. ; \ + fi \ + done < $(CURDIR)/debian/locales.shipped + +binary-install/$(MOZ_APP_NAME):: + convert -resize 32x32 debian/$(MOZ_APP_NAME)/usr/share/pixmaps/$(MOZ_APP_NAME).png debian/$(MOZ_APP_NAME)/usr/share/pixmaps/$(MOZ_APP_NAME).xpm +ifeq (1,$(MOZ_ENABLE_BREAKPAD)) + install -m 0644 $(CURDIR)/debian/apport/blacklist $(CURDIR)/debian/$(MOZ_APP_NAME)/etc/apport/blacklist.d/$(MOZ_APP_NAME) +endif + install -m 0644 $(CURDIR)/debian/apport/native-origins $(CURDIR)/debian/$(MOZ_APP_NAME)/etc/apport/native-origins.d/$(MOZ_APP_NAME) + +ifeq (1, $(MOZ_ENABLE_GLOBALMENU)) +binary-install/$(MOZ_APP_NAME)-globalmenu:: + unzip -o -d debian/$(MOZ_APP_NAME)-globalmenu$(MOZ_PREFIX)/lib/$(MOZ_APP_NAME)-addons/extensions/globalmenu@ubuntu.com/ $(MOZ_DISTDIR)/xpi-stage/globalmenu.xpi + find debian/$(MOZ_APP_NAME)-globalmenu$(MOZ_PREFIX)/lib/$(MOZ_APP_NAME)-addons/extensions/globalmenu@ubuntu.com/ -type f -executable | xargs chmod -x +endif + +GNOME_SUPPORT_FILES = libmozgnome.so libnkgnomevfs.so + +binary-post-install/$(MOZ_APP_NAME):: compare + $(foreach file,$(GNOME_SUPPORT_FILES),rm -fv debian/$(MOZ_APP_NAME)/usr/lib/firefox-*/components/$(file);) true +# XXX: Would be nice to not do this here, but the preprocessor only supports basic comparison operators for equality + if [ '$(DISTRIB_VERSION_MAJOR)$(DISTRIB_VERSION_MINOR)' -ge '1110' ] ; then \ + mv $(CURDIR)/debian/$(MOZ_APP_NAME)$(MOZ_LIBDIR)/distribution $(CURDIR)/debian/$(MOZ_APP_NAME)$(MOZ_PREFIX)/lib/$(MOZ_APP_NAME)-addons/ ; \ + dh_link -p$(MOZ_APP_NAME) $(MOZ_PREFIX)/lib/$(MOZ_APP_NAME)-addons/distribution $(MOZ_LIBDIR)/distribution ; \ + fi + +ifneq (1, $(MOZ_USE_SYSTEM_NSPR)) +binary-post-install/$(MOZ_APP_NAME)-dev:: + rm -f debian/$(MOZ_APP_NAME)-dev$(MOZ_INCDIR)/nspr/md/_linux.cfg + dh_link -p$(MOZ_APP_NAME)-dev $(MOZ_INCDIR)/nspr/prcpucfg.h $(MOZ_INCDIR)/nspr/md/_linux.cfg +endif + +common-binary-predeb-arch:: + $(foreach file,$(DEBIAN_EXECUTABLES),chmod a+x debian/$(file);) + # we want the gnome dependencies not to be in the main package at shlibdeps runtime, hence we dont + # install them at binary-install/* stage, but copy them over _after_ the shlibdeps had been generated + $(foreach file,$(GNOME_SUPPORT_FILES),mv debian/$(MOZ_APP_NAME)-gnome-support$(MOZ_LIBDIR)/components/$(file) debian/$(MOZ_APP_NAME)$(MOZ_LIBDIR)/components/;) true + touch $@ + +ifneq (1, $(MOZ_USE_SYSTEM_NSS)) +binary-predeb/$(MOZ_APP_NAME):: + $(foreach lib,libsoftokn3.so libfreebl3.so libnssdbm3.so, \ + LD_LIBRARY_PATH=debian/$(MOZ_APP_NAME)$(MOZ_LIBDIR):$$LD_LIBRARY_PATH \ + $(MOZ_DISTDIR)/bin/shlibsign -v -i debian/$(MOZ_APP_NAME)$(MOZ_LIBDIR)/$(lib);) +endif + +pre-build:: $(subst_files) + + # KDE integration + cp $(DEB_SRCDIR)/toolkit/content/widgets/dialog.xml $(DEB_SRCDIR)/toolkit/content/widgets/dialog-kde.xml + cp $(DEB_SRCDIR)/toolkit/content/widgets/preferences.xml $(DEB_SRCDIR)/toolkit/content/widgets/preferences-kde.xml + cp $(DEB_SRCDIR)/browser/base/content/browser.xul $(DEB_SRCDIR)/browser/base/content/browser-kde.xul + mkdir -p $(DEB_SRCDIR)/extensions/globalmenu + (cd debian/globalmenu && tar -cvhf - .) | (cd $(DEB_SRCDIR)/extensions/globalmenu && tar -xf -) + +get-compare-locales: + mkdir -p compare-locales-tmp + hg clone http://hg.mozilla.org/build/compare-locales compare-locales-tmp +ifdef HGTAG + cd compare-locales-tmp; \ + hg update $(HGTAG); \ + printf "TAG=%s" $(HGTAG) > REV +else + cd compare-locales-tmp; \ + CHANGESET=`hg summary | grep parent | cut -d ' ' -f 2 | cut -d : -f 2`; \ + printf "CHANGESET=%s" $$CHANGESET > REV +endif + cd compare-locales-tmp; \ + find . -name *.pyc | xargs rm -f; \ + rm -rf .hg .hgtags .hgignore tests *.py + rm -rf debian/compare-locales + mv compare-locales-tmp debian/compare-locales + +refresh-supported-locales: pre-build +ifdef LANGPACK_O_MATIC + perl debian/refresh-supported-locales.pl -s $(CURDIR)/$(DEB_BUILDDIR)/browser/locales/shipped-locales -l $(LANGPACK_O_MATIC) +else + perl debian/refresh-supported-locales.pl -s $(CURDIR)/$(DEB_BUILDDIR)/browser/locales/shipped-locales +endif + +clean:: + rm -f $(subst_files) + rm -f debian/usr.bin.firefox.in + rm -f debian/stamp-* + rm -rf debian/l10n-mergedirs + rm -rf compare-locales --- firefox-7.0+build2+nobinonly.orig/debian/firefox.install.in +++ firefox-7.0+build2+nobinonly/debian/firefox.install.in @@ -0,0 +1,41 @@ +debian/tmp@MOZ_LIBDIR@/icons +debian/tmp@MOZ_LIBDIR@/chrome/icons +debian/tmp@MOZ_LIBDIR@/components/*.manifest +debian/tmp@MOZ_LIBDIR@/components/*.so +debian/tmp@MOZ_LIBDIR@/omni.jar +debian/tmp@MOZ_LIBDIR@/*.so +debian/tmp@MOZ_LIBDIR@/@MOZ_APP_NAME@ +%%ifdef MOZ_ENABLE_BREAKPAD +debian/tmp@MOZ_LIBDIR@/crashreporter +%%endif +debian/tmp@MOZ_LIBDIR@/plugin-container +debian/tmp@MOZ_LIBDIR@/chrome.manifest +debian/tmp@MOZ_LIBDIR@/searchplugins/* /usr/lib/@MOZ_APP_NAME@-addons/searchplugins/en-US +debian/tmp@MOZ_LIBDIR@/blocklist.xml +debian/tmp@MOZ_LIBDIR@/dependentlibs.list +debian/tmp@MOZ_LIBDIR@/extensions/\{972ce4c6-7e08-4474-a285-3208198ce6fd\} /usr/lib/@MOZ_APP_NAME@-addons/extensions +%%if MOZ_UPDATE_CHANNEL == beta +%%define SHIP_TESTPILOT +%%elif MOZ_UPDATE_CHANNEL == aurora +%%define SHIP_TESTPILOT +%%endif +%%ifdef SHIP_TESTPILOT +debian/tmp@MOZ_LIBDIR@/distribution/extensions/testpilot@labs.mozilla.com.xpi /usr/lib/@MOZ_APP_NAME@-addons/extensions +%%endif +debian/tmp@MOZ_LIBDIR@/*.ini + +%%ifdef MOZ_UPDATE_CHANNEL +debian/tmp@MOZ_LIBDIR@/defaults/pref/channel-prefs.js +%%endif + +debian/@MOZ_APP_NAME@.desktop /usr/share/applications + +debian/apport/@MOZ_APP_NAME@.py /usr/share/apport/package-hooks/ + +debian/firefox.sh @MOZ_LIBDIR@ +debian/distribution.ini @MOZ_LIBDIR@/distribution +debian/vendor.js @MOZ_LIBDIR@/defaults/pref + +debian/syspref.js /etc/@MOZ_APP_NAME@ + +debian/usr.bin.@MOZ_APP_NAME@ /etc/apparmor.d --- firefox-7.0+build2+nobinonly.orig/debian/get-xpi-id.py +++ firefox-7.0+build2+nobinonly/debian/get-xpi-id.py @@ -0,0 +1,25 @@ +#!/usr/bin/python + +import sys +import xml.dom.minidom +import os +import zipfile + +if __name__ == '__main__': + if not len(sys.argv) == 2: + print "Must specify an xpi" + exit(1) + + try: + dom_doc = xml.dom.minidom.parseString(zipfile.ZipFile(sys.argv[1]).open('install.rdf').read()) + except ExpatError as e: + exit(1) + + try: + attr = dom_doc.getElementsByTagName('RDF:Description')[0].attributes['em:id'] + except IndexError: + attr = dom_doc.getElementsByTagName('Description')[0].attributes['em:id'] + + assert attr.value + print "%s" % attr.value + exit(0) --- firefox-7.0+build2+nobinonly.orig/debian/usr.bin.firefox.apparmor.11.04 +++ firefox-7.0+build2+nobinonly/debian/usr.bin.firefox.apparmor.11.04 @@ -0,0 +1,141 @@ +# vim:syntax=apparmor +# Author: Jamie Strandboge <jamie@canonical.com> + +#include <tunables/global> + +# We want to confine the binaries that match: +# @MOZ_LIBDIR@/@MOZ_APP_NAME@ +# @MOZ_LIBDIR@/firefox +# but not: +# @MOZ_LIBDIR@/firefox.sh +@MOZ_LIBDIR@/firefox{,*[^s][^h]} { + #include <abstractions/audio> + #include <abstractions/cups-client> + #include <abstractions/dbus-session> + #include <abstractions/gnome> + #include <abstractions/nameservice> + + # Addons + #include <abstractions/ubuntu-browsers.d/firefox> + + # for networking + network inet stream, + network inet6 stream, + @{PROC}/[0-9]*/net/if_inet6 r, + @{PROC}/[0-9]*/net/ipv6_route r, + + # should maybe be in abstractions + /etc/ r, + /etc/mime.types r, + /etc/mailcap r, + /etc/xdg/*buntu/applications/defaults.list r, # for all derivatives + /usr/share/xubuntu/applications/defaults.list r, + owner @{HOME}/.local/share/applications/defaults.list r, + owner @{HOME}/.local/share/applications/mimeapps.list r, + owner @{HOME}/.local/share/applications/mimeinfo.cache r, + owner /tmp/** m, + owner /var/tmp/** m, + /tmp/.X[0-9]*-lock r, + + /etc/timezone r, + /etc/wildmidi/wildmidi.cfg r, + + # firefox specific + /etc/firefox*/ r, + /etc/firefox*/** r, + /etc/xul-ext/** r, + /etc/xulrunner-2.0*/ r, + /etc/xulrunner-2.0*/** r, + /etc/gre.d/ r, + /etc/gre.d/* r, + + # noisy + deny @MOZ_LIBDIR@/** w, + deny /usr/lib/@MOZ_APP_NAME@-addons/** w, + deny /usr/lib/xulrunner-addons/** w, + deny /usr/lib/xulrunner-*/components/*.tmp w, + deny /.suspended r, + deny /boot/initrd.img* r, + deny /boot/vmlinuz* r, + deny /var/cache/fontconfig/ w, + deny @{HOME}/.local/share/recently-used.xbel r, + + # TODO: investigate + deny /usr/bin/gconftool-2 x, + + # These are needed when a new user starts firefox and firefox.sh is used + @MOZ_LIBDIR@/** ixr, + /usr/bin/basename ixr, + /usr/bin/dirname ixr, + /usr/bin/pwd ixr, + /sbin/killall5 ixr, + /bin/which ixr, + /usr/bin/tr ixr, + @{PROC}/ r, + @{PROC}/[0-9]*/cmdline r, + @{PROC}/[0-9]*/mountinfo r, + @{PROC}/[0-9]*/stat r, + owner @{PROC}/[0-9]*/task/[0-9]*/stat r, + @{PROC}/[0-9]*/status r, + @{PROC}/filesystems r, + owner @{HOME}/.thumbnails/*/*.png r, + + /etc/mtab r, + /etc/fstab r, + + # Needed for the crash reporter + owner @{PROC}/[0-9]*/environ r, + owner @{PROC}/[0-9]*/auxv r, + /etc/lsb-release r, + /usr/bin/expr ix, + /sys/devices/system/cpu/ r, + /sys/devices/system/cpu/** r, + + # Needed for container to work in xul builds + /usr/lib/xulrunner-*/plugin-container ixr, + + # allow access to documentation and other files the user may want to look + # at in /usr + /usr/ r, + /usr/** r, + + # so browsing directories works + / r, + /**/ r, + + # Default profile allows downloads to ~/Downloads and uploads from ~/Public + owner @{HOME}/ r, + owner @{HOME}/Public/ r, + owner @{HOME}/Public/* r, + owner @{HOME}/Downloads/ r, + owner @{HOME}/Downloads/* rw, + + # per-user firefox configuration + owner @{HOME}/.{firefox,mozilla}/ rw, + owner @{HOME}/.{firefox,mozilla}/** rw, + owner @{HOME}/.{firefox,mozilla}/**/*.{db,parentlock,sqlite}* k, + owner @{HOME}/.{firefox,mozilla}/plugins/** rm, + owner @{HOME}/.{firefox,mozilla}/**/plugins/** rm, + owner @{HOME}/.config/ibus/bus/ w, + owner @{HOME}/.gnome2/firefox*-bin-* rw, + + # + # Extensions + # /usr/share/.../extensions/... is already covered by '/usr/** r', above. + # Allow 'x' for downloaded extensions, but inherit policy for safety + owner @{HOME}/.mozilla/**/extensions/** mixr, + + deny @MOZ_LIBDIR@/update.test w, + deny /usr/lib/mozilla/extensions/**/ w, + deny /usr/lib/xulrunner-addons/extensions/**/ w, + deny /usr/share/mozilla/extensions/**/ w, + deny /usr/share/mozilla/ w, + + # Miscellaneous (to be abstracted) + /usr/bin/mkfifo Uxr, # TODO: investigate + /bin/ps Uxr, # TODO: child profile + /bin/uname Uxr, # TODO: child profile + + # Site-specific additions and overrides. See local/README for details. + #include <local/usr.bin.firefox> +} --- firefox-7.0+build2+nobinonly.orig/debian/docs +++ firefox-7.0+build2+nobinonly/debian/docs @@ -0,0 +1 @@ +debian/MPL --- firefox-7.0+build2+nobinonly.orig/debian/usr.bin.firefox.apparmor.10.10 +++ firefox-7.0+build2+nobinonly/debian/usr.bin.firefox.apparmor.10.10 @@ -0,0 +1,142 @@ +# vim:syntax=apparmor +# Author: Jamie Strandboge <jamie@canonical.com> + +#include <tunables/global> + +# We want to confine the binaries that match: +# @MOZ_LIBDIR@/@MOZ_APP_NAME@ +# @MOZ_LIBDIR@/firefox +# but not: +# @MOZ_LIBDIR@/firefox.sh +@MOZ_LIBDIR@/firefox{,*[^s][^h]} { + #include <abstractions/audio> + #include <abstractions/base> + #include <abstractions/cups-client> + #include <abstractions/dbus-session> + #include <abstractions/fonts> + #include <abstractions/freedesktop.org> + #include <abstractions/gnome> + #include <abstractions/nameservice> + #include <abstractions/user-tmp> + + # Addons + #include <abstractions/ubuntu-browsers.d/firefox> + + # for networking + network inet stream, + network inet6 stream, + @{PROC}/[0-9]*/net/if_inet6 r, + @{PROC}/[0-9]*/net/ipv6_route r, + + # should maybe be in abstractions + /etc/ r, + /etc/mime.types r, + /etc/mailcap r, + /etc/xdg/{,xdg-}xubuntu/applications/defaults.list r, + owner @{HOME}/.local/share/applications/defaults.list r, + owner @{HOME}/.local/share/applications/mimeapps.list r, + owner @{HOME}/.local/share/applications/mimeinfo.cache r, + owner /tmp/** m, + owner /var/tmp/** m, + /tmp/.X[0-9]*-lock r, + + /etc/timezone r, + /etc/wildmidi/wildmidi.cfg r, + + # firefox specific + /etc/firefox*/ r, + /etc/firefox*/** r, + /etc/xul-ext/** r, + /etc/xulrunner-2.0*/ r, + /etc/xulrunner-2.0*/** r, + /etc/gre.d/ r, + /etc/gre.d/* r, + + # noisy + deny @MOZ_LIBDIR@/** w, + deny /usr/lib/@MOZ_APP_NAME@-addons/** w, + deny /usr/lib/xulrunner-addons/** w, + deny /usr/lib/xulrunner-*/components/*.tmp w, + deny /.suspended r, + deny /boot/initrd.img* r, + deny /boot/vmlinuz* r, + deny /var/cache/fontconfig/ w, + deny @{HOME}/.local/share/recently-used.xbel r, + + # TODO: investigate + deny /usr/bin/gconftool-2 x, + + # These are needed when a new user starts firefox and firefox.sh is used + @MOZ_LIBDIR@/** ixr, + /usr/bin/basename ixr, + /usr/bin/dirname ixr, + /usr/bin/pwd ixr, + /sbin/killall5 ixr, + /bin/which ixr, + /usr/bin/tr ixr, + @{PROC}/ r, + @{PROC}/[0-9]*/cmdline r, + @{PROC}/[0-9]*/mountinfo r, + @{PROC}/[0-9]*/stat r, + owner @{PROC}/[0-9]*/task/[0-9]*/stat r, + @{PROC}/[0-9]*/status r, + @{PROC}/filesystems r, + owner @{HOME}/.thumbnails/*/*.png r, + + /etc/mtab r, + /etc/fstab r, + + # Needed for the crash reporter + owner @{PROC}/[0-9]*/environ r, + owner @{PROC}/[0-9]*/auxv r, + /etc/lsb-release r, + /usr/bin/expr ix, + + # Needed for container to work in xul builds + /usr/lib/xulrunner-*/plugin-container ixr, + + # allow access to documentation and other files the user may want to look + # at in /usr + /usr/ r, + /usr/** r, + + # so browsing directories works + / r, + /**/ r, + + # Default profile allows downloads to ~/Downloads and uploads from ~/Public + owner @{HOME}/ r, + owner @{HOME}/Public/ r, + owner @{HOME}/Public/* r, + owner @{HOME}/Downloads/ r, + owner @{HOME}/Downloads/* rw, + + # per-user firefox configuration + owner @{HOME}/.{firefox,mozilla}/ rw, + owner @{HOME}/.{firefox,mozilla}/** rw, + owner @{HOME}/.{firefox,mozilla}/**/*.{db,parentlock,sqlite}* k, + owner @{HOME}/.{firefox,mozilla}/plugins/** rm, + owner @{HOME}/.{firefox,mozilla}/**/plugins/** rm, + owner @{HOME}/.config/ibus/bus/ w, + owner @{HOME}/.gnome2/firefox*-bin-* rw, + + # + # Extensions + # /usr/share/.../extensions/... is already covered by '/usr/** r', above. + # Allow 'x' for downloaded extensions, but inherit policy for safety + owner @{HOME}/.mozilla/**/extensions/** mixr, + + deny @MOZ_LIBDIR@/update.test w, + deny /usr/lib/mozilla/extensions/**/ w, + deny /usr/lib/xulrunner-addons/extensions/**/ w, + deny /usr/share/mozilla/extensions/**/ w, + deny /usr/share/mozilla/ w, + + # Miscellaneous (to be abstracted) + /usr/bin/mkfifo Uxr, # TODO: investigate + /bin/ps Uxr, # TODO: child profile + /bin/uname Uxr, # TODO: child profile + + # Site-specific additions and overrides. See local/README for details. + #include <local/usr.bin.firefox> +} --- firefox-7.0+build2+nobinonly.orig/debian/firefox.links.in +++ firefox-7.0+build2+nobinonly/debian/firefox.links.in @@ -0,0 +1,10 @@ +/usr/lib/@MOZ_APP_NAME@-addons/searchplugins /usr/lib/@MOZ_APP_NAME@-addons/searchplugins/common +/usr/lib/@MOZ_APP_NAME@-addons/extensions @MOZ_LIBDIR@/extensions +/usr/lib/@MOZ_APP_NAME@-addons/plugins @MOZ_LIBDIR@/plugins +/usr/lib/@MOZ_APP_NAME@-addons/searchplugins @MOZ_LIBDIR@/searchplugins +/usr/lib/@MOZ_APP_NAME@-addons/searchplugins @MOZ_LIBDIR@/distribution/searchplugins +@MOZ_SYSTEM_DICTDIR@ @MOZ_LIBDIR@/dictionaries +/usr/share/hyphen @MOZ_LIBDIR@/hyphenation +@MOZ_LIBDIR@/firefox.sh /usr/bin/@MOZ_APP_NAME@ +@MOZ_LIBDIR@/icons/mozicon128.png /usr/share/pixmaps/@MOZ_APP_NAME@.png +/etc/@MOZ_APP_NAME@/syspref.js @MOZ_LIBDIR@/defaults/pref/syspref.js --- firefox-7.0+build2+nobinonly.orig/debian/locales.shipped +++ firefox-7.0+build2+nobinonly/debian/locales.shipped @@ -0,0 +1,78 @@ +af:af:Afrikaans +ar:ar:Arabic +ast:ast:Asturian +be:be:Belarusian +bg:bg:Bulgarian +bn-BD:bn:Bengali +bn-IN:bn:Bengali +br:br:Breton +bs:bs:Bosnian +ca:ca:Catalan; Valencian +cs:cs:Czech +cy:cy:Welsh +da:da:Danish +de:de:German +el:el:Greek +en-GB:en:English +en-ZA:en:English +eo:eo:Esperanto +es-AR:es:Spanish; Castilian +es-CL:es:Spanish; Castilian +es-ES:es:Spanish; Castilian +es-MX:es:Spanish; Castilian +et:et:Estonian +eu:eu:Basque +fa:fa:Persian +fi:fi:Finnish +fr:fr:French +fy-NL:fy:Western Frisian +ga-IE:ga:Irish +gd:gd:Gaelic; Scottish Gaelic +gl:gl:Galician +gu-IN:gu:Gujarati +he:he:Hebrew +hi-IN:hi:Hindi +hr:hr:Croatian +hu:hu:Hungarian +hy-AM:hy:Armenian +id:id:Indonesian +is:is:Icelandic +it:it:Italian +ja:ja:Japanese +kk:kk:Kazakh +kn:kn:Kannada +ko:ko:Korean +ku:ku:Kurdish +lg:lg:Ganda +lt:lt:Lithuanian +lv:lv:Latvian +mai:mai:Maithili +mk:mk:Macedonian +ml:ml:Malayalam +mr:mr:Marathi +nb-NO:nb:Norwegian +nl:nl:Dutch; Flemish +nn-NO:nn:Norwegian Nynorsk; Nynorsk, Norwegian +nso:nso:Sotho, Northern +or:or:Oriya +pa-IN:pa:Panjabi; Punjabi +pl:pl:Polish +pt-BR:pt:Portuguese +pt-PT:pt:Portuguese +ro:ro:Romanian +ru:ru:Russian +si:si:Sinhala; Sinhalese +sk:sk:Slovak +sl:sl:Slovenian +sq:sq:Albanian +sr:sr:Serbian +sv-SE:sv:Swedish +ta:ta:Tamil +te:te:Telugu +th:th:Thai +tr:tr:Turkish +uk:uk:Ukrainian +vi:vi:Vietnamese +zh-CN:zh-hans:Simplified Chinese +zh-TW:zh-hant:Traditional Chinese +zu:zu:Zulu --- firefox-7.0+build2+nobinonly.orig/debian/mozconfig.in +++ firefox-7.0+build2+nobinonly/debian/mozconfig.in @@ -0,0 +1,116 @@ +%%ifdef DEB_BUILD_GNU_TYPE +ac_add_options --build=@DEB_BUILD_GNU_TYPE@ +%%endif +ac_add_options --host=@DEB_HOST_GNU_TYPE@ +ac_add_options --prefix=@MOZ_PREFIX@ +ac_add_options --localstatedir=/var +ac_add_options --libexecdir=@MOZ_LIBDIR@ +ac_add_options --with-l10n-base=@TOPSRCDIR@/@DEB_BUILDDIR@/l10n +ac_add_options --disable-maintainer-mode +ac_add_options --disable-dependency-tracking +ac_add_options --disable-silent-rules +ac_add_options --srcdir=@TOPSRCDIR@/@DEB_BUILDDIR@ +mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/@MOZ_OBJDIR@ +ac_add_options --disable-elf-dynstr-gc +ac_add_options --disable-install-strip +ac_add_options --disable-strip +ac_add_options --disable-updater +ac_add_options --enable-application=browser +ac_add_options --enable-default-toolkit=cairo-gtk2 +ac_add_options --enable-startup-notification +ac_add_options --enable-pango +ac_add_options --enable-svg +ac_add_options --enable-mathml +ac_add_options --enable-safe-browsing +ac_add_options --with-distribution-id=com.ubuntu +%%ifdef DEB_ENABLE_THUMB2 +ac_add_options --enable-thumb2 +%%endif +%%ifndef MOZ_MIN_SYSDEPS +ac_add_options --with-system-jpeg=/usr +ac_add_options --with-system-png=/usr +ac_add_options --with-system-zlib=/usr +%%else +ac_add_options --without-system-jpeg +ac_add_options --without-system-png +ac_add_options --without-system-zlib +%%endif +%%ifdef MOZ_NO_OPTIMIZE +ac_add_options --disable-optimize +%%else +%%ifndef MOZ_VALGRIND +ac_add_options --enable-optimize +%%else +ac_add_options --enable-optimize="-g -O -freorder-blocks" +%%endif +%%endif +%%ifdef MOZ_VALGRIND +ac_add_options --disable-jemalloc +ac_add_options --enable-valgrind +mk_add_options MOZ_MAKE_FLAGS=-j4 +%%endif +%%ifdef MOZ_WANT_UNIT_TESTS +ac_add_options --enable-tests +ac_add_options --enable-mochitest +ac_add_options --enable-ipdl-tests +%%else +ac_add_options --disable-tests +ac_add_options --disable-mochitest +ac_add_options --disable-ipdl-tests +%%endif +%%ifdef MOZ_USE_SYSTEM_CAIRO +ac_add_options --enable-system-cairo +%%else +ac_add_options --disable-system-cairo +%%endif +%%ifdef MOZ_USE_SYSTEM_NSPR +ac_add_options --with-system-nspr +%%else +ac_add_options --without-system-nspr +%%endif +%%ifdef MOZ_USE_SYSTEM_NSS +ac_add_options --with-system-nss +%%else +ac_add_options --without-system-nss +%%endif +%%ifdef MOZ_USE_SYSTEM_SQLITE +ac_add_options --enable-system-sqlite +%%else +ac_add_options --disable-system-sqlite +%%endif +%%ifdef MOZ_USE_SYSTEM_HUNSPELL +ac_add_options --enable-system-hunspell +%%else +ac_add_options --disable-system-hunspell +%%endif +%%ifdef MOZ_ENABLE_BREAKPAD +ac_add_options --enable-crashreporter +%%else +ac_add_options --disable-crashreporter +%%endif +ac_add_options @MOZ_BRANDING_OPTION@ +%%ifdef MOZ_BUILD_PGO +mk_add_options PROFILE_GEN_SCRIPT='xvfb-run -a @MOZ_PYTHON@ @TOPSRCDIR@/@MOZ_OBJDIR@/_profile/pgo/profileserver.py' +%%endif +%%ifdef MOZ_DISABLE_GNOMEVFS +ac_add_options --disable-gnomevfs +ac_add_options --enable-gio +%%else +ac_add_options --enable-gnomevfs +ac_add_options --disable-gio +%%endif +%%ifdef MOZ_UPDATE_CHANNEL +ac_add_options --enable-update-channel=@MOZ_UPDATE_CHANNEL@ +%%endif +%%ifdef MOZ_DEBUG +ac_add_options --enable-debug +%%else +ac_add_options --disable-debug +%%endif +ac_add_options --disable-elf-hack +%%ifdef MOZ_ENABLE_GLOBALMENU +ac_add_options --enable-extensions=default,globalmenu +%%endif +%%ifdef MOZ_APP_RENAME +ac_add_options --with-app-name=@MOZ_APP_NAME@ +%%endif --- firefox-7.0+build2+nobinonly.orig/debian/firefox-dev.install.in +++ firefox-7.0+build2+nobinonly/debian/firefox-dev.install.in @@ -0,0 +1,16 @@ +debian/tmp@MOZ_INCDIR@/ +debian/tmp@MOZ_IDLDIR@/ + +debian/tmp@MOZ_SDKDIR@/sdk/lib/*.a +debian/tmp@MOZ_SDKDIR@/*.h +debian/tmp@MOZ_SDKDIR@/bin +debian/tmp@MOZ_SDKDIR@/idl +debian/tmp@MOZ_SDKDIR@/include +debian/tmp@MOZ_SDKDIR@/lib +debian/tmp@MOZ_SDKDIR@/sdk/bin/ + +%%ifndef MOZ_USE_SYSTEM_NSPR +debian/pkgconfig/mozilla-nspr.pc /usr/lib/pkgconfig +%%endif +debian/pkgconfig/mozilla-plugin.pc /usr/lib/pkgconfig +debian/pkgconfig/libxul.pc /usr/lib/pkgconfig --- firefox-7.0+build2+nobinonly.orig/debian/firefox.postrm.in +++ firefox-7.0+build2+nobinonly/debian/firefox.postrm.in @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e + +if [ "$1" = "purge" ]; then + APP_PROFILE="usr.bin.@MOZ_APP_NAME@" + rm -f /etc/apparmor.d/force-complain/$APP_PROFILE || true + rm -f /etc/apparmor.d/disable/$APP_PROFILE || true + rm -f /etc/apparmor.d/local/$APP_PROFILE || true + rm -f "/etc/apparmor.d/abstractions/ubuntu-browsers.d/@MOZ_APP_NAME@" || true + rmdir /etc/apparmor.d/local 2>/dev/null || true +fi + +#DEBHELPER# --- firefox-7.0+build2+nobinonly.orig/debian/testsuite.mk +++ firefox-7.0+build2+nobinonly/debian/testsuite.mk @@ -0,0 +1,58 @@ +#!/usr/bin/make -f + +LOCALE := en_US.UTF-8 +LOCDIR = $(CURDIR)/$(MOZ_DISTDIR)/.locales + +TESTS := $(NULL) +ifeq (1,$(MOZ_WANT_UNIT_TESTS)) + TESTS += check xpcshell-tests jstestbrowser reftest crashtest mochitest +endif + +debian/stamp-testsuite: $(addprefix debian/stamp-,$(TESTS)) + +$(addprefix debian/stamp-,$(TESTS)): debian/stamp-makefile-build + +# Required for js/src/trace-tests/sunspider/check-date-format-tofte.js +$(addprefix debian/stamp-,check jstestbrowser): export TZ = :/usr/share/zoneinfo/posix/US/Pacific + +$(LOCDIR)/%: + mkdir -p $(LOCDIR) + localedef -f $(shell echo $(notdir $@) | cut -d '.' -f 2) -i $(shell echo $(notdir $@) | cut -d '.' -f 1) $@ + +# Setup locales for tests which need it +$(addprefix debian/stamp-,xpcshell-tests jstestbrowser reftest): $(LOCDIR)/$(LOCALE) +$(addprefix debian/stamp-,xpcshell-tests jstestbrowser reftest): export LOCPATH=$(LOCDIR) +$(addprefix debian/stamp-,xpcshell-tests jstestbrowser reftest): export LC_ALL=$(LOCALE) + +# Disable tests that are known to fail +$(addprefix debian/stamp-,xpcshell-tests): debian/stamp-xpcshell-tests-disable + +# Tests that need a X server +$(addprefix debian/stamp-,jstestbrowser reftest crashtest mochitest): WRAPPER = xvfb-run -s "-screen 0 1024x768x24" + +# Run the test! +$(addprefix debian/stamp-,$(TESTS)): + HOME="$(CURDIR)/$(MOZ_DISTDIR)" \ + $(WRAPPER) $(MAKE) -C $(CURDIR)/$(MOZ_OBJDIR) $(subst debian/stamp-,,$@) || true + touch $@ + +debian/stamp-xpcshell-tests-disable: debian/stamp-makefile-build + # Hangs without network access + rm -f $(CURDIR)/$(MOZ_OBJDIR)$(MOZ_MOZDIR)/_tests/xpcshell/toolkit/components/places/tests/unit/test_404630.js + + # FIXME: IPC tests seem to hang in the buildd's + rm -rf $(CURDIR)/$(MOZ_OBJDIR)$(MOZ_MOZDIR)/_tests/xpcshell/chrome/test/unit_ipc + rm -rf $(CURDIR)/$(MOZ_OBJDIR)$(MOZ_MOZDIR)/_tests/xpcshell/ipc/testshell/tests + rm -rf $(CURDIR)/$(MOZ_OBJDIR)$(MOZ_MOZDIR)/_tests/xpcshell/toolkit/components/contentprefs/tests/unit_ipc + rm -rf $(CURDIR)/$(MOZ_OBJDIR)$(MOZ_MOZDIR)/_tests/xpcshell/ipc + rm -rf $(CURDIR)/$(MOZ_OBJDIR)$(MOZ_MOZDIR)/_tests/xpcshell/netwerk/cookie/test/unit_ipc + rm -rf $(CURDIR)/$(MOZ_OBJDIR)$(MOZ_MOZDIR)/_tests/xpcshell/netwerk/test/unit_ipc + rm -rf $(CURDIR)/$(MOZ_OBJDIR)$(MOZ_MOZDIR)/_tests/xpcshell/modules/libpref/test/unit_ipc + rm -rf $(CURDIR)/$(MOZ_OBJDIR)$(MOZ_MOZDIR)/_tests/xpcshell/extensions/cookie/test/unit_ipc + rm -rf $(CURDIR)/$(MOZ_OBJDIR)$(MOZ_MOZDIR)/_tests/xpcshell/uriloader/exthandler/tests/unit_ipc + rm -rf $(CURDIR)/$(MOZ_OBJDIR)$(MOZ_MOZDIR)/_tests/xpcshell/content/base/test/unit_ipc + + # Needs GConf to be running. I guess we need to start with dbus-launch to fix this + rm -f $(CURDIR)/$(MOZ_OBJDIR)$(MOZ_MOZDIR)/_tests/xpcshell/browser/components/shell/test/unit/test_421977.js + rm -f $(CURDIR)/$(MOZ_OBJDIR)$(MOZ_MOZDIR)/_tests/xpcshell/uriloader/exthandler/tests/unit/test_handlerService.js + touch $@ --- firefox-7.0+build2+nobinonly.orig/debian/firefox.1.in +++ firefox-7.0+build2+nobinonly/debian/firefox.1.in @@ -0,0 +1,71 @@ +.TH FIREFOX 1 2011-02-09 @MOZ_APP_NAME@ +.SH NAME +@MOZ_APP_NAME@ \- a free and open source web browser from Mozilla + +.SH SYNOPSIS +.B @MOZ_APP_NAME@ +[\fIOPTIONS\fR] [\fIurl\fR] + +.SH DESCRIPTION +See http://support.mozilla.com/ for help using the browser. +This manpage only describes how to run it. + +.SH OPTIONS +.TP +\fB\-h, \-\-help\fR +Prints the command line options. +.TP +\fB\-g, \-\-debug\fR +Starts \fB@MOZ_APP_NAME@\fR in a debugger. +.TP +\fB\-d, \-\-debugger\fR +Specify the debugger in which to start \fB@MOZ_APP_NAME@\fR. The default is gdb. Used in conjunction with \fB-g\fR. +.TP +\fB\-a, \-\-debugger\-args\fR +Specify arguments to pass to the debugger. Used in conjunction with \fB-g\fR. +.TP +\fB\-no\-remote\fR +Don't connect to any other running instances of \fB@MOZ_APP_NAME@\fR. Use this if you want to run \fB@MOZ_APP_NAME@\fR +in an entirely new process. By default, \fB@MOZ_APP_NAME@\fR will delegate a command to an already running instance. +.TP +\fB\-ProfileManager\fR +Start the profilemanager. Use this to choose the profile you would like to run \fB@MOZ_APP_NAME@\fR with. You +will need to also use \fB\-no\-remote\fR if there is already a running \fB@MOZ_APP_NAME@\fR instance. +.TP +\fB\-P\fR \fIprofile\fR +Start \fB@MOZ_APP_NAME@\fR with the profile named \fIprofile\fR. Will start the profile manager if a valid profile +name is not specified. You will need to also use \fB\-no\-remote\fR if there is already a running \fB@MOZ_APP_NAME@\fR instance. +.TP +\fB\-safe\-mode\fR +Start \fB@MOZ_APP_NAME@\fR in safe-mode. This disables all third-party extensions, and may be necessary if +you are having problems with an extension you installed. +.TP +\fB\-new\-tab\fR \fIurl\fR +Open \fIurl\fR in a new tab. +.TP +\fB\-new\-window\fR \fIurl\fR +Open \fIurl\fR in a new window. +.TP +\fB\-v, \-version\fR +Print the current version of \fB@MOZ_APP_NAME@\fR. +.TP +\fB\-UILocale\fR \fIlocale\fR +Start \fB@MOZ_APP_NAME@\fR with the specified locale \fIlocale\fR. Use this to override your environment +.TP +\fB\-preferences\fR +Open the preferences dialog. +.TP +\fB\-private\fR +Start \fB@MOZ_APP_NAME@\fR in private browsing mode +.TP +\fB\-private\-toggle\fR +Toggle private browsing mode +.TP +\fB\-setDefaultBrowser\fR +Set \fB@MOZ_APP_NAME@\fR as the default web browser +.TP +\fB\-search\fR \fIterm\fR +Search for \fIterm\fR with your default search engine +.TP +\fB\-jsconsole\fR +Open the Error console. If \fB@MOZ_APP_NAME@\fR is not already running, this will open a new browser window too --- firefox-7.0+build2+nobinonly.orig/debian/changelog +++ firefox-7.0+build2+nobinonly/debian/changelog @@ -0,0 +1,7026 @@ +firefox (7.0+build2+nobinonly-0ubuntu3) oneiric; urgency=low + + * Fix LP: #858683 - All search engines disappear. Handle the directory -> + symlink conversion in the postinst script + - update debian/firefox.postinst.in + + -- Chris Coulson <chris.coulson@canonical.com> Sun, 25 Sep 2011 13:13:27 +0100 + +firefox (7.0+build2+nobinonly-0ubuntu1) oneiric; urgency=low + + * New upstream stable release (FIREFOX_7_0_BUILD2) + + * Move distribution.ini to a stable install path in Oneiric for now, so it + can be diverted without breaking during upgrades + - update debian/rules + + -- Chris Coulson <chris.coulson@canonical.com> Sat, 24 Sep 2011 23:15:18 +0100 + +firefox (7.0~b6+build1+nobinonly-0ubuntu1) oneiric; urgency=low + + * New upstream release from the beta channel (FIREFOX_7_0b6_BUILD1) + + * Fix LP: #848211 - Firefox 7 beta displays wrong language in about:addons. + Don't incorrectly omit the addon manager translations from the tarball + + -- Chris Coulson <chris.coulson@canonical.com> Sat, 17 Sep 2011 14:24:03 +0100 + +firefox (7.0~b5+build1+nobinonly-0ubuntu1) oneiric; urgency=low + + * New upstream release from the beta channel (FIREFOX_7_0b5_BUILD1) + + * Update globalmenu-extension to 2.0.1 + * Only install channel-prefs.js on aurora/beta, where we need it for + Test Pilot + - update debian/rules + - update debian/firefox.install.in + - update debian/apport/firefox.py.in + * Don't error out whilst creating the source package if mozilla-devscripts + or cdbs aren't installed. This enables us to create source packages + on machines which don't have these available + - update debian/rules + - update debian/mozclient/firefox.mk + + -- Chris Coulson <chris.coulson@canonical.com> Mon, 12 Sep 2011 15:15:09 +0100 + +firefox (7.0~b4+build2+nobinonly-0ubuntu1) oneiric; urgency=low + + * New upstream release from the beta channel (FIREFOX_7_0b4_BUILD2) + + [ Chris Coulson <chris.coulson@canonical.com> ] + * Update globalmenu-extension to 2.0 + - Only update a menu in realtime if it's parent is opening. For all other + times, just invalidate the menu. Avoids spamming dbus everytime + something changes in the menu + - When removing a menuitem from its parent, check that the index is + in-bounds. Should fix a frequent crash on startup, although it doesn't + explain how it gets in to that state in the first place + - Add the ability to turn on debugging without building Firefox with + debugging on + * Add upstream patch to only add ENABLE_JIT=1 to CXXFLAGS if any of trace/ + method/yarr jit is enabled. Fixes a build failure on PPC + - add debian/patches/only-add-ENABLE_JIT-to-CXXFLAGS-if-jit-is-enabled.patch + - update debian/patches/series + * Add upstream patch to fix build failure with ENABLE_YARR_JIT=0 + - add debian/patches/build-fix-for-no-ENABLE_YARR_JIT.patch + - update debian/patches/series + * Add upstream patch to work around a linker bug + - add debian/patches/compile-pldhash-as-C++.patch + - update debian/patches/series + + [ Jamie Strandboge <jamie@ubuntu.com> ] + * AppArmor + - debian/usr.bin.firefox.apparmor.11.04: update for + /sys/devices/system/cpu (LP: #819479) + + -- Chris Coulson <chris.coulson@canonical.com> Mon, 05 Sep 2011 13:36:47 +0100 + +firefox (7.0~b3+build1+nobinonly-0ubuntu1) oneiric; urgency=low + + * New upstream release from the beta channel (FIREFOX_7_0b3_BUILD1) + - LP: #837557 + + -- Chris Coulson <chris.coulson@canonical.com> Tue, 30 Aug 2011 19:15:51 +0100 + +firefox (7.0~b2+build1+nobinonly-0ubuntu1) oneiric; urgency=low + + * New upstream release from the beta channel (FIREFOX_7_0b2_BUILD1) + + * Apport hook improvements: + - Remove the redundant DefaultProfile prefix from attachment names when + there is only a single profile + - Hold the profile lock for only as long as necessary, else apport will + prevent firefox from opening + - Handle a single profile correctly, where there is no official default + - Don't call attach_related_packages with an empty array + - We were relying on ConfigParser to throw if there is no profiles.ini, + but that doesn't seem to happen. Manually check that there are profiles + instead + - Tidy up add_info a bit + - Implement some get_* functions as properties with real getters + - Add general.skins.* to the set of whitelisted prefs in the apport hook + + -- Chris Coulson <chris.coulson@canonical.com> Thu, 25 Aug 2011 19:47:08 +0100 + +firefox (7.0~b1+build1+nobinonly-0ubuntu1) oneiric; urgency=low + + * New upstream release from the beta channel (FIREFOX_7_0b1_BUILD1) + + * Rewrite the apport hook to be more useful + - update debian/apport/firefox.py.in + * Update the apport blacklist file now that the binary name has changed + - update debian/apport/firefox.in + * Dropped patches which are obsolete/fixed upstream + - remove debian/patches/cairo-lcd-filter.patch + - remove debian/patches/fix-sdk-bin-install.patch + - update debian/patches/series + * Refresh patches + - update debian/patches/firefox-kde.patch + - update debian/patches/mozilla-kde.patch + - update debian/patches/reload-new-plugins.patch + * Look in the correct location for the staged langpack xpi's. They moved + from dist/install to dist/linux-$(DEB_HOST_GNU_CPU) + - update debian/rules + * Ensure we use DEB_BUILD_* and DEB_HOST_* consistently so that cross- + compiling works + - update debian/rules + - update debian/mozconfig.in + - update debian/firefox-dev.install.in + * Improve the description for unavailable language packs + - update debian/control.langpacks.unavail + * Simplify firefox-dev.install a bit by installing everything in + /usr/include + - update debian/firefox-dev.install.in + * Use $(MOZ_DISTDIR) rather than $(MOZ_OBJDIR)/dist in debian/rules. + - update debian/rules + * Handle video/webm mimetypes + - update debian/firefox.desktop.in + * Fix check-sync-dirs.py test failure - ensure config/system-headers and + js/src/config/system-headers are kept in sync + - update debian/patches/unity-globalmenu-build-support-patch + * Fix browserGlue_distribution.js and browserGlue_smartBookmarks.js xpcshell + test failures. Update DEFAULT_BOOKMARKS_ON_MENU with the correct number of + default bookmarks + - update debian/patches/ubuntu-bookmarks.patch + * Fix jsreftest failures by setting the correct timezone and locale + - update debian/testsuite.mk + * Switch off debian/patches/fix-selection-drag-autoscroll.patch for now. It + doesn't apply and needs a rethink + - update debian/patches/series + * Fix "format not a string literal and no format arguments" error + - add debian/patches/printf-fix.patch + - update debian/patches/series + * Update for the binary name change + - update debian/firefox.install.in + - update debian/firefox.sh.in + * Ensure we install dependentlibs.list so that Firefox knows which libs + to dlopen before libxul + - update debian/firefox.install.in + * Get rid of some more hanging IPC xpcshell tests + - update debian/testsuite.mk + * Now Firefox lazy loads libxul, drop the LD_LIBRARY_PATH hack from the + shell wrapper (LP: #561124) + - update debian/firefox.sh.in + * Refresh shipped locales for beta + - refresh debian/locales.shipped + - refresh debian/locales.unavailable + - refresh debian/control + * Ship a file in /etc/apport/native-origins.d to enable bug reporting + on PPA branches + - add debian/apport/native-origins.in + - rename debian/apport/firefox.in => debian/apport/blacklist.in + - update debian/rules + - update debian/firefox.install.in + - update debian/firefox.dirs.in + + -- Chris Coulson <chris.coulson@canonical.com> Fri, 19 Aug 2011 16:54:02 +0100 + +firefox (6.0~b5+build1+nobinonly-0ubuntu3) oneiric; urgency=low + + * Update globalmenu-extension to 1.9.2 + - fixes a regression which causes the menu to not build and potentially + crash when encountering non-menuitem nodes, due to an uninitialized value + + -- Chris Coulson <chris.coulson@canonical.com> Tue, 09 Aug 2011 23:56:00 +0100 + +firefox (6.0~b5+build1+nobinonly-0ubuntu2) oneiric; urgency=low + + * Update globalmenu-extension to 1.9.1 + - Drop Firefox 4 and 5 compatibility + - Drop the uIGlobalMenuLoader interface, as it never served any purpose + - Rework how we synchronize attributes to menuitems from their + corresponding command nodes + - Don't synchronize attributes from command nodes associated with menus + - Rework how we handle document insertion/removals. Rather than keeping + our dbusmenu structure in sync at all times, and routing the events + to the correct node in the tree, we just mark the menu as invalid and + rebuild it from scratch next time it opens. This should reduce problems + like LP: #821391 + - Honour the collapsed attribute. This solves a problem with multiple + seprators appearing adjacent to each other in the greasemonkey menu + - Store all booleans as PRPackedBool rather than PRBool + - Add error checking around uGlobalMenuDocListener + - Make uGlobalMenuDummy more robust, and use it as a fallback if the + real menuitem fails to initialize. This should help reduce problems + like LP: #831391 + - If a menu fails to build correctly, mark it invalid and stop processing + document events on it (which should avoid the crash in LP: #831391) + - Invalidate a menu if we fail to insert/remove a node whilst processing + a document event (which should help avoid the crash in LP: #831391) + - Make uGlobalMenu::CanOpen() respect the collapsed attribute + - Allow more than one menu node to register as a listener for any DOM + node. In the case of command nodes, these may be shared across multiple + menu nodes, with each one interested in receiving events. Previously, we + just erased the first listener if a second menu node tried to register + (discovered after adding error checking around uGlobalMenuDocListener) + + -- Chris Coulson <chris.coulson@canonical.com> Tue, 09 Aug 2011 18:29:02 +0100 + +firefox (6.0~b5+build1+nobinonly-0ubuntu1) oneiric; urgency=low + + * New upstream release from the beta channel (FIREFOX_6_0b5_BUILD1) + + -- Chris Coulson <chris.coulson@canonical.com> Fri, 05 Aug 2011 19:18:58 +0100 + +firefox (6.0~b4+build1+nobinonly-0ubuntu1) oneiric; urgency=low + + * New upstream release from the beta channel (FIREFOX_6_0b4_BUILD1) + + * Update globalmenu-extension to 1.8 + - Update for imgILoader changes in Firefox 8 + - Fix LP: #810489 - Inconsistent behaviour if extension is enabled + after turning off the menubar, which will affect Lucid -> P upgrades + once Lucid has a newer Firefox. document.loadOverlay() triggers a reload + of localstore.rdf, which overwrites our changes to the UI to hide + the Firefox button and bookmark button. Restore them when this happens + - Fix LP: #800733 - Quick Filter Bar checkbox in Thunderbird menu is + not marked as checked. On menuitems with command nodes, ensure we update + the state on the correct node + - Ensure we disconnect all signal handlers when a menu is destroyed. + Should fix a SIGSEGV in uGlobalMenu::OnClose() + * Drop a distro pref that should have gone a long time ago + - update debian/vendor.js + * Remove patches fixed upstream + - remove debian/patches/change-opt-back-to-Os.patch + - update debian/patches/series + + -- Chris Coulson <chris.coulson@canonical.com> Mon, 01 Aug 2011 20:41:31 +0100 + +firefox (6.0~b3+build2+nobinonly-0ubuntu1) oneiric; urgency=low + + * New upstream release from the beta channel (FIREFOX_6_0b3_BUILD2) + + * Unconditionally build with --disable-elf-hack. It's basically a noop + on Ubuntu, as we don't get any of the nice space saving and startup + time improvements that upstream builds get with it. Enabling it is + problematic (it fails to build on all architectures in Ubuntu from + Firefox 7 onwards, and is problematic on armel when building on + older Ubuntu versions) + - update debian/rules + - update debian/mozconfig.in + * Refresh debian/patches/reload-new-plugins.patch + + -- Chris Coulson <chris.coulson@canonical.com> Mon, 25 Jul 2011 19:52:56 +0100 + +firefox (6.0~b2+build1+nobinonly-0ubuntu1) oneiric; urgency=low + + * New upstream release from the beta channel (FIREFOX_6_0b2_BUILD1) + + * Revert an upstream change which switched the default optimization from + -Os to -O3. The intention is that -O3 will be used for PGO builds and -Os + used for non-PGO builds. -O3 increases the package size by over 3MB + - add debian/patches/change-opt-back-to-Os.patch + - update debian/patches/series + * Don't unconditionally set -fshort-wchar in the libxul.pc pkgconfig file. + It's no longer needed with newer toolchains which support gnu++0x, and + defining it breaks the mozvoikko build + - update debian/pkgconfig/libxul.pc.in + - update debian/rules + + -- Chris Coulson <chris.coulson@canonical.com> Mon, 18 Jul 2011 09:11:06 +0100 + +firefox (6.0~b1+build1+nobinonly-0ubuntu1) oneiric; urgency=low + + * New upstream release from the beta channel (FIREFOX_6_0b1_BUILD1) + + * Update globalmenu-extension to 1.7 + - Fixes LP: #779905 - menubar sometimes appears inside the window rather + than the panel, due to a startup race + * Drop the profile migrator, as it doesn't really make any sense with the new + release cycle. Instead, just copy the firefox profile (if it exists) to + firefox-trunk (if it doesn't exist) + - remove debian/migrator/xulapp-profilemigrator + - update debian/firefox.sh.in + - update debian/firefox.install.in + - update debian/rules + - update debian/control.in + * xpt_link and xpt_dump have been replaced by xpt.py + - update debian/firefox-dev.install.in + - update debian/firefox-dev.links.in + * Add support for the system provided hyphenation patterns, by linking + @MOZ_LIBDIR@/hyphenation to /usr/share/hyphen + - update debian/firefox.links.in + * Refreshed patches: + - update debian/patches/firefox-kde.patch + - update debian/patches/mozilla-kde.patch + - update debian/patches/plugin-for-mimetype-pref.patch + - update debian/patches/reload-new-plugins.patch + * The official branding moved from other-licenses to browser. Handle this + - update debian/rules + * Dropped patches fixed upstream: + - remove debian/patches/use-MOZ_APP_LAUNCHER-for-launcher-exec.patch + - remove debian/patches/fix-nsGIOService.patch + - remove debian/patches/default-browser-check-use-gio.patch + - remove debian/patches/update-assembler-excl-arch-list.patch + - remove debian/patches/default-uri-handler-check-use-gio.patch + - remove debian/patches/powerpc-build-fix.patch + - update debian/patches/series + * Drop the special "kde.js" file handling from the pref service. It hasn't + had the desired effect since Firefox 4, as the specialfile handling + doesn't apply to pref files inside the omni.jar. Moving kde.js back in to + defaults/pref isn't an option, as these are always read after the prefs + in the omni.jar, which would mean that all users would get the KDE + specific prefs. Note, we only override one pref in kde.js anyway, it can + go elsewhere if really required + - update debian/patches/mozilla-kde.patch + - update debian/patches/firefox-kde.patch + + -- Chris Coulson <chris.coulson@canonical.com> Fri, 08 Jul 2011 20:43:38 +0100 + +firefox (5.0+build1+nobinonly-0ubuntu3) oneiric; urgency=low + + * Switch off crashtests temporarily. One of them causes a huge memory leak + and causes the build to time out + - update debian/testsuite.mk + + -- Chris Coulson <chris.coulson@canonical.com> Tue, 05 Jul 2011 11:42:55 +0100 + +firefox (5.0+build1+nobinonly-0ubuntu2) oneiric; urgency=low + + * Fix the language packs to not depend on Firefox (LP: #800857) + - update debian/control.langpacks + + -- Chris Coulson <chris.coulson@canonical.com> Mon, 04 Jul 2011 21:59:08 +0100 + +firefox (5.0+build1+nobinonly-0ubuntu1) oneiric; urgency=low + + * New upstream release from the release channel (FIREFOX_5_0_BUILD1) + + -- Micah Gersten <micahg@ubuntu.com> Thu, 16 Jun 2011 17:50:25 -0500 + +firefox (5.0~b7+build1+nobinonly-0ubuntu1) oneiric; urgency=low + + * New upstream release from the beta channel (FIREFOX_5_0b7_BUILD1) + Yes, this really is the last one this time :-) + + -- Chris Coulson <chris.coulson@canonical.com> Wed, 15 Jun 2011 11:21:35 +0100 + +firefox (5.0~b6+build1+nobinonly-0ubuntu1) oneiric; urgency=low + + * New upstream release from the beta channel (FIREFOX_5_0b6_BUILD1) + + -- Chris Coulson <chris.coulson@canonical.com> Tue, 14 Jun 2011 10:12:42 +0100 + +firefox (5.0~b5+build1+nobinonly-0ubuntu1) oneiric; urgency=low + + * New upstream release from the beta channel (FIREFOX_5_0b5_BUILD1) + + * Set the right Vcs-Bzr URL + - update debian/control.in + - refresh debian/control + * Refresh shipped locales from new tarball - bg, cy, mk, nn, or, sr, ta and th + are enabled again + - refresh debian/locales.shipped + - refresh debian/locales.unavailable + - refresh debian/control + + -- Chris Coulson <chris.coulson@canonical.com> Thu, 09 Jun 2011 15:42:38 +0100 + +firefox (5.0~b3+build1+nobinonly-0ubuntu1) oneiric; urgency=low + + * New upstream release from the beta channel (FIREFOX_5_0b3_BUILD1) + + * Support storing language descriptions in locales.unavailable. This + will be useful for translations which disappear temporarily + - update debian/rules + - update debian/refresh-supported-locales.pl + * Add languages that are currently dropped in FF5 (compared with FF4) to + locales.unavailable. Having transitional packages now will make + transitioning easier later on if they come back + - update debian/locales.unavailable + * Refresh debian/control to pick up transitional packages + * Don't bundle our vendor preferences in the omni.jar. This needs a distro + patch and it turns out that Firefox does still read prefs from + $LIBDIR/defaults/pref, so just install it there instead + - rename debian/distrib.js => debian/vendor.js + - update debian/rules + - update debian/firefox.install.in + - remove debian/patches/install-vendor-prefs.patch + - update debian/patches/series + * Add a global pref file again (/etc/firefox/syspref.js) and add the + necessary preinst/postinst magic to move the old file there if it + was previously customized + - add debian/syspref.js + - update debian/firefox.install.in + - update debian/firefox.links.in + - update debian/firefox.postinst.in + - update debian/firefox.preinst.in + * Ensure "Depends: ${misc:Depends}" is added to all transitional + language packs + - update debian/control.langpacks.unavail + - refresh debian/control + * Ship testpilot on aurora too + - update debian/firefox.install.in + * Update list of language packs to include new ones added upstream + - refresh debian/locales.shipped and debian/locals.unavailable + - refresh debian/control + + -- Chris Coulson <chris.coulson@canonical.com> Thu, 02 Jun 2011 22:34:48 +0100 + +firefox (5.0~b2+build1+nobinonly-0ubuntu2) oneiric; urgency=low + + * Ship channel-prefs.js. We used to ship this in Firefox 3.6, and it's + required by Test Pilot now + - update debian/firefox.install.in + * Backport patch from mozilla-central to fix powerpc build failure + - add debian/patches/powerpc-build-fix.patch + - update debian/patches/series + + -- Chris Coulson <chris.coulson@canonical.com> Sun, 22 May 2011 07:52:43 +0100 + +firefox (5.0~b2+build1+nobinonly-0ubuntu1) oneiric; urgency=low + + * New upstream release from the beta channel (FIREFOX_5_0b2_BUILD1) + - Fixes LP: #765970 + + * Switch to mozilla-beta + - update debian/mozclient/firefox.conf + * Drop support for building with an external xulrunner + - update debian/apport/firefox.in + - update debian/firefox.install.in + - update debian/firefox.lintian-overrides.in + - update debian/firefox.sh.in + - update debian/mozconfig.in + - update debian/rules + * Ditch all the version-number based branding selection. Do this all + purely on the channel name now + - remove debian/firefox-beta.desktop.in + - remove debian/firefox-nightly.desktop.in + - remove debian/firefox-unofficial.desktop.in + - rename debian/firefox-final.desktop.in => debian/firefox.desktop.in + - update debian/firefox.desktop.in + - update debian/rules + - update debian/firefox.sh.in + * Drop the DEB_ENABLE_IPC option, now that IPC is mandatory + - update debian/rules + - update debian/apport/firefox.in + - update debian/firefox.install.in + - update debian/mozconfig.in + * Build language packs directly from the firefox source + + Fixes LP: #294187 - Firefox Locales should install locale specific + search plugins + + Rip out the bits to create a en-US.xpi + - update debian/rules + - remove debian/translation-support/install.rdf.in + + Include compare-locales FIREFOX_5_0b1_BUILD1 from + http://hg.mozilla.org/build/compare-locales. It's needed for merging + en-US strings with incomplete locales + + Pull l10n data in to tarball from bzr + - update debian/mozclient/firefox.conf + + Configure build for creating language packs by configuring with + "--with-l10n-base=" + - update debian/mozconfig.in + + Store the list of locales to ship, and provide a way of automatically + generating that list and the control file entries from the upstream + source. Also provide a way to blacklist languages. We map languages + to package names using langpack-o-matic (and also get descriptions + from there too) + - update debian/rules + - add debian/locales-supported + - add debian/control.langpacks + - update debian/control + - add debian/locale-blacklist + - add debian/refresh-supported-locales.pl + + Add common-build-indep hook to build the translation xpi's + - update debian/rules + + Add common-binary-post-install-indep to install the xpi's and + searchplugins in to the correct debian packages + - update debian/rules + - add debian/get-xpi-id.py + + When rebuilding debian/control in the clean target, fail the build + if the control file was out-of-date. This ensures that we don't + accidentally drop language packs, and forces me to maintain an + up-to-date control file in bzr + - update debian/rules + + Apply vendor patches to localized searchplugins too + - update debian/patches/ubuntu-codes-amazon.patch + - add debian/patches/ubuntu-codes-baidu.patch + - update debian/patches/ubuntu-codes-google.patch + * Rename vendor.js to distrib.js. The pref service reads these in reverse + alphabetical order, and we want ours to be read last + - rename debian/vendor.js => debian/distrib.js + - update debian/rules + - update debian/patches/install-vendor-prefs.patch + * Ensure we set LD_LIBRARY_PATH before running "firefox -h" + - update debian/firefox.sh.in + * Add some missing options to the manpage + - update debian/firefox.1.in + * Drop patches merged upstream: + - 64-bit-be-fix.patch + * Refresh patches: + - mozilla-kde.patch + * Drop DEBIAN_XUL_VER now that Firefox/Gecko versions are the same + - update debian/rules + - update debian/pkgconfig/*.pc.in + * Add geolocation parameter to en-GB and en-ZA google search plugins. This + will improve relevance of results for non-US English speaking users + - update debian/ubuntu-codes-google.patch + + * Update globalmenu-extension code to 1.5 + * Fix LP: #783790 - Firefox 4 crashes when opening Selenium IDE window. + Ignore signals for menus without popups + * Fix LP: #783856 - Firefox 4.0.1 Crash Report + [@ uGlobalMenuBar::~uGlobalMenuBar ]. Don't bail out of building a menu + when encountering a non-XUL element. Also toughen up destructors to not + crash if the menuitem never initialized properly + * Fix LP: #783997 - Firefox 4.0.1 Crash Report + [@ uGlobalMenuBar::ShouldParentStayVisible ]. Don't crash if the window + gets destroyed before the panel responds to RegisterWindow + * Use --with-app-name to set MOZ_APP_NAME on nightlies now + - update debian/rules + - update debian/mozconfig.in + + -- Chris Coulson <chris.coulson@canonical.com> Fri, 20 May 2011 23:24:44 +0100 + +firefox (4.0.1+build1+nobinonly-0ubuntu0.11.04.2) natty-proposed; urgency=low + + * Fix LP: #770719 - Dutch localization doesn't include spell-checker. + Look in /usr/share/hunspell for the system dictionaries on maverick + and later, rather than /usr/share/myspell/dicts. This got dropped + somehow in natty + - update debian/rules + - update debian/firefox.links/in + * Hopefully fix LP: #643899 - Firefox sending header "Accept-Language: + chrome://global/locale/intl.properties" because the intl.accept_languages + preference is messed up. Drop a patch which causes the preferences + system to save a user preference when changing a preference value to equal + the system default value (and revert to the original behaviour where the + preference is just discarded). This should hopefully stop Firefox Sync + from breaking localized preferences where they haven't been modified by + the user, but does regress LP: #548866 + - update debian/patches/series + + -- Chris Coulson <chris.coulson@canonical.com> Tue, 03 May 2011 20:43:30 +0100 + +firefox (4.0.1+build1+nobinonly-0ubuntu0.11.04.1) natty-security; urgency=low + + * New upstream release v4.0.1 (FIREFOX_4_0_1_BUILD1) + - see USN-1121-1 + + * Fix LP: #767966 - globalmenu extension pollutes main window javascript + scope + - update globalmenu-extension to 1.0.3 + + -- Chris Coulson <chris.coulson@canonical.com> Fri, 22 Apr 2011 15:12:46 -0500 + +firefox (4.0+nobinonly-0ubuntu3) natty; urgency=low + + [ Felix Geyer <debfx@ubuntu.com> ] + * Fix LP: #572772 - can't save files in KDE + - update debian/patches/mozilla-kde.patch + + [ Chris Coulson ] + * Fix LP: #766151 - popuphiding and popuphidden events aren't dispatched + when a menu is closed, leading to exceptions being thrown in + browserPlacesViews.js (visible from the error console) + - update globalmenu-extension to 1.0.2 + * Fix LP: #744580 - Firefox doesn't autoscroll when selecting content + downwards + - add debian/patches/fix-selection-drag-autoscroll.patch + - update debian/patches/series + + -- Chris Coulson <chris.coulson@canonical.com> Tue, 19 Apr 2011 17:10:50 +0100 + +firefox (4.0+nobinonly-0ubuntu2) natty; urgency=low + + * Update globalmenu-extension to 1.0.1 + - Fixes LP: #749450 - bookmarks editor doesn't work properly + + * Added Spanish and Japanese translations for static quicklist entry + - update debian/firefox-*.desktop.in + * Fix LP: #727372 - URI handling is broken. Use GIO for checking if + a particular URI scheme has a handler, rather than probing GConf + - add debian/patches/default-uri-handler-check-use-gio.patch + - update debian/patches/series + + -- Chris Coulson <chris.coulson@canonical.com> Sat, 16 Apr 2011 23:21:03 +0100 + +firefox (4.0+nobinonly-0ubuntu1) natty; urgency=low + + * Bump the version number to 4.0 final. This is just so we stop confusing + people with rc2 in the version number, but the tarball is identical + + * Update globalmenu-extension code to 1.0 + - Drop the hacks we had to workaround the lack of menu closed signals from + Unity. We no longer synthesize our own menu closed events, but use the + proper event from dbusmenu. + - In addition to this, we split the work done during menu opening in to + 2 phases - the first phase triggered off "about-to-show" and the second + phase triggered off "opened". In the future, we should be able to delay + the menu opening with the about-to-show handler, which is where we + do all the work to update the menu + - Fix LP: #755701 - When iterating over each label, check if the current + character equals the access key (to set a flag indicating we've already + seen it) *before* we mangle the label, rather than after it. + This fixes an issue where we never set the flag, and subsequently see + the mnemonics repeated multiple times in labels + - Also remove the hack we had to add placeholder entries to empty menus + so that we could get an about-to-show signal (now that LP: #619811 + is fixed) + + * Fix typo in German translation of static quicklist item (LP: #750220) + - update debian/firefox-*.desktop.in + * Re-enable -pie (LP: #663294) + - update debian/rules + + -- Chris Coulson <chris.coulson@canonical.com> Mon, 11 Apr 2011 01:07:23 +0100 + +firefox (4.0~rc2+build3+nobinonly-0ubuntu2) natty; urgency=low + + [ Chris Coulson <chris.coulson@canonical.com> ] + * Ship a mozilla-plugin.pc and libxul.pc rather than our custom + firefox-plugin.pc. No other source packages are aware of firefox-plugin + and this way avoids patching a whole bunch of apps. We now conflict + with the xulrunner SDK though + - rename debian/pkgconfig/firefox-plugin.pc.in => + debian/pkgconfig/mozilla-plugin.pc.in + - update debian/pkgconfig/mozilla-plugin.pc.in + - add debian/pkgconfig/libxul.pc.in + - add debian/pkgconfig/mozilla-nspr.pc.in + - update debian/rules + - update debian/control.pp + * Add some missing symlinks in the SDK + - update debian/firefox-dev.links.in + * Add Asturian, Bengali, Croatian, Danish, Galician, Hebrew, Kurdish, + Lithuanian, Romanian, Slovene, Uyghur and Ukrainian, and updated + Catalan and French translations, plus add static quicklist translations + for Chinese, Dutch, French, Hungarian, Italian and Russian + - update debian/firefox-*.desktop.in + * Update globalmenu-extension code to 0.6.1. Pressing Alt shows the menu + now + + [ Bilal Akhtar <bilalakhtar@ubuntu.com> ] + * debian/firefox-*.desktop.in: Add static quicklist item 'Open a New + Window'. (LP: #741046) + + -- Chris Coulson <chris.coulson@canonical.com> Thu, 31 Mar 2011 17:54:51 +0100 + +firefox (4.0~rc2+build3+nobinonly-0ubuntu1) natty; urgency=low + + * New upstream release v4.0 RC2 build3 (FIREFOX_4_0rc2_BUILD3). + D'oh! Should have spotted that before uploading build2 + + -- Chris Coulson <chris.coulson@canonical.com> Mon, 21 Mar 2011 11:02:11 +0000 + +firefox (4.0~rc2+build2+nobinonly-0ubuntu1) natty; urgency=low + + * New upstream release v4.0 RC2 (FIREFOX_4_0rc2_BUILD2) + + -- Chris Coulson <chris.coulson@canonical.com> Mon, 21 Mar 2011 09:08:27 +0000 + +firefox (4.0~rc1+build1+nobinonly-0ubuntu1) natty; urgency=low + + * New upstream release v4.0 RC1 (FIREFOX_4_0rc1_BUILD1) + + * Switch to mozilla-2.0 + - update debian/mozclient/firefox.conf + * Only build the globalmenu extension on Natty and newer + - update debian/rules + - update debian/firefox-globalmenu.dirs.in + - update debian/mozconfig.in + * Define MOZ_DISTDIR throughout the build + - update debian/rules + - update debian/testsuite.mk + - update debian/firefox-mozsymbols.install.in + * Don't disable the crashreporter for DEB_BUILD_UNOFFICIAL builds. + - update debian/rules + * Automatically set DEB_BUILD_UNOFFICIAL for builds where we change + MOZ_APP_NAME + - update debian/rules + * Disable the crashreporter for nightlies + - update debian/rules + * Revert a previous change to add vendor preferences to distribution.ini. + The preferences there aren't read by the pref service, but loaded + and set later on, after profile-initial-state, which is too late to + have any effect on the selected locale + - add debian/vendor.js + - update debian/distribution.ini + - update debian/rules + - add debian/patches/install-vendor-prefs.patch + - update debian/patches/series + * Refresh patches + - update debian/patches/mozilla-kde.patch + * Fix build on PPC64 + - add debian/patches/64-bit-be-fix.patch + - add debian/patches/update-assembler-excl-arch-list.patch + - update debian/patches/series + + -- Chris Coulson <chris.coulson@canonical.com> Thu, 10 Mar 2011 02:25:21 +0000 + +firefox (4.0~b12+build1+nobinonly-0ubuntu3) natty; urgency=low + + * Land the Unity appmenu extension work. It's shipped in its own package, + although we build it from the Firefox source tree (LP: #637827) + * Fix build with system NSPR + - update debian/firefox-dev.install.in + * Don't trample on existing alternatives in the postinst script if + we detect Ubuntuzilla breakage + - update debian/firefox.postinst.in + + -- Chris Coulson <chris.coulson@canonical.com> Thu, 03 Mar 2011 16:18:56 +0000 + +firefox (4.0~b12+build1+nobinonly-0ubuntu2) natty; urgency=low + + * Fix some typos in the manpage + - update debian/firefox.1.in + * Fix up the mess left by Ubuntuzilla rather than leaving our official + package in a broken and inconsistent state, which ends up with users + reporting bugs to Launchpad and giving us a bad reputation. If + /usr/bin/firefox has been diverted and there is no /usr/bin/firefox + provided on the system, just do the job of whatever package it was that + broke the users install and remove the diversion for them. This should + hopefully stop the frequently reported bugs we get from Ubuntuzilla users + about /usr/bin/firefox being missing + - update debian/firefox.postinst.in + - Fixes LP: #512937, LP: #529136, LP: #552919, LP: #572733, LP: #574111, + LP: #599978, LP: #600271, LP: #610522, LP: #610756, LP: #610907, + LP: #612162, LP: #620400, LP: #623980, LP: #625014, LP: #630643, + LP: #635166, LP: #638342, LP: #641838, LP: #658828, LP: #668809, + LP: #672282, LP: #676239, LP: #707704, LP: #724090 + * Don't allow users to report bugs with apport-bug when /usr/bin/firefox + has been diverted + - update debian/firefox.py.in + * Don't build with --disable-elfhack on armel. It's been fixed now + - update debian/rules + + -- Chris Coulson <chris.coulson@canonical.com> Fri, 25 Feb 2011 13:54:59 +0000 + +firefox (4.0~b12+build1+nobinonly-0ubuntu1) natty; urgency=low + + * New upstream release v4.0 B12 (FIREFOX_4_0b12_BUILD1) + + * Add support for unpacked xpi's in the apport hook when reporting + the extensions installed + - update debian/apport/firefox.py.in + * Ensure the Apport hook can be tested properly without modification + - update debian/apport/firefox.py.in + * Add DEP-3 compliant headers to all of our patches, and drop the + bug numbers we carried in filenames. Some of the filenames are so long + that we get constant lintian warnings about long lines in the changelog + * Drop libxul-sdk-nspr.patch - it doesn't seem to be needed + - remove debian/patches/libxul-sdk-nspr.patch + - update debian/patches/series + * Move default-apps/firefox.xml to firefox-gnome-support when it is installed + - update debian/firefox.install.in + - update debian/firefox-gnome-support.install.in + * Fix menu-icon-not-in-xpm-format lintian error - generate the xpm at + build time + - update debian/rules + - update debian/control + * Quieten embedded-zlib and embedded-libjpeg lintian errors. These aren't + really errors, as we're intentionally embedding copies here + - update debian/rules + - add debian/firefox.lintian-overrides.in + * Fix some extended-description-is-empty lintian errors + - update debian/control + * Add a manpage to fix a lintian warning + - add debian/firefox.1.in + - add debian/firefox.manpages.in + * Fix build on armel, make sure we install $(INCDIR)/tremor + - update debian/firefox-dev.install.in + * Fix description of firefox-dev + - update debian/control + * Ship a pkgconfig file to enable browser plugins to build against + Firefox rather than xulrunner + - add debian/pkgconfig/firefox-plugin.pc.in + - update debian/firefox-dev.install.in + - update debian/rules + * Check for tee surface support when deciding whether to use tree or + system cairo + - update debian/rules + * Check the hunspell version is new enough in DEB_MIN_SYSDEPS=0 mode + - update debian/rules + - update debian/mozconfig.in + * Fix the permissions of some files once they are installed, rather than + directly in debian/. We weren't restoring them in clean anyway + - update debian/rules + * Quiten some image-in-usr-lib lintian warnings by adding them to + lintian-overrides. There's not much point in moving them to /usr/share + unless we split them out in to an arch-all firefox-common package + - update debian/firefox.lintian-overrides.in + * Don't call update-menus in postinst, and add #DEBHELPER# tokens where + those are missing + - update debian/firefox.postinst.in + - update debian/firefox.postrm.in + - update debian/firefox.preinst.in + * Fix desktop-entry-invalid-category lintian warnings - remove Internet + and Application categories, add GTK and GNOME + - update debian/firefox-beta.desktop.in + - update debian/firefox-final.desktop.in + - update debian/firefox-nightly.desktop.in + - update debian/firefox-unofficial.desktop.in + * Fix menu-icon-too-big lintian error, by downscaling the icon + - update debian/rules + * Fix package-contains-hardlink lintian warning in SDK. Replace it + with symbolic link + - update debian/rules + * Don't ship a vendor.js with our preferences in, as it requires a patch + in order to get it in to the distributed omni.jar. Instead, move our + vendor prefs in to distribution.ini + - remove debian/vendor.js + - update debian/distribution.ini + - update debian/rules + - remove debian/patches/install-ubuntu-prefs.patch + - update debian/patches/series + * Add "set -e" to launcher script as per Debian policy 10.4 + - update debian/firefox.sh.in + * Bump Standards-Version to 3.9.1 + - update debian/control + * Fix dbg-package-missing-depends lintian warning - add firefox-gnome-support + dependency to firefox-gnome-support-dbg transitional package + - update debian/control + * Fix LP: #717666 - firefox needs to replace kubuntu-firefox-installer + again. This got dropped accidentally during the package reorg after + dropping abrowser + - update debian/control + * Add some missing files to the SDK + - update debian/firefox-dev.install.in + * Refresh patches + - update debian/patches/mozilla-kde.patch + - update debian/patches/reload-new-plugins.patch + * Don't hardcode the browser executable to /usr/bin/firefox for the + default browser. Instead, apply a patch reviewed upstream to set + this to MOZ_APP_LAUNCHER + - drop debian/patches/system-path-default-browser.patch + - add debian/patches/use-MOZ_APP_LAUNCHER-for-launcher-exec.patch + - update debian/patches + * Fix the default browser check to use the new x-scheme-handler + mechanism via GIO, rather than the old GConf way + - add debian/patches/fix-nsGIOService.patch + - add debian/patches/default-browser-check-use-gio.patch + - update debian/patches/series + * Don't install $(INCDIR)/md + - update debian/firefox-dev.install.in + * The toolkit.networkmanager.disable preference has been removed. There is + now only a single pref for managing network link status, and this is off + by default. Re-enable that to restore the previous behaviour + - update debian/distribution.ini + + -- Chris Coulson <chris.coulson@canonical.com> Fri, 25 Feb 2011 02:53:55 +0000 + +firefox (4.0~b11+build3+nobinonly-0ubuntu2) natty; urgency=low + + * Drop abrowser: + - remove debian/abrowser-branding.install.in + - remove debian/abrowser-branding.links.in + - remove debian/abrowser.desktop.in + - remove debian/abrowser.xml.in + - update debian/control + - remove debian/firefox-branding.install.in + - remove debian/firefox-branding.links.in + - update debian/firefox.install.in + - update debian/firefox.links.in + - rename debian/firefox-branding.menu.in => debian/firefox.menu.in + - update debian/firefox.sh.in + - update debian/mozclient/firefox.conf + - remove debian/patches/awesome_branding_updates.patch + - remove debian/patches/browser_branding.patch + - update debian/patches/series + - update debian/rules + - remove debian/vendor-abrowser.js.in + - rename debian/vendor-firefox.js.in => debian/vendor.js.in + * Don't install the example config file (firefox.cfg) - it's redundant + at the moment as there is no way to configure system preferences + - remove debian/firefox.cfg + - remove debian/firefox.docs.in + - update debian/rules + * Don't install presubj, this is for the Debian BTS + - remove debian/presubj + - update debian/firefox.install.in + * Don't install the default-apps xml file for gnome-control-center in + Natty. It's not needed any more + - update debian/rules + - update debian/firefox.install.in + * Ship an SDK again + - update debian/control + - add debian/firefox-dev.install.in + - add debian/firefox-dev.links.in + - add debian/patches/bzXXX_fix_sdk_bin_install.patch + - update debian/patches/series + - update debian/rules + * Build with --disable-elf-hack on armel and powerpc + - update debian/rules + - update debian/mozconfig.in + * Drop the general.useragent.vendor* preferences. These are obsolete + in Firefox 4 + - rename debian/vendor.js.in => debian/vendor.js + - update debian/vendor.js + - update debian/rules + * Update the apport hook to not choke on unpacked extensions, and install + it again. We still need to add support for unpacked xpi's though + - update debian/apport/firefox.py.in + - update debian/firefox.install.in + + -- Chris Coulson <chris.coulson@canonical.com> Wed, 09 Feb 2011 13:57:51 +0000 + +firefox (4.0~b11+build3+nobinonly-0ubuntu1) natty; urgency=low + + * New upstream release v4.0 B11 (FIREFOX_4_0b11_BUILD3) + + [ Jamie Strandboge <jamie@ubuntu.com> ] + * AppArmor: + - update to allow owner read access to @{PROC}/[0-9]*/task/[0-9]*/stat + + [ Chris Coulson <chris.coulson@canonical.com> ] + * Add support to the launcher for specifying a debugger + - update debian/firefox.sh.in + + -- Chris Coulson <chris.coulson@canonical.com> Mon, 07 Feb 2011 15:58:53 +0000 + +firefox (4.0~b10+build1+nobinonly-0ubuntu2) natty; urgency=low + + * Fix FTBFS - testpilot moved to distribution/extensions + - update debian/firefox.install.in + + -- Chris Coulson <chris.coulson@canonical.com> Wed, 26 Jan 2011 11:28:03 +0000 + +firefox (4.0~b10+build1+nobinonly-0ubuntu1) natty; urgency=low + + * New upstream release v4.0 B10 (FIREFOX_4_0b10_BUILD1) + + [ Jamie Strandboge <jamie@ubuntu.com> ] + * AppArmor: + - allow access to defaults.list for all derivatives (LP: #664093) + + [ Chris Coulson <chris.coulson@canonical.com> ] + * Refresh patches after landing of bmo: #624267 aka Crash on Ubuntu + [@ nsGNOMEShellService::SetDefaultBrowser ] + - update debian/patches/lp185622_system_path_default_browser.patch + * Refresh patches after landing of bmo: #624625 aka change home page of + Google search plugin to google.com + - update debian/patches/ubuntu_codes_google.patch + * Remove debian/remove.binonly.sh from package, it's not used anyway + (the one from mozilla-devscripts is used instead) + - remove debian/remove.binonly.sh + * Don't make DEB_ENABLE_THUMB2 configurable, this should just be totally + automatic + - update debian/rules + * Bump NSS and NSPR minimum versions to 3.12.9 and 4.8.7 respectively + - update debian/rules + * Clean unused variable from debian/rules + - update debian/rules + * Use the smaller crashreporter-symbols.zip after landing of bmo: #588129 aka + symbols.txt file missing from *.crashreporter-symbols.zip + - update debian/firefox-mozsymbols.install.in + * Run jstestbrowser and mochitest test suites + - update debian/testsuite.mk + * Fix LP: #690009 - GTK applications launched by firefox don't appear in + global menu. Don't unset UBUNTU_MENUPROXY + - update debian/firefox.sh.in + + -- Chris Coulson <chris.coulson@canonical.com> Tue, 25 Jan 2011 21:50:54 +0000 + +firefox (4.0~b9+build1+nobinonly-0ubuntu1) natty; urgency=low + + * New upstream release v4.0b9 (FIREFOX_4_0b9_BUILD1) + + [ Micah Gersten <micahg@ubuntu.com> ] + * Fix typo in rules file comment + - update debian/rules + + [ Chris Coulson <chris.coulson@canonical.com> ] + * Refresh patches + - update debian/patches/mozilla-kde.patch + + -- Chris Coulson <chris.coulson@canonical.com> Wed, 12 Jan 2011 09:00:16 -0600 + +firefox (4.0~b8+nobinonly-0ubuntu3) natty; urgency=low + + [ Chris Coulson <chris.coulson@canonical.com> ] + * Fix LP: #694391 - firefox-branding (rather than firefox) should + replace kubuntu-firefox-installer + - update debian/control.pp + + [ Micah Gersten <micahg@ubuntu.com> ] + * Really fix LP: #696895 - FTBFS on armel; Add DEB_ENABLE_THUMB2 to + DEB_DEFINES so thumb2 is actually enabled; Thanks to Jani Monoses for the + fix + - update debian/rules + * Define the default for DEB_ENABLE_THUMB2 with the rest of the defaults + - update debian/rules + + -- Micah Gersten <micahg@ubuntu.com> Wed, 05 Jan 2011 13:50:56 -0600 + +firefox (4.0~b8+nobinonly-0ubuntu2) natty; urgency=low + + * fix LP: #696895 - FTBFS on armel; Add --enable-thumb2 to build for armv7; + Thanks to Jani Monoses for the fix + - update debian/mozconfig.in + - update debian/rules + + -- Micah Gersten <micahg@ubuntu.com> Mon, 03 Jan 2011 22:44:12 -0600 + +firefox (4.0~b8+nobinonly-0ubuntu1) natty; urgency=low + + * New upstream release v4.0b8 (FIREFOX_4_0b8_RELEASE) + + [ Chris Coulson <chris.coulson@canonical.com> ] + * Add a hack to the launcher to handle being launched from an alternative, + which is a symlink to the launcher script, and breaks the current launch + mechanism. Also remove a useless stat() from the current script + - update debian/firefox.sh.in + * Re-add patch that got dropped to not remove and re-add search plugins + during upgrade + - add debian/patches/bz534663_attXXX_normalize_distribution_searchplugins.patch + - update debian/patches/series + * Move libmozgnome.so to the main package in common-binary-predeb-arch. + The previous method of deleting it from -gnome-support and copying it to + the main package from debian/tmp in each of the binary-predeb targets + meant that we were shipping an unstripped copy, which caused a lintian + error. This new method ensures we retain the stripped SO and we still + only move it after dh_shlibdeps has run + - update debian/rules + * Support debug builds. By setting "debug" in DEB_BUILD_OPTIONS, firefox + will build with --enable-debug and --disable-optimize + - update debian/rules + - update debian/mozconfig.in + * Really build with --disable-gnomevfs this time + - update debian/mozconfig.in + * Refresh patches after landing of bmo: 588410 aka Fix make install to + work with omnijar + - remove debian/patches/bz588410_fix_make_install_with_omnijar.patch + - update debian/patches/series + * Generate the en-US xpi at build time again for importing in to Launchpad + - update debian/rules + - update debian/translation-support/install.rdf.in + + [ Jamie Strandboge <jamie@ubuntu.com> ] + * update debian/usr.bin.firefox.apparmor.10.10: + - deny write to /var/cache/fontconfig + - allow read to @{HOME}/.local/share/applications/mimeapps.list + - allow read to @{PROC}/[0-9]*/mountinfo (LP: #659450) + - allow read to /tmp/.X[0-9]*-lock + - deny read to @{HOME}/.local/share/recently-used.xbel + - deny execute of /usr/bin/gconftool-2 + - allow read to @{HOME}/.thumbnails/*/*.png + - allow read/write to @{HOME}/.gnome2/firefox*-bin-* + * update debian/usr.bin.firefox.apparmor.{9.04,10.04}: + - deny write to /var/cache/fontconfig + - allow read to @{PROC}/[0-9]*/mountinfo (LP: #659450) + - allow read to /tmp/.X[0-9]*-lock + - deny execute of /usr/bin/gconftool-2 + - remove extraneous @{HOME}/.config/ibus/bus/ + * add debian/usr.bin.firefox.apparmor.11.04: + - based on 10.10 + - remove redundant abstractions included by the gnome abstraction + (LP: #692406) + * debian/rules: updated for usr.bin.firefox.apparmor.11.04 + + [ Micah Gersten <micahg@ubuntu.com> ] + * Change xubuntu applications defaults list in natty apparmor profile; Path + changed in xubuntu-default-settings (11.04.0) + - update usr.bin.firefox.apparmor.11.04 + * fix LP: #694391 - Kubuntu Firefox Installer Fails; Add Replaces on + kubuntu-firefox-installer again in firefox-branding + - update debian/control + + [ Felix Geyer <debfx-pkg@fobos.de> ] + * Re-add KDE integration (LP: #684482) + - update debian/patches/mozilla-kde.patch + - update debian/patches/firefox-kde.patch + - update debian/patches/series + - update debian/rules + * Make firefox-4.0 suggest firefox-kde-support + - update debian/control + - update debian/control.pp + + -- Chris Coulson <chris.coulson@canonical.com> Fri, 31 Dec 2010 15:27:46 +0000 + +firefox (4.0~b7+nobinonly-0ubuntu3) natty; urgency=low + + * Build with --enable-startup-notification again, this got dropped + in the 3.6 => 4.0 update + - update debian/mozconfig.in + * Ship the testpilot extension for beta as per the official builds, based + on the discussion on #developers. We achieve this by building with + --enable-update-channel=beta for the beta milestones only. The update + channel isn't used anywhere at runtime because we disable the updater. + This means that Ubuntu users can participate in testpilot user studies + in Natty + - update debian/rules + - update debian/firefox.install.in + - update debian/mozconfig.in + + -- Chris Coulson <chris.coulson@canonical.com> Mon, 22 Nov 2010 19:52:28 +0000 + +firefox (4.0~b7+nobinonly-0ubuntu2) natty; urgency=low + + * Fix the profile migrator to not hang when ~/.mozilla doesn't exist, and + other improvements + - update debian/migrator/xulapp-profilemigrator + + -- Chris Coulson <chris.coulson@canonical.com> Fri, 19 Nov 2010 01:31:17 +0000 + +firefox (4.0~b7+nobinonly-0ubuntu1) natty; urgency=low + + * New upstream release v4.0 B7 (FIREFOX_4_0b7_RELEASE) + + [ Chris Coulson <chris.coulson@canonical.com> ] + * Don't build with -pie on Natty (LP: #663294) + - update debian/rules + * Update mozclient for mozilla-central + - update debian/mozclient/firefox.conf + - update debian/mozclient/firefox.mk + * Auto-generate Debhelper files at build time, using the Mozilla + text preprocessor. This makes it easier to maintain branches for + different versions (because we'll avoid having different filenames for + each version, which makes merging really difficult). We can also use + standard preprocessor directives for our different build options, + which means we drop a lot of logic from debian/rules + - rename debian/abrowser.desktop => debian/abrowser.desktop.in + - add debian/abrowser-branding.install.in + - add debian/abrowser-branding.links.in + - add debian/firefox-branding.install.in + - add debian/firefox-branding.links.in + - rename debian/apport/firefox.py => debian/apport/firefox.py.in + - rename debian/firefox-final.desktop => debian/firefox-final.desktop.in + - rename debian/firefox-gnome-support.install => + debian/firefox-gnome-support.install.in + - rename debian/firefox.dirs => debian/firefox.dirs.in + - rename debian/firefox.install => debian/firefox.install.in + - rename debian/firefox.links => debian/firefox.links.in + - rename debian/firefox.menu => debian/firefox.menu.in + - rename debian/firefox.postinst.in => debian/firefox.postinst.in + - rename debian/firefox.postrm.in => debian/firefox.postrm.in + - rename debian/firefox.preinst.in => debian/firefox.preinst.in + - rename debian/firefox.prerm.in => debian/firefox.prerm.in + - rename debian/firefox.xml => debian/firefox.xml.in + - updated debian/abrowser.desktop.in + - updated debian/firefox-final.desktop.in + - updated debian/firefox-gnome-support.install.in + - updated debian/firefox.dirs.in + - updated debian/firefox.install.in + - updated debian/firefox.links.in + - updated debian/firefox.menu.in + - updated debian/firefox.postinst.in + - updated debian/firefox.postrm.in + - updated debian/firefox.preinst.in + - updated debian/firefox.prerm.in + - updated deibna/firefox.xml.in + - updated debian/rules + - add debian/firefox-mozsymbols.install.in + * Simplify generating the Apport blacklist file to remove a superfluous + debian/rules target + - rename debian/apport/blacklist => debian/apport/firefox.in + - update debian/rules + * Auto-generate debian/control in the clean target + - add debian/control.pp + - update debian/rules + * Drop the ability to disable patches on a per-release basis. This adds + additional complexity, and we're not really using it at the moment. + We can always add it back again if we need it + - remove debian/disable-patches.sh + - update debian/rules + - remove debian/patches/series-disable-patches.8.04 + * Rework the branding selection logic so that we automatically use + the nightly branding for nightly builds, unofficial branding for + alpha milestones, and official branding for beta, RC's and final. + Auto-populate the branding names in the desktop files rather than + hard-coding them, and add a special beta desktop file + - add debian/firefox-beta.desktop.in + - rename debian/firefox-minefield.desktop => + debian/firefox-nightly.desktop.in + - rename debian/firefox-namaroka.desktop => + debian/firefox-unofficial.desktop.in + - update debian/rules + * Drop the update-notifier restart required hook. Instead, we rely on + the ubufox restart required banner inside the browser, rather than having + 2 notification mechanisms + - remove debian/firefox-restart-required.update-notifier + - update debian/firefox.postinst.in + - update debian/firefox.prerm.in + * Rewrite the launcher script to not wrap around the upstream start + scripts, but start the Firefox binary directly. The upstream start scripts + contain a lot of complexity for dealing with things that we don't need to + worry about, and are quite slow. Also, add in the hooks for the new + profile migrator + - update debian/firefox.sh.in + * Replace the old profile migrator. The previous one relied on hard-coded + values and fragile shell script that isn't really scalable enough + now that stable Ubuntu releases see new major Firefox versions. The + new profile migrator doesn't require any hard-coded values, and should + be lower maintenance + - add debian/migrator/xulapp-profilemigrator + - remove debian/migrator/main.c + - update debian/rules + - update debian/firefox.sh.in + - update debian/control.pp + * Build with "make -f client.mk" and using a mozconfig, rather than the + autoconf/configure/make steps used previously. The client.mk contains the + sequencing for doing PGO builds + - update debian/firefox-mozsymbols.install.in + - add debian/mozconfig.in + - update debian/rules + * Add support for building with PGO. Add a build option (DEB_BUILD_PGO) + which will run the build with make -f client.mk profiledbuild. This is + off by default. + - update debian/rules + - update debian/mozconfig.in + * Run the Mozilla test suite at build time. Currently, we run the following + targets: check, xpcshell-tests, reftest and crashtest. Test-suite failures won't + break the build just yet + - add debian/testsuite.mk + - update debian/rules + - update debian/control.pp + * Tidy up the vendor preferences + - remove debian/ubuntu-useragent.js.tmpl + - rename debian/firefox.js => debian/vendor-firefox.js.in + - rename debian/ubuntu-abrowser.js.tmpl => debian/vendor-abrowser.js.in + - update debian/vendor-firefox.js.in + - update debian/vendor-abrowser.js.in + - update debian/rules + * Don't touch .autoreg on upgrade. This isn't necessary with the XPCOM changes + in Gecko 2.0 + - update debian/firefox.postinst.in + - remote debian/firefox-gnome-support.postinst.in + * Disable gnomevfs support on >= 11.04 (LP: #661287) + - update debian/rules + - update debian/mozconfig.in + - update debian/firefox-gnome-support.install.in + * Add x-scheme-handler magic to desktop files + - update debian/firefox.desktop.in + - update debian/firefox-beta.desktop.in + - update debian/firefox-nightly.desktop.in + - update debian/firefox-unofficial.desktop.in + * Dropped obsolete / not-needed patches + - remove debian/patches/add_syspref_dir.patch + - remove debian/patches/bz386904_config_rules_install_dist_files.patch + - remove bz534663_attXXX_normalize_distribution_searchplugins.patch + - remove debian/patches/bz591331_att469858_breakpad_allow_ptrace.patch + - remove debian/patches/ubuntu_no_app_updates.patch + - update debian/patches/series + * Update build-depends for Firefox 4.0 + - update debian/control.pp + * Rebased patches for Firefox 4.0 + - update browser_branding.patch + - update bz460917_att350845_reload_new_plugins.patch + - update bz467738_att351145_lockPref_everywhere.patch + - update bz515232_att399338_distro_locale_searchplugins.patch + - update bzXXX_libxul_sdk_nspr.patch + - udpate bzXXX_plugin_for_mimetype_pref.patch + - update lp185622_system_path_default_browser.patch + - update lp512615_cairo_lcd_filter.patch + - update lp548866_bz467766_att351173-dont-reset-user-prefs-on-upgrade.patch + - update ubuntu_bookmarks.patch + * Disable KDE integration temporarily until I've reviewed the updated patches + - update debian/patches/series + * Install top-level chrome.manifest after landing of (bmo: 579178) aka + single-chrome-manifest + - update debian/firefox.install.in + * Add trademarkInfo key to the brand.dtd file in the awesome-branding + to fix an issue with Help->About not working. Also drop the unneeded + overrides from the manifest file and rename the patch to reflect it's + extended scope. Eventually, this patch should be merged in to the + awesome-branding bzr branch + - rename debian/patches/awesome_branding_chrome_rename.patch => + debian/patches/awesome_branding_updates.patch + - update debian/patches/awesome_branding_updates.patch + - update debian/patches/series + * Install our vendor preferences in to dist/bin before running stage-package. + This seems to be the only way to ensure that they are included in the + omni.jar. This means we need to patch the upstream package-manifest to + include the extra file + - add debian/patches/install_ubuntu_prefs.patch + - update debian/rules + * Clean up the files in /etc/firefox on upgrade + - update debian/firefox.preinst.in + * Support builds suitable for valgrind, by building with + DEB_MOZ_VALGRIND=1. This will automatically pick the right optimisations + and build flags + - update debian/rules + - update debian/mozconfig.in + * Fix make install with --enable-chrome-format=omni. Add patch to create + the omni.jar file after running stage-package. This has already + landed on mozilla-central, so we can drop again at beta 8 + - add debian/patches/bz588410_fix_make_install_with_omnijar.patch + - update debian/patches/series + * Drop other unused cruft from the package + - remove debian/debsearch.src + - remove debian/firefox.png.uu + - remove debian/debsearch.gif.uu + - update debian/rules + * Build-depend on yasm + - update debian/control + * Fix the profile migrator to not crash on profiles where + 'LastVersion=Safe Mode' (LP: #674607) + - update debian/migrator/xulapp-profilemigrator + + [ Jamie Strandboge <jamie@ubuntu.com> ] + * debian/usr.bin.firefox*: + - allow .{firefox,mozilla} instead of just .mozilla (LP: #624435) + - allow owner write to ~/.config/ibus/bus/ + - adjust apparmor profile for latest sun-java6 plugin (LP: #633369) + + [ Micah Gersten <micahg@ubuntu.com> ] + * Drop patch after upstream landing of (bmo: 551152) aka Symlinked components + break everything + - drop debian/patches/lp518422.patch + - update debian/patches/series + * Add mesa-common-dev to build-depends after landing of configure test aka + (bmo: 517566) which is for WebGL aka (bmo: 516213) + - update debian/control + + -- Chris Coulson <chris.coulson@canonical.com> Wed, 17 Nov 2010 21:35:57 +0000 + +firefox (3.6.12+build1+nobinonly-0ubuntu0.10.10.1) maverick-security; urgency=low + + * New upstream release v3.6.12 (FIREFOX_3_6_12_BUILD1) + - see USN-1011-1 + + [ Jamie Strandboge ] + * AppArmor: + - allow mmap for temporary files that we own (LP: #662918) + - add owner read to environ and auxv in @{PROC} as well as + /etc/lsb-release read and expr ix for the crash reporter + - update path for Xubuntu default settings (LP: #664093) + + -- Chris Coulson <chris.coulson@canonical.com> Wed, 27 Oct 2010 08:31:06 -0400 + +firefox (3.6.11+build3+nobinonly-0ubuntu0.10.10.1) maverick-security; urgency=low + + * New upstream release v3.6.11 (FIREFOX_3_6_11_BUILD3) + - see USN-997-1 + + [ Jamie Strandboge <jamie@ubuntu.com> ] + * AppArmor: + - fix for Google Gears (LP: #644976) + + [ Chris Coulson <chris.coulson@canonical.com> ] + * Refresh patches after landing of (bmo: 327323) aka Can't "Open with" files + that are send as application/octet-stream (or other "unknown to firefox" + mime types) + - update debian/patches/mozilla-kde.patch + - update debian/patches/series + - remove debian/patches/bz327323_att471859_lp239952_launch_from_extension.patch + * Bump minimum system NSS to 3.12.8 after landing of (bmo: 600104) aka + Bump minimum required version for system NSS to 3.12.8 + - update debian/rules + * Bump minimum system NSPR to 4.8.6 after landing of (bmo: 567620) aka + Bump minimum required version for system NSPR to 4.8.6 + - update debian/rules + * Bump minimum version of sqlite to 3.7.1 after landing of (bmo: 583611) aka + Upgrade to SQLite 3.7.1 + - update debian/rules + + -- Chris Coulson <chris.coulson@canonical.com> Wed, 13 Oct 2010 12:23:34 +0100 + +firefox (3.6.10+build1+nobinonly-0ubuntu3) maverick; urgency=low + + * Fix LP: #239952 - the associated helper application does not exist. + Where a launcher doesn't exist for a particular mimetype, use the file + extension instead + - add debian/patches/bz327323_att471859_lp239952_launch_from_extension.patch + - update debian/patches/series + + -- Chris Coulson <chris.coulson@canonical.com> Tue, 21 Sep 2010 23:09:29 +0100 + +firefox (3.6.10+build1+nobinonly-0ubuntu2) maverick; urgency=low + + * Add the following .desktop translations; Thanks to David Planella for + organizing the translations and to those who contributed the translations + - update debian/firefox-final.desktop + + Asturian + + Croatian + + Galician + + German + + Hebrew + + Uyghur + * Update the Italian Name for Firefox + - update debian/firefox-final.desktop + + -- Micah Gersten <micahg@ubuntu.com> Wed, 15 Sep 2010 22:51:30 -0500 + +firefox (3.6.10+build1+nobinonly-0ubuntu1) maverick; urgency=low + + * New upstream release v3.6.10 (FIREFOX_3_6_10_BUILD1) + + [ Chris Coulson <chris.coulson@canonical.com> ] + * Fix "ISO C++ forbids braced-groups within expressions" error on + GCC < 4.4 (which is also a warning on GCC >= 4.4) + - update debian/patches/bz591331_att469858_breakpad_allow_ptrace.patch + * Blacklist plugin-container in Apport + - update debian/apport/blacklist + * Fix LP: #637434 - components.list is not installed + - update debian/firefox.install + * De-fuzz patches + - update debian/patches/mozilla-kde.patch + + [ Jamie Strandboge <jamie@ubuntu.com> ] + * adjust apparmor profile for non-maverick dailies for latest sun-java6 + plugin (LP: #633369) + * ignore writes to /var/cache/fontconfig for 10.10 + + -- Chris Coulson <chris.coulson@canonical.com> Wed, 15 Sep 2010 17:50:08 +0100 + +firefox (3.6.9+build1+nobinonly-0ubuntu1) maverick; urgency=low + + * New upstream release v3.6.9 build1 (FIREFOX_3_6_9_BUILD1) + + * Drop patch after landing of (bmo: 569836) aka Build fails on + Fedora Core 13 + - remove debian/patches/ftbfs_crashreporter.patch + - update debian/patches/series + * Don't suggest the transitional kmozillahelper now we've branched + for Maverick. This stops it from being displayed as an addon + for Firefox in software-center + - update debian/control + * Don't suggest the transitional latex-xft-fonts. Use ttf-lyx + instead + - update debian/control + * Fix LP: #623509 - Firefox is creating empty crash reports due to + kernel ptrace hardening + - add debian/patches/bz591331_att469858_breakpad_allow_ptrace.patch + - update debian/patches/series + * Build with MOZILLA_OFFICIAL=1 again and in turn, enable the crashreporter + - update debian/rules + * Really fix LP: #605336 - "Report Broken Web Site" option missing - make + sure that we install the reporter chrome + - update debian/rules + + -- Chris Coulson <chris.coulson@canonical.com> Fri, 27 Aug 2010 20:14:45 +0100 + +firefox (3.6.8+build1+nobinonly-0ubuntu3) maverick; urgency=low + + [ Chris Coulson <chris.coulson@canonical.com> ] + * Fix LP: #605336 - "Report Broken Web Site" option missing - don't + disable the reporter extension when building with DEB_MIN_SYSDEPS=1 + - update debian/rules + * Add DEB_HOST_GNU_CPU to MOZ_SYMBOLS_EXTRA_BUILDID to avoid the + possibility of filename collisions on the server if our builds + happen to run at the same time + - update debian/rules + * Build without MOZILLA_OFFICIAL=1 for beta until LP #623509 is fixed, + so we're not sending empty crash reports + - update debian/rules + + [ Jamie Strandboge <jamie@ubuntu.com> ] + * add debian/usr.bin.firefox.apparmor.10.10 (LP: #565756, LP: #592121) + * debian/rules: updated for usr.bin.firefox.apparmor.10.10 + * debian/firefox.postinst.in: + - remove old code for the dailies + - update for local include file + - update for addons include file + - use '-T -W' with apparmor_parser to pull in abstraction updates + * debian/firefox.postrm.in: + - update for local include file + - update for addons include file + + [ Micah Gersten <micahg@ubuntu.com> ] + * fix LP: #559154 - KDE users installing Firefox from archive don't know + about kmozillahelper; kmozillahelper was renamed to firefox-kde-support + so update Suggests + - update debian/control + + -- Chris Coulson <chris.coulson@canonical.com> Thu, 26 Aug 2010 00:09:49 +0100 + +firefox (3.6.8+build1+nobinonly-0ubuntu2) maverick; urgency=low + + [ Chris Coulson <chris.coulson@canonical.com> ] + * Provide iceweasel + - update debian/control + * Really build with MOZILLA_OFFICIAL=1 this time, so that the crash + reporter is actually enabled + - update debian/rules + * Only enable the crashreporter and build the Breakpad symbols on i386, + amd64 and armel + - update debian/control + - update debian/rules + * Blacklist Firefox in Apport on architectures where we use the Mozilla + crash reporter + - add debian/apport/blacklist + - update debian/rules + * Drop the DEBIAN_META_NAME stuff - we don't need this now we are always + using unversioned sources for the official in-archive version. This + simplifies the wrapper script a little + - update debian/rules + - update debian/firefox.sh.in + * Rework how abrowser is launched a little. Drop an unnecessary patch + and ship both abrowser and abrowser-bin files in LIBDIR. With the + DEBIAN_META_NAME bits gone, the wrapper script will always search for + $LIBDIR/abrowser if you launch /usr/bin/abrowser. From there, the Mozilla + scripts already handle this properly + - update debian/firefox.sh.in + - update debian/rules + - remove debian/patches/abrowser_run_mozilla.patch + - update debian/patches/series + * Don't handle launching GDB in our wrapper script, run-mozilla.sh + already does all this. Just make sure that we pass the right arguments + - update debian/firefox.sh.in + * Fix LP: #613049 - Default website link in Maverick firefox is invalid + - update debian/patches/ubuntu_bookmarks.patch + * Refresh favicon's in the default bookmark collection, so they display + the latest Ubuntu branding on a fresh profile + - update debian/patches/ubuntu_bookmarks.patch + * Drop the mips-specific binutils build-depend - we don't even build + on this arch + - update debian/control + * Only try to install the crashreporter binary when building with the + bundled xulrunner library + - update debian/firefox.install + - update debian/rules + * Fix LP: #615889 - Add Ubuntu One bookmark to Firefox fresh install + - update debian/patches/ubuntu_bookmarks.patch + * Fix LP: #612185 - Apport leaks the secret name of the Firefox + profile directory + - update debian/apport/firefox.py + * Fix LP: #614190 - Chinese update for firefox.desktop. Thanks to + Cheng-Chia Tseng and Aron Xu + - update debian/firefox-final.desktop + * Fix LP: #559083 - Incomplete Vietnamese translation for items listed + in desktop main menu. Thanks to Vu Do Quynh for the translations + - update debian/firefox-final.desktop + + [ Igor Zubarev <igor.zubarev@gmail.com> ] + * Fix LP: #569762 - Add Russian translations to desktop files + - update debian/abrowser.desktop + - update debian/firefox-final.desktop + + -- Chris Coulson <chris.coulson@canonical.com> Thu, 12 Aug 2010 21:52:18 +0100 + +firefox (3.6.8+build1+nobinonly-0ubuntu1) maverick; urgency=low + + * New upstream release v3.6.8build1 (FIREFOX_3_6_8_BUILD1) + + [ Alexander Sack <asac@linaro.org> ] + * add support for mozilla breakpad symbols and in turn enable + crashreporter + - add debian/patches/ftbfs_crashreporter.patch + - update debian/patches/series + - update debian/control + - update debian/rules + + [ Chris Coulson <chris.coulson@canonical.com> ] + * Drop all the transitional packages and conflicts/replaces cruft built + up from the pre-LTS releases + - update debian/control + * Install the crash reporter + - update debian/firefox.install + * Build with MOZILLA_OFFICIAL=1. This is required to enable the crash + reporter in application.ini + - update debian/rules + + [ Micah Gersten <micahg@ubuntu.com> ] + * Add build depends on libcurl4-openssl-dev for building the crash reporter + - update debian/control + + -- Chris Coulson <chris.coulson@canonical.com> Fri, 23 Jul 2010 16:40:54 +0200 + +firefox (3.6.7+build2+nobinonly-0ubuntu1) maverick; urgency=low + + * New upstream release v3.6.7build2 (FIREFOX_3_6_7_BUILD2) + + * Make it possible to disable patches on a per-release basis. This + makes it easier to share packaging branches across releases, and makes + it possible to disable the patches which make the Hardy daily builds fail + - update debian/rules + - add debian/disable-patches.sh + - add debian/patches/series-disable-patches.8.04 + * Make the debian/usr.bin.firefox.apparmor.in target a dependency of + pre-build rather than makebuilddir. Whilst this doesn't really change + much, it is technically slightly more correct (makebuilddir is just for + creating the build directory, whilst pre-build is for doing all the + preparation work) + - update debian/rules + * Merge the debian/firefox.sh target in to the match-all target, this + just de-clutters things a little + - update debian/rules + * Remove debian/stamp-autotools-files-moz in the clean target + - update debian/rules + * Drop the empty firefox-dev and firefox-*-dev transitional packages. We + didn't install anything in to firefox-dev, and we can reintroduce it in + the future if anything in the archive depends on the browser specific + interfaces + - update debian/control + - remove debian/firefox-dev.install + - remove debian/firefox-dev.links + * Fix some Lintian warnings + - add debian/README.source + - update debian/control + * Make debian/migrator/ffox-beta-profile-migration-dialog a dependency of + post-patches rather than pre-build. This avoids the need for having to + build the profile migrator when unpacking the source tarball + - update debian/rules + + -- Chris Coulson <chris.coulson@canonical.com> Thu, 15 Jul 2010 23:51:25 +0200 + +firefox (3.6.7+build1+nobinonly-0ubuntu1) maverick; urgency=low + + * New upstream release v3.6.7 (FIREFOX_3_6_7_BUILD1) + * Set the StartupWMClass to the same value as the WM_CLASS property on the + browser window. This makes startup notification work for all branding + and also makes it work properly with Docky + - update debian/firefox-minefield.desktop + - update debian/firefox-namoroka.desktop + - update debian/abrowser.desktop + + -- Chris Coulson <chris.coulson@canonical.com> Fri, 09 Jul 2010 12:16:23 +0100 + +firefox (3.6.6+nobinonly-0ubuntu1) maverick; urgency=low + + * New upstream release v3.6.6 (FIREFOX_3_6_6_RELEASE) + + * fix LP: #590450 - Firefox should use the hunspell directory for dictionaries + - update debian/rules + + -- Micah Gersten <micahg@ubuntu.com> Sun, 27 Jun 2010 01:30:09 -0500 + +firefox (3.6.4+build7+nobinonly-0ubuntu1) maverick; urgency=low + + * New upstream release v3.6.4 (FIREFOX_3_6_4_BUILD7) + + [ Micah Gersten <micahg@ubuntu.com> ] + * Rebase patch after upstream landing of Lorentz branch + - update debian/patches/bz460917_att350845_reload_new_plugins.patch + * Drop patch after upstream landing of (bmo: 544481) aka + Build fails on Ubuntu Lucid Lynx using 'dash' shell + - drop debian/patches/fix-build-glitch.patch + - update debian/patches/series + + [ Jamie Strandboge <jamie@ubuntu.com> ] + * AppArmor: + - allow ixr access to /usr/lib/xulrunner-*/plugin-container for xul builds + - finetune Adobe Reader access (LP: #570337) + - silence noisy denial on /boot/vmlinuz* and /boot/initrd.img* caused by + readlinking symlinks in / (LP: #571761) + - allow 'm' for java's 'classes.jsa' file (LP: #574459) + - transition to firefox_java on Sun's jre/bin/java_vm too (LP: #570128) + - allow Uxr for gnome-codec-install (LP: #577097) + + [ Chris Coulson <chris.coulson@canonical.com> ] + * Rebase patches for 3.6.4 release + - update debian/patches/firefox-kde.patch + - update debian/patches/mozilla-kde.patch + - update debian/patches/add_syspref_dir.patch + * Build with --enable-ipc on amd64, i386 and armel. These are the only + architectures where OOPP is supported. Build with --disable-ipc on all + other architectures + - update debian/rules + * Fix LP: #513887 - Install the plugin-container binary for OOPP support + when building with --enable-ipc + - update debian/rules + * Fix build failure with fontconfig 2.5 + - update debian/patches/lp512615_cairo_lcd_filter.patch + * Fix LP: #469752 - KDE/Gnome startup notification not disappearing + when app window is up - build with --enable-startup-notification + - update debian/rules + + -- Chris Coulson <chris.coulson@canonical.com> Wed, 23 Jun 2010 15:31:44 +0100 + +firefox (3.6.3+nobinonly-0ubuntu4) lucid; urgency=low + + * fix LP: #443147 - Firefox on ARM inappropriately adds scroll bars to many + frames and images; this is a workaround that forces -O2 for the whole + mozilla tree build on armel; the scroll bar only manifests on lucid toolchain + when using the upstream optimization flag mix + - update debian/rules + + -- Alexander Sack <asac@ubuntu.com> Wed, 21 Apr 2010 17:14:28 +0200 + +firefox (3.6.3+nobinonly-0ubuntu3) lucid; urgency=low + + [ Jamie Strandboge <jamie@ubuntu.com> ] + * AppArmor: add read access to /etc/xul-ext/**, now needed by adblock + + [ Chris Coulson <chris.coulson@canonical.com> ] + * Create checksums for NSS libraries to make FIPS mode work (LP: #559881) + - update debian/rules + + -- Chris Coulson <chris.coulson@canonical.com> Tue, 13 Apr 2010 22:20:28 +0100 + +firefox (3.6.3+nobinonly-0ubuntu2) lucid; urgency=low + + [ Chris Coulson <chris.coulson@canonical.com> ] + * Fix LP: #526291 - abrowser menu entry has Firefox icon. After changing the + branding in common-post-build-arch, ensure that the firefox icons in + dist/bin/icons are replaced with the abrowser icons + - update debian/rules + * Fix LP: #408238 - does not provide gnome-www-browser + - update debian/firefox-gnome-support.postinst.in + - add debian/firefox-gnome-support.prerm.in + - update debian/rules + * Update Google and Yahoo! search URL's + - add debian/patches/ubuntu_codes_google.patch + - update debian/patches/series + - update debian/firefox.js + * Fix LP: #520166 - Restore ability to set a preferred plugin for a given + mime-type, which regressed since we are not using the system xulrunner + - add debian/patches/bzXXX_plugin_for_mimetype_pref.patch + - update debian/patches/series + * Fix LP: #557640 - nrf-003 testcase failed Default "Welcome to Ubuntu" page + doesn't appear without connectivity - re-enable the NetworkManager + integration + - update debian/firefox.js + * Fix LP: #541951 - Firefox 3.6 does not honour lockPref - resurrect the + patch used in xulrunner to reimplement this + - add debian/patches/bz467738_att351145_lockPref_everywhere.patch + - update debian/patches/series + + [ Jamie Strandboge <jamie@ubuntu.com> ] + * AppArmor: + - add apturl (LP: #558432) + + -- Chris Coulson <chris.coulson@canonical.com> Fri, 09 Apr 2010 12:29:53 +0100 + +firefox (3.6.3+nobinonly-0ubuntu1) lucid; urgency=low + + * New upstream release v3.6.3 (FIREFOX_3_6_3_RELEASE) + + [ Jamie Strandboge <jamie@ubuntu.com> ] + * AppArmor: + - add leafpad and mousepad text editors for XFCE users (LP: #543587) + + [ Micah Gersten <micahg@ubuntu.com> ] + * fix LP: #548866 - forgets middlemouse.contentLoadURL on upgrade; add patch + from xulrunner-1.9.1 + - update debian/patches/series + - add debian/patches/lp548866_bz467766_att351173-dont-reset-user-prefs-on-upgrade.patch + + [ Chris Coulson <chris.coulson@canonical.com> ] + * Add a cairo LCD filter to use Freetype LCD colour filtering features, + based on the same patch applied to our system cairo package. Thanks to + Marc Deslauriers for helping to make this work. (LP: #512615) + - add debian/patches/lp512615_cairo_lcd_filter.patch + - update debian/patches/series + * Fix LP: #546490 - "Firefox will not start in debug mode" + - update debian/firefox.sh.in + * Fix a build issue installing ubuntu-abrowser.js when building with + DEB_MIN_SYSDEPS=0 + - update debian/rules + + -- Chris Coulson <chris.coulson@canonical.com> Fri, 02 Apr 2010 16:44:02 +0100 + +firefox (3.6.2+nobinonly-0ubuntu1) lucid; urgency=low + + * New upstream release v3.6.2 (FIREFOX_3_6_2_RELEASE) + + [ Felix Geyer <debfx-pkg@fobos.de> ] + * Rebase mozilla-kde.patch for 3.6.2 + - update debian/patches/mozilla-kde.patch + + [ Jamie Strandboge <jamie@ubuntu.com > ] + * AppArmor profile cleanup for Lucid users: + - remove sys_ptrace now that the kernel DTRT (LP: #498317) + - don't use @{PROC}/[0-9]*/mounts or /etc/gnome/defaults.list (part of + gnome abstraction now) + - don't use @{PROC}/[0-9]*/maps (part of base abstraction) + - don't use /etc/sound (part of audio abstraction) + - use 'owner' for Desktop and all dot files and directories in @{HOME} + - use ubuntu-bittorrent-clients abstraction + - use ubuntu-media-players abstraction + - allow access to xubuntu default app list (LP: #500231) + - add ark and xarchiver for KDE and XFCE archive managers + - add thunar for XFCE + - add editors supported by It's All Text, thanks to James Troup + (LP: #507711) + - allow RealPlayer plugin and access to /usr/local/lib (LP: #501822) + - allow Ux for scim and scim-bridge + - allow ix for gst-plugin-scanner + * ship different AppArmor profiles for different releases: + - move usr.bin.firefox.apparmor.in to usr.bin.firefox.apparmor.9.10 + - add usr.bin.firefox.apparmor.10.04 + - debian/rules: ship AppArmor profile based on release: + + add DISTRIB, DISTRIB_VERSION_MAJOR and DISTRIB_VERSION_MINOR + + ship 9.10 profile for Karmic and under and 10.04 profile for Lucid + and later + * update AppArmor profile to transition to a java child profile rather + than Ux. This has the added benefit of restricting java a bit more than + before. This is needed since the java plugins are expecting certain + environment variables to be present, which get scrubbed with Ux. 'cx' + doesn't remove these from the environment but allows for better profiling + over 'ux'. Thanks to John Johansen for discussion and idea. (LP: #484148) + + [ Alexander Sack <asac@ubuntu.com> ] + * fix LP: #518422 - Firefox does not start with certain addons installed; + don't normalize paths for xpti.dat + - add debian/patches/lp518422.patch + - update debian/series + + [ Micah Gersten <micahg@ubuntu.com> ] + * Bump minimum system NSS to 3.12.6 after upstream landing of (bmo: 545755) + aka Update Mozilla stable branches to NSS 3.12.6 and minimal support for + RFC 5746 + - update debian/rules + * Really fix FTBFS for sparc; Add configure flag to correct variable + - update debian/rules + + -- Micah Gersten <micahg@ubuntu.com> Wed, 24 Mar 2010 01:17:46 -0500 + +firefox (3.6+nobinonly-0ubuntu6) lucid; urgency=low + + [ Jamie Strandboge <jamie@ubuntu.com> ] + * adjust AppArmor profile to allow scim + + [ Felix Geyer <debfx-pkg@fobos.de>] + * Apply KDE integration from openSUSE (LP: #494067) + - add debian/patches/mozilla-kde.patch + - add debian/patches/firefox-kde.patch + - update debian/patches/series + - update debian/rules + * Add kmozillahelper to suggests of firefox + - update debian/control + + [ Kees Cook <kees@ubuntu.com> ] + * fix LP: #531581 - cannot report bugs or crashes when profile names contains + spaces; concatenate non alnum characters in profile name for apport use + - update debian/apport/firefox.py + + [ Micah Gersten <micahg@ubuntu.com> ] + * fix LP: #531895 - Firefox isn't in Ubuntu Software Center's "Internet" or + "Web Browsers" sections; Add Internet and WebBrowser Categories to .desktop + - update debian/abrowser.desktop + - update debian/firefox-final.desktop + - update debian/firefox-namoroka.desktop + * fix FTBFS on sparc; disable jit on sparc until bmo 502369 is fixable + - update debian/rules + + -- Micah Gersten <micahg@ubuntu.com> Sat, 06 Mar 2010 23:47:38 -0600 + +firefox (3.6+nobinonly-0ubuntu5) lucid; urgency=low + + [ Micah Gersten <micahg@ubuntu.com> ] + * fix LP: #514108 - Cookie Accept Dialog Not Shown on Firefox 3.6; install chrome/comm.* libraries + - update debian/rules + * fix LP: #525181 - "Make a Support Request to the Ubuntu Community" bookmark + woefully out of date; update bookmark + - update debian/patches/ubuntu_bookmarks.patch + + [ Felix Geyer <debfx-pkg@fobos.de> ] + * fix LP: #396786 - Default theme missing in Firefox 3.6 + - update debian/firefox.install + + [ Alexander Sack <asac@ubuntu.com> ] + * use preference way to set yahoo search code 'chr-ubuntu-os' rather + than patching source + - update debian/firefox.js + - delete debian/patches/ubuntu_codes_yahoo.patch + - update debian/patches/series + + -- Alexander Sack <asac@ubuntu.com> Mon, 22 Feb 2010 12:53:08 +0100 + +firefox (3.6+nobinonly-0ubuntu4) lucid; urgency=low + + * fix LP: #523569 - No search providers or default search provider + in 3.6+nobinonly-0ubuntu3; fix syntax issue in bugfix for bmo 534663 + - update debian/patches/bz534663_attXXX_normalize_distribution_searchplugins.patch + + -- Alexander Sack <asac@ubuntu.com> Thu, 18 Feb 2010 03:16:19 +0100 + +firefox (3.6+nobinonly-0ubuntu3) lucid; urgency=low + + [ Alexander Sack <asac@ubuntu.com> ] + * fix LP: #520963 - sysprefs not honoured since firefox is built without + system xulrunner; resurrect the patch we ship in xulrunner + - add debian/patches/add_syspref_dir.patch + - update debian/patches/series + * fix LP: #520682 - Only search provider is Ask.com; set en-US as + distribution.searchplugins.defaultLocale in syspref firefox.js + - update debian/firefox.js + * fix LP: #428306 - default search engines are removed and readded (keywords + wiped) with upgrade + - add debian/patches/bz534663_attXXX_normalize_distribution_searchplugins.patch + - update debian/patches/series + * add ubuntu fr code for yahoo (en-US) searchplugin + - add debian/patches/ubuntu_codes_yahoo.patch + - update debian/patches/series + + [ Micah Gersten <micahg@ubuntu.com> ] + * Rename apport hook to firefox.py (unversioned) + - rename debian/apport/firefox-3.6.py => debian/apport/firefox.py + * Update apport hook to pull from unversioned profile directory + * Update apport hook to report on non-distro package and tag PPA + * Collect version info for firefox/abrowser packages + - update debian/apport/firefox.py + * Install apport hook again + - update debian/firefox.install + + [ Jamie Strandboge <jamie@ubuntu.com> ] + * debian/firefox.postinst.in: move aside the old firefox-3.5 AppArmor + profile + + -- Alexander Sack <asac@ubuntu.com> Wed, 17 Feb 2010 21:48:12 +0100 + +firefox (3.6+nobinonly-0ubuntu2) lucid; urgency=low + + [ Alexander Sack <asac@ubuntu.com> ] + * fix firefox-3.5-gnome-support transitional package typo; depend + on firefox-gnome-support instead of firefox-3.5-gnome-support + - update debian/control + + [ Michael Vogt <mvo@ubuntu.com> ] + * add missing Replace: firefox-3.0 for the firefox-branding package + (LP: #518747). This fixes a upgrade issues from hardy to lucid. + - update debian/control + + [ Jamie Strandboge <jamie@ubuntu.com> ] + * debian/firefox.postinst.in: + - remove AppArmor profile from dailies on upgrades (LP: #512470) + - remove extraneous -T -W from apparmor_parser + - check for disabled profile ourselves, since apparmor_parser on Ubuntu + 9.04 and earlier didn't honor the disable/ directory + * debian/firefox.preinst.in: unconditionally disable the AppArmor profile + on Ubuntu 9.04 and earlier, since it requires abstractions found only + in 9.10 + * debian/control: have firefox Depends on lsb-release (needed in preinst) + * debian/usr.bin.firefox.apparmor.in: + - adjustments in rules for name change (LP: #513160) + - allow /usr/bin/tr + + [ Micah Gersten <micahg@ubuntu.com> ] + * Add replaces to firefox-branding on kubuntu-firefox-installer (LP: #439431) + - update debian/control + * Add firefox 3 transitional packages and Replaces/Provides/Conflicts + (LP: #513074) + - update debian/control + * Don't install firefox.xml for adding entries to + gnome-default-applications-properties (LP: #519606) + - update debian/control + * Update rosetta template name to firefox-3.6 + - update debian/translation-support/install.rdf.in + * Update EM_TRANSLATION variables for firefox 3.6 + - update debian/rules + + -- Micah Gersten <micahg@ubuntu.com> Wed, 10 Feb 2010 14:52:12 -0600 + +firefox (3.6+nobinonly-0ubuntu1) lucid; urgency=low + + * New upstream release v3.6 (FIREFOX_3_6_RELEASE) + + fix LP: #449744 - Firefox crashes when attempting to load Firebug 1.5 + + fix LP: #66015 - Duplicate spell checking dictionaries for every entry + + fix LP: #132938 - tooltips dont work in sidebar + + fix LP: #195698 - Password asked separately for each tab that requires it + (proxy) + + fix LP: #239462 - tooltips disappear too fast + + fix LP: #385816 - Resize corner grab stays visible after maximize + + fix LP: #429476 - firefox crash on javascript page + + fix LP: #432876 - Icons missing in Firefox searchbox drop down list + + fix LP: #486284 - maxlength on input box can be overriden by autocomplete + + fix LP: #501393 - Integrate Firefox notifications with notify-osd bling + + [ H. Montoliu <hmontoliu@ubuntu.com> ] + * fix LP: #361052 - firefox apport hook fails to retrieve pluginreg.dat file + * update debian/apport/firefox-3.6.py - removed unused code and minor refactoring. + + [ Fabien Tassin <fta@ubuntu.com> ] + * Update the location of the upsteam branch now that 3.6/Namoroka has its own + branch, and trunk moved on to 3.7 + - update debian/mozclient/firefox-3.6.conf + * Use Namoroka instead of Shiretoko as brand name and use it for snapshots. + Name it Namoroka in the Preferred Application UI too + - update debian/firefox-3.6-shiretoko.desktop => debian/firefox-3.6-namoroka.desktop + - update debian/firefox-3.6.xml + - update debian/rules + * Target the 'default' branch instead of tip + - add debian/moz-rev.sh + - update debian/mozclient/firefox-3.6.conf + * Add firefox 3.6 to the list of Preferred Applications in Gnome + - add debian/firefox-3.6.xml + - update debian/firefox-3.6-gnome-support.install + * Add ${misc:Depends} to all non-transitional packages, make firefox-3.6-dbg + depend on firefox-3.6 with the exact same version, move -dbg packges to + priority extra and add firefox-3.6-gnome-support-dbg + - update debian/control + * Update diverged patches: + - update debian/patches/browser_branding.patch + - update debian/patches/firefox-profilename + - update debian/patches/ubuntu_bookmarks.patch + - update debian/patches/lp185622_system_path_default_browser.patch + - update debian/patches/dont_depend_on_nspr_sources.patch + + [ Alexander Sack <asac@ubuntu.com> ] + * add libnotify-dev to build-depends + - update debian/control + * add libiw-dev to build-depends to fix build failure + - update debian/control + * until we move searchplugins to a separate package provided only by the current default + firefox, we need to make firefox-3.6 replace all the older firefox binary packages: + firefox-3.5, firefox-3.2, firefox-3.1, firefox-3.0 + - update debian/control + * implement MIN_SYS_DEPS approach that does not use system xulrunner + and only a minimal set of system dependencies. + + drop patches not required anymore: + - delete debian/patches/dont_depend_on_nspr_sources.patch + - update debian/patches/series + + update browser directory provider patch + - update debian/patches/bz515232_att399338_distro_locale_searchplugins.patch + + move .install lines that depend on whether MIN_SYS_DEPS is used or not + to debian/rules in ifneq (,$(MIN_SYS_DEPS)) blocks + - update debian/rules + - update debian/firefox-3.5.install + + ship gnome support .so's inside of the main package, but keep dependencies in + the (now empty) gnome-support package; to achieve this, we first install + the gnome support files in the -gnome-support package and move them to the + main package _after_ shlib depends where generated + - update debian/rules + + do not build-depend on xulrunner dev package anymore; local xulrunner builds + with MIN_SYS_DEPS=0 should still work though + - update debian/control + + make firefox-3.5 conflict firefox-3.5-gnome-support as it shipps the gnome + files directly now + - update debian/control + * add patch for armv7 support + - add debian/patches/bz532198_lp488354_ns_invokebyindex_not_thumb2_safe.patch + - update debian/patches/series + * move to unversioned binary and source package name for "archive" firefox + + generalize final version dependent pieces in debian/rules + - update debian/rules + + update mozclient/ files to create unversioned sources/tarballs + - rename debian/mozclient/firefox-3.6.conf => debian/mozclient/firefox.conf + - update debian/mozclient/firefox.conf + - rename debian/mozclient/firefox-3.6.mk => debian/mozclient/firefox.mk + + rename and update previously versioned debhelper files + - rename debian/firefox-3.6-dev.install => debian/firefox-dev.install + - rename debian/firefox-3.6-dev.links => debian/firefox-dev.links + - rename debian/firefox-3.6-gnome-support.install => debian/firefox-gnome-support.install + - rename debian/firefox-3.6-gnome-support.postinst.in => debian/firefox-gnome-support.postinst.in + - rename debian/firefox-3.6.dirs => debian/firefox.dirs + - rename debian/firefox-3.6.install => debian/firefox.install + - update debian/firefox.install + - rename debian/firefox-3.6.links => debian/firefox.links + - update debian/firefox.links + + rename versioned maintainer scripts + - rename debian/firefox-3.6.postinst.in => debian/firefox.postinst.in + - rename debian/firefox-3.6.postrm.in => debian/firefox.postrm.in + - rename debian/firefox-3.6.preinst.in => debian/firefox.preinst.in + - rename debian/firefox-3.6.prerm.in => debian/firefox.prerm.in + + rename and update previously versioned .desktop, gnome helper and other debian + integration files + - rename debian/abrowser-3.6.desktop => debian/abrowser.desktop + - rename debian/firefox-3.6-final.desktop => debian/firefox-final.desktop + - update debian/firefox-final.desktop + - rename debian/firefox-3.6-minefield.desktop => debian/firefox-minefield.desktop + - update debian/firefox-minefield.desktop + - rename debian/firefox-3.6-namoroka.desktop => debian/firefox-namoroka.desktop + - update debian/firefox-namoroka.desktop + - rename debian/firefox-3.6.menu => debian/firefox.menu + - update debian/firefox.menu + - rename debian/firefox-3.6.xml => debian/firefox.xml + - update debian/firefox.xml + - rename debian/firefox-3.6-restart-required.update-notifier => debian/firefox-restart-required.update-notifier + - update debian/firefox-restart-required.update-notifier + - update debian/control + + disable patches for versioned directories and binaries + - update debian/patches/series + + add fix issues in libpr0n for make syntax issues after lucid dash/bash update; + patch by Kees Cook <kees@ubuntu.com> + - add debian/patches/fix-build-glitch.patch + - update debian/patches/series + * ease transition for daily firefox-3.6 users by adding conflicts/replaces on firefox-3.6-gnome-support + to firefox binary package which now ships bits previously in there. + - update debian/control + * update to firefox.sh.in start script from firefox-3.5 branch and add firefox-3.6 transition + accordingly; also adjust a bunch of wrongly worded debug messages + - update debian/firefox.sh.in + * fix version number used in profile migration dialog + - update debian/migrator/main.c + * fix wrapper startscript to properly handle all-static firefox build + - update debian/firefox.sh.in + * fix DEBIAN_NAME_OTHER to work for non-versioned abrowser main packages + - update debian/rules + * fix startscript for abrowser; set CMDNAME_USER=firefox for run-mozilla.sh; + and also use META_NAME to guess the -bin binary + - update debian/firefox.sh.in + * add CMDNAME_USER feature to overwrite cmdname for abrowser in run-mozilla.sh + - add debian/patches/abrowser_run_mozilla.patch + - update debian/patches/series + * fix abrowser.desktop; use unversioned icon and exec name + - update debian/abrowser.desktop + * copy abrowser.desktop translations from firefox-3.5.head branch + - update debian/abrowser.desktop + * add firefox-2* transitional packages for hardy users + - update debian/control + + [ Micah Gersten <micahg@ubuntu.com> ] + * Rebase/minor code change after upstream landing of unified manifest (bmo: 511642) + - update debian/patches/awesome_browser_branding_install.patch + - update debian/patches/browser_branding.patch + - update debian/patches/bzXXX_moz_app_name_inconsistencies.patch + + [ Jamie Strandboge <jamie@ubuntu.com> ] + * add AppArmor profile (disabled by default) + - debian/firefox-3.6.dirs: add etc/apparmor.d/disable + - add debian/firefox-3.6.preinst.in: disable the profile on new installs, + installs where the last modified profile is disabled and upgrades to + this version + - debian/firefox-3.6.postinst.in: reload profile + - add debian/firefox-3.5.postrm.in: cleanup force-complain and disable + directories + - add debian/usr.bin.firefox.apparmor.in + - add debian/README.Debian.in with note about AppArmor + - debian/apport/firefox-3.6.py: add AppArmor information if the profile is + not disabled + - debian/rules: install profile and update subst_files + - allow dirname and pwd. Thanks to Thomas Templin. (LP: #510644) + - allow the IBM jre + - debian/usr.bin.firefox.apparmor.in: use @LIBDIR@/firefox-*bin as binary + confined by AppArmor + + [ Kees Cook <kees@ubuntu.com> ] + * enable PIE build for stronger security (LP: #507744) + - update debian/rules + - update debian/control + + -- Alexander Sack <asac@ubuntu.com> Sat, 23 Jan 2010 16:46:32 +0100 + +firefox-3.5 (3.5.7+nobinonly-0ubuntu1) lucid; urgency=low + + * New upstream release v3.5.7 (FIREFOX_3_5_7_RELEASE) + - see USN-878-1 + + [ Benjamin Drung <bdrung@ubuntu.com> ] + * Add metadata for mozilla-devscripts + - update debian/control + + -- Micah Gersten <micahg@ubuntu.com> Tue, 05 Jan 2010 18:02:04 -0600 + +firefox-3.5 (3.5.6+nobinonly-0ubuntu1) lucid; urgency=low + + * New upstream release v3.5.6 (FIREFOX_3_5_6_RELEASE) + - see USN-874-1 + + [ Micah Gersten <launchpad@micahscomputing.com> ] + * Bump minimum system cairo to 1.8.8 + - update debian/rules + * Fix .desktop Name field for Slovak translation (LP: 448683) + - update debian/firefox-3.5-final.desktop + * Fix .desktop Name field for Estonian and Arabic translations + (LP: 419507, LP: 321239) + - update debian/firefox-3.5-final.desktop + + [ Jamie Strandboge <jamie@ubuntu.com> ] + * AppArmor fixes: + - allow access to nautilus, to allow "Open containing folder" to work + (LP: #452591) + - allow access for deluge (LP: #455792) + - work better with KDE by adding kde abstraction, allow access to soffice, + allow access to okular and read access to /etc/fstab (for print dialog) + (LP: #447006) + - allow access to acroread (LP: #473268) + - allow access to eog (LP: #464016) + - allow access to transmission (LP: #476299) + - deny noisy write attempts to deny /usr/lib/xulrunner-*/components/*.tmp + as seen with 'firefox --help') + - deny noisy read to /.suspended (when navigating directories) + - allow access to /usr/bin/liferea-add-feed (LP: #488851) + - allow access to azureus (LP: #482677) + - don't require 'owner' for /media (LP: #479580) + - adjust AppArmor profile binary globbing to match other branches + - allow ixr access to sed (for first runs) + + [ Alexander Sack <asac@ubuntu.com> ] + * bump lower bound for system sqlite3 to >= 3.6.16.1 + - update debian/rules + + -- Alexander Sack <asac@ubuntu.com> Wed, 16 Dec 2009 00:43:08 +0100 + +firefox-3.5 (3.5.5+nobinonly-0ubuntu2) lucid; urgency=low + + * New upstream release v3.5.5 (FIREFOX_3_5_5_RELEASE) + * fixes regressions/crashes + + -- Alexander Sack <asac@ubuntu.com> Mon, 09 Nov 2009 11:40:35 +0100 + +firefox-3.5 (3.5.4+nobinonly-0ubuntu1) lucid; urgency=low + + * New upstream release v1.9.1.4 (FIREFOX_3_5_4_RELEASE) + - see USN-853-1 + + [ Alexander Sack <asac@ubuntu.com> ] + * use awesome-browser-branch-3.5 during tarball creation + - update debian/mozclient/firefox-3.5.conf + * drop branding patch for lp:396156 as new upstream tarballs + automatically contain this fix now. + - delete debian/patches/lp396156_prepatch_abrowser_branding.patch + - update debian/patches/series + + [ Fabien Tassin <fta@ubuntu.com> ] + * Don't enable the AppArmor profile by default for backports coming + from the Mozilla daily PPA. It's still possible for users to + enable that themselves though + - update debian/firefox-3.5.preinst.in + + -- Alexander Sack <asac@ubuntu.com> Mon, 09 Nov 2009 11:21:28 +0100 + +firefox-3.5 (3.5.3+build1+nobinonly-0ubuntu6) karmic; urgency=low + + [ Fabien Tassin <fta@ubuntu.com> ] + * fix LP: #454166 - target the 'default' branch instead of tip + - add debian/moz-rev.sh + - update debian/mozclient/firefox-3.5.conf + + [ Alexander Sack <asac@ubuntu.com> ] + * fix LP: #455504 - abrowser does not run from Applications Menu; + create the unversioned link in debian/rules like we do for the + firefox name + - update debian/rules + * fix LP: #455517 - supersede firefox 3.0 and xulrunner-1.9 in karmic; + add transitional packages and add Conflicts/Replaces/Provides + accordingly. + - update debian/control + * fix LP: #396156 - Help→About does not function (abrowser-3.5, + jaunty-proposed); we prepatch the required changes to + browser/branding/awesome-browser/ tree taken from the 3.5 branding + branch: lp:~mozillateam/firefox/awesome-browser-branding-3.5 + - add debian/patches/lp396156_prepatch_abrowser_branding.patch + - update debian/patches/series + + -- Alexander Sack <asac@ubuntu.com> Tue, 20 Oct 2009 10:42:56 +0200 + +firefox-3.5 (3.5.3+build1+nobinonly-0ubuntu5) karmic; urgency=low + + * fix LP: #411691 - many Exception... "update.locale file doesn't exist" in + console"; patch by Micah Gersten <launchpad@micahscomputing.com> + - update debian/rules + + -- Alexander Sack <asac@ubuntu.com> Thu, 15 Oct 2009 02:49:12 +0200 + +firefox-3.5 (3.5.3+build1+nobinonly-0ubuntu4) karmic; urgency=low + + [ Fabien Tassin <fta@ubuntu.com> ] + * Bump requirement for system sqlite to >= 3.6.16 (bmo 508104) + - update debian/rules + + [ Alexander Sack <asac@ubuntu.com> ] + * fix LP: #423610 - daily build failures after landing of mozilla-nss.pc droppage + (bug 422829); we drop our previously used nspr pkgconfig patch and fix + configure.in to not require in-source nspr if libxul-sdk is used + - delete debian/patches/nspr_flags_by_pkg_config_hack.patch + - add debian/patches/bzXXX_libxul_sdk_nspr.patch + - update debian/patches/series + * now that we always use libxul-sdk for getting the nspr flags we + can use --without-system-nspr and --without-system-nss all the time + - update debian/rules + * rework localized search engine patch to use ChromeRegistry locale + information rather than a char pref; also change plugin dir order to allow + locale specific searchplugins to overlay the ones shipped in + "searchplugins/common" + - add debian/patches/bz515232_att399338_distro_locale_searchplugins.patch + - update debian/patches/series + * adjust packaging to support localized searchplugins + + ship default searchplugins in /usr/lib/firefox-addons/searchplugins/en-US/ + and link that directory to $(DEBIAN_FF3_DIR)/distribution/searchplugins instead + of the main firefox APP_DIR + - update debian/rules + + set default searchplugin locale pref to en-US - which is used as a + fallback if no matching searchplugins/LOCALE directory exists for the + current locale directory + - update debian/firefox.js + + do not install upstream searchplugins through debhelper file and + install "debsearch" to the new distribution/.../en-US location + - update debian/firefox-3.0.install + + ship "common" searchplugins link that points to the old default + searchplugins location '/usr/lib/firefox-addons/searchplugins/ + - update debian/rules + + [ Jamie Strandboge <jamie@ubuntu.com> ] + * fix bugs surrounding apparmor profile + + allow ixr access to gnash (LP: #429061) + + allow ixr access to pulseaudio (LP: #432702) + + allow access to plugins directory (LP: #428071) + + allow access to mounted media (LP: #433362) + + allow access to abstractions/ubuntu-console-email, + abstractions/ubuntu-email and abstractions/ubuntu-gnome-terminal + for mailto:. Add commented section for using xterm and konsole + - update debian/usr.bin.firefox-3.5 + + allow access to extensions directory (LP: #433128) + + allow 'k' access to @{HOME}/.mozilla/**/*.sqlite* (LP: #449286) + + allow Ux access to apport-bug (LP: #449423) + + allow access to /etc/mplayerplug-in.conf (LP: #439484) + + -- Alexander Sack <asac@ubuntu.com> Thu, 15 Oct 2009 02:30:48 +0200 + +firefox-3.5 (3.5.3+build1+nobinonly-0ubuntu3) karmic; urgency=low + + [ Jamie Strandboge <jamie@ubuntu.com> ] + * disable profile on upgrades from earlier Ubuntu releases (LP: #436221) + - update debian/firefox-3.5.preinst.in + + -- Alexander Sack <asac@ubuntu.com> Mon, 28 Sep 2009 10:35:46 +0200 + +firefox-3.5 (3.5.3+build1+nobinonly-0ubuntu2) karmic; urgency=low + + * security/stability update v3.5.3 build1 (FIREFOX_3_5_3_BUILD1) + - see USN-821-1 + - fix LP: #333127 - Firefox 3.5 and above crash on full screen flash video + - fix LP: #236853 - firefox crashed with SIGSEGV in NSSRWLock_LockRead_Util() + + [ Alexander Sack <asac@ubuntu.com> ] + * fix LP: #422365 - apport hook fails because profiles_d is not initialized + in add_info if no profiles.ini exist; we ensure that profiles_d gets instantiated + as an empty map even if no profiles.ini exist. + - update debian/apport/firefox-3.5.py + * hook firefox-addons/searchplugins as the distribution/searchplugins + directory to support localized distro search engines. + - update debian/rules + * in case localized search engines are available the main searchplugins + directory is not scanned anymore; to fix this we provide a compatibility + link /usr/lib/firefox-addons/searchplugins/common => /usr/lib/firefox-addons/searchplugins + - update debian/firefox-3.5.links + * fix localized search engine upstream code to properly deal with general.useragent.locale + being a complex pref; also change plugin dir order to allow locale specific searchplugins + to overlay the ones shipped in "searchplugins/common" + - add debian/patches/fix_complex_locale_distro_searchplugins.patch + - update debian/patches/series + + [ Jamie Strandboge <jamie@ubuntu.com> ] + * add AppArmor profile (disabled by default) (LP: #382917) + - debian/firefox-3.5.dirs: add etc/apparmor.d/disable + - add debian/firefox-3.5.preinst.in: disable the profile on new installs + and upgrades to this version + - debian/firefox-3.5.postinst.in: reload profile + - add debian/firefox-3.5.postrm.in: cleanup force-complain and disable + directories + - add debian/usr.bin.firefox.apparmor.in + - debian/rules: install profile + - add debian/README.Debian.in with note about AppArmor + - debian/apport/firefox-3.5.py: add AppArmor information if the profile is + not disabled + - debian/firefox-3.5.preinst.in: allow for when apparmor is not installed + + -- Alexander Sack <asac@ubuntu.com> Thu, 03 Sep 2009 10:03:08 +0200 + +firefox-3.5 (3.5.2+nobinonly-0ubuntu2) karmic; urgency=low + + Firefox 3.5 by default upload + + see: https://blueprints.launchpad.net/ubuntu/+spec/desktop-karmic-firefox-3.5 + + [ Fabien Tassin <fta@ubuntu.com> ] + * Make firefox-3.5 the default firefox. Use the official branding only + for releases (the -daily PPA remains branded as Shiretoko, like the + upstream nightlies). Activate the profile migrator and the apport hooks. + Add the meta packages to make the transition smoother. + - update debian/control + - drop debian/patches/firefox-fsh + - drop debian/patches/firefox-profilename + - update debian/patches/series + - update debian/firefox-3.5.install + - update debian/firefox.sh.in + - update debian/migrator/main.c + - update debian/mozclient/firefox-3.5.mk + - update debian/rules + - update debian/firefox-3.5-final.desktop + - update debian/firefox-3.5-shiretoko.desktop + - update debian/abrowser-3.5.desktop + - update debian/apport/firefox-3.5.py + + [ Alexander Sack <asac@ubuntu.com> ] + * make -final and -shiretoko .desktop file refer to unversioned "firefox" + Binary and Icon + - update debian/firefox-3.5-shiretoko.desktop + - update debian/firefox-3.5-final.desktop + - update debian/firefox-3.5-minefield.desktop + - update debian/abrowser-3.5.desktop + * add translations for .desktop file from firefox-3.0.head branch + - update debian/firefox-3.5-final.desktop + - update debian/abrowser-3.5.desktop + * set BUILD_OFFICIAL = 1 to enable all official build features + - update debian/rules + * fix LP: #404827 - Firefox doesn't warn about Attack Sites!?; add + --enable-safe-browsing to configure flags + - update debian/rules + * fix LP: #383484 - search engine plugins missing in firefox-3.5 packages; + installing searchplugins and default theme as now firefox-3.5 + Replaces: firefox-3.0 + - update debian/firefox-3.5.install + * fix restart issues by installing proper versioned binary (without a + firefox-fsh patch); in turn drop unversioned firefox link from .install + - update debian/rules + - update debian/firefox-3.0.install + + -- Alexander Sack <asac@ubuntu.com> Mon, 10 Aug 2009 17:05:37 +0200 + +firefox-3.5 (3.5.2+nobinonly-0ubuntu1) karmic; urgency=low + + * security/stability update v3.5.2 (FIREFOX_3_5_2_RELEASE) + + [ Fabien Tassin <fta@ubuntu.com> ] + * Fix postinst to also consider firefox-3.5 for the update-notifier + restart notification + - update debian/firefox-3.5.postinst.in + * Fix bogus prerm rule removing the wrong alternative + - update renamed debian/firefox-3.5.prerm + * Refresh diverged patch + - update debian/patches/nspr_flags_by_pkg_config_hack.patch + + -- Alexander Sack <asac@ubuntu.com> Mon, 03 Aug 2009 16:52:25 +0200 + +firefox-3.5 (3.5.1+build1+nobinonly-0ubuntu1) karmic; urgency=low + + * security/stability update v3.5.1 build1 (FIREFOX_3_5_1_BUILD1) + * fix LP: #396460 - Firefox 3.5 'final' version is in repos but tooltip + in menu says 'beta'; we update the shiretoko desktop file to not + say "beta" anymore + - update debian/firefox-3.5-shiretoko.desktop + * fix LP: #398121 - firefox-3.5-gnome-support failed to install/upgrade; we + make the postinst script more failsafe + - update debian/firefox-3.5-gnome-support.postinst.in + + -- Alexander Sack <asac@ubuntu.com> Thu, 16 Jul 2009 18:27:57 +0200 + +firefox-3.5 (3.5+nobinonly-0ubuntu1) karmic; urgency=low + + * New upstream release taken from tag FIREFOX_3_5_RELEASE + * Bump Depends/Build-Depends for xulrunner-1.9.1(-dev) to >= 1.9.1 + - update debian/control + * Bump EM_TRANSLATION_{MIN,MAX}_VERSION and MaxVersion/MinVersion + (from application.ini) + - update debian/rules + + -- Fabien Tassin <fta@ubuntu.com> Tue, 30 Jun 2009 20:01:33 +0200 + +firefox-3.5 (3.5~rc2+nobinonly-0ubuntu1) karmic; urgency=low + + * New upstream release taken from tag FIREFOX_3_5rc2_RELEASE + * Fix startup page, release notes and first run bogus URLs when + using non official brandings. Also fix bogus addons URLs due + to our change of appname (LP: #388880) + - update debian/patches/firefox-profilename + * Fix profile migrator broken when using abrowser-3.5 (LP: #331654) + - update debian/firefox.sh.in + * Bump Standards-Version to 3.8.1 + - update debian/control + * Call update-menus + - update debian/firefox-3.5.postinst.in + * Make firefox-3.5-dbg depend on firefox-3.5 with the exact same version + - update debian/control + * Bump Depends and Build-depends to xulrunner* >= 1.9.1~rc2 + - update debian/control + * Refresh diverged patch: + - update debian/patches/firefox-profilename + + -- Fabien Tassin <fta@ubuntu.com> Fri, 19 Jun 2009 18:55:00 +0200 + +firefox-3.5 (3.5~b4+nobinonly-0ubuntu2) karmic; urgency=low + + * bump (build-)depends version on xulrunner-1.9.1 to >= 1.9.1~b4 + - update debian/control + + -- Alexander Sack <asac@ubuntu.com> Wed, 06 May 2009 22:27:21 +0200 + +firefox-3.5 (3.5~b4+nobinonly-0ubuntu1) karmic; urgency=low + + * New upstream release 3.5 b4 + + [ H. Montoliu ] + * fix LP: #361052 - firefox apport hook fails to retrieve pluginreg.dat file + - update debian/apport/firefox-3.5.py - removed unused code and minor refactoring + + -- Alexander Sack <asac@ubuntu.com> Wed, 29 Apr 2009 15:19:59 +0200 + +firefox-3.5 (3.5~b4~hg20090330r24021+nobinonly-0ubuntu1) jaunty; urgency=low + + * New upstream snapshot, needed to initiate the firefox 3.1->3.5 transition (LP: #352995) + * Add libstartup-notification0-dev to build-deps as it now seems to be + mandatory on lpia + - update debian/control + * Fix the mozclient include to really use the local configuration + - update debian/rules + * Update MOZCLIENT_GETDATE to make it use pushlog so it is not confused by merges with + dates in the past + - update debian/mozclient/firefox-3.5.conf + + -- Fabien Tassin <fta@ubuntu.com> Mon, 30 Mar 2009 19:00:40 +0200 + +firefox-3.1 (3.1~b3+build2+nobinonly-0ubuntu1) jaunty; urgency=low + + * New upstream release taken from tag FIREFOX_3_1b3_BUILD2 (LP: #339181) + + -- Fabien Tassin <fta@ubuntu.com> Sat, 07 Mar 2009 15:27:58 +0100 + +firefox-3.1 (3.1~b3~hg20090205r23182+nobinonly-0ubuntu1) jaunty; urgency=low + + [ Fabien Tassin <fta@ubuntu.com> ] + * Drop upstreamed patch now that it has landed and add --with-system-libxul + to configure. + - update debian/rules + - drop debian/patches/installer_shouldnt_copy_xulrunner.patch + - update debian/patches/series + + [ Alexander Sack <asac@ubuntu.com> ] + * add lower bound for xulrunner-1.9.1-dev build-depends to >= + 1.9.1~b3~ + - update debian/control + + -- Alexander Sack <asac@ubuntu.com> Sat, 07 Feb 2009 15:18:30 +0100 + +firefox-3.1 (3.1~b3~hg20090122r22900+nobinonly-0ubuntu1) jaunty; urgency=low + + [ Alexander Sack ] + * improve reload plugins patch; dont rename function + - update debian/patches/bzXXX_reload_new_plugins.patch + * forward reload plugins patch upstream + - debian/patches/bzXXX_reload_new_plugins.patch => + bz460917_att350845_reload_new_plugins.patch + * fix reload new plugins patch - use variables that actually exist on 3.1 + - update debian/patches/bz460917_att350845_reload_new_plugins.patch + + [ Fabien Tassin ] + * Move mozclient project files from mozilla-descripts to this package + and update the upstream branch now that it has moved to 3.2 + - add debian/mozclient/firefox-3.1.conf + - add debian/mozclient/firefox-3.1.mk + - update debian/rules + * Fix menu still mentionning firefox 4 + - update debian/firefox-3.1.menu + * Fix WM class for minefield + - update debian/firefox-3.1-minefield.desktop + * Fix the update-notifier script to really look for firefox-3.1 + - update debian/firefox-3.1-restart-required.update-notifier + * Fix patch series after the rename of patch bz460917_* + - update debian/patches/series + * Revert to codename branding for betas + - update debian/rules + * Fix typo in control file + - update debian/control + * Drop useless patch: + - drop debian/patches/ftbfs-with-branding-dir + - update debian/patches/series + * Update diverged patches: + - update debian/patches/ubuntu_no_app_updates.patch + - update debian/patches/dont_depend_on_nspr_sources.patch + - update and rename debian/patches/ubuntu_bookmarks.html => + debian/patches/ubuntu_bookmarks.patch & d/p/series + + -- Fabien Tassin <fta@ubuntu.com> Fri, 23 Jan 2009 00:33:43 +0100 + +firefox-3.1 (3.1~b2+build1+nobinonly-0ubuntu1) jaunty; urgency=low + + New upstream release: 3.1 beta 2 from FIREFOX_3_1b2_BUILD1 (LP: #274187) + + [ Fabien Tassin <fta@ubuntu.com> ] + * Change appname and use a dedicated profile so 3.1 could run along with + 3.0 without locking/corrupting the profile. Initial 3.1 profile is + cloned from 3.0 whenever possible. + - update debian/firefox.sh.in + - add debian/patches/firefox-profilename + - add debian/patches/firefox-fsh + * Use Shiretoko, codename for 3.1 instead of Granparadiso + - rename debian/firefox-3.1-granparadiso.desktop => firefox-3.1-shiretoko.desktop + - update debian/rules + * Unset FORCE_OFFICIAL_BRANDING to return to minefield branding for + intermediate snapshots and to Shiretoko branding for milestones + - update debian/rules + * Set MALLOC_OPTIONS=O before calling xulrunner during build. This is needed + to avoid a dead-lock in jemalloc when running under fakeroot + - update debian/rules + * Drop system nspr/nss (until the soname work is stable) + - update debian/rules + * Update requirement for system sqlite3 to >= 3.6.0 + - update debian/rules + * Add libasound2-dev to Build-Depends for the new HTML5 <video> tag + - update debian/control + * Drop dom-inspector, venkman and legacy firefox-{,trunk,granparadiso} + packages + - update debian/control + * Resurrect the -dbg package, at least until bug 156575 is fixed + - update debian/control + * Update diverged patches: + - update debian/patches/nspr_flags_by_pkg_config_hack.patch + - update debian/patches/bzXXX_reload_new_plugins.patch + - update debian/patches/firefox-fsh + - update debian/patches/firefox-profilename + - update debian/patches/lp185622_system_path_default_browser.patch + - update debian/patches/browser_branding.patch + * Drop patches applied upstream + - drop debian/patches/lp269656_know_your_rights.patch + (See https://bugzilla.mozilla.org/show_bug.cgi?id=456439) + - drop debian/patches/installer_use_stdout_for_missing_files.patch + - drop debian/patches/bz412610_att335369_realpath_overflow.patch + - drop debian/patches/bz436133_att322801.patch + - drop debian/patches/bz421977_att334578.patch + - update debian/patches/series + + [ Alexander Sack <asac@ubuntu.com> ] + * ship $MOZ_APP_DIR/distribution/distribution.ini + - add debian/distribution.ini + - update debian/rules + + -- Fabien Tassin <fta@ubuntu.com> Fri, 28 Nov 2008 16:02:43 +0100 + +firefox-3.0 (3.0.4+nobinonly-0ubuntu3) UNRELEASED; urgency=low + + [ Nick Ellery <nick.ellery@ubuntu.com> ] + * fix LP: #270477 - firefox-3.0-branding has errors in it's package description + - update debian/control + + -- Alexander Sack <asac@ubuntu.com> Wed, 26 Nov 2008 21:56:44 +0100 + +firefox-3.0 (3.0.4+nobinonly-0ubuntu2) jaunty; urgency=low + + * ship $MOZ_APP_DIR/distribution/distribution.ini + - add debian/distribution.ini + - update debian/rules + + -- Alexander Sack <asac@ubuntu.com> Mon, 24 Nov 2008 12:40:07 +0100 + +firefox-3.0 (3.0.4+nobinonly-0ubuntu1) jaunty; urgency=low + + * new security/stability update FIREFOX_3_0_4_RELEASE (v3.0.4) + - see USN-667-1 + + [ Fabien Tassin <fta@ubuntu.com> ] + * Fix missing comma in Build-Depends breaking older dpkg-dev + - update debian/control + + -- Alexander Sack <asac@ubuntu.com> Sun, 16 Nov 2008 17:12:57 +0100 + +firefox-3.0 (3.0.3+nobinonly-0ubuntu2) intrepid; urgency=low + + * fix LP: #282875: about:rights does not display; the latest update + of the know your right page contained illegal xml. + - update debian/patches/lp269656_know_your_rights.patch + + -- Alexander Sack <asac@ubuntu.com> Mon, 20 Oct 2008 17:37:05 +0200 + +firefox-3.0 (3.0.3+nobinonly-0ubuntu1) intrepid; urgency=low + + [ Steve Langasek <steve.langasek@ubuntu.com> ] + * Fix the wrapper script to handle all possible invocations. + LP: #275410. + + [ Fabien Tassin <fta@ubuntu.com> ] + * Remove some hardcoded 3.0 to make the merge in the 3.1 branch smoother + - update debian/rules + - update debian/firefox.sh.in + * Fix abrowser symlink in libdir which must be versioned unless control + ships a meta package. Add versioned symlinks in libdir for firefox and + abrowser now that the launcher script uses $0 + - update debian/rules + * Fix the desktop file for abrowser to call it abrowser-3.0 instead + of firefox-3.0, and move the desktop icons to the branding packages + - update debian/rules + * Add a ubuntu-abrowser.js file dedicated to abrowser and set useragent + to Firefox/version + - add debian/ubuntu-abrowser.js.tmpl + - update debian/rules + * Fix typo in branding patch for unofficial branding + - update debian/patches/browser_branding.patch + + [ Alexander Sack <asac@ubuntu.com> ] + * add ubuntu code to preferences for yahoo searchplugin + - update debian/firefox.js + * fix gnome integration systempath patch in such a way that it properly + refers to "abrowser" and not awesome-browser + - update debian/patches/lp185622_system_path_default_browser.patch + * update aboutRights.xhtml to v1 + - update debian/patches/lp269656_know_your_rights.patch + * resurrecting ubuntu default bookmarks + - update debian/patches/browser_branding.patch + - update debian/patches/series + * add explicit minimum version to firefox-3.0 depend on firefox-3.0-branding + and abrowser-3.0-branding (>= 3.0.3+nobinonly-0ubuntu1), to reflect + that the desktop launcher icon has been moved from firefox-3.0 to + -branding + - update debian/control + + -- Fabien Tassin <fta@ubuntu.com> Mon, 13 Oct 2008 16:05:14 +0200 + +firefox-3.0 (3.0.3+build1+nobinonly-0ubuntu1) intrepid; urgency=low + + new regression fix release (v3.0.3 build1) + - see USN-645-3 + * fixes LP: #270429: [MASTER] passwords lost from 3.0.1 to 3.0.2 + * improve about:rights wording slightly to read "... offers optional + web site ..." while previously it read "... uses web sitweb sitee ..."; + thanks to PJ for the initial suggestion + - update debian/patches/lp269656_know_your_rights.patch + + -- Alexander Sack <asac@ubuntu.com> Thu, 25 Sep 2008 12:01:59 +0200 + +firefox-3.0 (3.0.2+build6+nobinonly-0ubuntu2) intrepid; urgency=low + + * fix LP: #273907 - abrowser does not start: :$pkglibdir/abrowser link + missing; we introduce the proper link in the firefox-3.0 package + - update debian/rules + * fix LP: #269795 - abrowser shouldn't display the EULA; we fix this by + using brand.properties to determine whether we have official branding or + not. In turn the about:rights notification only gets displayed when + official build is running. + - update debian/patches/lp269656_know_your_rights.patch + * fix LP: #206191 - Firefox 3 "set as Desktop background" does not work + properly; we cherry-pick latest upstream patch from bugzilla + - add debian/patches/bz421977_att334578.patch + - update debian/patches/series + + -- Alexander Sack <asac@ubuntu.com> Wed, 24 Sep 2008 18:48:23 +0200 + +firefox-3.0 (3.0.2+build6+nobinonly-0ubuntu1) intrepid; urgency=low + + Security/Stability update (v3.0.2 build6) + - see USN-645-1 + + [ Fabien Tassin <fta@ubuntu.com> ] + * Add a -g/--debug switch to the launcher script to start firefox inside gdb. + Note that it must be specified first on the command line. + - update debian/firefox.sh.in + * Make the branding patch also work for non official branding. + - update debian/patches/browser_branding.patch + + [ Alexander Sack <asac@ubuntu.com> ] + * Fix branding code in debian/rules: a) fix .desktop target filename + to be unversioned if and only if control ships a meta package name + - update debian/rules + * Don't cp debian/$(DESKTOP) debian/$(DEBIAN_APP_NAME).desktop in + pre-build:: which is a left over from previous branding split + approaches and unused now. + - update debian/rules + * Use APPNAME=`basename $0` in firefox start script; fix bug that would + trick abrowser into restarting itself through the "firefox" command. + - debian/firefox.sh.in + * Fix LP: #269656 - AN IRRELEVANT LICENSE IS PRESENTED TO + YOU FREE-OF-CHARGE ON STARTUP; we implement the "Know Your Rights..." + approach based on the mocked-up's published by mozilla + http://blog.lizardwrangler.com/2008/09/17/mock-ups-available-for-notices-previously-was-eula/ + - add debian/patches/lp269656_know_your_rights.patch + - update debian/patches/series + * abrowser Provides: firefox to ease transition of rdepends + - update debian/control + + -- Alexander Sack <asac@ubuntu.com> Tue, 23 Sep 2008 17:44:47 +0200 + +firefox-3.0 (3.0.2+build3+nobinonly-0ubuntu2) intrepid; urgency=low + + [ Alexander Sack ] + * new patch that adds canonical affiliate code to en-US amazon searchplugin + - add debian/patches/ubuntu_codes_amazon.patch + - update debian/patches/series + * rename the webbrowser and webbrowser-3.0-branding package to abrowser and + abrowser-3.0-branding; in turn we rename the desktop file and the links + to the binaries + - rename debian/webbrowser-3.0.desktop + - update debian/control + - update debian/rules + - update debian/firefox-3.0.links + + -- Alexander Sack <asac@ubuntu.com> Thu, 11 Sep 2008 17:25:42 +0200 + +firefox-3.0 (3.0.2+build3+nobinonly-0ubuntu1) intrepid; urgency=low + + [ Alexander Sack <asac@ubuntu.com> ] + * Fix: LP #246775 - "wrong user-agent string in hardy build" by adding proper + build-depends + - update debian/control + * Fix: LP #240880 - Remove "previously known as" paragraph + - update debian/control + * webbrowser-3.0-branding split using the awesome branding (LP: #263938) + + we add a new .desktop file to the source and teach the debian/rules + code about it + - add debian/webbrowser-3.0.desktop + - update debian/rules + + we magically run config.status on just the Makefiles of our branding + in the binary-install/webbrowser-3.0-branding target + - update debian/rules + + we introduce a firefox-3.0-branding package as well as an + webbrowser-3.0-branding package in control; webbrowser-3.0-branding + conflicts firefox-3.0-branding, while firefox-3.0 depends on + firefox-3.0-branding | webbrowser-3.0-branding; we update the firefox + meta package to depend on the firefox-3.0-branding; we add a new + metapackage "webbrowser" that tracks the stable webbrowser branch, just + like firefox, but with the difference that it depends on + webbrower-3.0-branding package + - update debian/control + + higher mozilla-devscripts bar to 0.10 to reflect that we need that + version to properly produce awesome-browser branded original tarballs + - update debian/control + + patch browser/installer packages-static file to install awesome-browser + content and locale bits + - add debian/patches/awesome_browser_branding_install.patch + - update debian/patches/series + + patch firefox to ship branding chrome bits in separate jar files. + - debian/patches/browser_branding.patch + - debian/patches/series + + install firefox branding bits to the firefox-3.0-branding package + and remove them from the firefox-3.0 package so that we ship the awesome + browser chrome by default; in turn we fix that not all awesome branding + bits were available by doing a full make install + DESTDIR=debian/tmp-awesome. + - update debian/rules + - update debian/firefox-3.0.install + + dpkg-divert non-chrome branding bits; add firefox-3.0-branding.preinst.in + and firefox-3.0-branding.postrm.in maintainer script templates and + register them for substitution in debian/rules; for chrome the trick is + to not divert the whole branding, but just disable the + awesome-browser.manifest when the firefox-3.0-branding package gets + installed; doing so disables the locales override and unhooks the + awesome branding in a way that the offcial branding will take over. We + also try to cleanup diverts that have disappeared during upgrade in + old-postrm of the branding package; this is required to properly cleanup + during major firefox version upgrades - where pkglibdir changes. + - add debian/firefox-3.0-branding.postrm.in + - add debian/firefox-3.0-branding.preinst.in + - update debian/rules + + introduce rules variable APP_NAME_OTHER, which is used as a placeholder + for awesome-browser + - update debian/rules + + special case when \"Web Browser\" is found + to be shortBrandName. In that case we use /usr/bin/webbrowser as + exePath in nsGNOMEShellService (for settin default browser) + - update debian/patches/lp185622_system_path_default_browser.patch + + ship /usr/bin/webbrowser and /usr/bin/webbrowser-3.0 links in + firefox-3.0 package + - update debian/firefox-3.0.links + + ship awesome branding in webbrowser-3.0-branding package + - update debian/rules + + [ Fabien Tassin ] + * Drop more firefox-3.0 references to ease merge with the 3.1 branch + - update debian/rules + * Fix buffer overflow in realpath() at runtime and drop -U_FORTIFY_SOURCE + from CPPFLAGS (LP: #263014) + - add debian/patches/bz412610_att335369_realpath_overflow.patch + - update debian/patches/series + + -- Alexander Sack <asac@ubuntu.com> Tue, 02 Sep 2008 11:59:53 +0200 + +firefox-3.0 (3.0.1+build1+nobinonly-0ubuntu2) intrepid; urgency=low + + RELEASE 3.0.1+build1+nobinonly-0ubuntu2 to ubuntu/intrepid + * Fix: #246775 - "wrong user-agent string in hardy build" by adding proper + build-depends + - update debian/control + + -- Alexander Sack <asac@ubuntu.com> Sat, 26 Jul 2008 16:08:26 +0200 + +firefox-3.0 (3.0.1+build1+nobinonly-0ubuntu1) intrepid; urgency=low + + * LP: #247494 - new security/stability release (v3.0.1 build1) + - see USN-626-1 + + [ Alexander Sack <asac@ubuntu.com> ] + * bump build dependencies for xulrunner 1.9 dev to >= 1.9+nobinonly-0ubuntu3~ + in order to force jemalloc build; bump binary depends accordingly + - update debian/control + * add useragent config file and install it in $pkglibdir/defaults/preferences; + replace @VENDOR@, @VENDOR_SUB@ and @VENDOR_COMMENT@ tokens with lsb_release + id, release, codename + - add debian/ubuntu-useragent.js.tmpl + - update debian/rules + * bump maxVersion to 1.9.0.* to ease future upgrades of firefox-3.0/xulrunner-1.9 + tandem and lower minVersion to 1.9.0.1 in post-install; in turn adjust binary + and build depends accordingly. + - update debian/rules + - update debian/control + + [ Fabien Tassin <fta@sofaraway.org> ] + * Add an empty chrome.manifest in all extensions missing that + file so it prevents the "failure in Chrome Registration" popup + - update debian/rules + * Don't use wildcards to detect xulrunner paths, it fails when + more that one xulrunner is installed + - update debian/rules + * Get DEBIAN_NAME and DEBIAN_APP_NAME from changelog and make more use + of variables to make the merge with the 3.1 branch easier + - update debian/rules + - update debian/firefox-3.0.postinst.in + - update debian/firefox-3.0.prerm + + -- Alexander Sack <asac@ubuntu.com> Fri, 18 Jul 2008 17:39:57 +0200 + +firefox-3.0 (3.0+nobinonly-0ubuntu2) intrepid; urgency=low + + * New upstream release: 3.0 RC2 (LP: #237690) + + [ Alexander Sack <asac@ubuntu.com> ] + * Fix LP: #236266 - "Build Failure on HPPA architecture" by applying patch + from bugzilla https://bugzilla.mozilla.org/show_bug.cgi?id=436133 + - add debian/patches/bz436133_att322801.patch + - update debian/patches/series + * drop left-over patch that disabled parts of safe-browsing by default. + - delete debian/patches/force_safebrowsing_off.patch + - update debian/firefox.js + - update debian/patches/series + + -- Alexander Sack <asac@ubuntu.com> Tue, 10 Jun 2008 12:51:01 +0200 + +firefox-3.0 (3.0~rc1+nobinonly-0ubuntu1) intrepid; urgency=low + + * new upstream release 3.0 RC1 (LP: #233922) + + [ Fabien Tassin <fta@sofaraway.org> ] + * Bump xulrunner-1.9 dependencies to ~rc + - update debian/control + * Bump EM_TRANSLATION_VERSION and EM_TRANSLATION_{MIN,MAX}_VERSION to 3.0 + and clean-up the code to avoid unnecessary complexity + - update debian/rules + * Refresh diverged patches + - update debian/patches/bzXXX_reload_new_plugins.patch + * Fix 'Categories' field in desktop file by changing GTK into Application + to make KDE happy (LP: #220325) + - update debian/firefox-3.0-final.desktop + * Build with default gcc (hardy: 4.2, intrepid: 4.3) + - update debian/rules + - update debian/control + * Prevent EULA dialog to popup on first run by setting the browser.EULA.override + key to true + - update debian/firefox.js + * Drop LDFLAGS workaround now that jemalloc is no longer a static lib + - udate debian/rules + * Workaround multiple crashes in Intrepid caused by Intrepid shipping gcc 4.3 + with -D_FORTIFY_SOURCE=2 by default + - udate debian/rules + + [ Alexander Sack <asac@ubuntu.com> ] + * Fix LP: #218865 - "ubufox is not suggested or recommended by firefox-3.0"; + we add ubufox to recommends of firefox-3.0 package. + - update debian/control + * Fix apport hook to properly detect global gre extensions + - update debian/apport/firefox-3.0.py + * disable app.update feature in code so the auto app update feature will + never be enabled (independent from the pref setting) + - add debian/patches/ubuntu_no_app_updates.patch + - update debian/patches/series + * install firefox.cfg as an example using dh_installdocs rather than + dh_install as it wasn't used at all + - update debian/rules + + -- Fabien Tassin <fta@sofaraway.org> Wed, 21 May 2008 16:25:00 +0200 + +firefox-3.0 (3.0~b5+nobinonly-0ubuntu3) hardy; urgency=low + + * improve translation support by shipping a crafted install.rdf. We ship a + template install.rdf.in in debian/translation-support and replace the + em:{version,maxVersion,minVersion} during build. For now those versions + are maintained manually because we need maintainer attention on upgrades + considering the upstream string freeze. To increase failsafeness, we fail + the build if the version appears to be out of sync with the upstream + version in the post-install target. The install.rdf is finally added to + the zip file in the binary-post-install rule used to produce the + en-US.xpi. + - add debian/translation-support/install.rdf.in + - update debian/rules + + * remove unused debian/firefoxrc (aka /etc/firefox-3.0/firefoxrc) file from + files shipped. Its not considered by firefox startscript anymore and just + causes confusion. + - remove debian/firefoxrc + - update debian/firefox-3.0.install + + -- Alexander Sack <asac@ubuntu.com> Sun, 20 Apr 2008 15:47:10 +0200 + +firefox-3.0 (3.0~b5+nobinonly-0ubuntu2) hardy; urgency=low + + * fix "firefox-3.0 gets removed on dist-upgrade when firefox-3.0 build is + not available on mirror". We deal with this situation by dropping the + Break: field from xulrunner-1.9 and adding upper bounds on xulrunner-1.9 + to firefox-3.0 binary. + - update debian/control + + * fix extension and theme reporting in apport hook. we now list gre, + app and local extensions/themes separately + - update debian/apport/firefox-3.0.py + + * fix "update-notifier hint gets installed in postinst even when firefox is + not running" - LP: #214620. The fix now uses pgrep -x to test more + accurately for the firefox itsself. Thanks to Colin Watson for the idea. + We use the same pgrep test in the notifiers DisplayIf: expression as well. + - update debian/firefox-3.0-restart-required.update-notifier + - update debian/firefox-3.0.postinst.in + + -- Alexander Sack <asac@ubuntu.com> Tue, 15 Apr 2008 12:12:13 +0200 + +firefox-3.0 (3.0~b5+nobinonly-0ubuntu1) hardy; urgency=low + + * Firefox 3.0 Beta 5 package - "ready for prime-time"! + + * Multiple fixes and improvements to debian/rules: "rewrite substitution + rules", "bad .autoreg install path makes package ftbfs", "Firefox must not + ship reporter extension; its shipped in xulrunner-1.9", "enable + mozilla-devscript's in binary-post-install", "--disable-debug passed twice + in configure" + - update debian/rules + + * Alexander Sack <asac@ubuntu.com> + * Fabien Tassin <fta@sofaraway.org> + + * Multiple fixes to the apport hook: "remove .pyc file garbage during prerm", + "bad install path", "bad extension directories used to gather data" + - update debian/apport/firefox-3.0.py + - update debian/firefox-3.0.prerm + - update debian/firefox-3.0.install + + * Alexander Sack <asac@ubuntu.com> + * Fabien Tassin <fta@sofaraway.org> + + * Multiple fixes required by libxul linkage with jemalloc: "libjemalloc.so + cannot be installed - doesn't exist", "-Wl,-Bsymbolic-functions in LDFLAGS + cause crashes at startup" + - update debian/firefox-3.0.install + - update debian/rules + + * Fabien Tassin <fta@sofaraway.org> + + * Fix multiple misc bugs: "migration creates double dots for abandoned + profiles", "Wikipedia search plugin shipped upstream", "blocklist.xml not + installed", "use LIBDIR when touching .autoreg in postinst", "Fix restart + notification misbehaviour", "Improve package description (LP: #207199)" + - update debian/firefox.sh.in + - drop debian/wikipedia.* + - update debian/firefox-3.0.install + - update debian/rules + - update debian/firefox-3.0.postinst.in + - update debian/firefox-3.0-restart-required.update-notifier + + * Alexander Sack <asac@ubuntu.com> + * Fabien Tassin <fta@sofaraway.org> + + * Misc package housekeeping changes: "Bump xulrunner-1.9 + dependencies to b5", "Adjust patches", "desktop files not valid + (LP: #194970)", "relax dependencies on xulrunner. no upper bounds": + - update debian/control + - update debian/patches/dont_depend_on_nspr_sources.patch + - update debian/patches/nspr_flags_by_pkg_config_hack.patch + + * Fabien Tassin <fta@sofaraway.org> + + * Multiple Translation related fixes and improvements: "Reuse translations + from firefox 2 .desktop file", "include lp-export-xpi.mk from + mozilla-devscripts and export en-US.xpi to debian/lp-export-xpis/ + directory" + - update debian/firefox-final.desktop + - update debian/rules + - update debian/control + + * Alexander Sack <asac@ubuntu.com> + * Fabien Tassin <fta@sofaraway.org> + + * Fixing chrome registration issues by properly shipping + $(DEBIAN_FF3_DIR)/.autoreg and touching it in postinst maintainer scripts + - update debian/rules + - update debian/firefox-3.0.postinst.in + - add debian/firefox-3.0-gnome-support.postinst + + * Alexander Sack <asac@ubuntu.com> + * Fabien Tassin <fta@sofaraway.org> + + * fix LP: #185622 - "Firefox 3 doesn't act as the default browser"; we + always check for and use /usr/bin/firefox now. Don't use " to delimit + the parameters of the preferred browser command used to update gconf + protocol-handler. + - add debian/patches/lp185622_system_path_default_browser.patch + - update debian/patches/series + + * Alexander Sack <asac@ubuntu.com> + + * fix "New plugins only recognized _after_ restarting firefox"; the gecko + 1.9 plugin host doesn't scan plugin directories automatically for + previously not available mime-types and extensions anymore. This fix + assures that the browser receives a NewPluginInstalled through the + tabbrowser.selectedBrowser by registering a special listener before + starting the plugin installer wizard. After plugins are properly installed + we remove that listener again. + - add debian/patches/bzXXX_reload_new_plugins.patch + - update debian/patches/series + + * Alexander Sack <asac@ubuntu.com> + + -- Fabien Tassin <fta@sofaraway.org> Fri, 04 Apr 2008 21:26:23 +0200 + +firefox-3.0 (3.0~b4+nobinonly-0ubuntu1) hardy; urgency=low + + [ Fabien Tassin <fta@sofaraway.org> ] + * Bump xulrunner-1.9 dependencies to b4 + - update debian/control + * Refresh diverged patches: + - update debian/patches/dont_depend_on_nspr_sources.patch + - update debian/patches/force_safebrowsing_off.patch + * Drop extension from desktop launchers icons (LP: #190688) + - update debian/firefox-3.0-*.desktop + * Install new libjemalloc.so + - update debian/firefox-3.0.install + * Add optional support for system sqlite3 (we need >= 3.5 not in hardy) + - update debian/rules + * Fix debsearch.src to work with new packages.ubuntu.com codebase (LP: #194681) + Contributed by David Futcher <bobbocanfly@gmail.com> + - update debian/debsearch.src + * Bump gtk+ requirement to 2.10 because of the new Print Dialog + - update debian/control + * Add Polish translation to deskstop launcher (LP: #196953) + Contributed by Tomasz Dominikowski <dominikowski@gmail.com> + - update debian/firefox-3.0-final.desktop + * Change $(shell) into $(wildcard) for XUL SDK detection + - update debian/rules + * Drop DEB_AUTO_UPDATE_DEBIAN_CONTROL cdbs variable completely. It was + wrongly set to zero + - update debian/rules + * Stop build-tree/mozilla/README to be shipped as a doc by setting + cdbs DEB_INSTALL_DOCS_ALL to $(NULL) + - update debian/rules + + [ Alexander Sack <asac@ubuntu.com> ] + * reuse apport hook from firefox 2 package initially developed by Hilario J. + Montoliu <hmontoliu@gmail.com> (LP: #199666) + - add debian/apport/firefox-3.0.py + - update debian/firefox-3.0.install + + -- Alexander Sack <asac@ubuntu.com> Thu, 13 Mar 2008 16:52:36 +0100 + +firefox-3.0 (3.0~b3+nobinonly-0ubuntu4) hardy; urgency=low + + * fix firefox.desktop install (ftbfs) + - update debian/firefox-3.0.install + * fix StartupWMClass in desktop file + - update debian/firefox-3.0-final.desktop + * fix Name and Description and Exec in desktop file + - update debian/firefox-3.0-final.desktop + + -- Alexander Sack <asac@ubuntu.com> Mon, 25 Feb 2008 14:37:43 +0100 + +firefox-3.0 (3.0~b3+nobinonly-0ubuntu3) hardy; urgency=low + + * introduce transitional dummy package for firefox-libthai => firefox-3.0 + (thai line break is now done by pango) (LP: #193542) + - update debian/control + * ship firefox.desktop again to not break existing launchers (LP: #193902) + - update debian/rules + + -- Alexander Sack <asac@ubuntu.com> Mon, 25 Feb 2008 11:46:11 +0100 + +firefox-3.0 (3.0~b3+nobinonly-0ubuntu2) hardy; urgency=low + + * make aptitude happy by using versioned Replaces on firefox* + - update debian/control + * make firefox-{dom-inspector,gnome-support} meta packages depend on + firefox-3.0-* instead of xulrunner-1.9-* to improve transition behaviour. + - update debian/control + + -- Alexander Sack <asac@ubuntu.com> Thu, 14 Feb 2008 13:40:37 +0100 + +firefox-3.0 (3.0~b3+nobinonly-0ubuntu1) hardy; urgency=low + + * Firefox 3 Beta 3 release (FIREFOX_3_0b3_RELEASE) + + [ Alexander Sack ] + * use default upstream gcc tweaks for improved performance - especially of + the javascript engine + - update debian/rules + * add gtk based profile migrator dialog, build it during |pre-build| and clean + it in |clean| target of debian/rules; finally, install the binary in firefox + pkglibdir. + - add debian/migrator/main.c + - update debian/rules + * drop version suffix from MOZ_APP and application.ini (going back to + upstreams plain |firefox|) and drop patches accordingly + - drop debian/patches/firefox-fsh + - drop debian/patches/firefox-profilename + - update debian/patches/series + * install firefox binary instead of firefox-3.0 (after MOZ_APP_NAME + tweakage was dropped in on of the previous commits + - update debian/firefox-3.0.install + * reuse firefox.sh.in script to determine on whether the user was a beta + user and if thats the case ask the user (by running the profile migrator + added above) which profile to use in future + - update debian/firefox.sh.in + * fix DEBIAN_FF3_DIR, which diverged from install dir after dropping + special application name and profile dir tweaks + - update debian/rules + * drop development version disclaimer from package description and improve + the package description by stripping technical details and referrals to + other browser applications that are less known than firefox and thus don't + provide any valuable info to normal users. + - update debian/control + * bump build dependency for xulrunner-1.9-dev to >= 1.9~b3 + - update debian/control + * bump bin dependency on xulrunner-1.9 and on xulrunner-1.9-gnome-support + to >= 1.9~b3 + - update debian/control + * introduce (empty) firefox meta package that automatically upgrades users + to latest major releases of firefox; firefox 2 will be reuploaded as + firefox-2 and then be demoted to universe + - update debian/control + * make firefox-3.0 conflict/replace old firefox 2 package to force upgrade + - update debian/control + * remove "Development Version" disclaimer from package short descriptions + - update debian/control + * introduce empty meta packages for firefox, firefox-dom-inspector, + firefox-gnome-support and firefox-dev to provide a seamingless upgrade path + from previous firefox versions. Add Conficts/Replaces accordingly and make + firefox-3.0 Conflicts/Replaces/Provides firefox-libthai which is now fully + integrated in the core as pango line breaking feature is used. + - update debian/control + * provide link /usr/bin/firefox => /usr/bin/firefox-4.0 + - add debian/firefox-3.0.links + + [ Fabien Tassin ] + * Add support for mozilla-devscripts and clean-up rules file accordingly + - update debian/rules + * Clean-up rules file to make more use of $(EXTRA_SYSTEM_CONFIGURE_FLAGS) + - update debian/rules + * Update diverged patch: + - update debian/patches/ftbfs-with-branding-dir + * Add #DEBHELPER# token to prerm script + - update debian/firefox-3.0.prerm + * Replace deprecated ${Source-Version} by ${binary:Version} + - update debian/control + * Bump requirement for system cairo to >= 1.5.8 as we now need + the newly added cairo_path_extents() + - update debian/rules + * Add a menu file + - add debian/firefox-3.0.menu + * Include mozilla-devscripts file using -include so ifneq could be omitted + - update debian/rules + * Improve migration script to take care of all previously used profile + directories (during alpha and beta phases) + - update debian/firefox.sh.in + + -- Alexander Sack <asac@ubuntu.com> Wed, 13 Feb 2008 16:55:10 +0100 + +firefox-3.0 (3.0~b3~cvs20080101t1000+nobinonly-0ubuntu1) hardy; urgency=low + + * new years upstream snapshot (3.0b3 pre, CVS 20080101t1000) features: + - new firefox 3 version (LP: #178066) + - file upload dialog has preview for images (LP: #89381) + - gnome/gtk theme icons for main navigation and mime-type icons work + properly now (LP: #160942) + - honours proper plugin/extension locations now (LP: #123118) + (see https://wiki.ubuntu.com/XulrunnerGecko) + - import bookmarks from ffox 2 properly (LP: #163746) + - proper implementation for adding security exceptions (LP: #179706) + + [ Alexander Sack ] + * new upstream snapshot (3.0b3 pre, CVS 20080101t1000) + * update firefox-profile patch because of changed upstream codebase + - update debian/patches/firefox-profilename + * firefox-3.0 now has its own extensions directory because latest + xulrunner-1.9 supports extensions (and plugins) in three directories: + PROFILE, APP (ffox), GRE (xul) + - update debian/firefox-3.0.dirs + - update debian/rules + * exceptional official branding release for cvs version to hardy: add easy to + use FORCE_OFFICIAL_BRANDING switch in rules and enable it for this release + - update debian/rules + + [ Fabien Tassin ] + * Move xulrunner-1.9 dependencies to b3 + - update debian/control + + -- Alexander Sack <asac@ubuntu.com> Wed, 02 Jan 2008 15:43:50 +0100 + +firefox-3.0 (3.0~b2+nobinonly-0ubuntu1) hardy; urgency=low + + [ Fabien Tassin ] + * new upstream snapshot (3.0b2 from FIREFOX_3_0b2_RELEASE) + - update debian/changelog + * Drop debian/patches/no-have-stdint-h-ftbfs.patch integrated + upstream and bump xulrunner requirements to 1.9~b2~cvs20071119 + - update debian/control + - drop debian/patches/no-have-stdint-h-ftbfs.patch + - update debian/patches/series + * Add libdbus-glib-1-dev >= 0.60 to build-deps. See MozBug #388743. + - update debian/control + * Update rules to use system cairo if cairo >= 1.5.4 is found + - update debian/rules + * Add libpixman-1-dev to build-deps, needed by system cairo + - update debian/control + * Update Standards-Version to 3.7.3 + - update debian/control + * Drop -1.9 suffix of expected xulrunner-1.9 pkg-config files + - update debian/patches/nspr_flags_by_pkg_config_hack.patch + * Fold Build-Depends line making changes easier to track in diffs + - update debian/control + + [ Alexander Sack ] + * use system nspr and system nss; add build-depends accordingly + - update debian/control + - update debian/rules + * add versioned depends on xulrunner-1.9 >= 1.9~b2+nobinonly which is the + first xulrunner-1.9 that officially uses system nspr/nss. + * tighten dependency on xulrunner-1.9 << 1.9~b3~ + - update debian/control + * drop DEV_PACKAGE_INDICATION business because xulrunner pkg-config files + properly reference system-nss/nspr since 1.9+b2+nobinonly + - update debian/rules + + -- Fabien Tassin <fta@sofaraway.org> Wed, 19 Dec 2007 20:23:23 +0100 + +firefox-3.0 (3.0~b1+nobinonly-0ubuntu1) hardy; urgency=low + + * new upstream snapshot (3.0b1 from FIREFOX_3_0b1_RELEASE) + - update debian/changelog + * Rename desktop file firefox-3.0-final.desktop so it doesn't + get cleaned out + - update debian/rules + - rename debian/firefox-3.0.desktop to firefox-3.0-final.desktop + * Install extensions in /usr/lib/xulrunner-addons/extensions + - update debian/firefox-3.0.install + - update debian/rules + * Use official branding for beta too as homepage/releasenotes URLs + are maintained that way. Disable crash reporter. + - update debian/patches/firefox-profilename + - update debian/rules + - update debian/firefox-3.0-final.desktop + * Fix URLs for addons/themes/plugins + - update debian/patches/firefox-profilename + * Revert hardcoded lib path to the upstream path, move searchplugins to + /usr/lib/firefox-addons/searchplugins and plugins to + /usr/lib/firefox-addons/plugins. + - update debian/patches/firefox-fsh + - update debian/rules + - divert debian/firefox-3.0.postinst => debian/firefox-3.0.postinst.in + - divert debian/firefox.sh => debian/firefox.sh.in + - add debian/firefox-3.0.dirs + - drop debian/firefox-3.0.links + - update debian/firefox-3.0{,-gnome-support}.install + * Drop --with-default-mozilla-five-home, prefer default value + - update debian/rules + + -- Fabien Tassin <fta@sofaraway.org> Tue, 27 Nov 2007 02:27:42 +0100 + +firefox-3.0 (3.0~b1~rc3+nobinonly-0ubuntu1) hardy; urgency=low + + RELEASE: 3.0~b1~rc3+nobinonly-0ubuntu1 to ubuntu/hardy + + [ Fabien Tassin ] + * new upstream snapshot: 3.0a9pre cvs20071105t0828 + * Add a dependency on firefox-3.0-gnome-support to xulrunner-1.9-gnome-support + - update debian/control + * Fix a typo in rules file (non ascii char) + - update debian/rules + * new upstream snapshot (1.9b1 rc3 from FIREFOX_3_0b1_RC3) + - update debian/changelogs + * Update depends/build-depends for xulrunner-1.9 to >= 1.9~b1~rc + - update debian/control + + [ Alexander Sack ] + * Use granparadiso branding for alpha and beta builds and official branding + for final builds: + - update debian/rules + * Use --enable-official-branding for final builds + - update debian/rules + - add debian/firefox-3.0.desktop + * fix places regression by shipping usr/lib/firefox-3.0/modules + - update debian/firefox-3.0.install + + -- Fabien Tassin <fta@sofaraway.org> Tue, 14 Nov 2007 14:34:50 +0100 + +firefox-3.0 (3.0~alpha9~cvs20071003t0648-0ubuntu1~mt1) gutsy; urgency=low + + RELEASE: 3.0~alpha9~cvs20071003t0648-0ubuntu1~mt1 to gutsy/ppa + + [ Fabien Tassin ] + * update diverged debian/patches/firefox-fsh + * build with or without nss/nspr depending on version like xulrunner-1.9 + - update debian/rules + + -- Fabien Tassin <fta@sofaraway.org> Mon, 08 Oct 2007 16:28:50 +0200 + +firefox-3.0 (3.0~alpha8+nobinonly-0ubuntu1) gutsy; urgency=low + + RELEASE: 3.0~alpha8+nobinonly-0ubuntu1 to gutsy/universe. + + * new orig.tar.gz without binary only files (LP: #121734). + * debian/firefox.sh: fix typo in firefox.sh profile migration code + (LP: #150529). + + -- Alexander Sack <asac@ubuntu.com> Tue, 09 Oct 2007 10:48:36 +0200 + +firefox-3.0 (3.0~alpha8-0ubuntu2) gutsy; urgency=low + + * debian/control: add missing Depends: on xulrunner-1.9 (LP: #149916). + + -- Alexander Sack <asac@ubuntu.com> Mon, 08 Oct 2007 10:45:06 +0200 + +firefox-3.0 (3.0~alpha8-0ubuntu1) gutsy; urgency=low + + RELEASE: 3.0~alpha8-0ubuntu1 to gutsy/universe. + + [ Alexander Sack ] + * drop libnspr4-dev and libnss3-dev build-depends for gutsy upload. + * don't build with system-nspr/-nss for gutsy universe upload. + * add nspr_flags_by_pkg_config_hack.patch to use pkg-config to get + nspr libs and cflags from xulrunner-1.9-dev package. + + -- Alexander Sack <asac@ubuntu.com> Fri, 05 Oct 2007 02:38:08 +0200 + +firefox-3.0 (3.0~alpha8-0ubuntu1~mt3) gutsy; urgency=low + + RELEASE: 3.0~alpha8-0ubuntu1~mt3 to gutsy/PPA. + + [ Fabien Tassin ] + * Unset browser.safebrowsing.enabled by default + Update debian/firefox.js + * Compile with gcc/g++ 4.2 for all archs. + * Add debian/patches/force_safebrowsing_off.patch forcing + the default to off so users could decide to turn it if they + want to. + * Fix a typo in debian/control (Fixes LP #146694) + * Fix a FTBFS introduced by gcc-4.2 that fixed a visibility bug + [GCC bug 26905] triggering WRAP_SYSTEM_INCLUDES in firefox. + This WRAP_SYSTEM_INCLUDES triggered code depending on nspr + sources that are no longer accessible because of the stripped + tarball. + - add debian/patches/dont_depend_on_nspr_sources.patch + - update debian/patches/series + - update debian/changelog + * Clean a possible left over from trunk in update-notifier user + directory + - update debian/firefox-3.0.postinst + + -- Alexander Sack <asac@ubuntu.com> Wed, 03 Oct 2007 21:46:15 +0200 + +firefox-3.0 (3.0~alpha8-0ubuntu1~mt2) gutsy; urgency=low + + [ Fabien Tassin ] + * dummify firefox-3.0-dom-inspector and firefox-3.0-venkman + now that we ship those two extensions with xulrunner + + [ Alexander Sack ] + * make debian/firefox.sh executable in pre-build:: target. + + -- Alexander Sack <asac@ubuntu.com> Thu, 27 Sep 2007 20:05:10 +0200 + +firefox-3.0 (3.0~alpha8-0ubuntu1~mt1) gutsy; urgency=low + + Upstream Release: 3.0~a8 aka MOZILLA_1_9a8_RELEASE + + [ Fabien Tassin ] + * new release: GranParadiso 3.0 alpha 8 + * Fix debian/rules to detect which xul-dev package is installed + * Change branding based on Version (use MineField if version + matches cvs, otherwise use GranParadiso) + * Move gnome component into firefox-3.0-gnome-support + + -- Alexander Sack <asac@ubuntu.com> Tue, 25 Sep 2007 02:30:07 +0200 + +firefox-3.0 (3.0~a8~cvs20070914t1713-0ubuntu1~mt2) gutsy; urgency=low + + RELEASE: 3.0~a8~cvs20070914t1713-0ubuntu1~mt2 to gutsy/PPA. + + [ Fabien Tassin ] + * Massive app-name change from firefox-trunk to firefox-3.0 + * Add a migration profile script: + add debian/firefox.sh, update debian/firefox-3.0.install + debian/firefox-3.0.links + + -- Alexander Sack <asac@ubuntu.com> Fri, 21 Sep 2007 20:47:20 +0200 + +firefox-trunk (3.0~a8~cvs20070914t1713-0ubuntu1~mt1) gutsy; urgency=low + + RELEASE: 3.0~a8~cvs20070914t1713-0ubuntu1~mt1 to gutsy/PPA. + + [ Fabien Tassin ] + * new cvs snapshot: 3.0a8pre cvs20070914t1713 using a stripped tarball + produced my mozclient + * update debian/control to fix xulrunner version (1.9a8pre vs 1.9~a8) + * drop patches no longer useful: + bz386844_java_plugin_crash_in_xsync.patch + bz392722_fix_nsinstall_on_double_slash.patch + bz386866_ftbfs_toolkit_xre_Makefile_in.patch + * Link venkman from xulrunner-1.9 + * Update firefox-dom-inspector package to just link the + extension from xulrunner-1.9 + * Update debian/firefox-trunk.install to install browserconfig.properties + * Make the installer complain about missing files on stdout + instead of stderr so logs are easier to read. + Add debian/patches/installer_use_stdout_for_missing_files.patch + and update debian/patches/series + + [ Alexander Sack ] + * Use --disable-install-strip to prevent packager from stripping symbols: + - debian/rules: add --disable-install-strip as configure option. + - debian/patches/installer_shouldnt_skip_strip_if_disable_strip_configured, + series: drop patch to disable stripping symbols during |make install| in + favour of generic upstream solution provided by --disable-install-strip. + + -- Alexander Sack <asac@ubuntu.com> Tue, 18 Sep 2007 00:14:51 +0200 + +firefox-trunk (3.0~a8~cvs20070829-0ubuntu1) gutsy; urgency=low + + RELEASE: 3.0~a8~cvs20070829-0ubuntu1 to gutsy/PPA. + + [ Fabien Tassin ] + * new cvs snapshot: 3.0a8pre cvs20070829 + * update debian/rules to use system xulrunner by adding: + --with-libxul-sdk=/usr/lib/xulrunner-devel-1.9a8pre + * update debian/patches/trunk-fsh to use $(MOZ_APP_NAME) while copying + xulrunner-stub + * add debian/patches/installer_shouldnt_copy_xulrunner.patch to prevent + the installer to dump xulrunner files into firefox install dir, + update debian/patches/series + * fix debian/firefox-trunk-dev.install and debian/firefox-trunk-dev.links + to reflect new install scheme + * temporary disable debian/firefox-trunk-dev.* as 'make install' is not + properly installing those files upstream. + * update debian/changelog + + -- Alexander Sack <asac@ubuntu.com> Wed, 29 Aug 2007 20:53:27 +0200 + +firefox-trunk (3.0~a8~cvs20070825-0ubuntu1) gutsy; urgency=low + + RELEASE: 3.0~a8~cvs20070825-0ubuntu1 to gutsy/PPA. + + [ Fabien Tassin ] + * new cvs snapshot: 3.0a8pre cvs20070825 + * Add debian/patches/installer_shouldnt_skip_strip_if_disable_strip_configured + contributed by asac, fixing --disable-strip (was being ignored) + * Drop debian/patches/bz390451_master_password_lost.patch now fully integrated + upstream. Update debian/patches/series + * Update debian/patches/bz392722_fix_nsinstall_on_double_slash.patch to + also fix security/coreconf/nsinstall/nsinstall.c + + -- Alexander Sack <asac@ubuntu.com> Sat, 25 Aug 2007 16:56:07 +0000 + +firefox-trunk (3.0~a8~cvs20070818-0ubuntu1) gutsy; urgency=low + + RELEASE: 3.0~a8~cvs20070818-0ubuntu1 to gutsy/PPA. + + [ Fabien Tassin ] + * new cvs snapshot: 3.0a8pre cvs20070818 + (bump version from 2.99 to 3.0a8pre, as that's what it really is + in mozilla/browser/config/version.txt) + * Update debian/patches/trunk-profilename to patch firefox-branding.js + in the right place now that we no longer specify a branding. + * Update to cvs20070818 and patch clean-up + - debian/rules: drop --disable-airbag, add --disable-crashreporter + - debian/patches/config_rules_install_dist_files => + debian/patches/bz386904_config_rules_install_dist_files.patch + - debian/patches/fix_nsinstall_on_double_slash.patch => + debian/patches/bz392722_fix_nsinstall_on_double_slash.patch + - debian/patches/ftbfs_toolkit_xre_Makefile_in => + debian/patches/bz386866_ftbfs_toolkit_xre_Makefile_in.patch + - update debian/patches/bz390451_master_password_lost.patch: + Fix committed but work-around still in place upstream + - remove unused debian/patches/fix_make_install + - refresh diverging debian/patches/no-have-stdint-h-ftbfs.patch + - update debian/patches/series + + -- Alexander Sack <asac@ubuntu.com> Sat, 18 Aug 2007 14:27:09 +0000 + +firefox-trunk (2.99+2cvs20070813-0ubuntu1) gutsy; urgency=low + + RELEASE: 2.99+2cvs20070813-0ubuntu1 to gutsy/PPA. + + [ Fabien Tassin ] New cvs snapshot: 2.99+2cvs20070813 + * Fix crash in java plugin in XSync(). See Mozilla Bug #386844. + Closes LP Bug #132235 + * Minefield. Update debian/rules to remove forced unofficial branding + that produced Granparadiso branding. Update debian/firefox-trunk.desktop + to use the name Minefield. + * Really disable system cairo. Commit #47 was broken. + Update debian/rules. + * Fix update-notifier + - rename debian/firefox-restart-required.update-notifier into + debian/firefox-trunk-restart-required.update-notifier + - update debian/firefox-trunk-restart-required.update-notifier to + use Firefox-Trunk as application name + - update debian/firefox-trunk.install to reflect rename + - update debian/firefox-trunk.{postinst,prerm} to install/remove + that update-notifier file. + * Re-enable master password previously hidden as preventive measure. + Add debian/patches/bz390451_master_password_lost.patch and update + debian/patches/series. Fixes Mozilla Bug #390451 (not committed + in trunk yet). + * Add debian/firefox-trunk.{postinst,prerm} scripts to add a + x-www-browser alternative for /usr/bin/firefox-trunk. + Priority set to 40, lower than firefox-granparadiso (50) and + plain firefox (70). + * update debian/rules to force --disable-system-cairo until we figure out + what's causing the assert/crash on shutdown. See LP Bug #122735. + * Fix cdbs install scripts + - update debian/firefox-trunk.install and debian/firefox-trunk.links + - Fix a typo in firefox-trunk.links (LP Bug #122737) + - update debian/firefox-trunk-dev.install and add + debian/firefox-trunk-dev.links + * drop debian/control.in and set DEB_AUTO_UPDATE_DEBIAN_CONTROL=0 + in debian/rules (below the includes as the value is overwritten + otherwise) + * update Build-Depends and fix Suggests in debian/control + * Redo debian/patches/trunk-fsh like for GranParadiso: + - remove version from $installdir so that we do the right thing. + It is useless anyway and it broke the profile migration when -dev + was not installed. + * Add debian/patches/trunk-profilename: + - change application name from Firefox to Firefox-Trunk + - update startup script changing profile name + from ~/.mozilla/firefox to ~/.mozilla/firefox-trunk. + The startup script will try to initialize that new profile by + using existing firefox profile, keeping the later untouched. + - update URLs in upstream branding as changing application name + produces invalid URLs. + - update debian/patches/series + * debian/rules: --disable-airbag as we don't want it and configure + fails because we need libcurl + * update debian/patches/fix_nsinstall_on_double_slash.patch to preserve + the initial (upstream) multiple trailling slashes pruning used + for mkdir() + * new cvs snapshot: 2.99+2cvs20070805. Update debian/changelog + + -- Alexander Sack <asac@ubuntu.com> Mon, 13 Aug 2007 23:25:32 +0200 + +firefox-trunk (2.99+2cvs20070805-0ubuntu1) gutsy; urgency=low + + * new cvs snapshot: 2.99+2cvs20070805 + + -- Alexander Sack <asac@ubuntu.com> Mon, 23 Jul 2007 09:43:55 +0000 + +firefox-trunk (2.99+2cvs20070703-0ubuntu0) feisty; urgency=low + + * debian/patches/trunk-fsh: applied manually to build-tree/mozilla + /browser/app/makefile.in, due to failure to apply during build + * debian/patches/ftbfs_toolkit_xre_Makefile_in: Made and applied to fix + toolkit/xre/Makefile.in to fix failure to build to fix Mozilla bug + #386866 + * debian/patches/config_rules_install_dist_files: Made patch due to + failure to find application.ini when launched to fix Mozilla bug + #386904 (Thanks to Alexander Sack <asac@ubuntu.com>) + * debian/patches: Removed old patches that are no longer needed + - removed submakefiles-fix + - removed test + * debian/patches/series: updated as needed + * debian/firefox-trunk.install: Added lines to generate application.ini + and platform.ini + * debian/rules: Removed --with-system-png=/usr \ due to failure to + build during configure, stating system's libpng doesn't have APNG + support + * Reminder to see if we can patch libpng (asac) + + -- John Vivirito <gnomefreak@ubuntu.com> Wed, 04 Jul 2007 20:37:00 -0400 + +firefox-trunk (2.99+2cvs20070628-0ubuntu0) feisty; urgency=low + + * merging copyright file fix from granparadiso branch + * debian/copyright, debian/MPL, debian/docs: added previously missed + copyright files. + + -- Alexander Sack <asac@ubuntu.com> Fri, 15 Jun 2007 13:52:16 +0200 + +firefox-trunk (2.99+2cvs20070601-0ubuntu0) feisty; urgency=low + + * update upstream cvs + * debian/rules: don't use system-nspr and system-nss anymore + * debian/control*: drop build-depends accordingly + * debian/firefox-trunk.links: don't create link + usr/lib/firefox/libnssckbi.so ... which was the wrong place + anyway + * debian/patches/series, debian/patches/nspr_macro_backport_for_gfx_thebes: + drop nspr hack as we don't build against system nss/nspr for the time being + + -- Alexander Sack <asac@ubuntu.com> Fri, 25 May 2007 10:10:00 +0200 + +firefox-trunk (2.99+2cvs20070417-0ubuntu0) feisty; urgency=low + + * update upstream cvs + * debian/rules, debian/control[.in]: build against system-nspr and + system-nss for gutsy; drop explicity depends on libnspr and libnss + as those are now properly detected + + -- Alexander Sack <asac@ubuntu.com> Wed, 18 Apr 2007 13:00:00 +0200 + +firefox-trunk (2.99+1-3.0a.20070201-0ubuntu0) feisty; urgency=low + + * package firefox 3 preview + * rewrite packaging, make use of cdbs with quilt patch + system. + + imported initial patches + + -- Alexander Sack <asac@ubuntu.com> Thu, 22 Feb 2007 09:00:00 +0200 + +firefox (2.0.0.1+1-0ubuntu2) feisty; urgency=low + + * browser/app/Makefile.in: link firefox-bin with + --no-as-needed again. (regression from + 2.0.0.1+1-0ubuntu1) + * browser/components/feeds/src/FeedWriter.js: fix + RSS preview/subscription for flat chrome + (Closes lp#61182) + * debian/rules: set BUILD_OFFICIAL and MOZILLA_OFFICIAL environment + so build gets a proper BUILD_ID (Closes LP#). + + -- Alexander Sack <asac@ubuntu.com> Mon, 19 Feb 2007 12:45:00 +0100 + +firefox (2.0.0.1+1-0ubuntu1) feisty; urgency=low + + * repackage with new upstream mozilla.org and split up patches + into distinct feature patches available at + http://people.ubuntu.com/~asac/firefox-patches/ + * make use of original source tarball as distributed from + ftp.mozilla.org + * debian/rules: use --enable-official-branding to produce + official firefox branding; remove icons in debian/ dir; + add more garbage cleanup + * debian/firefox.links: /usr/share/pixmaps/firefox.png and + usr/share/pixmaps/mozilla-firefox.png now link to + usr/share/firefox/icons/mozicon128.png + * drop FeedWriter.js patch, no rational available. + * xpcom/reflect/xptcall/src/md/unix/xptcinvoke_arm.cpp, + xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm.cpp, + xpcom/reflect/xptcall/src/md/unix/Makefile.in, + xpcom/reflect/xptcall/src/md/unix/xptcinvoke_mips.cpp, + xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_mips.s, + xpcom/reflect/xptcall/src/md/unix/xptcstubs_linux_m68k.cpp, + xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_parisc_linux.s, + xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_parisc_linux.s, + xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_mips.s, + configure.in, config/rules.mk, security/coreconf/Linux.mk: + drop debian architecture patches for + not ubuntu platforms + * debian/control: taking over maintainership + * configure.in: update hidden visibility patch from bugzilla + * configure.in: drop + * Makefile.in: drop explicit export of nss as build system is not + broken anymore + * browser/app/Makefile.in: drop linker tweaks for now. + * browser/app/profile/firefox.js: drop override for homepage + * browser/locales/en-US/chrome/branding/brand.properties: drop further + branding hacks not needed anymore + * browser/components/search/nsSearchService.js: drop not needed + official browser hacks + * prefs-size.diff: removed garbage file from source + + -- Alexander Sack <asac@ubuntu.com> Wed, 15 Feb 2007 23:15:00 +0100 + +firefox (2.0.0.1+0dfsg-0ubuntu2) feisty; urgency=low + + * Build using hunspell instead of myspell. + - debian/control: Build-depend on libhunspell-dev instead of libmyspell-dev. + - config/autoconf.mk.in: Add MOZ_MYSPELL_CFLAGS. + - extensions/spellcheck/myspell/src/Makefile.in: Use MOZ_MYSPELL_CFLAGS. + - extensions/spellcheck/myspell/src/mozMySpell.h: Include hunspell.cxx + instead of myspell.cxx. + - configure.in, configure: Overwrite myspell detection with hunspell. + + -- Matthias Klose <doko@ubuntu.com> Thu, 18 Jan 2007 11:57:14 +0000 + +firefox (2.0.0.1+0dfsg-0ubuntu1) feisty; urgency=low + + * New upstream security update: + - CVE-2006-6507, MFSA 2006-76: XSS using outer window's Function object. + - CVE-2006-6506, MFSA 2006-75: RSS Feed-preview referrer leak. + - CVE-2006-6504, MFSA 2006-73: SVG Processing Remote Code Execution. + - CVE-2006-6503, MFSA 2006-72: XSS by setting img.src to javascript: URI. + - CVE-2006-6502, MFSA 2006-71: LiveConnect crash finalizing JS objects. + - CVE-2006-6501, MFSA 2006-70: Privilege escallation using watch point. + - CVE-2006-6497, CVE-2006-6498, CVE-2006-6499, MFSA 2006-68: Crashes + with evidence of memory corruption. + * debian/rules: use original upstream icons (Closes LP#68180). + * debian/debsearch.src: make feisty the default debsearch target. + * browser/base/content/utilityOverlay.js: change Launchpad translation/help + pages for Feisty. + + -- Kees Cook <kees@ubuntu.com> Thu, 21 Dec 2006 09:51:22 -0800 + +firefox (2.0+0dfsg-0ubuntu3) edgy; urgency=low + + * Patch from upstream CVS to fix RSS preview/subscription, thanks to Mike + Connor and Martin Jürgens (Closes: LP#61182) + + -- Matt Zimmerman <mdz@ubuntu.com> Mon, 23 Oct 2006 10:20:25 +0100 + +firefox (2.0+0dfsg-0ubuntu2) edgy; urgency=low + + * uudecode debsearch.gif too. Fixes FTBFS + * Make edgy the default debsearch target. Closes: Malone: #61687 + + -- Tollef Fog Heen <tfheen@ubuntu.com> Mon, 23 Oct 2006 08:52:11 +0200 + +firefox (2.0+0dfsg-0ubuntu1) edgy; urgency=low + + * Bump version to 2.0 (no upstream changes from rc3) + * browser/components/search/nsSearchService.js + - Set MOZ_OFFICIAL to "official", distributionID to "com.ubuntu" + * debian/branding: new subdirectory with images + * debian/rules: + - build: uudecode and substitute images in source tree, use debian/branding/icon64.png + instead of debian/firefox.png + - clean: restore images in source tree, remove uudecoded versions + + -- Matt Zimmerman <mdz@ubuntu.com> Fri, 20 Oct 2006 15:56:42 -0700 + +firefox (1.99+2.0rc3+dfsg-0ubuntu1) edgy; urgency=low + + * New upstream version 2.0rc3, UVF exception approved by Matt Zimmerman. + * configure: Fix bashism to let the gcc visibility=hidden bug detection + work. + * configure{,.in}: Change MOZ_APP_DISPLAYNAME from 'BonEcho' to 'Firefox' to + make UserAgent string work with web sites which evaluate it. + * browser/base/content/utilityOverlay.js: Open the Launchpad + translation/help pages for Edgy, not Dapper. + * For the sake of automatic vulnerability tracking: All 1.5.0.x and earlier + vulnerabilities were fixed in the 2.0 branch as well: + CVE-2005-0752 CVE-2005-1531 CVE-2005-1532 CVE-2005-2114 CVE-2006-0749 + CVE-2006-1731 CVE-2006-1732 CVE-2006-1733 CVE-2006-1734 CVE-2006-1735 + CVE-2006-1736 CVE-2006-1737 CVE-2006-1738 CVE-2006-1739 CVE-2006-1740 + CVE-2006-1741 CVE-2006-1742 CVE-2006-1790 CVE-2006-2775 CVE-2006-2776 + CVE-2006-2777 CVE-2006-2778 CVE-2006-2779 CVE-2006-2780 CVE-2006-2782 + CVE-2006-2783 CVE-2006-2784 CVE-2006-2785 CVE-2006-2786 CVE-2006-2787 + CVE-2006-2788 CVE-2006-3113 CVE-2006-3677 CVE-2006-3801 CVE-2006-3802 + CVE-2006-3803 CVE-2006-3805 CVE-2006-3806 CVE-2006-3807 CVE-2006-3808 + CVE-2006-3809 CVE-2006-3810 CVE-2006-3811 CVE-2006-3812 CVE-2006-4253 + CVE-2006-4340 CVE-2006-4565 CVE-2006-4566 CVE-2006-4567 CVE-2006-4568 + CVE-2006-4569 CVE-2006-4571 + + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 19 Oct 2006 09:28:15 +0200 + +firefox (1.99+2.0rc2+dfsg-0ubuntu3) edgy; urgency=low + + * debian/firefox-runner: Disable Pango if a Sinhala locale is present. LP + 66270. + + -- Colin Watson <cjwatson@ubuntu.com> Sun, 15 Oct 2006 20:29:26 +0100 + +firefox (1.99+2.0rc2+dfsg-0ubuntu2) edgy; urgency=low + + * Delete /usr/lib/firefox/components/compreg.dat in the postinst. + This is a partial workaround for LP 30791. + + -- Ian Jackson <iwj@ubuntu.com> Thu, 12 Oct 2006 12:19:11 +0100 + +firefox (1.99+2.0rc2+dfsg-0ubuntu1) edgy; urgency=low + + * New upstream version 2.0rc2. + * Fix/workaround for epiphany GtkSocket lifetype crash: + apply patch id=241087 from Mozilla Bugzilla #241535 to fix LP #63814. + * Change application name to `Firefox', as requested by mdz. + Files changed: + - browser/locales/en-US/chrome/branding/brand.dtd + - browser/locales/en-US/chrome/branding/brand.properties; + New values: + - brandShortName and brandFullName: `Bon Echo' => `Firefox' + - vendorShortName: `Mozilla' => `Ubuntu' + * Make preferences dialogue fit again (bah!). + + -- Ian Jackson <iwj@ubuntu.com> Tue, 10 Oct 2006 18:49:32 +0100 + +firefox (1.99+2.0b2+dfsg-1ubuntu3) edgy; urgency=low + + * Remove /usr/lib/mozilla-thunderbird from the LD_LIBRARY_PATH + if we find it there. Workaround for LP 57923. + * Remove pocket name (eg `-security') from distribution identifier in + the browser user agent string. LP 55289. + + -- Ian Jackson <iwj@ubuntu.com> Tue, 3 Oct 2006 19:01:34 +0100 + +firefox (1.99+2.0b2+dfsg-1ubuntu2) edgy; urgency=low + + * Ship xpidl et al, in firefox-dev. Relates to Debian #362190. + Fixes Malone #61160. + + -- Ian Jackson <iwj@ubuntu.com> Thu, 21 Sep 2006 16:33:50 +0100 + +firefox (1.99+2.0b2+dfsg-1ubuntu1) edgy; urgency=low + + * Merged from Debian unstable; new upstream version. + * Remaining differences between + Debian and Ubuntu in no particular order: + - Build libnspr and libnss and corresponding -dev packages from this + source package. Plus changes to make these libs build nicely. + - Various changes to preferences, default bookmarks and search engines. + - Support for `Get Help Online' and `Translate This Application'. + - Size changes for various dialogue boxes to make the contents fit. + - Downloads go to separate `Desktop' folder by default. + - Fix some underquoted m4 arguments. + - Minor changes in directories, symlinks and debian/control + to cope with Ubuntu and Debian's different histories. + - disable File / Import (wizard is nonfunctional). + Malone #28563, Debian #350599, Mozilla Bugzilla 117844. + - Change `Latest Headlines' to `Latest BBC Headlines' to properly + disclose the source up front, and use a corresponding RSS URL. + - Default for FIREFOX_DSP is none. + - Pango support is enabled only if an installed locale seems to need + it. + - Note in README.Debian about how to run xpcshell. + - Disable xprint. + - No build dependency on libxp-dev; build-depend on zip instead. + - Various icon changes. + - Some currently-unused directory merging code in firefox.preinst. + - Less detail in the user agent string. + - Belt-and-braces removal for some cruft left over by some versions of + the Mozilla build system. + - Better firefox.menu entry (says `Firefox Web Browser'). + - Build dynamically linked, since in Ubuntu embedders use firefox. + - EbmedWindow::GetVisibility bugfix, Malone 40320, upstream 312998. + - Pass FC_ANY_METRICS to Fontconfig where appropriate. + - Extensive Thai language patch. + - Print in serif by default even though default display is sans. + - Some fixes to the (upstream-unused) nss makefiles. + - Strip PostScript/ from printer names. + - Better message about updates of read-only extension. + - Include pointer to the Gecko Runtime (GRE registration). + - Prevent websites from disabling context menus. + All of these changes are fully documented in the changelog below. + Please see those changelog entries for full details. Much historical + information about changes either taken up by Debian or upstream, or + dropped by us, is retained in this changelog. + + -- Ian Jackson <iwj@ubuntu.com> Wed, 13 Sep 2006 16:40:06 +0100 + +firefox (1.99+2.0b2+dfsg-1) experimental; urgency=low + + * New upstream beta release. + + * extensions/inspector/build/src/Makefile.in, + extensions/inspector/build/src/inspector.pkg, + extensions/inspector/build/src/nsInspectorModule.cpp: Removed, the problem + was lying in debian/rules. /me goes hiding under a rock. + * layout/inspector/public/Makefile.in: Reverted previous changes. + * debian/rules: Don't exclude inspector files when dh_installing the firefox + package. We need the inspector.xpt file from the components directory. The + files for the dom-inspector package are already excluded from the + firefox.install file anyway. + * debian/firefox-dom-inspector.install, + debian/firefox-dom-inspector.links: Simplified. + * debian/control: + + Turn firefox-dom-inspector into an arch: all package, since the binary + component has been merged into the firefox binary. + + Adjust dependencies for binNMU safety. + * xpcom/reflect/xptcall/src/md/unix/Makefile.in, configure.in, configure: + Use ${host_cpu} instead of uname -m so that firefox can safely build on + s390x with a s390 target, and on amd64 with an x86 target. + * uriloader/exthandler/unix/nsGNOMERegistry.cpp, + uriloader/exthandler/unix/nsGNOMERegistry.h, + uriloader/exthandler/unix/nsOSHelperAppService.cpp, + uriloader/exthandler/unix/nsMIMEInfoUnix.cpp, + uriloader/exthandler/unix/nsMIMEInfoUnix.h: Adapted patch from bz#273524 to + make helper applications with parameters work. (Closes: #355511) + * debian/copyright: Adjusted with updated information for firefox 2.0, which + is now properly tri-licensed \o/. (Closes: #330295) + * debian/rules: Install the MPL file taken from the upstream LICENSE file. + + -- Mike Hommey <glandium@debian.org> Fri, 1 Sep 2006 08:36:26 +0200 + +firefox (1.5.dfsg+1.5.0.6-3) unstable; urgency=low + + * browser/app/Makefile.in: Workaround to force link the xpcom library to + the firefox binary despite -Wl,--as-needed in the LDFLAGS. + (Closes: #378667) + * debian/firefox.install: Don't install xpt_link, xpt_dump, xpidl, + xpicleanup, xpcshell nor regxpcom. They are of no use to firefox users and + are provided with xulrunner anyway. (Closes: #362190) + + -- Mike Hommey <glandium@debian.org> Sun, 20 Aug 2006 19:49:25 +0200 + +firefox (1.5.dfsg+1.5.0.6-2) unstable; urgency=low + + * debian/firefox.desktop: + - Polish translation from Ian Jackson by way of an Ubuntu user. + (Closes: #382079) + - Patch from Ian Jackson to stop claiming dav:// URLs when firefox + doesn't understand them. (Closes: #382080) + * editor/libeditor/text/nsPlaintextEditor.cpp: Apply patch from + bz#271815 to fix OverTheSpot mode used by many Asian language input + modules. (Closes: #379935) + + -- Eric Dorland <eric@debian.org> Tue, 15 Aug 2006 00:09:55 -0400 + +firefox (1.5.dfsg+1.5.0.6-1) unstable; urgency=low + + * New upstream release. + + -- Eric Dorland <eric@debian.org> Thu, 3 Aug 2006 13:17:45 -0400 + +firefox (1.5.dfsg+1.5.0.5-1) unstable; urgency=high + + [ Eric Dorland ] + * New upstream release. Urgency high because it fixes MFSA 2006-44 to + MFSA 2006-56 excluiding MFSA-2006-49. (Closes: #380463) + + [ Mike Hommey ] + * debian/firefox.prerm: Remove /usr/lib/firefox/.autoreg instead of + /var/lib/firefox/.autoreg. + * browser/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf.in: + Removed very old and now useless changes. + * xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_alpha.cpp: Removed + useless new line that showed up in the diff.gz. + + -- Eric Dorland <eric@debian.org> Sun, 30 Jul 2006 17:08:38 -0400 + +firefox (1.99+2.0b1+dfsg-1) experimental; urgency=low + + * New upstream beta targetted at experimental: + - Much better search plugins handling. They can be added and removed at + will, and even better, system-wise search plugins can be ignored at the + profile level. (Closes: #352195, #320957, #296425, #308005) + * browser/components/shell/src/Makefile.in: Correctly install the + setDefaultBrowser component. + * config/rules.mk: Don't install extensions in the chrome. + * debian/firefox.links: Link /usr/lib/firefox/dictionaries to + /usr/share/myspell/dicts. + * config/autoconf.mk.in, configure, configure.in: Add the + --enable-system-myspell argument to configure to use the system myspell + library. + * extensions/spellcheck/myspell/src/Makefile.in: Use the system myspell + library when asked to. + * debian/rules: + - Add --enable-system-myspell to configure call. + - Do shlibsign libfreebl's (there can be several depending on the arch). + * debian/control: Add libmyspell-dev to build dependencies. + * browser/components/microsummaries/src/Makefile.in, config/Makefile.in: + Add rules so that make clean cleans everything. + * allmakefiles.sh: Removed references to nonexisting Makefiles in + extensions/xmlextras/base. + * configure, configure.in: Apply patches from bz#334866, bz#319012 and + bz#335949 + fixups to workaround gcc visibility hidden bugs, especially + #331460 (an instance of which is actually still present in C++, + see gcc#26905). + * extensions/inspector/build/src/Makefile.in, + extensions/inspector/build/src/inspector.pkg, + extensions/inspector/build/src/nsInspectorModule.cpp: Added missing files + for the DOM Inspector component. + * extensions/inspector/build/src/Makefile.in, + layout/inspector/public/Makefile.in: Adapted so that the DOM Inspector + component would build correctly and the xpt would be installed in + the extensions directory. + * extensions/reporter/Makefile.in: Install missing reporter's preference. + + -- Mike Hommey <glandium@debian.org> Fri, 21 Jul 2006 07:05:25 +0200 + +firefox (1.5.dfsg+1.5.0.4-3) unstable; urgency=low + + [ Eric Dorland ] + * debian/control: + - Fix silly typo of binutils. (Closes: #378582) + - Standards-Version to 3.7.2.1. + + [ Mike Hommey ] + * debian/rules: + - Use a specific LD_LIBRARY_PATH at link time so that we don't need to + link against indirect dependencies. (Closes: #378378) + - Run shlibsign after the files are stripped so that it is accurate and + FIPS mode can correctly work. + - Removed old commented out OPTFLAGS that were kept in case gcc 4.0 did + no better than gcc 3.x. + - Removed old exported variables that are useless nowadays. + - Removed dh_strip call in binary-indep. Who wants to strip + arch-independant files ;) + * debian/presubj: Added notes about plugins and crash reports. + * security/manager/Makefile.in, security/nss/cmd/shlibsign/Makefile: + Don't build nor install the .chk files but still build shlibsign. + * debian/firefox.install: Don't install .chk files since we generate them + after dh_strip. + * security/nss/cmd/shlibsign/manifest.mn: Don't build in shlibsign/mangle. + It doesn't build anyway. + + -- Eric Dorland <eric@debian.org> Wed, 19 Jul 2006 23:56:22 -0400 + +firefox (1.5.dfsg+1.5.0.4-2) unstable; urgency=low + + [ Eric Dorland ] + * netwerk/base/public/security-prefs.js: Disable SSLv2 by default. I + thought the weak cipher warning took care of this. (Closes: #371153) + * debian/firefox-runner: Simplify the dsp autodetection and add aoss to + the roster. (Closes: #372848) + * firefox-restart-required.update-notifier, firefox.postinst, + firefox.install: Add update-notifier to indicate that firefox needs to + be restarted on upgrade. Based on Ian Jackson's patch, but reworked a + little. Also with a bad French translation. Translators, assemble! + (Closes: #365865) + * config/rules.mk, debian/control: Apply patch from Thiemo Seufer to + remove mips -xgot hack and build depend on the appropriate binutils on + mips and mipsel. (Closes: #374372) + * debian/presubj, debian/README.Debian: Add a bit more information about + disabling Pango, which often seems to be the source of problems. + * debian/firefox-runner: + - Print out MOZ_NO_REMOTE in verbose mode. + - Fix some unreachable logic, Thanks Daniel Jacobowitz. + + [ Mike Hommey ] + * debian/rules: + - Fix for Gecko date extraction from client.mk. + - Disabled strict aliasing from optimized builds. + - Added -Wl,--as-needed to the LDFLAGS, so that we don't get indirect + libraries linked. + * config/static-config.mk: Add MOZ_XFT_LIBS to STATIC_EXTRA_LIBS. It used to + get linked as a side effect of linking to indirect libraries, but should + be linked directly since Xft symbols are used. + * debian/firefox-restart-required.update-notifier: Fixed the french + translation. ;) + * content/html/content/src/nsGenericHTMLElement.cpp, + content/html/content/src/nsHTMLInputElement.cpp, + dom/src/base/nsGlobalWindow.cpp: Fixed crasher and potential crashers. + Reported bz#343953. + + -- Eric Dorland <eric@debian.org> Sun, 9 Jul 2006 02:37:28 -0400 + +firefox (1.5.dfsg+1.5.0.4-1) unstable; urgency=low + + * The "Post-DebConf Hangover" release. + + [ Eric Dorland ] + * New upstream release. Fixes various security issues. MFSA 2006-31 to + MFSA 2006-43, excluding MFSA 2006-40. + * debian/control: + - Standards-Version to 3.7.2.0. + - Set priority of -dbg to extra and Section to devel. + * gfx/src/gtk/nsFontMetricsPango.cpp, + intl/lwbrk/src/nsJISx4501LineBreaker.cpp, + intl/unicharutil/util/nsUnicharUtils.h, + intl/unicharutil/util/nsUnicharUtils.cpp, + layout/generic/nsTextFrame.cpp: Patch from Jurij Smakov (from + bz#161826) to fix alignment issues on sparc64. (Closes: #354725) + + [ Mike Hommey ] + * Applied distclean patch from xulrunner (in + debian/patches/01_distclean.dpatch), except for the javaxpcom stuff we + don't build anyway. + * browser/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}, + config/static-rules.mk: More cleaning for firefox. + * nsprpub/configure: Apply change to nsprpub/configure.in. + (Closes: #350616) + * gfx/src/gtk/nsFontMetricsPango.cpp: Some more changes so that it + actually builds without errors, and use PR_Malloc and PR_Free instead + of malloc and free. + + -- Eric Dorland <eric@debian.org> Fri, 2 Jun 2006 12:13:18 -0400 + +firefox (1.5.dfsg+1.5.0.3-2) unstable; urgency=low + + * debian/firefox.desktop: Add spanish translation, just in time for + DebConf 6! Thanks Ian Jackson. (Closes: #365870) + * debian/firefox-runner: Actually apply the patch from Morita Sho in + #364566. I'm a moron. (Closes: #365956, #365960) + * debian/control: Standards-Version to 3.7.1.0. Go policy team! + + -- Eric Dorland <eric@debian.org> Thu, 4 May 2006 01:38:18 -0400 + +firefox (1.5.dfsg+1.5.0.3-1) unstable; urgency=critical + + * The "secure enough for ya!" release. + * New upstream release. Contains security fixes, hence severity + critical. + - Fixes CVE-2006-1993 aka MFSA 2006-30. (Closes: #364810) + + [ Mike Hommey ] + * security/manager/Makefile.in, debian/firefox.install: Build and + install the .chk file again. That will make the FIPS mode work again. + * debian/control: Bumped Standards-Version to 3.7.0.0. No changes. + * debian/rules: Fix the navigator.ProductSub value for dumb scripts. + Closes: #364640, #365099. We now use the date of the client.mk file, + which is likely to be the closest value to the release date, instead of + useless build date. + Add the debian version after the firefox version string. + * debian/rules: Use dpkg-architecture to find out the host and build that + we want to pass to the configure script. (Closes: #365738) + + [ Eric Dorland ] + * debian/firefox-runner: + - Quote the APPLICATION_ID variable to handle profiles with a space + in the name. Inspired by Morita Sho's patch. (Closes: #364566) + - echo MOZ_DISABLE_PANGO on verbose. + * debian/rules: It's baaaackkk. Reenable xprint. + + -- Eric Dorland <eric@debian.org> Wed, 3 May 2006 00:32:49 -0400 + +firefox (1.5.dfsg+1.5.0.3-0ubuntu3) dapper; urgency=low + + * Thai-related crash fix (Malone 45395): + - nsCopySupport.cpp, nsCopySupport::HTMLCopy: + do not crash if htmlConverter->Convert fails. + - nsHTMLFormatConverter.cpp, nsHTMLFormatConverter::Convert: + properly report failure if dataStr.IsEmpty. + - nsJISx4501LineBreaker.cpp: fix printf(stderr -> fprintf. + * Add Polish translation for firefox.desktop (Malone 45447). + Thanks to contribution from Tomasz Dominikowski. + * Do not attempt to merge /usr/lib/mozilla-firefox and /usr/lib/firefox + and make the former a link to the latter; this is unfortunately + error-prone and makes more problems than it solves. + Fixes Malone 44487; regresses the plugins directory confusion bug. + * Include MFSA and CVE numbers in changelog entry for 1.5.dfsg-1. + + -- Ian Jackson <iwj@ubuntu.com> Tue, 23 May 2006 17:45:30 +0100 + +firefox (1.5.dfsg+1.5.0.3-0ubuntu2) dapper; urgency=low + + * Fix memory leak in large clipboard handling. Malone 41093. + Mozilla Bugzilla 289897; applied attachments 218749, 218753. + * Provide symlink /usr/lib/mozilla-firefox -> /usr/lib/firefox + (and shuffle stuff across if both directories exist). + * Remove update-notifier `restart required' on removal so that if you + remove firefox you're no longer asked to restart it. Malone 36739. + * Increase size of prefs window explicitly. Malone 43528. + * Suppress the error if /var/lib/locales/supported.d/* can't be read + (probably because it doesn't exist). If you get EIO or EACCES or some + such then having pango mysteriously disabled will be the least of your + worries. Malone 44016. + * Really use firefox_1.5.dfsg+1.5.0.3.orig.tar.gz from Debian. + + -- Ian Jackson <iwj@ubuntu.com> Fri, 12 May 2006 19:20:30 +0100 + +firefox (1.5.dfsg+1.5.0.3-0ubuntu1) dapper; urgency=low + + * New upstream version, 1.5.0.3, security/stability fix from upstream: + MFSA 2006-30, CVE-2006-1993: Deleted + object reference when designMode="on" + This package is based on Debian's firefox_1.5.dfsg+1.5.0.3.orig.tar.gz + but has none of the corresponding Debian changes. + + -- Ian Jackson <iwj@ubuntu.com> Wed, 10 May 2006 12:13:30 +0100 + +firefox (1.5.dfsg+1.5.0.2-3) unstable; urgency=low + + * debian/rules, debian/control: Build the -dbg package again. + * debian/firefox.1: Fix some incorrect references to mozilla. Thanks + Loïc Minier. (Closes: #364101) + * debian/firefox-runner: Patch from Mikhail Gusarov to be able to use + Network Audio Server's dsp wrapper. (Closes: #363124) + * debian/firefox.install: Fix screwed up path to firefox.xpm. (Closes: + #364359) + * debian/README.Debian: Document that firefox doesn't allow connections + on certain ports. Thanks W. Borgert. (Closes: #362785) + + -- Eric Dorland <eric@debian.org> Sun, 23 Apr 2006 22:41:15 -0400 + +firefox (1.5.dfsg+1.5.0.2-2) unstable; urgency=critical + + * The "ftp-master's aren't my friends today" release. + * debian/rules, debian/control: Don't build the -dbg package for now, to + get around NEW queue processing. + + -- Eric Dorland <eric@debian.org> Thu, 20 Apr 2006 22:33:18 -0400 + +firefox (1.5.dfsg+1.5.0.2-1) unstable; urgency=critical + + [ Eric Dorland ] + * New upstream release. Contains security fixes, hence severity + critical. + - Fixes the following vulnerabilites (Thanks Alexander Sack for + compiling the list): CVE-2006-1724, CVE-2006-0884, + CVE-2006-1730, CVE-2006-1729, CVE-2006-1728, CVE-2006-1727, + CVE-2006-1045, CVE-2006-0748, CVE-2006-1726, CVE-2006-1725, + CVE-2005-2353. (Closes: #362656) + * debian/firefox-runner: Patch from Paul Collins to fix some lingering + ProfileManager launch issues. (Closes: #356250) + * browser/components/preferences/privacy.xul, + browser/locales/en-US/chrome/browser/preferences/preferences.dtd: + Patch from Ian Jackson to make the preferences window bigger for + people with high rez displays. His changelog entry reads: + * Make Preferences window not chop off various elements: + - specify a width of 50em instead of 42em + - do not specify a height + - add another <separator/> to the bottom of privacy.xul's prefpane. + I have no idea why this is necessary :-(. + Malone 36985. + * configure.in, configure: Small typo in configure.in that wasn't + setting TARGET_XPCOM_ABI properly and breaking binary extensions on + some arches. (Closes: #359228) + + [ Mike Hommey ] + * debian/rules: Disable elf-dynstr-gc, which is pretty useless nowadays. + * security/coreconf/rules.mk: Fix perl code that got broken by newer make. + Taken from bz#325148. + * browser/app/Makefile.in: Apply patch from bz#314927 to install default.xpm + in the correct place. + * debian/rules, debian/firefox.dirs, debian/firefox.install: Updated to fit + this change. + * security/coreconf/rules.mk: Force use of the -g flag in the CFLAGS. + + -- Eric Dorland <eric@debian.org> Sun, 16 Apr 2006 18:40:02 -0400 + +firefox (1.5.dfsg+1.5.0.2-0ubuntu2) dapper; urgency=low + + * Increase sizes of various dialogue boxes so that all of the contents + fit. Malone 26225, 36985, and probably others. + * Set MOZ_DISABLE_PANGO=1 to disable pango, unless some locale is + selected as supported which would need pango for rendering; the + default can be overridden by setting MOZ_DISABLE_PANGO to 0 or 1. + Malone 32561 (workaround). + * Use update-notifier to request a firefox restart. Malone 36739. + * Added Spanish translation to firefox.desktop. + Malone 39972. Thanks to Rocco Stanzione for the patch. + * Add a couple of missing trailing newlines. + Malone 39972 again. Thanks Rocco Stanzione for the report. + * EbmedWindow::GetVisibility bugfix, Malone 40320, upstream 312998, + thanks to chpe for the patch and discussion. + * Add FC_ANY_METRICS set to FcTrue to all patterns that are going to be + used for finding (rather than enumerating) fonts. Malone 42559. + + -- Ian Jackson <iwj@ubuntu.com> Tue, 2 May 2006 18:59:32 +0100 + +firefox (1.5.dfsg+1.5.0.2-0ubuntu1) dapper; urgency=low + + * New upstream version, 1.5.0.2. + Described as `stability and security fixes' by upstream but many + changes are included and producing a complete list is infeasible :-(. + Fixes are known to be included for: + - MFSA 2006-29, CVE-2006-1725: Spoofing with translucent windows + - MFSA 2006-28, CVE-2006-1726: Security check of + js_ValueToFunctionObject() can be circumvented + - MFSA 2006-27, CVE-2006-0748: Table Rebuilding Code Execution + Vulnerability + - MFSA 2006-25, CVE-2006-1727: Privilege escalation through Print Preview + - MFSA 2006-24, CVE-2006-1728: Privilege escalation using + crypto.generateCRMFRequest + - MFSA 2006-23, CVE-2006-1729: File stealing by changing input type + - MFSA 2006-22, CVE-2006-1730: CSS Letter-Spacing Heap Overflow + Vulnerability + - MFSA 2006-20, CVE-2006-1529, CVE-2006-1530, CVE-2006-1531, + CVE-2006-1723, CVE-2006-1724: Crashes with evidence of memory + corruption. + This package is based on Debian's firefox_1.5.dfsg+1.5.0.2.orig.tar.gz + but has none of the corresponding Debian changes. + + -- Ian Jackson <iwj@ubuntu.com> Wed, 26 Apr 2006 16:53:22 +0100 + +firefox (1.5.dfsg+1.5.0.1-5) unstable; urgency=low + + [ Mike Hommey ] + * debian/rules: + - Add -g to the build flags when building with DEB_BUILD_OPTIONS=nostrip. + If we ask for nostrip, we want the debugging + symbols, right? ;) + - Changed the way we identificate ourselves in vendor.js. + * layout/build/Makefile.in, layout/build/nsLayoutModule.cpp: Remove useless + useragent setter at startup so that general.useragent.product and + general.useragent.productSub set in our vendor.js preference file work at + startup time. + * security/coreconf/Linux.mk: + - Patch from Martin Michlmayr for mips64 builds. + - Don't use x86 as CPU_ARCH when building on an unsupported architecture. + * security/manager/Makefile.in, security/nss/lib/ckfw/builtins/Makefile, + security/nss/lib/manifest.mn: Don't build the stuff we don't need, and + dynamically link libnssckbi to both libplc4 and libplds4 instead of + linking statically. + * debian/firefox.postinst, debian/firefox.prerm, + debian/firefox-gnome-support.postinst, debian/firefox-gnome-support.prerm: + Touch a .autoreg file at configure time, or removal of gnome-support and + remove it with the package. This will trigger autoregistration of the + components if the compreg.dat and xpti.dat files are older than the + .autoreg file. We used to remove compatibility.ini for that reason, but + stopped doing that because firefox was supposed to do that correctly, + which actually only correctly works on new upstream versions, not new + debian revisions, or installation of gnome-support. + * xpfe/components/killAll/Makefile.in: Correctly install the killAll + component. + + [ Eric Dorland ] + * debian/control: + - Set Section of firefox-gnome-support and + mozilla-firefox-gnome-support to gnome. + - Standards-Version to 3.6.2.2. + - debhelper build-dep to >= 5.0. + - Add firefox-dbg package. + * debian/compat: Set to 5. + * debian/rules: + - Remove silly CVS tarball cleanup target. + - Add arch-independant debhelper calls, and make other debhelper + calls arch-dependent. + - Add --dbg-package=firefox-dbg to dh_strip call. + - Always build with the -g flag. (Based on a change Mike made) + - Patch from Andreas Jochens to use -mminimal-toc when building on + ppc64. (Closes: #361035) + - Use --disable-strip, --disable-strip-libs in configure parameters. + Thanks Ian Jackson. + - Use .upstream instead of .orig to make it more clear and not + confuse the clean target. Thanks Ian Jackson. (Closes: #362186) + - Disable xprint support for now, while the Xorg 7 transition sorts + itself out. Should be reenabled next release. + * debian/firefox.xpm: Add more Debian compliant menu icon. + * debian/firefox.install, debian/rules: Install new Debian compliant + icon. + * debian/firefox.desktop: Add StartupNotify=true for pretty waiting + cursor. Thanks Sven Arvidsson. (Closes: #361527) + * debian/firefox-dom-inspector.preinst, + debian/firefox-dom-inspector.links, + debian/firefox-dom-inspector.install: Install non-architecture + specific bits of the inspector into /usr/share/firefox. + * debian/firefoxrc: Disable the dsp wrapper by default. esddsp is just + too buggy to allow this to continue. May reenable later if they clean + up their act. Leaving the bugs open for now. + * debian/firefox.NEWS: + - Document the dsp wrapper changes. + - Remove old mozilla-firefox entries. + * debian/firefox.1: Fix typo of firefox, thanks Andrew Rendle. (Closes: + #362413) + * debian/firefox.install: We don't get .chk files anymore for some + reason. + + -- Eric Dorland <eric@debian.org> Fri, 14 Apr 2006 15:52:41 -0400 + +firefox (1.5.dfsg+1.5.0.1-4) unstable; urgency=low + + [ Mike Hommey ] + * debian/firefox-runner, debian/firefox.1: Patch from Ian Jackson to + make -P, -CreateProfile and -ProfileManager options correctly work + again, and improve the manual page. (Closes: #356250) + * debian/firefox.desktop: + - Fix trivial syntax problems. (Closes: #356263) + - Added Japanese and Korean translations. + * debian/firefox.dirs: Removed remainings of the time when we had a file + in /usr/sbin. (Closes: #356268) + * debian/firefox-gnome-support.prerm, + debian/firefox-gnome-support.postinst: Removed bashisms. (Closes: + #349946) + * debian/README.Debian: + - Replaced the bug reporting information by an invitation to read + /usr/share/bug/firefox/presubj. (Closes: #356269) + - Changed the heading to "Firefox for Debian". + + [ Eric Dorland ] + * debian/firefox-gnome-support.postinst, + debian/firefox-gnome-support.prerm: Add forgotten #DEBHELPER# token. + + -- Eric Dorland <eric@debian.org> Sun, 12 Mar 2006 21:34:14 -0500 + +firefox (1.5.dfsg+1.5.0.1-3) unstable; urgency=low + + [ Eric Dorland ] + * debian/control: Use strict dependencies for the transition packages, + no reason a transition package should be upgraded before the real + package. + * debian/README.Debian: Fix all references to + /etc/mozilla-firefox/mozilla-firefoxrc. (Closes: #351956) + * debian/firefox.desktop: Patch from Ian Jackson to add more + translations and more inline with the GNOME HIG. (Closes: #351807) + * widget/src/gtk2/nsWindow.cpp: Apply new ignore extended mouse buttons + patch from Peter Colberg (Closes: #351972) + * debian/firefox.1: Lower case first letter of -ContentLocale. + * debian/firefox.1, debian/firefox-runner: Add -no-remote switch to turn + on MOZ_NO_REMOTE. Use it for profile related commands as + well. (Closes: #351717, #344849) + * wikipedia.gif.uu, wikipedia.src, rules, firefox.install: Patch from + Ian Jackson to add wikipedia search engine. (Closes: #354107) + + [ Mike Hommey ] + * modules/libpref/src/init/all.js: Set default fonts for all languages to + serif, sans-serif and monospace. It might solve a lot of fonts problems. + * config/config.mk, config/make-jars.pl, configure.in, + security/nss/lib/fortcrypt/swfort/pkcs11/config.mk, + extensions/inspector/Makefile.in: Allow building without zip when + building flat chrome. + * configure: Ran autoconf accordingly to changes in configure.in. + * debian/control: Removed build dependency on zip. + * debian/rules: Build flat chrome. + * debian/firefox.install: Changed wildcards accordingly. + * config/rules.mk: + + Don't build chromelist.txt files. + + Fixed "jar" build so that inspector files don't get duplicated in the + extension directory. + + -- Eric Dorland <eric@debian.org> Sun, 26 Feb 2006 11:45:15 -0500 + +firefox (1.5.dfsg+1.5.0.1-2) unstable; urgency=low + + [ Mike Hommey ] + * debian/firefox-runner: export MOZ_DISABLE_PANGO. (Closes: #351959) + * debian/README.Debian: changed reference to the rc file in /etc. + (Closes: #351956) + + [ Eric Dorland ] + * debian/firefox.preinst: Fix {}'s bashism. Thanks Jeff King. (Closes: + #351811) + * modules/libpref/src/init/all.js: Make print.postscript.print_command + space-safe. Thanks Ian Jackson. (Closes: #351809) + * debian/firefox-runner: Don't completely override + $MOZ_PLUGIN_PATH. Thanks Ian Jackson. (Closes: #351806) + + -- Eric Dorland <eric@debian.org> Thu, 9 Feb 2006 01:23:35 -0500 + +firefox (1.5.dfsg+1.5.0.1-1ubuntu12) dapper; urgency=low + + * Sponsored upload for Theppitak Karoonboonyanan + * Updated Thai word breaking patch: + - load `libthai.so.0' instead of `libthai.so'. + - print debug message only when DEBUG is defined. + - debian/control: Suggests libthai0 + + -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 13 Apr 2006 13:25:14 +0200 + +firefox (1.5.dfsg+1.5.0.1-1ubuntu11) dapper; urgency=low + + * Fix silly lack of [ ] quoting in AC_DEFUN use. + Malone 36659, Mozilla bugzilla 298457. + * Make Preferences window not chop off various elements: + - specify a width of 50em instead of 42em + - do not specify a height + - add another <separator/> to the bottom of privacy.xul's prefpane. + I have no idea why this is necessary :-(. + Malone 36985. + * Fix broken UTF-8 in .desktop file (again). Malone 37779. + * Document how to use xpcshell in README.Debian. Malone 35333. + * Clarify updateReadOnlyMessage to refer to `system package manager' + which will help the misunderstanding in Malone 31284. + + -- Ian Jackson <iwj@ubuntu.com> Wed, 12 Apr 2006 17:18:52 +0100 + +firefox (1.5.dfsg+1.5.0.1-1ubuntu10) dapper; urgency=low + + * Generate `firefox-dbg' package with debugging symbols. + This involves changing debian/compat to 5, which should be safe. + * Fix Norwegian translation in firefox.desktop. (Malone 30603.) + * Fix trivial syntax problems in firefox.desktop. (Malone 33567.) + * Remove x-directory/webdav x-directory/webdav-prefer-directory + from MimeType list in desktop file. (Malone 35928.) + * Use `about.png.upstream' instead of `about.png.orig' is the saved + original version for the branding; *.orig tends to get clobbered. + + -- Ian Jackson <iwj@ubuntu.com> Fri, 24 Mar 2006 18:49:46 +0000 + +firefox (1.5.dfsg+1.5.0.1-1ubuntu9) dapper; urgency=low + + * added thai linebreaking support (thanks to Theppitak Karoonboonyanan) + + -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 14 Mar 2006 15:16:52 +0000 + +firefox (1.5.dfsg+1.5.0.1-1ubuntu8) dapper; urgency=low + + * debian/rules: + - renamed the idl directory to match the .pc name, + replace mozilla-firefox by firefox for firefox-config too + + -- Sebastien Bacher <seb128@canonical.com> Mon, 13 Mar 2006 15:12:43 +0100 + +firefox (1.5.dfsg+1.5.0.1-1ubuntu7) dapper; urgency=low + + * Pointing the .pc files to /usr/include/firefox is not enough, + better install the headers there too. + + -- Matthias Klose <doko@ubuntu.com> Sat, 11 Mar 2006 17:41:24 +0000 + +firefox (1.5.dfsg+1.5.0.1-1ubuntu6) dapper; urgency=low + + * Replace Ubuntu Bugzilla bookmark with Launchpad's `Request + support with Ubuntu' ticket creation page. (Malone 28896.) + * Reinstate `Translate This Application' in Help menu, despite the fact + that Launchpad doesn't do this yet - you just get a page saying there + are no translations for Firefox. mdz assures us that this will be + done some time during dapper's service life. + * Make -P, -CreateProfile and -ProfileManager imply sensible + values for -a, and document -a in firefox(1). (Malone 31746.) + * Fix md5sum mismatch which causes spurious conffile prompt on + bookmarks.html. + * Set browser.startup.homepage_override.mstone to ignore, + to avoid the silly thing where the first time after the upgrade, + firefox looks like it has lost your home page because it is so keen to + tell you about the release notes. (Malone 33895.) + * Change `Latest Headlines' to `Latest BBC Headlines' to properly + disclose the source up front, and use a corresponding RSS URL. + * Revert the `you have chosen to open' dialogue, as discussed on + ubuntu-devel. + * Fix firefox-*.pc files to contain correct references to libs and + includes, just like the mozilla-*.pc files. (Malone 34200.) + + -- Ian Jackson <iwj@ubuntu.com> Thu, 9 Mar 2006 19:56:58 +0000 + +firefox (1.5.dfsg+1.5.0.1-1ubuntu5) dapper; urgency=low + + * Disable `Translate This Application' and don't try to have `Get Help + Online' translated because we don't know how to translate firefox: + https://launchpad.net/products/rosetta/+spec/rosetta-firefox-support + + -- Ian Jackson <iwj@ubuntu.com> Fri, 24 Feb 2006 14:49:23 +0000 + +firefox (1.5.dfsg+1.5.0.1-1ubuntu4) dapper; urgency=low + + * Disable (by default) the `you have chosen to open' dialogue box; + instead, we just take the default (which is to open with the + application from the Gnome MIME database). This behaviour is + controlled by browser.helperApps.defaultNoAsk.openFile. + + Bookmark, search and translation reference regression fixes: + * Restore `Translate This Application' and `Get Help Online' + * Add Ubuntu and Free Software links back to bookmarks + + Bookmark, search and translation references improvements: + * Add Wikipedia to search box. + * Remove `Quick searches' from bookmarks (these just replicate + entries from the search box, and are broken anyway). + + * Get rid of README.Ubuntu - the contents are now no longer relevant. + + -- Ian Jackson <iwj@ubuntu.com> Thu, 23 Feb 2006 14:44:42 +0000 + +firefox (1.5.dfsg+1.5.0.1-1ubuntu3) dapper; urgency=low + + * Move /usr/lib/libxpcom*.so etc. back to /usr/lib/firefox; avoids + clashes with other packages (eg mozilla). + * Add rpath setting for /usr/lib/firefox to all .pc files in + firefox-dev. This is suboptimal, but at least it allows programs + which use firefox-dev at compile-time to find firefox's .so's. + * Take some redundant and perhaps privacy-leaking information out + of the default User-Agent (Malone 30677). + + -- Ian Jackson <iwj@ubuntu.com> Fri, 10 Feb 2006 17:42:12 +0000 + +firefox (1.5.dfsg+1.5.0.1-1ubuntu2) dapper; urgency=low + + * Fix stupid FTBFS on default.xpm introduced in last upload. + * Retrospectively insert CVE numbers into 1ubuntu1 changelog entry. + + -- Ian Jackson <iwj@ubuntu.com> Thu, 9 Feb 2006 12:45:15 +0000 + +firefox (1.5.dfsg+1.5.0.1-1ubuntu1) dapper; urgency=low + + Changes since 1.5.dfsg-4ubuntu6: + * New upstream version (1.5.0.1) - security and stability fixes, + allegedly. (About 7000 lines of diff, so not reviewed for Ubuntu.) + Security fixes included: + - CVE-2006-0292, CVE-2006-0293, MFSA 2006-01: JavaScript garbage-collection + hazards + - CVE-2006-0294, MFSA 2006-02: Changing position:relative to static + corrupts memory + - CVE-2005-4134, MFSA 2006-03: Long document title causes startup denial of + Service + - CVE-2006-0295, MFSA 2006-04: Memory corruption via QueryInterface on + Location, Navigator objects + - CVE-2006-0296, MFSA 2006-05: Localstore.rdf XML injection through + XULDocument.persist() + - CVE-2006-0297, MFSA 2006-06: Integer overflows in E4X, SVG and Canvas + - CVE-2006-0298, MFSA 2006-07: Read beyond buffer while parsing XML + - CVE-2006-0299, MFSA 2006-08: "AnyName" entrainment and access control + hazard + * Fix Norwegian translation in .desktop file. (Malone #30603.) + * mkdir /usr/include/mozilla in firefox-dev.preinst to avoid + maintainer script sometimes preventing installation. + * Move the shlibs needed for gtkmozembed to /usr/lib (avoids + need for rpath and nonsense in firefox-gtkmozembed.pc). + * Work around new GNU make braindamage by adding seddery to + security/coreconf/rules.mk. + + Expected-permanent differences between Ubuntu and Debian: + * Build nspr and nss for use by all other programs in the distribution + (Packages: libnspr-dev, libnss-dev, libnspr4, libnss3. Fairly main + changes to parts of the build system.) This is so that mozilla + can be in Ubuntu universe. + * Disable xprint. (xprint is not used in Ubuntu.) + * Slightly different arrangements do with with transitional arrangements + related to package renaming from mozilla-firefox-*. + * Removed transitional packages mozilla-firefox-dom-inspector and + mozilla-firefox-gnome-support (not needed in Ubuntu). + * Build firefox-dev; applications which embed a browser in Ubuntu + generally embed Firefox rather than mozilla. This also means that we + build firefox with dynamic linking so that embedders and load ff. + * Debian package search replaced by Ubuntu package search (and defaults + to searching only in dapper, not all releases). + * Changes to various icons (and their installation paths). + * Strip CUPS/ from the front of displayed printer names, since + all printing in Ubuntu is done via CUPS. + + Other differences remaining between Ubuntu and Debian: + * debian/rules clean removes various junk left over by the mozilla build + system. (Debian #350616.) + * Exclude libssl3.so from dpkg_shlibdeps as this triggers a bug in + fakeroot on amd64 in Ubuntu. + * Set FIREFOX_DSP=none by default. Will sometimes break sound from eg + Flash. See https://launchpad.net/malone/bugs/29760 for rationale. + (Debian maintainers notified but no bug filed.) + * Append our plugin path to any previous value of MOZ_PLUGIN_PATH. + (Malone 29412. Debian #351806) + * firefox.desktop file has more translations and consistently calls the + application `Firefox Web Browser' (for better UI in the menus - this + change is also in firefox.menu). Debian #351807. + * Default printing command doesn't break if printer name contains + spaces (actually a preference, in all.js). (Debian #351809, + Mozilla Bugzilla #326245). + * security/coreconf/rules.mk adjusted with awful seddery to cope with + GNU make change to POSIXly interpretation of backslash line-joining. + See http://lists.debian.org/debian-devel/2005/12/msg00988.html. + Mozilla Bugzilla #325148. + * security/coreconf/ruleset.mk has a set -e added. + * Use GNOME mime database instead of mailcap. Patch imported from Red + Hat; see debian/gnome-mime-handling.diff. + * Change various preferences: + - Ubuntu-specific default homepage + - Ubuntu-specific release notes + - default homepage can be locale-specific + - middlebutton paste disabled + - do not load a special home page on first start after an upgrade + - disable File / Import (wizard is nonfunctional). + Malone #28563, Debian #350599, Mozilla Bugzilla 117844. + - save files to Desktop by default + - README.Ubuntu file (still rather full of junk) + - Prevent websites disabling the right-button context menu. + - Default font for display is sans, but: + - Default CSS for printing uses a serif font. + + -- Ian Jackson <iwj@ubuntu.com> Tue, 7 Feb 2006 17:14:17 +0000 + +firefox (1.5.dfsg+1.5.0.1-1) unstable; urgency=low + + * The "those Ubuntu guys are great after all" release. + * New upstream release. (Closes: #351442) + + [ Mike Hommey ] + * debian/presubj: Added indications to try to reproduce without extensions + before actually filing a bug, and a hint to the safe mode. + * debian/firefox.install: added the reporter chrome files. (Closes: #344888) + * widget/src/gtk2/nsWindow.cpp: Revert additional stale patch for + extended mouse buttons support. + * debian/firefox.postinst, debian/firefox.prerm: unbashified. + (Closes: #349946) + * debian/control, debian/firefox-gnome-support.postinst, + debian/firefox-gnome-support.prerm: Let the firefox-gnome-support + package provide gnome-www-browser and handle a gnome-www-browser + alternative. Thanks Loïc Minier. (Closes: #350788) + * debian/firefox-runner: Enable Pango support by default. The + MOZ_ENABLE_PANGO environment variable is now useless. (Closes: #338716) + * debian/README.Debian: Change the paragraph about Pango to hint about + the MOZ_DISABLE_PANGO variable. + + [ Eric Dorland ] + * content/events/src/nsEventStateManager.cpp, + modules/libpref/src/init/all.js, widget/public/nsGUIEvent.h: Apply + patch from Ian Jackson to revert a stale patch for multiple mouse + button support that was fixed in a different way in 1.5 + (Closes: #348375) + * debian/firefox.preinst: Check md5sum's of old conffiles before cp'ing + them on upgrade. This won't stop all unnecessary conffile prompting in + all situations (especially from really old versions), but should + definitely should work for upgrading from testing or stable. (Closes: + #345112) + * debian/firefox.install: + - Remove run-mozilla.sh. (Closes: #348902) + - Reorganize things a bit. + - Move profile into /etc/firefox here, instead of in the rules file. + * debian/firefox.install, debian/firefox.preinst, debian/firefox.links, + debian/firefox.dirs, debian/rules: Move chrome, defaults, greprefs + into /usr/share/firefox for more FHS goodnesss. + * debian/firefox.1: Document -new-tab and -new-window options, and + remove deprecated -remote option. (Closes: #348699) + * debian/firefox-runner: Apply patch to properly URL escape local + files. Thanks Morita Sho. (Closes: #348451) + * browser/app/profile/firefox.js: + - Reallow 40-bit ciphers, since now firefox warns people who + use them. (Closes: #349624) + - Enable bidi UI elements for our bi-directional friends. + (Closes: #348069) + * debian/rules: Remove glob pattern from dh_install invocation. Thanks + Ian Jackson. (Closes: #350571) + * browser/base/content/aboutDialog.xul: Fix spurious scrollbar in the + about dialog box. Thanks Ian Jackson. (Closes: #350608) + * js/src/fdlibm/fdlibm.h: Patch to fix little endianess of + mipsel. Thanks Ian Jackson and Thiemo Seufer. (Closes: #350621) + * browser/base/content/search.xml: Patch from Ian Jackson to remove + misleading Clear option from search box context menu. (Closes: #350611) + * debian/watch: Fix regex to actually find the upstream tarballs. + * modules/libpref/src/init/all.js: Cope better with printers with spaces + in the name. Thanks Ian Jackson. + * toolkit/components/passwordmgr/base/nsPasswordManager.cpp: Take patch + from bz#235336 as suggested by Ian Jackson to allow password manager + to work with sites that only have a password field, no username. + + -- Eric Dorland <eric@debian.org> Mon, 6 Feb 2006 23:10:29 -0500 + +firefox (1.5.dfsg-4) unstable; urgency=low + + [ Eric Dorland ] + * debian/control, debian/rules: + - Remove Kerberos options, it is now loaded dynamically. + - Use /usr/share/firefox now for finding default.xpm. + * debian/firefox.install, debian/firefox.links, debian/firefox.preinst: + Start moving some clearly non-arch specific things + (/usr/lib/firefox/searchplugins, /usr/lib/firefox/icons, + /usr/lib/firefox/res) out of /usr/lib/firefox and into + /usr/share/firefox to make things more FHS friendly. Can't believe no + one ever called me on this before. + * toolkit/components/remote/nsGTKRemoteService.cpp, + widget/src/xremoteclient/XRemoteClient.cpp: Apply patch from bz#312154 + to fix remote interface on PPC (and probably other arches). (Closes: + #343913) + * xpcom/reflect/xptcall/src/md/unix/xptcstubs_linux_m68k.cpp: Patch from + Zack Weinberg to fix FTBFS on m68k. (Closes: #343687) + * xpcom/reflect/xptcall/src/md/unix/xptcinvoke_arm.cpp: Patch from Antti + P Miettinen to fix small optimization problem with newer gcc's + (Closes: #344846) + + [ Mike Hommey ] + * debian/firefox-runner: Cleaned up now useless variables. + + -- Eric Dorland <eric@debian.org> Tue, 10 Jan 2006 10:11:34 -0500 + +firefox (1.5.dfsg-3) unstable; urgency=low + + * debian/control: + - Need explicit build dependency on gtk >= 2.8. + - Upgrade Standards-Version to 3.6.2.1. No changes. + - Add compatibility packages for mozilla-firefox-dom-inspector + and mozilla-firefox-gnome-support and make all the upgrade packages + Architecture: all. (Closes: #343879, #344379) + * debian/watch: Add watch file. + * debian/about.png.uu: Add uuencoded version of previous about box + graphic. + * debian/rules: uudecode and install the about.png into the right + location. + * debian/firefox-runner: Add MOZ_PLUGIN_PATH to include plugins at the + old location for now. (Closes: #344085, #341682) + * widget/src/gtk2/nsWindow.cpp: Patch from bz#305970 to fix broken + contextual menu on Save File As. (Closes: #344430) + + * config/mkdepend/imakemdep.h, security/nss/lib/pki1/pki1.h: Remove some + patches that are now useless (suggested by Mike Hommey). + * mailnews/extensions/palmsync/palm.html, + browser/themes/pinstripe/browser/browser.css, + gfx/src/mac/nsNativeThemeMac.h, + directory/c-sdk/ldap/docs/draft-ietf-ldapext-ldap-c-api-05.txt, + layout/html/tests/table/bugs/bug123862.html, + layout/html/tests/table/bugs/bug119786.html, + layout/html/tests/table/bugs/bug101759.html, + layout/html/tests/table/bugs/bug14489.html, + layout/html/tests/table/bugs/bug222846.html, + layout/html/tests/block/bugs/155333-1.html, + layout/html/tests/block/bugs/185411-2.html, + layout/html/tests/block/bugs/13599.html, + layout/html/tests/block/bugs/53960.html, + layout/html/tests/block/bugs/155333-2.html, + layout/html/tests/block/bugs/38157-a.html, + layout/html/tests/block/bugs/38157-b.html, + layout/html/tests/block/bugs/46918.html, + layout/html/tests/block/printing/145305-11.html, + layout/html/tests/block/printing/145305-21.html, + layout/html/tests/block/printing/145305-13.html, + layout/html/tests/block/printing/145305-17.html, + layout/html/tests/block/printing/145305-19.html, + layout/html/tests/block/printing/145305-4.html, + layout/html/tests/block/printing/127145-1.html, + layout/html/tests/block/printing/145305-3.html, + layout/html/tests/block/printing/145305-7.html, + layout/html/tests/block/printing/145305-9.html, + layout/html/tests/frameset/core/r3.html, + layout/html/tests/frameset/core/r4.html, + layout/html/tests/frameset/core/blank2.html, + xpinstall/packager/stage_mfcembed.pl, xpinstall/packager/stage_gre.pl, + embedding/qa/testembed/Tests.cpp, + embedding/qa/testembed/nsihttpchanneltests.cpp, + embedding/qa/testembed/BrowserImpl.cpp, + embedding/qa/testembed/Tests.h, embedding/qa/testembed/QaUtils.cpp, + embedding/qa/testembed/resource.h, + embedding/qa/testembed/DomWindow.cpp, + embedding/qa/testembed/QaUtils.h, build/unix/abs2rel.pl, + xpfe/bootstrap/icons/windows/readme.txt, + security/nss/cmd/ssltap/ssltap-manual.html: Fix mess my subversion + repository made of line endings. This should reduce the size of the + diff.gz dramatically. + + -- Eric Dorland <eric@debian.org> Sat, 24 Dec 2005 03:23:02 -0500 + +firefox (1.5.dfsg-2) unstable; urgency=low + + * browser/locales/en-US/chrome/branding/brand.dtd, + browser/locales/en-US/chrome/branding/brand.properties: Change brand + name from Deer Park to Firefox. About box graphic still needs to be + fixed. *grumble* *grumble* (Closes: #343704) + + -- Eric Dorland <eric@debian.org> Sat, 17 Dec 2005 13:45:14 -0500 + +firefox (1.5.dfsg-1) unstable; urgency=low + + * New upstream release. No actual code changes from RC3. Took the + opportunity to completely empty the /other-licenses directory of the + upstream tarball. + * configure, configure.in: Change MOZ_APP_DISPLAYNAME to Firefox, so we + can be called Firefox without using + --enable-official-branding. *grumble* + * config/autoconf.mk.in, gfx/src/gtk/mozilla-decoder.cpp, configure.in: + Apply patch from bz#305185 to fix problems building against gtk+ 2.8. + * debian/control: + - Build-Depend on libfreetype6-dev since we do link + against it directly. + - Add mozilla-firefox package for easy transition. + - Conflict against older mozilla-firefox packages. + * debian/firefox-runner: + - Fix typo. (Closes: #341113) + - Check /usr/lib/mozilla-firefox/plugins for plugins too for the + time being. (Closes: #341682) + * debian/firefox-dom-inspector.preinst: Remove, not needed since the + name change. + * debian/firefox.preinst: + - Remove old upgrade code. + - Move old mozilla-firefox configs into place on install. + * debian/mozilla-firefox.preinst: Move upgrade code in here. Remove + mozilla-firefox alternative. + * debian/mozilla-firefox.postrm: Remove /etc/mozilla-firefox on purge. + + * Some patches missed when merging from Mike Hommey: + * browser/locales/en-US/searchplugins/answers.src: Change updateDays to + 0. + * config/mkdepend/imakemdep.h: Define for amd64. + * configure, configure.in: Visibility patch for recent gcc's. (Closes: + #341766) + * modules/libpref/src/nsPrefService.cpp: Patch to load preferences from + defaults/syspref. + * content/events/src/nsEventStateManager.cpp: Extended mouse events + patch. + * gfx/idl/nsIFreeType2.idl, gfx/src/freetype/nsFreeType.cpp, + gfx/src/freetype/nsFreeType.h, gfx/src/ps/nsFontMetricsPS.h, + gfx/src/x11shared/nsFontFreeType.cpp, + gfx/src/x11shared/nsFontFreeType.h, + layout/svg/renderer/src/libart/nsSVGLibartGlyphMetricsFT.cpp: Patch to + use new freetype API. + + -- Eric Dorland <eric@debian.org> Fri, 16 Dec 2005 11:37:23 -0500 + +firefox (1.4.99+1.5rc3.dfsg-2) unstable; urgency=low + + * The "Grand Renaming" release. Thanks to Mike Hommey for sherperding + the 1.5 series through experimental. Now it's my turn to muck it up. A + transition packages will be in the next release. + * debian/mozilla-firefox*: Rename to firefox*. + * debian/firefox.install, debian/firefox-dom-inspector.install, + debian/firefox-gnome-support.install, debian/firefox-runner, + firefox-xremote-client, firefox.1, firefox.desktop, firefox.dirs, + debian/firefox.js, debian/firefox.links, debian/firefox.manpages, + debian/firefox.menu, debian/firefox.mime, debian/firefox.postinst, + debian/firefox.prerm, debian/firefox.png.uu, debian/README.Debian, + debian/control, debian/rules: Search/Replace mozilla-firefox -> + firefox where appropriate. + * debian/firefox.links: Link old icon name to new. + * debian/README.Debian: Fix path to .mozilla/firefox/rc. (Closes: + #335433) + * config/autoconf.mk.in: Set mozappdir to /usr/lib/firefox. + + -- Eric Dorland <eric@debian.org> Sun, 27 Nov 2005 20:03:02 -0500 + +mozilla-firefox (1.4.99+1.5rc3.dfsg-1) experimental; urgency=low + + * New upstream 1.5 preview release. Release Candidate 3. + * debian/mozilla-firefox-runner: Removed the ping stuff, it's now done by + firefox itself. + + -- Mike Hommey <glandium@debian.org> Fri, 18 Nov 2005 07:24:05 +0100 + +mozilla-firefox (1.4.99+1.5rc2.dfsg-1) experimental; urgency=low + + * New upstream 1.5 preview release. Release Candidate 2. + * xpcom/typelib/xpidl/xpidl.c: Fix crash when no file is given on the + command line (Closes: #323639). Also fix the error message about extra + arguments given showing before the crash. + * configure.in, configure: Work around dash's bug #337294 so that we can + build fine when sh is dash (Closes: #211010, #256384). + * debian/mozilla-firefox-runner: + - Removed the code to detect the JVM and set LD_ASSUME_KERNEL=2.2.5 for + b0rked 1.3 JVMs: it's been a long time they've not been ABI compatible. + - Removed setting of MOZILLA_FIVE_HOME. We already have a default one + built-in. + - Removed /usr/lib/mozilla/plugins from EXTENT_LD_LIB_PATH, since we never + get the plugins from there. + - Removed cleanup of the profile. It is correctly done by firefox, now. + + -- Mike Hommey <glandium@debian.org> Fri, 11 Nov 2005 08:07:05 +0100 + +mozilla-firefox (1.4.99+1.5rc1.dfsg-1) experimental; urgency=low + + * New upstream 1.5 preview release. Release Candidate 1. + * debian/mozilla-firefox.install: Don't install + /usr/lib/mozilla-firefox/extensions/reporter@mozilla.org, it got moved in + the chrome. + + -- Mike Hommey <glandium@debian.org> Tue, 1 Nov 2005 22:01:15 +0100 + +mozilla-firefox (1.4.99+1.5beta2.dfsg-1) experimental; urgency=low + + * build/unix/run-mozilla.sh, netwerk/base/src/nsStandardURL.cpp: + Reverted debian changes: they got applied upstream. + * configure: Applied configure.in changes by hand. + * debian/rules: Disabled both the installer and the updater, we don't need + them. + + -- Mike Hommey <glandium@debian.org> Fri, 7 Oct 2005 15:06:05 +0200 + +mozilla-firefox (1.4.99+1.5beta1.dfsg-5) experimental; urgency=low + + * debian/control: Bumped Standards-Version to 3.6.2. + * nsprpub/configure.in: Reverted changed. + * configure.in: Use -fvisibility=hidden in all cases. There is another bug + in gcc that makes it generate position dependent code when using the + system wrappers. + * configure, nsprpub/configure: Applied configure.in changes with + autoconf2.13. + * debian/rules: Put back the /usr/share/pixmaps/mozilla-firefox.xpm file. + + -- Mike Hommey <glandium@debian.org> Mon, 3 Oct 2005 18:46:50 +0200 + +mozilla-firefox (1.4.99+1.5beta1.dfsg-4) experimental; urgency=low + + * xpcom/typelib/xpt/src/Makefile.in: Reverted changes. + * configure.in, nsprpub/configure.in: Added a detection of the gcc bug about + visibility for builtins, and use -fvisibility=hidden instead of the system + wrappers in case the bug is found. + * configure, nsprpub/configure: Applied configure.in changes with + autoconf2.13. (Really closes: #329642) + + -- Mike Hommey <glandium@debian.org> Tue, 27 Sep 2005 20:16:34 +0200 + +mozilla-firefox (1.4.99+1.5beta1.dfsg-3) experimental; urgency=low + + * Sync with unstable branch. + * xpcom/typelib/xpt/src/Makefile.in: disable visibility stuff for ppc, as a + workaround for FTBFS. (Closes: #329642) + + -- Mike Hommey <glandium@debian.org> Mon, 26 Sep 2005 18:35:11 +0200 + +mozilla-firefox (1.0.7-1) unstable; urgency=high + + * New upstream release. Contains fixes for various security issues. + * debian/mozilla-firefox-runner: Remove /usr/lib from + LD_LIBRARY_PATH. (Closes: #321789) + + -- Eric Dorland <eric@debian.org> Thu, 22 Sep 2005 01:23:10 -0400 + +mozilla-firefox (1.4.99+1.5beta1.dfsg-2) experimental; urgency=low + + * debian/rules: enabled support for canvas. + + -- Mike Hommey <glandium@debian.org> Tue, 20 Sep 2005 07:56:01 +0200 + +mozilla-firefox (1.4.99+1.5beta1.dfsg-1) experimental; urgency=low + + * Cleaned-up source tarball from trademarked content and CVS directories. + * debian/mozilla-firefox-small.xpm, debian/mozilla-firefox.xpm: Removed. + * debian/mozilla-firefox.dirs, debian/rules: + + Create /usr/lib/mozilla-firefox/chrome/icons/default and move + default.xpm in it. (Closes: #327828) + + Stop using our own xpm icons, upstream provide them, now. + * debian/rules: changed the build system a bit. + * xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_parisc_linux.s, + xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_parisc_linux.s, + xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_mips.s: Somewhat these + files disappeared. Put them back. (Closes: #328074) + + -- Mike Hommey <glandium@debian.org> Tue, 13 Sep 2005 18:25:48 +0200 + +mozilla-firefox (1.4.99+1.5beta1-2) experimental; urgency=critical + + * Sync with unstable branch. + * netwerk/base/src/nsStandardURL.cpp: Apply the patch for the 1.8 branch + from bz#307259 to fix CAN-2005-2871. (Closes: #327452) + * debian/mozilla-firefox-gnome-support.install, debian/rules: Move out + imgicon module in mozilla-firefox-gnome-support. (Closes: #327451) + + -- Mike Hommey <glandium@debian.org> Sun, 11 Sep 2005 10:45:34 +0200 + +mozilla-firefox (1.0.6-5) unstable; urgency=critical + + * xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm.cpp: Fix for previous + arm fix. Thanks Steve. (Closes: #325535) + * netwerk/base/src/nsStandardURL.cpp: Patch from bz#307259 to fix + CAN-2005-2871, a buffer overflow vulnerability in IDN + processing. (Closes: #327452) + + -- Eric Dorland <eric@debian.org> Sat, 10 Sep 2005 23:03:26 -0400 + +mozilla-firefox (1.4.99+1.5beta1-1) experimental; urgency=low + + * New upstream beta release. + + Find toolbar doesn't show up when in text fields. Closes: #280852. + + Better use of GTK2 themes. The most common case was highlighted menu + item text appearing in white on a white background. Closes: #223696, + #257430, #258181, #266334, #278559, #289326, #297320, #310098. + + Download manager correctly closes. Closes: #259015, #269975. + + Doesn't crash with the http://ln.hixie.ch/resources/style/orange + stylesheet. Closes: #277987. + + Locale extensions can properly be disabled. Closes: #279749 (to check). + + Doesn't crash on + http://einsteinmg.dyndns.org/cgi-bin/remangle.cgi?=0x27b9b660 anymore. + Closes: #294372. + + Downloads don't freeze when a modal window opens. Closes: #211332. + + Use GTK stock images. Closes: #281660. + * Sync with unstable branch changes. + * browser/app/profile/firefox.js, debian/firefox.js: + + Removed outdated extensions.update.autoUpdateEnabled and + extensions.update.autoUpdate; + + Removed general.useragent.locale. + + Allow extensions updates. It works correctly with system-wide installed + ones, now. + * netwerk/protocol/http/src/nsHttpConnectionMgr.cpp, + nsprpub/pr/include/md/_linux.cfg, widget/src/gtk2/mozdrawingarea.c, + widget/src/gtk2/nsDragService.cpp: Reversed changes, since they got + applied upstream. + * xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm.cpp: correctly set + __attribute__. Closes: #325535. + * debian/rules: + + set --enable-extensions=default instead of a full list. + We will get the default set of extensions provided by upstream, and + won't need to check if they changed. + + set --enable-pango. + + set --enable-system-cairo. + * debian/control: added build dependency on libgnomeui-dev and libcairo2-dev. + * debian/mozilla-firefox.install, debian/rules: don't install files in + /usr/lib/mozilla-firefox/chrome/icons/ anymore. + * debian/mozilla-firefox-runner: Force MOZ_DISABLE_PANGO to 1 if + MOZ_ENABLE_PANGO is not set. + * debian/README.Debian: + + Removed the note about IDN, it is now enabled by default, with correct + whitelist set. + + Added a note about MOZ_ENABLE_PANGO. + + Changed notes about application update, extensions, and packaged + extensions. + * modules/libpref/src/init/all.js: + + Set general.config.obscure_value to 0, we don't care about the config + file not to be "obscured". + + Set general.config.filename to firefox.cfg. + * debian/firefox.cfg: Create configuration to lock some properties. + * debian/mozilla-firefox.install: Install this firefox.cfg in + /usr/lib/mozilla-firefox + + -- Mike Hommey <glandium@debian.org> Fri, 9 Sep 2005 17:40:40 +0200 + +mozilla-firefox (1.0.6-4) unstable; urgency=low + + * xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_alpha.cpp, + xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm.cpp, + xpcom/reflect/xptcall/src/md/unix/xptcstubs_linux_alpha.cpp: Patch + from Steve Langasek to fix unused vs. used gcc attribute on alpha and + arm. (Closes: #325535) + * browser/app/profile/firefox.js: Revert patch to remove the "I'm + feeling lucky" search. Some like it, some hate it, so upstream + behaviour wins. If you still feel strongly about it, make your case + upstream. + * gfx/src/gtk/nsFontMetricsXft.cpp: Apply patch from bz#252033 to work + around a bug in XRender that might be causing #319349. + + -- Eric Dorland <eric@debian.org> Tue, 6 Sep 2005 02:10:07 -0400 + +mozilla-firefox (1.0.99+deerpark-alpha2-2) experimental; urgency=low + + * Sync with unstable branch changes, except the controversial "I'm feeling + lucky" change. I prefer waiting for the controversy to get to a + conclusion. + * debian/rules, debian/control: Remove build dependency on libmng-dev and + the --with-system-mng option to configure, the MNG support has been + removed upstream. + * debian/rules: Explicitely set the svg-renderer as cairo. It will use an + old cairo version bundled with firefox, but there's no other solution for + the moment. We have to wait for upstream 0.9.x and greater support + (hoped for 1.5). + + -- Mike Hommey <glandium@debian.org> Sun, 4 Sep 2005 09:01:54 +0200 + +mozilla-firefox (1.0.6-3) unstable; urgency=low + + * debian/rules, nsprpub/pr/include/md/_linux.cfg, + security/coreconf/Linux.mk: Apply patch from Andreas Jochens to allow + ppc64 builds. (Closes: #322617) + * debian/mozilla-firefox.prerm: Move -depth option to find to suppress + warnings. Thanks Mike Hommey. + * debian/presubj: Have bugzilla bug URL point to a page where you can + enter a bug. + * browser/app/profile/firefox.js: removed the "I'm feeling lucky" from + the keyword.URL, so now if you enter search terms in the address bar + you will be presented with search results and not taken to the first + result. Thanks Torok Edwin. (Closes: #321823) + + -- Eric Dorland <eric@debian.org> Mon, 22 Aug 2005 01:20:28 -0400 + +mozilla-firefox (1.0.6-2) unstable; urgency=medium + + * modules/libpr0n/src/imgLoader.cpp, modules/libpr0n/src/imgLoader.h: + Apply ported patch from Serge Belyshev from bz#293307 to fix problem + with gcc-4.0 on amd64. (Closes: #319336) + * debian/rules: Remove silly --enable-freetype configure line. Thanks + Antony Gelberg. (Closes: #319886) + + -- Eric Dorland <eric@debian.org> Sat, 30 Jul 2005 02:11:03 -0400 + +mozilla-firefox (1.0.6-1) unstable; urgency=low + + * New upstream release. (Closes: #318672) + * debian/rules: Remove hack to use gcc 3.4 on amd64, since now we're all + on gcc 4.0. (Closes: #318684) + * debian/control: + - Remove gcc 3.4 build depends on amd64 + - Explicitly build depend on libxinerama-dev. + * gfx/src/gtk/nsScreenGtk.cpp: Patch from Loic Minier to fix + gdk_property_get warnings. + * widget/src/gtk2/mozdrawingarea.c: Patch from Loic Minier to fix + crashes under GTK 2.7. (Closes: #318903) + + -- Eric Dorland <eric@debian.org> Wed, 20 Jul 2005 02:57:44 -0400 + +mozilla-firefox (1.0.99+deerpark-alpha2-1) experimental; urgency=low + + * New upstream alpha release. Be aware that you WILL have troubles with + debian packages for firefox extensions. + * Reverted patches that got incorporated upstream. + * content/events/src/nsEventStateManager.cpp: Some changes to the previous + patch to fit changes in API. + * debian/update-mozilla-firefox-chrome, + debian/update-mozilla-firefox-chrome.8, + debian/mozilla-firefox-dom-inspector.post(inst|rm), + debian/mozilla-firefox-gnome-support.post(inst|rm), + debian/theme/*, debian/inspector/*: Removed. + * debian/mozilla-firefox.postinst: Removed call to + update-mozilla-firefox-chrome. + * debian/mozilla-firefox-dom-inspector.install: Only install files from + /usr/lib/mozilla-firefox/extensions/inspector@mozilla.org + * debian/mozilla-firefox.dirs: Don't create /var/lib/mozilla-firefox/*, + /usr/lib/mozilla-firefox/extensions nor /usr/lib/mozilla-firefox/plugins. + * debian/mozilla-firefox.install: + - Don't install regxpchrome, chrome/pipnss.jar and chrome/help.jar which + don't exist anymore. + - Install manifest files in addition to jar files in chrome. + - Install classic.jar in the normal chrome directory (awaiting EM + modifications so that it can actually go back in the extensions + directory). + - Don't install debian/theme/00classic and debian/theme/Uninstall, + which got removed. + - Get the theme in the correct directory (it's not in + defaults/profile/extensions anymore). + - Install the reporter extension. + - Selectively install subdirectories of /usr/lib/mozilla-firefox/defaults, + since some of them are useless. + - Install the unixprint plugin. + * debian/mozilla-firefox.manpages: Removed manual page for + update-mozilla-firefox-chrome. + * debian/mozilla-firefox.links: Removed all links in + /var/lib/mozilla-firefox/. + * debian/rules: + - Enable freetype in the build, we'll see if deerpark is any better than + 1.0.x. + - Commented out OPTFLAGS set for some architectures. We will see if gcc + 4.0 is doing any better. + - Enabled SVG support. (Closes: #215990) + - Enabled some more extensions to fit extensions provided by upstream. + - Added needed --enable-application=browser to the ./configure call. + - Don't install update-mozilla-firefox-chrome. + - Don't create installed-chrome.txt. + - Don't remove installed-extensions.txt, it doesn't exist anyway. + - Don't move classic theme's install.rdf, it's already at the correct + place. + - Remove unneeded removals of preferences files which are not there + anymore. + * debian/mozilla-firefox.preinst: Clean-up old generated files (those in + /var/lib/mozilla-firefox and + /usr/lib/mozilla-firefox/extensions/*/uninstall/Uninstall. (Note that for + the latter, some packages do provide them, but they were overwritten by + update-mozilla-firefox-chrome. They have actually no use, and it is safe + to remove them. Extensions packages will eventually remove them anyway) + * debian/mozilla-firefox.prerm: Put -depth option of find before -type d. + + -- Mike Hommey <glandium@debian.org> Sat, 16 Jul 2005 10:18:40 +0200 + +mozilla-firefox (1.0.5-1) unstable; urgency=high + + * New upstream release, fixes security issues. (Closes: #318061) + * debian/rules: Disable freetype in the build for the time being. This + *might* break printing in some cases. + * gfx/idl/nsIFreeType2.idl, gfx/src/freetype/nsFreeType.cpp, + gfx/src/freetype/nsFreeType.h, gfx/src/ps/nsFontMetricsPS.cpp, + gfx/src/ps/nsFontMetricsPS.h, gfx/src/x11shared/nsFontFreeType.cpp, + gfx/src/x11shared/nsFontFreeType.h, + layout/svg/renderer/src/libart/nsSVGLibartGlyphMetricsFT.cpp: Patch + from bz#234035 to try to get building with the new freetype. (Closes: + #314243) + + -- Eric Dorland <eric@debian.org> Sat, 16 Jul 2005 00:43:54 -0400 + +mozilla-firefox (1.0.4-3) unstable; urgency=low + + * debian/mozilla-firefox.desktop: Add Czech translation from Jan + Outrata. (Closes: #311376) + * xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ipf64.s, + xpcom/reflect/xptcall/src/md/unix/xptcstubs_ipf64.cpp, + xpcom/reflect/xptcall/public/xptcstubsdecl.inc: Revert patch from + David Mosberger for 7+ args on ia64 that was added 1.0.3-2. + * xpcom/reflect/xptcall/src/md/unix/xptcstubs_ipf32.cpp, + xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ipf32.s, + xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ipf64.s, + xpcom/reflect/xptcall/src/md/unix/xptcstubs_ipf64.cpp, + xpcom/reflect/xptcall/public/genstubs.pl: Better patch from bz#291378 + which has been accepted upstream for ia64 7+ args fix. + * xpcom/reflect/xptcall/public/xptcstubsdecl.inc: Call genstubs.pl to + regenerate this file. + * dom/src/base/nsGlobalWindow.cpp, + embedding/components/windowwatcher/src/nsWindowWatcher.cpp: Fix + injection spoofing, patch from bz#296850. Fixes CAN-2004-0718. + + -- Eric Dorland <eric@debian.org> Thu, 9 Jun 2005 23:54:41 -0400 + +mozilla-firefox (1.0.4-2) unstable; urgency=critical + + * debian/control: Build-depend on libxft-dev not libxft2-dev to appease + finicky sparc buildd. + + -- Eric Dorland <eric@debian.org> Mon, 16 May 2005 21:17:57 -0400 + +mozilla-firefox (1.0.4-1) unstable; urgency=critical + + * New upstream release. Fixes CAN-2005-1477 and CAN-2005-1476. (Closes: #308620) + * debian/update-mozilla-firefox-chrome.8: Patch from A Costa to fix the + spelling of maintenace. (Closes: #305968) + * debian/mozilla-firefox.desktop: Patch from Steinar H. Gunderson to add + a Norwegian translation. (Closes: #305983) + + -- Eric Dorland <eric@debian.org> Thu, 12 May 2005 22:59:47 -0400 + +mozilla-firefox (1.0.3-2) unstable; urgency=high + + * browser/app/profile/firefox.js: Disable SSLv2 and 40-bit ciphers by + default. + * debian/mozilla-firefox.NEWS: Explain the SSL change. + * extensions/transformiix/source/base/Double.cpp: Patch from David + Mosberger-Tang (fixed up by me) to fix unaligned access on ia64 (and + perhaps other platforms). (Closes: #303518) + * xpcom/reflect/xptcall/public/xptcstubsdecl.inc, + xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ipf64.s, + xpcom/reflect/xptcall/src/md/unix/xptcstubs_ipf64.cpp: Another patch + from David Mosberger-Tang to fix extension loading on ia64. (Closes: + #303515) + + -- Eric Dorland <eric@debian.org> Thu, 21 Apr 2005 01:25:02 -0400 + +mozilla-firefox (1.0.3-1) unstable; urgency=low + + * New upstream release, fixes various security issues, so urgency high. + * js/src/fdlibm/fdlibm.h: Fix from David Mosberger to define ia64 as + little-endian arch (also added for mipsel). (Closes: #303438) + + -- Eric Dorland <eric@debian.org> Sun, 17 Apr 2005 23:13:01 -0400 + +mozilla-firefox (1.0.2-3) unstable; urgency=high + + * gfx/src/freetype/nsFreeType.cpp, + netwerk/protocol/http/src/nsHttpConnectionMgr.cpp, + security/nss/lib/pki1/oiddata.h, security/nss/lib/pki1/pki1.h, + widget/src/gtk2/nsDragService.cpp: Fixes for gcc-4.0, + bz#289238. (Closes: #301485) + * js/src/jsstr.c: Fix for JS memory access security bug, patch from + bz#288688. (Closes: #302775) + + -- Eric Dorland <eric@debian.org> Wed, 6 Apr 2005 01:36:11 -0400 + +mozilla-firefox (1.0.2-2) unstable; urgency=high + + * Last upload should of been marked urgency=high because of the security + fixes. + * debian/mozilla-firefox.postinst: Fix ridiculous typos. (Closes: + #300685) + * debian/mozilla-firefox-runner: Use pgrep to detect esd and arts + instead. Thanks Craig Small for the advice. (Closes: #302086) + + -- Eric Dorland <eric@debian.org> Fri, 1 Apr 2005 01:18:18 -0500 + +mozilla-firefox (1.0.2-1) unstable; urgency=low + + * New upstream release. Fixes CAN-2005-0399, CAN-2005-0401, + CAN-2005-0402. (Closes: #301243) + * debian/control: Update suggest for xprint rename. (Closes: #300976) + * xpcom/reflect/xptcall/src/md/unix/{Makefile.in, + xptcinvoke_asm_parisc_linux.s, xptcstubs_asm_parisc_linux.s}: Apply + patch from Ivar (Contributed by Randolph Chung) to fix Firefox on + hppa. (Closes: #286038) + + -- Eric Dorland <eric@debian.org> Fri, 25 Mar 2005 02:30:10 -0500 + +mozilla-firefox (1.0.1-3) unstable; urgency=low + + * widget/src/gtk2/nsGtkKeyUtils.cpp: Patch from bz#108170 to fix broken + keymap for Germans. (Closes: #299781) + * toolkit/mozapps/extensions/src/nsExtensionManager.js.in: avoid + crashing when extension's install.rdf is broken. (Closes: #298796) + (MH) + * debian/mozilla-firefox.prerm: Remove + /usr/lib/mozilla-firefox/defaults/profile/extensions/Extensions.rdf on + uninstall. (Closes: #298636) + * debian/mozilla-firefox.postinst: Add little echo to tell people to + restart firefox after upgrades. + * debian/presubj: Add a note there about restarting firefox before + submitting bugs. + * debian/mozilla-firefox-runner: Properly quote $@ expansion. (Closes: + #300195) + * browser/locales/en-US/searchplugins/ + {yahoo.src,google.src,eBay.src,dictionary.src,creativecommons.src, + amazondotcom.src}: Set updateCheckDays to 0, which avoids duplicated + search entries in the menu. (Closes: #299006, #299813) + + -- Eric Dorland <eric@debian.org> Sun, 20 Mar 2005 17:08:12 -0500 + +mozilla-firefox (1.0.1-2) unstable; urgency=high + + * Changes by Mike Hommey: + * Urgency: high due to RC bug fix. + * debian/update-mozilla-firefox-chrome: Re-initialize Extensions.rdf + inside the script instead of relying on mozilla-firefox's default + behaviour, which just fails when defaults/profile/extensions/ \ + Extensions.rdf doesn't exist (and it seems some people like to remove + files in /etc). (Closes: #294175) + + * Changes by Eric Dorland: + * debian/mozilla-firefox.menu: Capitalize "browsers". Thanks Gerfried + Fuchs. + * debian/mozilla-firefox-runner: Fix from Marc Horowitz to fix sound + device detection. (Closes: #297088) + * toolkit/content/widgets/tabbrowser.xml: Apply patch from bz#283063, to + fix a memory leak when closing tabs. (Closes: #296749) + * xpfe/global/resources/content/bindings/browser.xml, + xpfe/global/resources/content/bindings/tabbrowser.xml, + toolkit/content/widgets/browser.xml, + toolkit/content/widgets/tabbrowser.xml: Apply patches from bz#131456 + to fix various tab related memory leaks. (Closes: #280586) + * netwerk/protocol/http/src/nsHttpHandler.cpp: Patch from bz#265536 to + differentiate between AMD64 and i386. (Closes: #282592) + + -- Eric Dorland <eric@debian.org> Sat, 5 Mar 2005 18:46:09 -0500 + +mozilla-firefox (1.0.1-1) unstable; urgency=high + + * New upstream release. (Closes: #296851) + - This release fixes the Secunia window injection bug, + CAN-2004-1156. (Closes: #293664) + + * Changes by Mike Hommey: + * debian/rules: Some clean-up. + * debian/control: Changed my maintainer address. + * debian/README.Debian: Add a note about automatic updates for + extensions. (Closes: #296761) + + * Changes by Eric Dorland: + * browser/app/profile/firefox.js: Remove disable IDN pref, it's the + default now anyway. + + -- Eric Dorland <eric@debian.org> Tue, 1 Mar 2005 02:03:48 -0500 + +mozilla-firefox (1.0+dfsg.1-6) unstable; urgency=high + + * The "And I thought IE had security bugs!" release. + * toolkit/content/widgets/tabbrowser.xml, + xpfe/global/resources/content/bindings/tabbrowser.xml: Fix + "Firetabbing" vulnerability from bugzilla#280056, fixes + CAN-2005-0231. (Closes: #294415) + * modules/plugin/base/src/nsPluginHostImpl.cpp: Fix "Fireflashing" + vulnerability from bugzilla#280664, fixes CAN-2005-0232. (Also Closes: + #294415) + * build/unix/run-mozilla.sh: Patch from Javier Fernández-Sanguino Peña + to fix insecure temp file usage in run-mozilla.sh. (Closes: #294127) + * netwerk/base/src/nsStandardURL.cpp, netwerk/base/src/nsStandardURL.h: + Patch from bugzilla#261934 to make the network.enableIDN preference + work and again. + * browser/app/profile/firefox.js: Disable IDN by default. This doesn't + close #293975, but drops its severity. + * debian/README.Debian: Add warning and describe how to enable IDN. + + -- Eric Dorland <eric@debian.org> Wed, 9 Feb 2005 22:56:17 -0500 + +mozilla-firefox (1.0+dfsg.1-5) unstable; urgency=low + + * debian/mozilla-firefox.desktop: Don't translate "Mozilla Firefox" into + French. + * browser/app/profile/firefox.js: Set mozilla.widget.raise-on-setfocus + to false to prevent unecessary window raising. (Closes: #292049) + * debian/rules: Don't compile statically on mips and mipsel, since it's + broken for now. + + -- Eric Dorland <eric@debian.org> Sun, 6 Feb 2005 15:02:36 -0500 + +mozilla-firefox (1.0+dfsg.1-4) unstable; urgency=low + + * debian/mozilla-firefox.desktop: Add French translations from Jerome + Warnier. I will accept more, but closing this bug. (Closes: #292506) + * debian/README.Debian: Update the Emacs keybindings instructions. + (Closes: #291691) + * debian/mozilla-firefox.1: + - Remove -splash from the manpage, it has never worked. (Closes: + #287088) + - Add units to -height and -width description. (Closes: #285142) + + -- Eric Dorland <eric@debian.org> Wed, 2 Feb 2005 01:42:53 -0500 + +mozilla-firefox (1.0+dfsg.1-3) experimental; urgency=low + + * debian/mozilla-firefox.desktop: Add %u to the exec line so that apps + know it can handle URLs. (Closes: #290132) + * debian/README.Debian: + - Improve button reversal instructions. Thanks Christian Mayrhuber + - Fix reference to ~/.firefox. + * debian/rules: Enable static building. This will build firefox as one + large binary (mostly) and should speed a few things up, especially + program load time. I'd like to hear about any speedup (or slow down) + you exprience. Porters, please build this for your arch to make sure + this doesn't break anything. + + -- Eric Dorland <eric@debian.org> Thu, 20 Jan 2005 01:40:34 -0500 + +mozilla-firefox (1.0+dfsg.1-2) unstable; urgency=medium + + * debian/mozilla-firefox-gnome-support.postrm, + debian/mozilla-firefox-dom-inspector.postrm: Don't die if + update-mozilla-firefox-chrome dies. (Closes: #287355) + + -- Eric Dorland <eric@debian.org> Sun, 9 Jan 2005 23:51:10 -0500 + +mozilla-firefox (1.0+dfsg.1-1) unstable; urgency=low + + * Not a new upstream release. + * other-licenses/branding/firefox, other-licenses/7zstub/firefox: Remove + these from the .orig.tar.gz, since they are not DFSG-free. We're not + using the files anyway, so out they go. (Not sure the 7zstub stuff is + non-free, but it's Windows only so no harm) + * debian/rules: + - Remove explicit low-optimization on alpha, since Falk + Hueffner claims it works. + - Move entire defaults/profile directory into /etc/mozilla-firefox, + rather than just the bookmarks.html. (Closes: #285538) + * debian/mozilla-firefox.links: Link entire defaults/profile now. + * debian/mozilla-firefox.preinst: Add upgrade code to remove old + defaults/profile to make way for new symlink. + * debian/mozilla-firefox.dirs: Just create etc/mozilla-firefox. + + -- Eric Dorland <eric@debian.org> Sun, 19 Dec 2004 01:31:44 -0500 + +mozilla-firefox (1.0-5) unstable; urgency=medium + + * Changes by Mike Hommey: + * toolkit/mozapps/extensions/src/nsExtensionManager.js.in: Make the + extensions upgrade work again. (Closes: #282143) + * debian/rules: Better DEB_BUILD_OPTIONS handling, better debugging + build (DEB_BUILD_OPTIONS="nostrip debug") + * toolkit/mozapps/extensions/src/nsExtensionManager.js.in, + toolkit/mozapps/extensions/content/extensions.js: Allow users to + disable globally installed extensions. + + * Changes by Eric Dorland: + * debian/rules: Remove explicit low-optimization on sparc. Apparently + there was an issue for a number of arches that required lower + optimization settings, but it is now resolved. So porters, please + check -O2 on arm, alpha, powerpc and ia64 and let me know if it's + safe. Thanks David S. Miller. (Closes: #284533) + + -- Eric Dorland <eric@debian.org> Tue, 7 Dec 2004 01:06:48 -0500 + +mozilla-firefox (1.0-4) unstable; urgency=medium + + * debian/control: Make mozilla-firefox-gnome-support and xprt-xprintorg + Suggests, no Recommends after a look at policy. (Closes: #282432) + * debian/README.Debian: + - Refer to .mozilla/firefox, not .firefox. + - Explain how to reenable emacs style keybindings. (Closes: #282321) + + -- Eric Dorland <eric@debian.org> Sat, 27 Nov 2004 20:40:10 -0500 + +mozilla-firefox (1.0-3) unstable; urgency=low + + * Changes by Mike Hommey + * The "becoming more and more an iceweasel" release. + * debian/firefox.js: + + Enable firefox's internal locale autodetection. + + Disable default browser question at startup. (Closes: #280752) + * debian/mozilla-firefox-runner: Removed our locale autodetection. + That means now locales installed in user profiles are automatically + used, and that there is no need for /var/lib/mozilla-firefox/locales.d + anymore. + * debian/mozilla-firefox.dirs: Removed creation of + /var/lib/mozilla-firefox/locales.d. + * debian/rules: Removed creation of the locale file in + /var/lib/mozilla-firefox/locales.d. + * debian/presubj: Put some more recent information. + * htmlparser/src/nsParser.cpp: Applied patch from bz#57717 so that empty + html files don't get <html><body></body></html> when viewing source. + * browser/base/content/aboutDialog.css: increase the User Agent element + height as in bz#238137 (but up to MacOSX's height) to show the full User + Agent string. + * xpcom/io/nsAppDirectoryServiceDefs.h, + xpcom/io/nsAppFileLocationProvider.cpp, + xpfe/components/search/src/nsInternetSearchService.cpp: Applied patch from + bz#123315 so that Internet search services in user profiles are supported. + (Closes: #219053) + * debian/mozilla-firefox-runner: + + Remove compatibility.ini only if it is older than + /usr/lib/mozilla-firefox/components.ini. That way, we only rebuild it + after an update-mozilla-firefox-chrome. + + Detect if we're being run through sudo without the -H option, in which + case we force setting of $HOME. (Closes: #218156) + * browser/app/profile/firefox.js: Sync'ed with debian/firefox.js. + * toolkit/mozapps/extensions/src/nsExtensionManager.js.in: + + Removed some error messages that get there because firefox is trying to + write in the /usr/lib/mozilla-firefox directory as a user. They are + useless and lead users to think something is going wrong while it's the + (stupid but) normal way firefox works. + + Avoid creation of directories when attempting to read files, that + throwed uncaught exceptions breaking some stuff in several different + ways when extensions don't follow the new scheme for extensions. + + Avoid copying stuff from + /usr/lib/mozilla-firefox/defaults/profile/extensions/ to + /usr/lib/mozilla-firefox/extensions/, that's the *very* old way of + installing extensions, which, since the old scheme has been thrown away, + won't work anyway, if any extension provides files out there. + + CheckForMismatches: Avoid to disable already disabled global extensions, + and don't propose to upgrade the locked extensions. That fixes a + never-ending loop occuring when running firefox for the first time in a + user account, while some global extensions are expired. + (Closes: #278722, #281537) + * debian/mozilla-firefox.prerm, debian/mozilla-firefox.preinst: Moved + removal of links to /usr/lib/mozilla-firefox/defaults/profile/extensions/ + sitting in /usr/lib/mozilla-firefox/extensions/, if any remaining, from + prerm to preinst. We remove them once and for all, they won't be created + by us anymore. + * debian/update-mozilla-firefox-chrome: + + Removed support for extensions in + /usr/lib/mozilla-firefox/defaults/profile/extensions/. + + Removed some clean-up that had been introduced to help the Extensions + Manager not to die, and which, actually, did not work out quite so well. + Anyways, with the changes this time, the EM is supposed to support much + more problems than ever before (as usual ;) ) so we don't need that + anymore. + + Avoid stupid mv error messages when firefox-bin -register fails (which + is not supposed to happen, but you're never too careful) + * debian/update-mozilla-firefox-chrome, debian/mozilla-firefox.preinst: + Move removal of some very old stuff to preinst, to do it once and for all + instead of doing it every time we run update-mozilla-firefox-chrome. + * netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp: Applied patch from + bz#124561 to get a prompt for username/password in case anonymous login + fails. + * debian/mozilla-firefox-runner: + + Added check for more arguments so that the url in the command line get + detected more accurately. + + When a file name is given on the command line, prepend "file://" and + change spaces into %20. (Closes: #281800) + + * Changes by Eric Dorland + * debian/mozilla-firefox.prerm: Patch from Philipp Weis to fix order of + find arguments. (Closes: #280852) + * debian/mozilla-firefox.desktop: Support new mime type handler in Gnome + 2.8. (Closes: #281274) (MH: I added some more myme-types) + * debian/mozilla-firefox.postinst: Run update-desktop-database if it + exists. + * widget/src/gtk/nsWidget.cpp: We don't use gtk anymore, might as well + revert these patches. Thanks Stephane Despret. + + -- Eric Dorland <eric@debian.org> Thu, 18 Nov 2004 22:16:28 -0500 + +mozilla-firefox (1.0-2) unstable; urgency=low + + * Changes by Mike Hommey + * The "don't do too much on the same day, it's bad for health" release. + * debian/firefox.js: Re-activated the extensions update service, and + removed the update url. + * browser/app/profile/firefox.js: Sync'ed with debian/firefox.js. + * debian/mozilla-firefox-dom-inspector.preinst: Removed old inspector.js + file. + * toolkit/mozapps/extensions/src/nsExtensionManager.js.in, + toolkit/mozapps/extensions/content/extensions.js: Disabled possibility + to update locked extensions and themes. Locked extensions being the + ones installed by the packaging system, they should be updated through + that. + * toolkit/mozapps/update/src/nsUpdateService.js.in: Disabled application + update functionnality. Firefox should be updated through the packaging + system. + * browser/components/prefwindow/content/pref-advanced.xul: Removed the + preferences panel item to activate application update, since it is + totally disabled. + * debian/mozilla-firefox-runner: Remove compatibility.ini instead of + compreg.dat. (Eric: This will cause a rebuild of the compreg.dat) + + * Changes by Eric Dorland: + * debian/mozilla-firefox.NEWS: Fix typos. + * README.Debian: + - Add note about application update being completely disabled. + - Fix path to XUL.mfsal + + -- Eric Dorland <eric@debian.org> Wed, 10 Nov 2004 22:56:22 -0500 + +mozilla-firefox (1.0-1) unstable; urgency=medium + + * New upstream release (Closes: #280449) + + * Changes by Mike Hommey: + * netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp: Apply new patch + #164795 from bz#266835 + some tweaks as previously. This might lead to + encoding problems with the password, but it is supposed to be ASCII + anyway. + * toolkit/mozapps/extensions/src/nsExtensionManager.js.in: Reworked the + previous patches so that the Extensions Manager shows extensions that + have been disabled due to version mismatch, and added a workaround so + that components registration works correctly. + * debian/update-mozilla-firefox-chrome: Removed part that is useless due + to last changes in the Extensions Manager. + * Make the inspector a real extension again: + - debian/inspector/00dom-inspector: File for + /var/lib/mozilla-firefox/extensions.d. + - debian/inspector/Uninstall: Uninstall file needed in extension + directory. + - debian/inspector/install.rdf: install.rdf taken from older versions, + and adapted to newer versions, adding registered chrome. + - debian/mozilla-firefox-dom-inspector.dirs: Removed. Everything will + be created by dh_install. + - debian/mozilla-firefox-dom-inspector.install: install + debian/inspector.rdf and most inspector files in the right place in + /usr/lib/mozilla-firefox/extensions/{641d8d09-7dda-4850-8228-ac0ab65e2ac9} + and /var/lib/mozilla-firefox + * Make the classic theme a real extension, even though it's still in + the main package: + - debian/theme/00classic: File for + /var/lib/mozilla-firefox/extensions.d. + - debian/theme/Uninstall: Uninstall file needed in extension + directory. + - debian/mozilla-firefox.install: Install all files in the right + place in + /usr/lib/mozilla-firefox/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} + - debian/mozilla-firefox.dirs: Removed creation of + /usr/lib/mozilla-firefox/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/chrome, + it will be done by dh_install. + - browser/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf.in: + Added chrome to be registered. + * Removed support for /var/lib/mozilla-firefox/chrome.d: + - debian/mozilla-firefox.dirs: Removed creation of the directory. + - debian/rules: Removed creation of files there, and put the + installed-chrome.txt, excluding inspector and classic theme stuff, + directly in /usr/lib/mozilla-firefox/chrome. + - debian/update-mozilla-firefox-chrome: Removed all + /var/lib/mozilla-firefox/chrome.d related stuff. + - debian/mozilla-firefox.links: Removed installed-chrome.txt link. + - toolkit/mozapps/extensions/src/nsExtensionManager.js.in: disable + extensions that fail to install chrome. + * debian/mozilla-firefox-runner: Remove user profile compreg.dat at + launch time. + * Moved some files in /var/lib/mozilla-firefox: + - debian/mozilla-firefox.links: Add a symlink for Extensions.rdf + and components.ini, from /usr to /var. + - debian/mozilla-firefox.prerm: Don't remove files we don't + provide and remove files at their new locations. + - debian/mozilla-firefox.preinst: Remove + /var/lib/mozilla-firefox/installed-chrome.txt. + - debian/update-mozilla-firefox-chrome: Create links for + Extensions.rdf and components.ini after register call, and remove + components.ini before. + * Clean-up in files generated by update-mozilla-firefox-chrome: + - debian/mozilla-firefox.links: Put all the links generated by + update-mozilla-firefox-chrome into the package. + - debian/mozilla-firefox.prerm: Remove all /var files generated + in the remove target, and changed the way we clean-up + /var/lib/mozilla-firefox. + * debian/mozilla-firefox.install: Removed chromelist.txt. + * Add support for extensions preferences: + - debian/update-mozilla-firefox-chrome: Handle + /usr/lib/mozilla-firefox/defaults.ini file. + - debian/mozilla-firefox.links: Add a symlink to /var for + defaults.ini. + - toolkit/mozapps/extensions/src/nsExtensionManager.js.in: Added + defaults registration in -register command. + - mozilla-firefox-dom-inspector.install: Move inspector.js into + the appropriate extension specific directory. + * Move preferences back into /usr: + - debian/rules: Don't move the prefs into + /etc/mozilla-firefox/pref, and put the vendor thing into /usr + as well, and remove firefox-l10.js file. + - debian/mozilla-firefox.preinst: remove old prefs in /etc and + old symlink /usr/lib/mozilla-firefox/defaults/pref. + - debian/firefox.js: new Debian default preferences file. + - debian/mozilla-firefox.install: install firefox.js in + /etc/mozilla-firefox/pref. + - debian/mozilla-firefox.links: rename + /usr/lib/mozilla-firefox/defaults/pref symlink to + /usr/lib/mozilla-firefox/defaults/syspref. + - toolkit/mozapps/extensions/src/nsExtensionManager.js.in: Added + a hook so that defaults/syspref gets registered in defaults.ini + after all other extensions preferences. + * debian/mozilla-firefox.preinst: only clean-up stuff if we are + upgrading from a version known to still have the files. Added some + more clean-up. + * debian/mozilla-firefox.install: Removed useless init.d. + * modules/libpref/src/init/all.js: Fixed all chrome URLs which refered to + mozilla stuff. + * debian/update-mozilla-firefox-chrome: Remove some more files before running + firefox-bin -register. + + * Changes by Eric Dorland: + * debian/mozilla-firefox.NEWS: Add warning about broken extension and + locale packages with this release. + * debian/mozilla-firefox-runner: Comment out warning about xprint, + xprint isn't necessarily needed for printing since postscript was + reenabled. (Closes: #279858) + + -- Eric Dorland <eric@debian.org> Wed, 10 Nov 2004 00:33:44 -0500 + +mozilla-firefox (0.99+1.0RC1-4) unstable; urgency=low + + * debian/mozilla-firefox-runner: + - Fixed to run properly with dash. (Closes: #279549). + - Fixed indentation. + - Added a basic debugger support. + * debian/mozilla-firefox.1: Added information about debugger options. + * debian/rules: Added a debug option to DEB_BUILD_OPTIONS. If you want to + build a fully gdb'able package, use DEB_BUILD_OPTIONS="noopt nostrip + debug" + * netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp: Apply new patch from + bz#266835. + - Further change this patch to use Append rather than AppendLiteral, + which doesn't seem to exist. (ED) + + -- Mike Hommey <mh@glandium.org> Thu, 4 Nov 2004 22:01:51 +0900 + +mozilla-firefox (0.99+1.0RC1-3) unstable; urgency=low + + * netwerk/protocol/ftp/src/nsFtpConnectionThread.cpp: Apply patch from + bz#266835 to fix anonymous user password issue. (Closes: #226784) + * toolkit/mozapps/extensions/src/nsExtensionManager.js.in: (MH) + - Fully apply previous patches, which for some reason left a spurious code + line which made the extensions manager not like expired extensions + anymore. (Closes: #279140) + - Enhanced extensions manager so that the behaviour described in + https://bugzilla.mozilla.org/show_bug.cgi?id=247846#c14 *actually* + works. Extensions packagers are invited to move their chrome files + accordingly, and remove /var/lib/mozilla-firefox/chrome.d files so that + extensions chrome don't get registered when they are forced-disable due + to version mismatch or some other reason. + * debian/mozilla-firefox-runner: + - Fix some thinkos. (MH) + - Fix for loading files from the command line. (Closes: #279018) (MH) + - Removed setting --display from $DISPLAY, let it get it from the + environment, but pass --display if it is set. (Mike, + I'm worried this will screw up some session + managers, let me know what you think, we can revert it) + - Removed FIREFOX_OPEN_IN stuff, so that firefox now obeys to "open + links from other applications in" setting. (Closes: #279073) (MH) + - Enhanced command line parsing, and drop empty arguments. + (Closes: #279138) (MH) + - No need for a find to look for XUL.mfasl, we already have its + location from the path list taken from profiles.ini. (MH) + - Better detection of dsp wrapper, when FIREFOX_DSP=auto. + (Closes: #254611) (MH) + - Correctly open local files even when firefox was not previously + running. (Closes: #279018) (MH) + * debian/mozilla-firefox.1: (MH) + - Removed references to FIREFOX_OPEN_IN. + - Added the -safe-mode option. + * debian/mozilla-firefoxrc: Removed FIREFOX_OPEN_IN. (MH) + + -- Eric Dorland <eric@debian.org> Tue, 2 Nov 2004 00:46:28 -0500 + +mozilla-firefox (0.99+1.0RC1-2) unstable; urgency=medium + + * browser/app/profile/firefox.js: Disable browser update checking by + default. + * debian/mozilla-firefox-runner: Apply patch from Aurelien Jarno to fix + variable name typo. (Closes: #278844) + + -- Eric Dorland <eric@debian.org> Fri, 29 Oct 2004 23:50:59 -0400 + +mozilla-firefox (0.99+1.0RC1-1) unstable; urgency=medium + + * New upstream release. + * layout/xul/base/src/nsImageBoxFrame.{cpp,h}: Remove some conflicts + from a previous patch. + + -- Eric Dorland <eric@debian.org> Thu, 28 Oct 2004 23:33:46 -0400 + +mozilla-firefox (0.10.1+1.0PR-5) unstable; urgency=low + + * debian/rules: (MH) + - Use upstream extensions set. This will eventually get a + correct help menu and fix some yet undiscovered UI issues. + (Closes: #257946) + - Added support for DEB_BUILD_OPTIONS=noopt. + - Changed OPTFLAGS assignment. + - Remove whitespace characters in version number for UserAgent + branding. + - Install mozilla-firefox-runner into /usr/lib/mozilla-firefox/firefox + (Closes: #278477) + * debian/mozilla-firefox.links: (MH) + - Link /usr/bin/firefox and /usr/bin/mozilla-firefox to + /usr/lib/mozilla-firefox/firefox. + - Removed obsolete profile/US links. + * debian/mozilla-firefox.dirs: Create /etc/mozilla/profile instead of + /etc/mozilla/profile/US. (MH) + * toolkit/xre/nsAppRunner.cpp: Fix crash in nsCmdLineService::Initialize + when argc is changed by gtk (when treating gtk specific arguments) + (MH) + * debian/mozilla-firefox-runner (Changes by MH): + - Removed workaround for bug #122990. First, xmlterm is not an activated + extension, and secondly, if it still requires the TERM environment + variable, it is the user's duty to set it to whatever he wants, not + firefox's start script's. + - Removed the ulimit -c setting. First, it is set by default to 0 on a + newly installed debian, and secondly, it is user's choice to set it or + not if he needs to get core files. + - Removed unused shell variables. + - Removed unsetting AUDIODEV variable. If it still crashes, it does belong + to some other code than firefox. The AUDIODEV environment variable is + used nowhere in firefox code: + http://lxr.mozilla.org/aviarybranch/search?string=AUDIODEV + Note that there is a "A crash which occurred when AUDIODEV doesn't + contain "/" was fixed." log message in esound version 0.2.33 changes and + that the bug may have belonged there. + - Replaced ${HOME}/.mozilla-firefoxrc file by a ${HOME}/.mozilla/firefox/rc + file. The former is still supported, though, but will bring a warning + message. If both are present, only the latter is taken into account. + - Changed the way system and user FIREFOX_DSP and FIREFOX_OPEN_IN + variables are handled. First, use system values defined in + /etc/mozilla-firefox/mozilla-firefoxrc, then override with + ${HOME}/.mozilla/firefox/rc and then with runtime environment variables. + - Don't die when DISPLAY is not set. Display can be passed by --display + option, and if not set and needed (some options don't require it), + firefox will complain. + - Some shell code simplifications by using some coreutils. + - Added better command line parsing. + - Added verbosity mode. + - Removed setting of FONTCONFIG_PATH, /usr/lib/mozilla-firefox/res/Xft + doesn't exist + - Factorized localization detection. + * debian/mozilla-firefox.1 (MH): + - Made some clean-up between dashes and hyphens. + - Removed obsolete options and added new ones. + - Added informations about some debian specific stuff. + * debian/update-mozilla-firefox-chrome: Changed the way we move files to + /var/lib/mozilla-firefox. It will avoid creating files with a * in their + name whenever registration failed. (MH) + * debian/README.Debian: Update java instructions, tell them to just use + java-package. + + -- Eric Dorland <eric@debian.org> Thu, 28 Oct 2004 21:30:40 -0400 + +mozilla-firefox (0.10.1+1.0PR-4) unstable; urgency=medium + + * This release mostly courtesy Mike Hommey. + * layout/src/xul/base/src/nsImageBoxFrame.*: Backported patch from + bz#255372. (Closes: #278046) + * toolkit/mozapps/extensions/src/nsExtensionManager.js.in: Force locking + globally installed extensions, that will prevent extensions packages + files to be unexpectedly removed by firefox. + * debian/control: Add Mike Hommey as an Uploader. + * debian/mozilla-firefox.install: Removed content-packs.jar which is + mozilla-browser specific. + * debian/mozilla-firefox.dirs: + - Remove leading /'s. + - Create + /usr/lib/mozilla-firefox/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd} + /chrome directory so that preview is shown in the Themes Manager. Yes, + this is stupid, but it is the way firefox wants it (and it's not even + created by make install, nor in the official binary tarball. It is + only created at run time, but you know what ? under *nix, a normal + user can't create that directory) (Closes: #276404) + * debian/rules: Add a /etc/mozilla-firefox/pref/vendor.js file adding + the debian package version to the UserAgent. (Closes: #268654) + * debian/README.Debian: Update java instructions. I'd love some more + definitive pointers. (Closes: #277983) + + -- Eric Dorland <eric@debian.org> Tue, 26 Oct 2004 00:11:48 -0400 + +mozilla-firefox (0.10.1+1.0PR-3) experimental; urgency=low + + * debian/control: + - Rename the mozilla-firefox-gnome-vfs package + mozilla-firefox-gnome-support since it does more than vfs. No + need for Replaces or anything, since it never actually made it to + the archive. + - Remove strict build dependencies on g++ and binutils, since the + fixed versions have hit sarge. + - Remove hppa build depends, since gcc has also been fixed there. + - Build-depend on libgnome2-dev and libgconf2-dev to build in more + gnome support. + - Have mozilla-firefox recommend it's gnome support. + * debian/rules: + - Remove hppa CC redefinitions. + - Exclude *gnome* not just *gnomevfs*. + - dh_install for gnome-support. + * debian/mozilla-firefox-gnome-vfs.*: Rename to + mozilla-firefox-gnome-support.*. + * debian/mozilla-firefox-gnome-support.install: Grab *gnome*, not just + *gnomevfs*. + + -- Eric Dorland <eric@debian.org> Thu, 21 Oct 2004 23:04:53 -0400 + +mozilla-firefox (0.10.1+1.0PR-2) experimental; urgency=low + + * debian/mozilla-firefox-runner: + - Patch from Sam Morris to handle cleanup of directories with + unusual names. + - Fix return value check, patch from rgselk. (Closes: #269690) + * debian/mozilla-firefox.1: List full path to firefox-bin. (Closes: + #275563) + * debian/rules: + - --with-gssapi=/usr, enable Negotiate extension. (Closes: + #274258) + - Enable gnomevfs support, + * debian/control: + - Build-depend on libkrb5-dev. + - Build-depend on libgnomevfs2-dev. + - New gnomevfs package, based on work by Mike Hommey. (Closes: + #262062) + * debian/mozilla-firefox-gnome-vfs.post{inst,rm}: Added, same as + corresponding files from mozilla-firefox-dom-inspector. + * debian/mozilla-firefox-gnome-vfs.install: Install gnomevfs components. + * browser/app/profile/firefox.js: Set + network.negotiate-auth.trusted-uris to https:// to enable the + negotiate extension over secure links. + * config/rules.mk: Tweak patch from Thiemo Seufer to include svg_doc in + non-optimization. (Closes: #273353) + + -- Eric Dorland <eric@debian.org> Sun, 17 Oct 2004 21:25:08 -0400 + +mozilla-firefox (0.10.1+1.0PR-1) experimental; urgency=critical + + * New upstream release, fixes security issue bz#259708. (Closes: + #274493) + + -- Eric Dorland <eric@debian.org> Sun, 3 Oct 2004 03:32:43 -0400 + +mozilla-firefox (0.10+1.0PR-1) experimental; urgency=low + + * New upstream release. (Closes: #273700, #267003) + * toolkit/mozapps/extensions/src/nsExtensionManager.js.in, + netwerk/dns/src/nsIDNService.cpp, + modules/libpr0n/decoders/bmp/nsBMPDecoder.cpp, + gfx/src/windows/nsImageWin.cpp, gfx/src/shared/gfxImageFrame.cpp, + browser/app/profile/firefox.js: Resolve conflicts between my tree and + upstream. + * browser/app/Makefile.in: Fix $(DESTDIR) variable. + * accessible/src/atk/nsAccessibleWrap.cpp, + accessible/src/atk/nsAccessibleWrap.h: Apply patch from bugzilla for + alpha fix that's more likely to make it into CVS. + * debian/update-mozilla-firefox-chrome: Patch from Mike Hommey to make + update-mozilla-firefox-chrome more verbose on -v. + * debian/rules: + - Remove typeaheadfind for new find toolbar to work. (Mike Hommey) + (Closes: #267170) + - Changes to reflect new upstream files. + * debian/control: + - Remove build-depend on libcairo-dev. + - Build depend on libxt-dev, seems to be necessary now. (Closes: + #274311) + * debian/docs: Removed, as browser/README.html disappeared. (Mike Hommey) + * debian/mozilla-firefox.dirs: + - Changes to reflect new upstream files. + - Removed obsolete libnullplugin.so. + * debian/mozilla-firefox.install: + - Remove .jar's that aren't there anymore. + - Removed obsolete libnullplugin.so. + * debian/mozilla-firefox-dom-inspector.dirs, + debian/mozilla-firefox-dom-inspector.install, debian/rules: Upstream + doesn't consider DOM Inspector as a real extension, and do not provide + the appropriate files to make it appear in the extensions + manager. Removed all the extension related stuff in the package. (Mike + Hommey) + * other-licenses/libart_lgpl: Removed, was for SVG, no longer needed. + * modules/plugin/samples/default/unix/*: Reverted debian specific + changes, we don't want them in the diff since libnullplugin won't get + installed. + + -- Eric Dorland <eric@debian.org> Fri, 1 Oct 2004 18:50:46 -0400 + +mozilla-firefox (0.9.3-6) unstable; urgency=high + + * gfx/src/gtk/fontEncoding.properties: Uncomment symbol fonts. (Closes: + #272927) + * debian/control: Build-depend on binutils (>= 2.15-4) but only on mips + and mipsel. (Closes: #273353) + * configure.in, configure, rules.mk: Patch from Thiemo Seufer to + increase stability and performance on mips. (Closes: #272159) + * debian/mozilla-firefox-runner: Detect failure of ping() + better. (Closes: #267393) + * layout/html/document/src/html.css: Testing fix for xprint problems. + + -- Eric Dorland <eric@debian.org> Mon, 27 Sep 2004 17:07:37 -0400 + +mozilla-firefox (0.9.3-5) unstable; urgency=high + + * debian/update-mozilla-firefox-chrome: Apply another patch form Mike + Hommey to fix a few more issues in the script. (Closes: #271480) + * Fixes to Secunia security bugs, ported from bugzilla: + (Closes: #271888) + - browser/base/content/browser.js, + xpfe/communicator/resources/content/contentAreaDD.js: Fix for + drag and drop exploit, bz#250862. + - caps/include/nsScriptSecurityManager.h, caps/src/caps.properties, + caps/src/nsScriptSecurityManager.cpp: Fix for enablePrivilege + exploit, bz#253942. + - gfx/src/shared/gfxImageFrame.cpp, gfx/src/windows/nsImageWin.cpp, + modules/libpr0n/decoders/bmp/nsBMPDecoder.cpp: Fix for various + overflows in the BMP code, bz#255067. + - netwerk/dns/src/nsIDNService.cpp: Fix for bug in non-ASCII + characters in domain names, bz#256316 + - content/xbl/src/nsXBLPrototypeHandler.cpp: Clipboard injection + fix, bz#257523. + + -- Eric Dorland <eric@debian.org> Thu, 16 Sep 2004 20:06:47 -0400 + +mozilla-firefox (0.9.3-4) unstable; urgency=high + + * Urgency high, go into testing dammit! + * Apply patch from Mike Hommey as -3.1, which wasn't actually + released. See below. (Closes: #271480) + * debian/rules: Patch from Matthew Mueller to fix underquoted + argument. (Closes: #271432) + * debian/control: Build depend on binutils (>= 2.15-3) with fixed mips + support. We still need a fixed gcc. + + -- Eric Dorland <eric@debian.org> Mon, 13 Sep 2004 20:41:27 -0400 + +mozilla-firefox (0.9.3-3.1) unstable; urgency=low + + * debian/rules: removed + /usr/lib/mozilla-firefox/defaults/profile/extensions/installed-extensions.txt + * debian/update-mozilla-firefox-chrome: + + Added a "verbose" mode. + + Added warning messages (only shown in verbose mode) about some + extensions specific issues. This is intended to be useful for extensions + maintainers. + + Check if the installed-extensions.txt file disappears, which tells if the + mozilla-firefox -register went ok. + * debian/update-mozilla-firefox-chrome.8: + + Fixed typos. + + Added reference to the -v option for the verbose mode. + * debian/mozilla-firefox-runner: enhanced the profile directory check. It + didn't work if the path indicated in the profiles.ini was not absolute. + + -- Mike Hommey <mh@glandium.org> Mon, 13 Sep 2004 20:31:21 +0900 + +mozilla-firefox (0.9.3-3) unstable; urgency=high + + * Acknowlege NMU from Mike Hommey. He did a fantastic job in porting a + large amount of fixes from upstream CVS. I owe him several large + beverages of his choice. (Closes: #259046, #259836) + * Port all of Mike's changes to my local CVS. + * debian/mozilla-firefox-runner: + - Pass command-line arguments to get_locale so they can actually + be used. (Closes: #240058) + - Apply patch from Mike Hommey to use the profiles.ini to find the + path to the profile to clean XUL.mfasl. (Closes: #267326) + * debian/update-mozilla-firefox-chrome: Patch from Mike Hommey to fix + some bashisms introduced by his NMU. + * xpcom/reflect/xptcall/src/md/unix/Makefile.in, + xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_mips.s, + xpcom/reflect/xptcall/src/md/unix/xptcinvoke_mips.cpp, + xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_mips.s.m4, + xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_mips.s: Patch from + Thiemo Seufer to fix mips. This requires patches to gcc and binutils + to work and fully close #270621. + + -- Eric Dorland <eric@debian.org> Wed, 8 Sep 2004 21:13:35 -0400 + +mozilla-firefox (0.9.3-2.2) unstable; urgency=high + + * The "never edit the diff file unless you're sure nothing will be + missing" release. + * debian/mozilla-firefox.prerm: restore the uncut version. + * debian/control, debian/rules: Use gcc-3.2 to build on hppa, because of + toolchain bug #254549. + + -- Mike Hommey <mh@glandium.org> Mon, 23 Aug 2004 19:45:54 +0900 + +mozilla-firefox (0.9.3-2.1) unstable; urgency=high + + * Non Maintainer Upload for RC Fixes. + * Applied changes to toolkit/mozapps/extensions/src/nsExtensionManager.js.in + and toolkit/mozapps/extensions/locale/extensions.properties to solve some + issues with extensions management. (taken from CVS) + * Applied other changes to + toolkit/mozapps/extensions/src/nsExtensionManager.js.in, + toolkit/mozapps/extensions/public/nsIExtensionManager.idl and + mozilla/toolkit/xre/nsAppRunner.cpp to be able to use -register + instead of -list-global-items for extensions/components/chrome + registration through update-mozilla-firefox-chrome, thus not needing + Xvfb anymore (-register option doesn't require a X server). + (taken from CVS) + * Applied some more changes to + toolkit/mozapps/extensions/src/nsExtensionManager.js.in in order to + avoir overlayinfo deletion during extensions registration process. + (taken from CVS) + * Final changes to toolkit/mozapps/extensions/src/nsExtensionManager.js.in + to avoid registering out of date extensions so that firefox doesn't enter + a loop at startup when no profile was found, and to only write in the + installed-extensions-processed.txt file the list of actually installed + extensions. Note that for packaged extensions installing their files + directly into the chrome or components directories, that only means they + won't appear in the Extensions Manager. They will still be available in + the GUI. + * All these fixes improve the Extensions Manager. Closes: #259046. + * accessible/src/atk/nsAccessibleWrap.cpp, + accessible/src/atk/nsAccessibleWrap.h: fixed 32-bit abuse of gobject + (Steve Langasek). Closes: #259836. + * debian/control: Removed dependency upon xvfb. + * debian/update-mozilla-firefox-chrome: + + Removed use of Xvfb. + + Removed creation of a root default profile, but kept the fake home + hack to avoid creation of a .mozilla directory in root's home. + + Changed extensions handling so that the overall process is cleaner. + Extensions packages will have to move extensions {uid} directories + to /usr/lib/mozilla-firefox/extensions/, while the current location + is still supported for compatibility purpose (but is strongly not + recommended). + + Removed use of regxpcom and regchrome, since what they both do is + done by firefox-bin -register. + * debian/rules: force GnomeVFS support to be disabled. (Josselin Mouette) + * debian/README.Debian: + + Added a note about potential problems with packaged "old" extensions. + + Added a note about how to manually disable packaged extensions in user + profile. + + Removed some old notes that don't apply anymore. + * debian/mozilla-firefox-dom-inspector.install, debian/rules: Move + extensions files to /usr/lib/mozilla-firefox/extensions/ instead of + /usr/lib/mozilla-firefox/defaults/profile/extensions/. + * debian/mozilla-firefox.links: Move installed-extensions.txt symlink + from /usr/lib/mozilla-firefox/defaults/profile/extensions/ to + /usr/lib/mozilla-firefox/extensions/. + * debian/mozilla-firefox.prerm: More cleanup on removal of package. + + -- Mike Hommey <mh@glandium.org> Sun, 22 Aug 2004 21:43:47 +0900 + +mozilla-firefox (0.9.3-2) unstable; urgency=low + + * xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_mips.s.m4: Comment out + NARGSAVE, like I did in 0.9.1-7, should fully fix #262571. + * debian/mozilla-firefox.preinst: Remove brace expansion + bashism. (Closes: #264200) + * debian/control: Depend on debianutils (>= 1.16) since we use mktemp + -d. (Closes: #263958) + * debian/mozilla-firefox-runner: Make -contentLocale COUNTRY, not + lang-COUNTRY. (Closes: #263940) + + -- Eric Dorland <eric@debian.org> Sun, 8 Aug 2004 23:41:02 -0400 + +mozilla-firefox (0.9.3-1) unstable; urgency=low + + * New upstream release. (Closes: #263193) + * debian/update-mozilla-firefox-chrome.8: Add manpage from Mark Suter + for update-mozilla-firefox-chrome.8. (Closes: #263149) + * debian/mozilla-firefox.manpages: Add update-mozilla-firefox-chrome.8. + * debian/control: Add build-deps on gcc-3.4 for amd64. (Closes: #262679) + + -- Eric Dorland <eric@debian.org> Wed, 4 Aug 2004 20:21:22 -0400 + +mozilla-firefox (0.9.1-7) unstable; urgency=low + + * debian/mozilla-firefox-runner: + - Reintroduce check for command-line arguments (I broke this last + release). (Closes: #262692, #262462, #262537, #262588, #262727) + - Allow overriding of -contentLocale and -UILocale. (Closes: + #240058) + * xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_mips.s: Comment out + NARGSAVE reassignment, it is defined elsewhere. (Closes: #262571) + * debian/rules: Force amd64 to build with gcc 3.4. (Closes: #262679) + + -- Eric Dorland <eric@debian.org> Mon, 2 Aug 2004 10:16:46 -0400 + +mozilla-firefox (0.9.1-6) unstable; urgency=low + + * widget/src/gtk2/keysym2ucs.c: Patch from Eugeniy Meshcheryakov to + allow mozilla firefox to enter a ghe with upturn. (Closes: #261543) + * debian/mozilla-firefox-runner: + - Remove some mail and composer cruft. + - Add warning if DISPLAY is not set. (Closes: #261465) + + -- Eric Dorland <eric@debian.org> Thu, 29 Jul 2004 22:49:59 -0400 + +mozilla-firefox (0.9.1-5) unstable; urgency=low + + * debian/control: Goodbye mozilla-firebird transition package. + * debian/mozilla-firefox-runner: Add -a firefox flag when running + firefox-bin. (Closes: #259237) + * debian/mozilla-firefox.desktop: Add GenericName field. + * debian/update-mozilla-firefox-chrome: Fix quoting problem with + {*}. (Closes: #257243) + * debian/rules: + - Re-enable postscript printing support, since the security + issues turned out to be bogus. (Closes: #257628) + - Disable SVG support, it's still too broken to be usable. + (Closes: #259544) + + -- Eric Dorland <eric@debian.org> Sun, 18 Jul 2004 20:09:14 -0400 + +mozilla-firefox (0.9.1-4) unstable; urgency=low + + * The "Let's try unstable" release. There are still issues, but there + are issues with 0.8 as well, so no more point in waiting. + * debian/update-mozilla-firefox-chrome: + - Copy over empty Extensions.rdf file on update. (Closes: #257243) + - Increase sleep to 15 seconds, hopefully this will work on most + people's machines. + * My apologies to Mike Hommey for mispelling his name in last release. + + -- Eric Dorland <eric@debian.org> Sun, 11 Jul 2004 23:51:24 -0400 + +mozilla-firefox (0.9.1-3) experimental; urgency=low + + * Ok, I was wrong, we're still in experimental. I think we need to fix a + few more issues before getting this in unstable, like #257258, and + make sure the hacky extensions mechanism is more bullet-proof. + * debian/rules: --disable-installer, since we don't use it. + * debian/update-mozilla-firefox-chrome: + - Wait 8 seconds instead of 5 for the hack, might help some + people reporting problems. + - Remove ${LIBDIR}/extensions/{*}. I may move that to + /var/lib/mozilla-firefox eventually, but let's leave it for now. + * debian/mozilla-firefox.png.uu: Make a nicer png icon, based on the + about box graphic. + * debian/mozilla-firefox.preinst: Remove old config files in + /etc/mozilla-firefox/pref. (Closes: #257711, 257557) + * browser/app/profile: firefox.js: Revert change to app.version, + apparently it breaks extensions. (Closes: #257941) + + -- Eric Dorland <eric@debian.org> Wed, 7 Jul 2004 21:26:55 -0400 + +mozilla-firefox (0.9.1-2) experimental; urgency=low + + * The "Mike Homey, lord of the bugs" release. Thanks to Mike for being a + huge help with bug triage. That's right, help with bugs and your name + could have a prestigious place in the changelog. + * I'd like my next release to be to unstable, so let me know about + profile transition bugs, etc. + * debian/control: Build-depend on libcairo1-dev. + * debian/rules: Enable svg support using cairo renderer. (Closes: + #215990) + * debian/mozilla-firefox-xremote-client: Add -a firefox switch to make + the remote client find firefox only. Thanks Jonathan Black. (Closes: + #256967) + * debian/mozilla-firefox.desktop: Make comment Gnome HIG + compliant. (Closes: #257592) + * browser/app/profile/firefox.js: + - app.version = 0.9.1. + - Disable app updates by default. We're debian, we handle updates. + * debian/update-mozilla-firefox-chrome: + - Remove installed-extensions-processed.txt before regenerating. + (Closes: #257243) + - Take some, but not all advice from Alexandru Fomin. Improve Xvfb + and extension registration hacks. + + -- Eric Dorland <eric@debian.org> Sun, 4 Jul 2004 16:58:17 -0400 + +mozilla-firefox (0.9.1-1) experimental; urgency=low + + * New upstream release. + * config/autoconf.mk.in: Alright, /usr/lib/firefox-0.9 was a bad idea, + use /usr/lib/mozilla-firefox. Change all the instances + /usr/lib/firefox-0.9 back to /usr/lib/mozilla-firefox. I feel + silly. (Closes: #256991) + * debian/mozilla-firefox-runner: Actually check for the existence of the + .mozilla/firefox directory before trying to clean it. + * debian/update-mozilla-firefox-runner: + - Call firefox-bin, not firefox you silly goose. + - Use mozilla-firefox tempfile, not mozilla-browser. + - The horrible hackiness continues: For my previous hack to work, + I need to preseed a profile directory in the home directory I + create. Now things should work. (Closes: #256812) + + -- Eric Dorland <eric@debian.org> Thu, 1 Jul 2004 17:16:29 -0400 + +mozilla-firefox (0.9-1) experimental; urgency=low + + * New upstream release. There may be regressions from 0.8. (Closes: + #254522) + * widget/src/gtk/nsGtkMozRemoteHelper.cpp, + widget/src/gtk2/nsGtkMozRemoteHelper.cpp, + widget/src/xremoteclient/XRemoteClient.cpp: Fix previously applied to + fix -remote behaviour undone. Mozilla now includes the program name in + the properties to distinguish between various Mozilla apps. + * xpcom/reflect/xptcall/src/md/unix/Makefile.in: remove extra endif. + * dom/public/idl/core/nsIDOMNSDocument.idl: Reintroduce referrer + attribute that got lost somehow. + * content/events/src/nsEventStateManager.cpp: Fix a strange broken + function call to GetContainer. + + * debian/rules: + - Follow upstream and --enable-single-profile and + --disable-profilesharing. + - Replace /usr/lib/mozilla-firefox with /usr/lib/firefox-0.9. + - --user-app-dir=.mozilla to jive with new location. + - Remove dom-inspector extension dir from the regular package. + * debian/control: Depend on xvfb for insane hack below. + * debian/mozilla-firefox.install: + - Replace /usr/lib/mozilla-firefox with /usr/lib/firefox-0.9. + - Remove ipc dir, mozipcd. + - Add init.d, greprefs dirs. + * debian/mozilla-firefox.dirs: + - Add /var/lib/mozilla-firefox/extensions{,.d} + * debian/mozilla-firefox-dom-inspector.dirs: Add + /var/lib/mozilla-firefox/extensions.d. + * debian/mozilla-firefox-dom-inspector.install: + - Replace /usr/lib/mozilla-firefox with /usr/lib/firefox-0.9. + - Install dom-inspector extension dir. + * debian/mozilla-firefox.links: + - Replace /usr/lib/mozilla-firefox with /usr/lib/firefox-0.9. + - Link /usr/lib/mozilla-firefox to /usr/lib/firefox-0.9. + - Link installed-extensions.txt to our place in + /var/lib/mozilla-firefox. + * debian/mozilla-firefox-runner: + - Replace /usr/lib/mozilla-firefox with /usr/lib/firefox-0.9. + - Fix xprintorg typo. (Closes: #255706) + - Search .mozilla/firefox for XUL.mfasl files. + * debian/mozilla-firefox-xremote-client: Replace + /usr/lib/mozilla-firefox with /usr/lib/firefox-0.9. + * debian/update-mozilla-firefox-chrome: + - Replace /usr/lib/mozilla-firefox with /usr/lib/firefox-0.9. + - Capture return values from reg* commands on error, stolen + from mozilla source. + - Remove returns from check_running. + - Pull in snippets from /var/lib/mozilla-firefox/extensions.d + to generate installed-extensions.txt for new extensions mechanism. + - An insane hack, but necessary because of upstream: Launch a Xvfb + to run firefox to generate the necessary extension metadata. I've + been told this will not be necessary in the next version. + + -- Eric Dorland <eric@debian.org> Mon, 28 Jun 2004 23:40:59 -0400 + +mozilla-firefox (0.8-12) unstable; urgency=low + + * The "Last Chance Before 0.9" release. + * debian/mozilla-firefox-runner: Fix unescaped \n, thanks Olly + Betts. (Closes: #252436) + * debian/update-mozilla-firefox-chrome: Watch out for empty + LD_LIBRARY_PATH. Thanks George Cristian Birzan. (Closes: #254142) + * debian/README.Debian: Restructure and update a bit. + * debian/presubj: Add bug information from README.Debian for reportbug. + * debian/mozilla-firefox.install: Install the presubj. + + -- Eric Dorland <eric@debian.org> Mon, 14 Jun 2004 19:39:27 -0400 + +mozilla-firefox (0.8-11) unstable; urgency=low + + * Apply amd64 fix from #249211. + * debian/README.Debian: Shamelessly stole the java plugin installation + instructions from the mozilla package. (Closes: #243513) + * nsCommonWidget.cpp, nsCommonWidget.h, nsWindow.cpp: Apply patch (with + some hand massaging) from upstream bugzilla bug #209342 to fix initial + window placement. (Closes: #235209, 241519) + * nsprpub/pr/src/misc/prnetdb.c: Apply patch from Miquel van Smoorenburg + to prevent unless reverse DNS lookups. (Closes: #251978) + * debian/mozilla-firefox-runner: Apply patch from Jasper Spaans to fix + remote xprint printing. (Closes: #252072) + + -- Eric Dorland <eric@debian.org> Tue, 1 Jun 2004 23:12:36 -0400 + +mozilla-firefox (0.8-10) unstable; urgency=low + + * debian/mozilla-firefox.install: Don't install uuencoded file. (Closes: + #251441) + * debian/mozilla-firefox-runner: unset AUDIODEV which can cause + crashes. Thanks Christopher Armstrong. (Closes: #236231) + * update-mozilla-firefox-chrome: Port security fix from #249613 to + handle insecure tempfile creation. + * debian/rules: Following the advice of #247585 I'm disabling postscript + printing. Perhaps this will alleviate some of the other printing + problems. + + -- Eric Dorland <eric@debian.org> Sun, 30 May 2004 01:47:52 -0400 + +mozilla-firefox (0.8-9) unstable; urgency=low + + * debian/control: + - Suggest latex-xft-fonts for MathML fonts. Thanks Michael + JasonSmith. (Closes: #216925) + - Build depend on libx11-dev & libxp-dev instead of xlibs-dev to + reflect new X packages. + * widget/src/gtk2/nsWindow.cpp: Apply patch from Peter Colberg to ignore + unused mouse buttons. (Closes: #244305) + * debian/README.Debian: Document the fact that the loopback interface + has to be up and unfiltered for things to work right. + + -- Eric Dorland <eric@debian.org> Wed, 5 May 2004 23:30:42 -0400 + +mozilla-firefox (0.8-8) unstable; urgency=low + + * security/nss/lib/freebl/unix_rand.c: Remove code that called netstat + to gain so entropy. It's pretty useless on a Linux system. Thanks + Wichert. (Closes: #241200) + * debian/README.Debian: Add note about changing the button order in the + dialog boxes. (Closes: #240261) + * debian/control: Add dummy package for mozilla-firebird to smooth + upgrades. (Closes: #235577) + + -- Eric Dorland <eric@debian.org> Sat, 3 Apr 2004 16:19:34 -0500 + +mozilla-firefox (0.8-7) unstable; urgency=low + + * debian/mozilla-firefox-runner: + - Cleanup XUL.mfasl whenever firefox is run with no + command-line. (Closes: #238717) + - Add patch from Laurent Buffler to add config to allow + new tabs to be opened instead of new windows. (Closes: #239323) + * debian/mozilla-firefoxrc: Put the new FIREFOX_OPEN_IN variable in + there and document it's use. + + -- Eric Dorland <eric@debian.org> Sat, 27 Mar 2004 17:21:51 -0500 + +mozilla-firefox (0.8-6) unstable; urgency=low + + * debian/control: Build-depend on g++-3.3 (>= 3.3.3-4) to work around + broken 3.3.3-3 release. (Closes: #238318, #238241, #238441, #238523, + #238534) + * debian/rules: Install new small-firefox icon. + * debian/mozilla-firefox{.png, .xpm, -small.xpm}: Use the new DFSG-free + icons, the old pretty ones are trademarked and not DSFG-free. I know, + it's stupid. Complain to the Mozilla Foundation, not me. (Closes: + #234869) + + -- Eric Dorland <eric@debian.org> Sun, 21 Mar 2004 22:09:16 -0500 + +mozilla-firefox (0.8-5) unstable; urgency=low + + * Rebuild with g++-3.3 3.3.3-2 to work around broken g++. (Closes: + #238318) + + -- Eric Dorland <eric@debian.org> Wed, 17 Mar 2004 21:38:58 -0500 + +mozilla-firefox (0.8-4) unstable; urgency=low + + * debian/README.Debian: + - Tell people not to remove their ~/.firefox directory. Just move it + out of the way. (Closes: #235594) + - Add notes about the sound dsp. (Closes: #236678) + * debian/mozilla-firefox-runner: + - Don't redirect stderr. (Closes: #236160) + - Add get_locale code from Aurelien Jarno (Closes: #235521) + - Fix dsp auto-detection code. (Closes: #236678) + * debian/rules: Add default locale file. + * debian/mozilla-firefox.dirs: Add locales dir. + + * browser/app/profile/all.js, + content/events/src/nsEventStateManager.cpp, + modules/libpref/src/init/all.js, widget/public/nsGUIEvent.h, + widget/src/gtk/nsWidget.cpp: Reapply extended mouse events patch from + Derek Upham. (Closes: #235385, #230876) + * browser/base/content/browser-sets.inc: Make ESC stop animations + again. (Closes: #235474) + + -- Eric Dorland <eric@debian.org> Tue, 16 Mar 2004 00:31:19 -0500 + +mozilla-firefox (0.8-3) unstable; urgency=low + + * debian/mozilla.firefox.menu: Change the case of + mozilla-Firefox. (Closes: #234982, #234755) + * debian/NEWS.Debian: Move to debian/mozilla-firefox.NEWS so that it + actually gets installed. (Closes: #234700) + * debian/update-mozilla-firefox-chrome: Setup dummy home directory to + capture silly .firefox directory. (Closes: #234855) + * debian/mozilla-firefox.png.uu, debian/mozilla-firefox.xpm: Use the + new, pretty mozilla-firefox icons. (Closes: #234869) + * debian/rules: Install the pretty icon in the right places. + + -- Eric Dorland <eric@debian.org> Thu, 26 Feb 2004 21:10:27 -0500 + +mozilla-firefox (0.8-2) unstable; urgency=low + + * The "what he taketh, he giveth back" release. + * debian/rules: + - Disable the wallet extension, this really closes #222447. + - Remove some more cruft left over from the patch system. + - Reinstall the dom-inspector. + * debian/control: Add the dom-inspector back, now that it is supported + upstream. + * debian/mozilla-firefox-dom-inspector.{install,dirs,postinst,postrm}: + Bring these files back. + * docshell/base/nsWebShell.cpp: Only do keyword lookup on when DNS + entries don't exist. (Closes: #233916, #218033, #211524) + + -- Eric Dorland <eric@debian.org> Mon, 23 Feb 2004 21:48:03 -0500 + +mozilla-firefox (0.8-1) unstable; urgency=low + + * The "Let's Change Our Name Every Other Day" release. + * New upstream release, mozilla-firebird has been renamed to + mozilla-firefox. Let's hope it lasts. (Closes: #231903, #222447) + * debian/mozilla-firebird.*: Renamed to debian/mozilla-firefox.*. + + * debian/README.Debian: Update for firefox, remove blurb about the + inspector. + * debian/NEWS.Debian: Explain how to move your configs over. I may make + this automatic if enough people complain, but I'm loathe to muck + around in pople's home directories. + + * debian/control: + - Rename the package. + - Tweak description to list Firefox's previous aliases. + - Remove conflicts on mozilla-firebird-dom-inspector. + + * debian/rules: + - s/firebird/firefox/g, s/MozillaFirebird/firebird/g. + - Comment out some old inspector code. + - Remove unused patch subsystem. + - Disable gtktest. We don't need no stinking tests. + - Remove disable plaintext editor line, not sure why it's there. + - Disable LDAP support. We don't use it. + - Remove executable bit on *.so files. + - Remove useless preference files. + - Exclude the inspector files. + - Don't remove installed-chrome, we don't install it anymore. + - user-app-dir = .firefox. (Closes: #212301) + - export MOZILLA_OFFICIAL for the build ID. (Closes: #231133) + + * debian/mozilla-firefox-runner: + - s/firebird/firefox/g. + - Remove composer and editor functions. + - Use .firefox directory. + + * debian/mozilla-firefox.install: + - s/firebird/firefox/g, s/MozillaFirebird/firefox/g. + - Don't install timebombgen. + - Install icons directory. + - Don't install installed-chrome.txt, we just remove it anyway. + + * debian/mozilla-firefox.desktop, debian/mozilla-firefox.dirs, + debian/mozilla-firefox.manpages, debian/mozilla-firefox.links, + debian/mozilla-firefox.menu, debian/mozilla-firefox.mime, + debian/mozilla-firefoxrc, debian/mozilla-firefox.postinst, + debian/mozilla-firefox.prerm, debian/update-mozilla-firefox-chrome, + debian/mozilla-firefox.1, debian/mozilla-firefox-xremote-client: + s/firebird/firefox/g, s/MozillaFirebird/firefox/g. + + * debian/mozilla-firefox.links: Link mozilla-firefox.1 to firefox.1. + + * debian/mozilla-firefox.preinst: Remove, at least with the rename I can + erase some of my previous blunders. + + * debian/mozilla-firefox.{png.uu,xpm}: Use the package icon. + + * browser/app/nsBrowserApp.cpp: Change package name to Firefox, so now + the ~/.firefox is used. (Closes: #196550) + + * browser/app/profile/all.js: Merge in autoscroll fixes. + * browser/base/content/browser-sets.inc: Merge in upstream stop button + fix. + * modules/plugin/samples/default/unix/nullplugin.c: Merge in removal of + commented code. + * nsprpub/pr/include/md/_linux.cfg, nsprpub/pr/include/md/_linux.h, + security/coreconf/Linux.mk: Merge in hppa build fixes from upstream. + * config/autoconf.mk.in: Install into /usr/lib/mozilla-firefox now. + * content/base/src/nsDocumentViewer.cpp: Remove redundant stop patch + since it has been merged upstream. + * content/events/src/nsEventStateManager.cpp, + modules/libpref/src/init/all.js, widget/src/gtk/nsWidget.cpp: Revert + back to upstream version. There was a patch here to add support for + extended mouse buttons, but I'm removing it since I don't trust that + it works in the new version correctly. Send me another patch if you + want this functionality back. + * toolkit/components/passwordmgr/base/nsPasswordManager.cpp: Revert this + back to upstream, I'm not sure which patches I applied to this file, + likely something to try and fix the double password prompt. + * widget/src/xremoteclient/XRemoteClient.cpp, + widget/src/xremoteclient/XRemoteClient.h: Revert to upstream version, + I believe it does the right thing now, but the patch I used does not + apppear to have been used. Restore the properties to _FIREFOX_* + though. + * widget/src/gtk/nsGtkMozRemoteHelper.cpp, + widget/src/gtk2/nsGtkMozRemoteHelper.cpp: Change the _FIREBIRD_* to + _FIREFOX_* here as well. + * content/base/src/nsDocument.cpp: Comment out nsDocument::GetDomConfig, + needed to get things to compile. + + -- Eric Dorland <eric@debian.org> Sun, 15 Feb 2004 21:28:45 -0500 + +mozilla-firebird (0.7-7) unstable; urgency=low + + * debian/mozilla-firebird-runner: Open a new window when loading a + regular file. (Closes: #228853) + + -- Eric Dorland <eric@debian.org> Thu, 29 Jan 2004 22:12:30 -0500 + +mozilla-firebird (0.7-6) unstable; urgency=medium + + * The "Indian-giver-christmas" release. + * Urgency medium since we're closing some critical bugs that need to get + in before a freeze. + * Completely remove mozilla-firebird-dom-browser. No one stepped up to + help fix it's brokeness in 0.7 and I don't use it or particularly care + about it. So it is no more. If someone steps up to take responsibility + I might put it back, but otherwise it may RIP. (Closes: #222085) + * debian/mozilla-firebird-runner: Remove XUL.mfasl uncoditionally + now. There is a corner case where this file is corrupted on upgrade + when firebird was running. This is a total hack, and not an elegant + solution, but at least it fixes the problem. (Closes: #224779, + #224323) + * debian/control: Conflict against old mozilla-firebird-dom-inspector + since it doesn't work anymore. + + -- Eric Dorland <eric@debian.org> Thu, 25 Dec 2003 15:54:21 -0500 + +mozilla-firebird (0.7-5) unstable; urgency=low + + * browser/base/content/browser-sets.inc: Patch to make ESC stop actually + work. (Closes: #223382) + * debian/rules: Turn down optimizations on sparc. (Closes: #223760) + + -- Eric Dorland <eric@debian.org> Sun, 14 Dec 2003 23:01:59 -0500 + +mozilla-firebird (0.7-4) unstable; urgency=low + + * The "All of Takuo's hard work really pays off" release. + * toolkit/components/passwordmgr/base/nsPasswordManager.cpp: Patch from + upstream bugzilla (#220214) to fix double password prompt + problem. (Closes: #222696) + * xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_mips.s.m4: Stolen + patch from mozilla package to make mozilla-firebird build on + mips. (Closes: #222743) + * content/base/src/nsDocumentViewer.cpp: Port yet another patch to allow + the ESC key to stop animated gifs. (Closes: #223382) + + -- Eric Dorland <eric@debian.org> Mon, 8 Dec 2003 23:59:16 -0500 + +mozilla-firebird (0.7-3) unstable; urgency=low + + * debian/control: Add dependency on psmisc since we use fuser. Thanks + Daniel Schröter. + * widget/src/xremoteclient/XRemoteClient.{cpp,h}: Apply patch from + bugzilla to fix -remote behaviour on modern WMs. Thanks Nikolai + Prokoschenko. (Closes: #197632) + * nsprpub/pr/src/misc/prdtoa.c: Apply fix from mozilla package (#215067) + to fix building on arm. This is a partial fix to #222743. + * debian/patches: Remove these. Put everything in CVS. + + -- Eric Dorland <eric@debian.org> Fri, 5 Dec 2003 20:03:46 -0500 + +mozilla-firebird (0.7-2) unstable; urgency=low + + * Apply excellent patch from Alexander Sack <asac@jwsdot.com> to fix the + issues with mozilla running and firebird not starting. (Closes: + #216264) + * browser/app/profile/all.js: Set the default of "general.autoScroll" to + false because it annoyes me. (Closes: #221661) + + -- Eric Dorland <eric@debian.org> Wed, 19 Nov 2003 20:59:55 -0500 + +mozilla-firebird (0.7-1) unstable; urgency=low + + * New upstream release. (Closes: #216019) + * debian/patches/dom-inspector.diff: Remove, and apply directly into my + CVS. + * debian/patches/pref.diff: Removed, doesn't seem applicable anymore. + * debian/rules: export MOZ_FIREBIRD=1. + * debian/control: + - Change Chimera to Camino. (Closes: #220821) + - Fix typos in descriptions. (Closes: #218202) + - Add build-deps on m4. (Closes: #219681) + + -- Eric Dorland <eric@debian.org> Wed, 12 Nov 2003 23:01:35 -0500 + +mozilla-firebird (0.6.1-8) unstable; urgency=low + + * Apply patch to make forward and back buttons work on mice. (Closes: + #211606) + * debian/rules: Use -O optimization on alpha, so it will build + again. (Closes: #213603) + + -- Eric Dorland <eric@debian.org> Fri, 3 Oct 2003 00:07:44 -0400 + +mozilla-firebird (0.6.1-7) unstable; urgency=low + + * Rebuild with the latest and greatest from unstable. This seems to fix + the problems with bookmarks people were having, at least for me. No + idea why. Please reopen if this doesn't fix it for you. (Closes: + #209339, #211706, #211286, #211146, #212011) + + -- Eric Dorland <eric@debian.org> Mon, 22 Sep 2003 00:00:08 -0400 + +mozilla-firebird (0.6.1-6) unstable; urgency=low + + * Patch from Eric Wong <normalperson@yhbt.net> to make plugin requests + less annoying. (Closes: #196609) + * debian/rules: Stop building libart. + * debian/mozilla-firebird.links: Fix path to bookmarks file. (Partial + fix to #211286) + + -- Eric Dorland <eric@debian.org> Wed, 17 Sep 2003 20:22:56 -0400 + +mozilla-firebird (0.6.1-5) unstable; urgency=low + + * The "sorry Chris Gray" release. + * debian/rules: disable SVG. This was causing drag and drop to lock up + X and possibly fixes #208630. (Closes: #209371) + * debian/mozilla-firebird-runner: Remove XUL.mfasl if we have upgraded, + since it can cause problems. (Closes: #200073, #202130, #207351) + + -- Eric Dorland <eric@debian.org> Sat, 13 Sep 2003 20:15:37 -0400 + +mozilla-firebird (0.6.1-4) unstable; urgency=low + + * The "pleasing Chris Gray" release. + * other-licenses/libart_gpl: Add this library for svg. + * debian/rules: + - Enable svg. + - Move bookmarks.html file into /etc. (Closes: #207398) + * debian/mozilla-firebird.links: Add links back to files moved to /etc. + * security/coreconf/Linux2.6.mk: Add this as a copy of Linux2.5.mk to + get mozilla-firebird to build on 2.6. (Closes: #207821) + + -- Eric Dorland <eric@debian.org> Sun, 31 Aug 2003 04:40:30 -0400 + +mozilla-firebird (0.6.1-3) unstable; urgency=low + + * debian/mozilla-firebird.prerm: Remove mozilla alternative on + remove. (Closes: #205310) + * debian/debsearch.{gif.uu,src}: Debian search plugin graciously + contributed by Fergus McKenzie-Kay <Linux@NerdIT.com>. + * debian/rules: + - uudecode and clean up debsearch.gif.uu. + - Steal platform specific optimization code from mozilla + package. Thanks Brian Nelson. (Closes: #206309) + * debian/mozilla-firebird.install: Install the above files. + * debian/control: Update Standards-Version to 3.6.1. + + -- Eric Dorland <eric@debian.org> Sun, 24 Aug 2003 19:09:11 -0400 + +mozilla-firebird (0.6.1-2) unstable; urgency=low + + * The "Stop Pestering Me Already!" release. + * debian/control: Only recommend xprt-xprintorg, don't require + it. (Closes: #204176) + + -- Eric Dorland <eric@debian.org> Sun, 10 Aug 2003 20:00:11 -0400 + +mozilla-firebird (0.6.1-1) unstable; urgency=low + + * New upstream release. (Closes: #203518, #201203) + * debian/control: + - Standards-Version to 3.6.0. + - Don't provide www-browser anymore. (Closes: #201035) + - Depend on xprt-xprintorg so printing will work. (Closes: #202418) + * debian/mozilla-firebird.preinst: Remove www-browser alternative. + * debian/mozilla-firebird.postinst: Don't install www-browser alternative. + * debian/mozilla-firebird.prerm: Don't remove www-browser alternative + anymore. + * debian/README.Debian: Added note about configuration breaking on + upgrade. (Closes: #202130) + * debian/patches/classic.diff: Removed. Not sure what it's point was. + * debian/rules: Add --disable-pedantic to the configure options. + + -- Eric Dorland <eric@debian.org> Sun, 3 Aug 2003 14:58:12 -0400 + +mozilla-firebird (0.6-8) unstable; urgency=low + + * debian/patches/alpha-build-fix.diff: Steal patch from mozilla to allow + building on alpha. (Closes: #198638) + * debian/patches/hppa-build-fix.diff: Steal patch from mozilla to allow + building on hppa, clean it up so it applies cleanly. (Closes: #199068) + * debian/mozilla-firebird.png.uu: Added uuencoded nice png icon. + * debian/rules: Add code to decode and clean up the new icon file. + * debian/mozilla-firebird.install: Install new icon. + * debian/mozilla-firebird.desktop: Use the new icon. + + -- Eric Dorland <eric@debian.org> Fri, 27 Jun 2003 23:21:56 -0400 + +mozilla-firebird (0.6-7) unstable; urgency=low + + * debian/mozilla-firebird.1: Stole the mozilla manpage for my own + nefarious purposes. (Closes: #196638) + * debian/mozilla-firebird.postrm: Add slave links to the + mozilla-firebird manpage. (Closes: #197145) + * debian/mozilla-firebird-xremote-client: Set up the environment + properly so it returns correct information. (Closes: #197632) + * debian/mozilla-firebird.xpm: Added icon from + http://iconpacks.mozdev.org/phoenix/iconshots/flame48true.png to have + a nice menu icon. (Closes: #197565) + * Updated the README.Debian with some helpful bug reporting tips. + * debian/rules: Replaced dh_installmanpages with dh_installman. + + -- Eric Dorland <eric@debian.org> Sun, 22 Jun 2003 15:15:37 -0400 + +mozilla-firebird (0.6-6) unstable; urgency=low + + * debian/mozilla-firebird.postinst: Add priority 0 alternative on + mozilla. (Closes: #196444) + * debian/control: Add build-depends on libxrender-dev, libmng-dev, + libpng12-dev, libjpeg62-dev. + * debian/rules: + - Build with system jpeg, mng and png libs. + - Exclude inspector files from mozilla-firebird. + (Closes: #196432, #196509) + + -- Eric Dorland <eric@debian.org> Sat, 7 Jun 2003 15:19:23 -0400 + +mozilla-firebird (0.6-5) unstable; urgency=low + + * The "Mike Hommey is my homey" release. + * Thanks to Mike Hommey <mh@glandium.org> for his excellent work on this + version (it's 99% his), which I've shamelessly stolen. + * Added a README.Debian file. + * Added a separate mozilla-firebird-dom-inspector package. + * debian/patches/dom-inspector.diff: + - add DOM Inspector to Tools menu. (note: DOM Inspector is still + not very well integrated with Firebird) + - remove modern skin references. + * debian/patches/xpinstall.diff: remove unneeded chrome registrations + from xpinstall/packager/unix/browser.jst. + * debian/patches/classic.diff: remove + themes/classic/global/win/preview.gif from jar file and modify + preview image reference in rdf file to Preview.png. + * debian/patches/pref.diff: remove preview image constraints in + browser/components/prefwindow/skin/pref.css file to avoid deformation + of preview image in classic theme. + * debian/mozilla-firebird.preinst: added #DEBHELPER#. + * debian/mozilla-firebird.install: + - Don't install the modern.jar and embed-sample.jar files. + - Remove files related to dom-inspector. + * debian/rules: + - enabling xinerama support. + - disabling build of chatzilla and venkman. + - moved /var/lib/mozilla-firebird/chrome.d/99default to + /var/lib/mozilla-firebird/chrome.d/00all + - remove references to embed-sample.jar in + /var/lib/mozilla-firebird/chrome.d/00all + - Add some comments. + - Change == to =, for more strict /bin/sh's. + * debian/control: Build-Depend on libidl-dev (>= 0.8.0) because the + configure script requires at least this version. + * debian/copyright: Make this a real debian copyright file. + + -- Eric Dorland <eric@debian.org> Thu, 5 Jun 2003 01:00:32 -0400 + +mozilla-firebird (0.6-4) unstable; urgency=low + + * debian/rules: Change -O2 to -O for building on powerpc. + * debian/mozilla-firebird.preinst: Delete + /usr/lib/mozilla-firebird/defaults/pref on upgrade to facilitate + transition to prefs in /etc. Thanks to all who reported this. + + -- Eric Dorland <eric@debian.org> Tue, 27 May 2003 21:45:06 -0400 + +mozilla-firebird (0.6-3) unstable; urgency=low + + * First attempt at a debian upload. (Closes: #163270) + * debian/rules: + + Small fix to Mike Hommey's chrome patch. + + Suggestion from Bernhard R. Link to install + /usr/lib/mozilla-firebird/defaults/pref to + /etc/mozilla-firebird/pref + + Add dh_installmime call. + * debian/mozilla-firebird.mime: Install mime type handlers for firebird. + * debian/mozilla-firebird.links: Link + /usr/lib/mozilla-firebird/defaults/pref to /etc/mozilla-firebird/pref + * debian/mozilla-firebird.install: Don't install the inspector.jar. + + -- Eric Dorland <eric@debian.org> Mon, 26 May 2003 00:28:40 -0400 + +mozilla-firebird (0.6-2) unstable; urgency=low + + * debian/rules: + + Add --with-user-appdir=.mozilla-firebird, since it still + defaults to .phoenix. + + Don't use the ${prefix} variable, use /usr, since ${prefix} + doesn't seem to work. + + Use --without-system-nspr. + * debian/mozilla-firebird.install: + + Be picky about what chrome files we install, since there's + quite a few we don't need, and a bunch of empty dirs. + * Excellent patch from Mike Hommey <mh@glandium.org> to add a + update-mozilla-firebird-chrome script. + + -- Eric Dorland <eric@debian.org> Sat, 24 May 2003 13:00:44 -0400 + +mozilla-firebird (0.6-1) unstable; urgency=low + + * New upstream release. + * Renamed to mozilla-firebird. + * Changed phoenix to mozilla-firebird where appropriate. + * debian/mozilla-firebird.links: Add link mozilla-firebird to + MozillaFirebird. + * debian/control: + + Standars-Version to 3.5.10.0. + + Build-depend on gtk2 libs now. + + Build-depend on libidl-dev. + + Add Provides x-www-browser. + * debian/rules: + + Enable building with the gtk2 libs. + + Make mozilla-firebird-xremote-client executable in install target. + * debian/mozilla-firebird.desktop: Added gnome menu entry. + * debian/mozilla-firebird.{prerm,postinst}: Add alternatives to + www-browser and x-www-browser. + + -- Eric Dorland <eric@debian.org> Mon, 19 May 2003 20:43:39 -0400 + +phoenix (0.5-4) unstable; urgency=low + + * debian/control: Depend on fontconfig. + * debian/rules: Add source-tarball-from-cvs to build a orig tarball from + a checked out cvs tree. Now I can provide source package. And there + was much rejoicing. + + -- Eric Dorland <eric@debian.org> Fri, 17 Jan 2003 21:06:47 -0500 + +phoenix (0.5-3) unstable; urgency=low + + * debian/phoenix-xremote-client: Added to send remote commands to + phoenix. Just a wrapper that calls phoenix-bin -remote. + * debian/phoenix-runner: + + Use phoenix-xremote-client. + + Replace MOZILLA_DSP with PHOENIX_DSP. + * debian/phoenixrc: phoenix-runner uses this file to determine what dsp + to start. + * debian/phoenix.install: + + Install phoenix-xremote-client, and don't install + mozilla-xremote-client. + + Install phoenixrc. + + -- Eric Dorland <eric@debian.org> Mon, 23 Dec 2002 02:52:21 -0500 + +phoenix (0.5-2) unstable; urgency=low + + * debian/control: + + Add Provides: www-browser. + + Build-depend on libxft2-dev, libnspr-dev. + * debian/rules: + + Use xft and the system nspr. + + Install phoenix-runner. + * debian/phoenix-runner: Stolen from the mozilla package to run phoenix. + + -- Eric Dorland <eric@debian.org> Sat, 21 Dec 2002 02:03:11 -0500 + +phoenix (0.5-1) unstable; urgency=low + + * New upstream release. + * debian/phoenix.install: Fix paths to phoenix libs. + * debian/control: + + Standards-Version to 3.5.8 + + Improve build-deps. + * debian/rules: + + Have configure options here, no more .mozconfig. + + Steal some patch code from Colin. + * debian/patches/mozappdir.diff: Change the mozappdir. + + -- Eric Dorland <eric@debian.org> Mon, 9 Dec 2002 02:43:13 -0500 + +phoenix (0.4-3) unstable; urgency=low + + * debian/phoenix.menu: Add menu entry. + * Rebuild to fix libstdc++ dependency. + * .mozonfig: Disable more tests. + + -- Eric Dorland <eric@debian.org> Wed, 20 Nov 2002 19:13:18 -0500 + +phoenix (0.4-2) unstable; urgency=low + + * debian/control: + + Add build-depends. + + Fix section and description. + * .mozconfig: + + Use system zlib. + + -- Eric Dorland <eric@debian.org> Wed, 13 Nov 2002 19:03:52 -0500 + +phoenix (0.4-1) unstable; urgency=low + + * Initial release. + + -- Eric Dorland <eric@debian.org> Mon, 11 Nov 2002 23:09:41 -0500 --- firefox-7.0+build2+nobinonly.orig/debian/compat +++ firefox-7.0+build2+nobinonly/debian/compat @@ -0,0 +1 @@ +5 --- firefox-7.0+build2+nobinonly.orig/debian/firefox-gnome-support.install.in +++ firefox-7.0+build2+nobinonly/debian/firefox-gnome-support.install.in @@ -0,0 +1,7 @@ +%%ifndef MOZ_DISABLE_GNOMEVFS +debian/tmp@MOZ_LIBDIR@/components/libnkgnomevfs.so +%%endif +debian/tmp@MOZ_LIBDIR@/components/libmozgnome.so +%%ifndef MOZ_DISABLE_CONTROL_CENTER +debian/@MOZ_APP_NAME@.xml /usr/share/gnome-control-center/default-apps +%%endif --- firefox-7.0+build2+nobinonly.orig/debian/firefox.menu.in +++ firefox-7.0+build2+nobinonly/debian/firefox.menu.in @@ -0,0 +1,3 @@ +?package(@MOZ_APP_NAME@):needs="x11" section="Applications/Network/Web Browsing" \ + title="@MOZ_DISPLAY_NAME@ Browser" command="/usr/bin/@MOZ_APP_NAME@" hints="Web browsers" \ + icon="/usr/share/pixmaps/@MOZ_APP_NAME@.xpm" --- firefox-7.0+build2+nobinonly.orig/debian/pkgconfig/mozilla-plugin.pc.in +++ firefox-7.0+build2+nobinonly/debian/pkgconfig/mozilla-plugin.pc.in @@ -0,0 +1,8 @@ +prefix=@MOZ_PREFIX@ +sdkdir=@MOZ_SDKDIR@ +includedir=@MOZ_INCDIR@ + +Name: Mozilla Plug-In API +Description: Firefox Plug-In API +Version: @MOZ_VERSION@ +Cflags: -I${includedir} -DXP_UNIX --- firefox-7.0+build2+nobinonly.orig/debian/pkgconfig/mozilla-nspr.pc.in +++ firefox-7.0+build2+nobinonly/debian/pkgconfig/mozilla-nspr.pc.in @@ -0,0 +1,11 @@ +prefix=@MOZ_PREFIX@ +sdkdir=@MOZ_SDKDIR@ +includedir=@MOZ_INCDIR@ + +Name: NSPR +Description: The Netscape Portable Runtime +Version: @MOZ_VERSION@ +Libs: -L${sdkdir}/lib -lplds4 -lplc4 -lnspr4 -lpthread -ldl +Cflags: -I${includedir}/nspr + + --- firefox-7.0+build2+nobinonly.orig/debian/pkgconfig/libxul.pc.in +++ firefox-7.0+build2+nobinonly/debian/pkgconfig/libxul.pc.in @@ -0,0 +1,15 @@ +prefix=@MOZ_PREFIX@ +sdkdir=@MOZ_SDKDIR@ +includedir=@MOZ_INCDIR@ +idldir=@MOZ_IDLDIR@ + +Name: libxul +Description: The Mozilla Runtime and Embedding Engine +Version: @MOZ_VERSION@ +%%ifdef MOZ_USE_SYSTEM_NSPR +Requires: nspr +%%else +Requires: mozilla-nspr +%%endif +Libs: -L${sdkdir}/lib -lxpcomglue_s -lxul -lxpcom -lmozalloc +Cflags: -I${includedir} @WCHAR_CFLAGS@ --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/makefiles.sh +++ firefox-7.0+build2+nobinonly/debian/globalmenu/makefiles.sh @@ -0,0 +1,44 @@ +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is the Mozilla build system. +# +# The Initial Developer of the Original Code is +# the Mozilla Foundation <http://www.mozilla.org/>. +# Portions created by the Initial Developer are Copyright (C) 2007 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Chris Coulson <chris.coulson@canonical.com> +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +add_makefiles " +extensions/globalmenu/Makefile +extensions/globalmenu/chrome/Makefile +extensions/globalmenu/components/Makefile +extensions/globalmenu/components/public/Makefile +extensions/globalmenu/components/src/Makefile +" --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/confvars.sh +++ firefox-7.0+build2+nobinonly/debian/globalmenu/confvars.sh @@ -0,0 +1,4 @@ +MOZ_WEBM=0 +MOZ_OGG=0 +MOZ_WAVE=0 +NECKO_WIFI=0 --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/Makefile.in +++ firefox-7.0+build2+nobinonly/debian/globalmenu/Makefile.in @@ -0,0 +1,57 @@ +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Chris Coulson <chris.coulson@canonical.com> +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +DEPTH = ../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +MODULE = globalmenu +DIRS = \ + components \ + chrome \ + $(NULL) + +XPI_NAME = globalmenu +INSTALL_EXTENSION_ID = globalmenu@ubuntu.com +XPI_PKGNAME = globalmenu + +DIST_FILES = install.rdf + +include $(topsrcdir)/config/rules.mk --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/install.rdf +++ firefox-7.0+build2+nobinonly/debian/globalmenu/install.rdf @@ -0,0 +1,34 @@ +<?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>globalmenu@ubuntu.com</em:id> + <em:version>2.0.1</em:version> + <em:unpack>true</em:unpack> + + <em:targetApplication> + <!-- Firefox --> + <Description> + <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> + <em:minVersion>6.0</em:minVersion> + <em:maxVersion>9.0a1</em:maxVersion> + </Description> + </em:targetApplication> + + <em:targetApplication> + <!-- Thunderbird --> + <Description> + <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id> + <em:minVersion>6.0</em:minVersion> + <em:maxVersion>9.0a1</em:maxVersion> + </Description> + </em:targetApplication> + + <!-- front-end metadata --> + <em:name>Global Menu Bar integration</em:name> + <em:description>This extension integrates the menu bar in to the Unity panel</em:description> + <em:creator>Chris Coulson</em:creator> + <em:homepageURL>http://launchpad.net/globalmenu-extension</em:homepageURL> + </Description> +</RDF> --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/Makefile.in +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/Makefile.in @@ -0,0 +1,54 @@ +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Chris Coulson <chris.coulson@canonical.com> +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +DEPTH = ../../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +MODULE = globalmenu + +DIRS = \ + public \ + src \ + $(NULL) + +XPI_NAME = globalmenu + +include $(topsrcdir)/config/rules.mk --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uGlobalMenuItem.h +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uGlobalMenuItem.h @@ -0,0 +1,104 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef _U_GLOBALMENUITEM_H +#define _U_GLOBALMENUITEM_H + +#include <prtypes.h> +#include <nsCOMPtr.h> +#include <nsStringAPI.h> + +#include <libdbusmenu-glib/server.h> + +#include "uGlobalMenuObject.h" +#include "uMenuChangeObserver.h" + +class nsIContent; +class uGlobalMenuDocListener; +class uGlobalMenuBar; + +enum uMenuItemType { + Normal, + CheckBox, + Radio +}; + +class uGlobalMenuItem: public uGlobalMenuObject, + public uMenuChangeObserver +{ +public: + NS_DECL_UMENUCHANGEOBSERVER + + static uGlobalMenuObject* Create(uGlobalMenuObject *aParent, + uGlobalMenuDocListener *aListener, + nsIContent *aContent, + uGlobalMenuBar *aMenuBar); + + void AboutToShowNotify(); + +private: + uGlobalMenuItem(); + + nsresult Init(uGlobalMenuObject *aParent, + uGlobalMenuDocListener *aListener, + nsIContent *aContent, + uGlobalMenuBar *aMenuBar); + ~uGlobalMenuItem(); + + PRUint32 GetKeyCode(nsAString &aKeyName); + PRUint32 MozKeyCodeToGdkKeyCode(PRUint32 aMozKeyCode); + void SyncAccelFromContent(); + void SyncProperties(); + void SyncTypeAndStateFromContent(); + nsresult ConstructDbusMenuItem(); + static void ItemActivatedCallback(DbusmenuMenuitem *menuItem, + PRUint32 timeStamp, + void *data); + void Activate(); + void UncheckSiblings(); + + nsCOMPtr<nsIContent> mCommandContent; + nsCOMPtr<nsIContent> mKeyContent; + PRUint32 mHandlerID; + PRPackedBool mIsToggle; + PRPackedBool mToggleState; + uMenuItemType mType; +}; + + +#endif --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uGlobalMenuUtils.cpp +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uGlobalMenuUtils.cpp @@ -0,0 +1,82 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include <nsIContent.h> +#include <nsIAtom.h> + +#include "uGlobalMenuObject.h" +#include "uGlobalMenu.h" +#include "uGlobalMenuItem.h" +#include "uGlobalMenuSeparator.h" +#include "uGlobalMenuDummy.h" +#include "uGlobalMenuDocListener.h" +#include "uGlobalMenuBar.h" +#include "uWidgetAtoms.h" + +#include "uDebug.h" + +uGlobalMenuObject* +NewGlobalMenuItem(uGlobalMenuObject *aParent, + uGlobalMenuDocListener *aListener, + nsIContent *aContent, + uGlobalMenuBar *aMenuBar) +{ + TRACE_WITH_CONTENT(aContent); + + if (!aContent->IsXUL()) { + return uGlobalMenuDummy::Create(); + } + + uGlobalMenuObject *menuitem = nsnull; + if (aContent->Tag() == uWidgetAtoms::menu) { + menuitem = uGlobalMenu::Create(aParent, aListener, aContent, aMenuBar); + } else if (aContent->Tag() == uWidgetAtoms::menuitem) { + menuitem = uGlobalMenuItem::Create(aParent, aListener, aContent, aMenuBar); + } else if (aContent->Tag() == uWidgetAtoms::menuseparator) { + menuitem = uGlobalMenuSeparator::Create(aParent, aListener, aContent, aMenuBar); + } + + if (!menuitem) { + // We didn't recognize the tag, or initialization failed. We'll + // insert an invisible dummy node so that the indices between the + // XUL menuand the GlobalMenu stay in sync. + menuitem = uGlobalMenuDummy::Create(); + } + + return menuitem; +} --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uGlobalMenuModule.cpp +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uGlobalMenuModule.cpp @@ -0,0 +1,71 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1998 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Suresh Duddu <dp@netscape.com> + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either of the GNU General Public License Version 2 or later (the "GPL"), + * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include "nsIClassInfoImpl.h" +#include "mozilla/ModuleUtils.h" +#include "uGlobalMenuService.h" +#include "uGlobalMenuLoader.h" + +NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(uGlobalMenuService, Init) +NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(uGlobalMenuLoader, Init) + +NS_DEFINE_NAMED_CID(U_GLOBALMENUSERVICE_CID); +NS_DEFINE_NAMED_CID(U_GLOBALMENULOADER_CID); + +static const mozilla::Module::CIDEntry kGlobalMenuCIDs[] = { + { &kU_GLOBALMENUSERVICE_CID, false, NULL, uGlobalMenuServiceConstructor }, + { &kU_GLOBALMENULOADER_CID, false, NULL, uGlobalMenuLoaderConstructor }, + { NULL } +}; + +static const mozilla::Module::ContractIDEntry kGlobalMenuContracts[] = { + { U_GLOBALMENUSERVICE_CONTRACTID, &kU_GLOBALMENUSERVICE_CID }, + { U_GLOBALMENULOADER_CONTRACTID, &kU_GLOBALMENULOADER_CID }, + { NULL } +}; + +static const mozilla::Module kGlobalMenuModule = { + mozilla::Module::kVersion, + kGlobalMenuCIDs, + kGlobalMenuContracts +}; + +// The following line implements the one-and-only "NSModule" symbol exported from this +// shared library. +NSMODULE_DEFN(uGlobalMenuModule) = &kGlobalMenuModule; --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/Makefile.in +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/Makefile.in @@ -0,0 +1,103 @@ +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Chris Coulson <chris.coulson@canonical.com> +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +DEPTH = ../../../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +IS_COMPONENT = 1 +MODULE = globalmenu +LIBRARY_NAME = globalmenu +MODULE_NAME = uGlobalMenuModule +#USE_STATIC_LIBS = 1 +#EXPORT_LIBRARY = 1 + +XPI_NAME = globalmenu + +CPPSRCS = \ + uGlobalMenuModule.cpp \ + uGlobalMenuLoader.cpp \ + uGlobalMenuService.cpp \ + uGlobalMenuUtils.cpp \ + uGlobalMenuBar.cpp \ + uGlobalMenuSeparator.cpp \ + uGlobalMenuItem.cpp \ + uGlobalMenuDummy.cpp \ + uGlobalMenu.cpp \ + uGlobalMenuDocListener.cpp \ + uGlobalMenuObject.cpp \ + uWidgetAtoms.cpp \ + uDebug.cpp \ + $(NULL) + +ifneq (extensions, $(MOZ_BUILD_APP)) +# Support in-tree builds where we need to figure this out for ourselves +MOZILLA_BRANCH_MAJOR_VERSION=$(shell echo $(MOZILLA_VERSION) | sed -e 's/[ab].*//' -e 's/^\([0-9]*\)\.*\([0-9]*\)\.*\([0-9]*\).*/\1/;') +MOZILLA_BRANCH_MINOR_VERSION=$(shell echo $(MOZILLA_VERSION) | sed -e 's/[ab].*//' -e 's/^\([0-9]*\)\.*\([0-9]*\)\.*\([0-9]*\).*/\2/;') +MOZILLA_BRANCH_MICRO_VERSION=$(shell echo $(MOZILLA_VERSION) | sed -e 's/[ab].*//' -e 's/^\([0-9]*\)\.*\([0-9]*\)\.*\([0-9]*\).*/\3/;') + +ifeq (,$(MOZILLA_BRANCH_MINRO_VERSION)) +MOZILLA_BRANCH_MINOR_VERSION=0 +endif +ifeq (,$(MOZILLA_BRANCH_MICRO_VERSION)) +MOZILLA_BRANCH_MICRO_VERSION=0 +endif +endif + +EXTRA_DSO_LDOPTS += $(XPCOM_GLUE_LDOPTS) \ + $(NSPR_LIBS) \ + $(DBUSMENU_LIBS) \ + $(MOZ_GTK2_LIBS) \ + $(NULL) + +include $(topsrcdir)/config/rules.mk + +CXXFLAGS += $(DBUSMENU_CFLAGS) \ + $(MOZ_GTK2_CFLAGS) \ + $(NULL) + +ifneq (extensions, $(MOZ_BUILD_APP)) +CXXFLAGS += -DMOZILLA_BRANCH_MAJOR_VERSION="$(MOZILLA_BRANCH_MAJOR_VERSION)" \ + -DMOZILLA_BRANCH_MINOR_VERSION="$(MOZILLA_BRANCH_MINOR_VERSION)" \ + -DMOZILLA_BRANCH_MICRO_VERSION="$(MOZILLA_BRANCH_MICRO_VERSION)" +endif + +libs:: + @$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/components/components.manifest "category profile-after-change uGlobalMenuLoader @canonical.com/globalmenu-loader;1" --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uWidgetAtoms.h +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uWidgetAtoms.h @@ -0,0 +1,58 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1998 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Original Author: Mike Pinkerton (pinkerton@netscape.com) + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef _U_WIDGETATOMS_H +#define _U_WIDGETATOMS_H + +#include "prtypes.h" +#include "nscore.h" + +class nsIAtom; + +class uWidgetAtoms { +public: + + static nsresult RegisterAtoms(); + +#define WIDGET_ATOM(_name, _value) static nsIAtom* _name; +#include "uWidgetAtomList.h" +#undef WIDGET_ATOM + +}; + +#endif --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uGlobalMenuSeparator.cpp +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uGlobalMenuSeparator.cpp @@ -0,0 +1,185 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include <nsIAtom.h> +#include <nsDebug.h> +#include <nsIContent.h> + +#include <glib-object.h> +#include <libdbusmenu-glib/server.h> + +#include "uGlobalMenuSeparator.h" +#include "uGlobalMenuBar.h" +#include "uGlobalMenu.h" +#include "uWidgetAtoms.h" + +#include "uDebug.h" + +nsresult +uGlobalMenuSeparator::ConstructDbusMenuItem() +{ + mDbusMenuItem = dbusmenu_menuitem_new(); + if (!mDbusMenuItem) + return NS_ERROR_OUT_OF_MEMORY; + + dbusmenu_menuitem_property_set(mDbusMenuItem, + DBUSMENU_MENUITEM_PROP_TYPE, + "separator"); + + UpdateInfoFromContentClass(); + SyncVisibilityFromContent(); + + return NS_OK; +} + +nsresult +uGlobalMenuSeparator::Init(uGlobalMenuObject *aParent, + uGlobalMenuDocListener *aListener, + nsIContent *aContent, + uGlobalMenuBar *aMenuBar) +{ + NS_ENSURE_ARG(aParent); + NS_ENSURE_ARG(aListener); + NS_ENSURE_ARG(aContent); + NS_ENSURE_ARG(aMenuBar); + + mParent = aParent; + mListener = aListener; + mContent = aContent; + mMenuBar = aMenuBar; + + nsresult rv = mListener->RegisterForContentChanges(mContent, this); + NS_ENSURE_SUCCESS(rv, rv); + + return ConstructDbusMenuItem(); +} + +uGlobalMenuSeparator::uGlobalMenuSeparator(): uGlobalMenuObject(MenuSeparator) +{ + MOZ_COUNT_CTOR(uGlobalMenuSeparator); +} + +uGlobalMenuSeparator::~uGlobalMenuSeparator() +{ + if (mListener) { + mListener->UnregisterForContentChanges(mContent, this); + } + + if (mDbusMenuItem) + g_object_unref(mDbusMenuItem); + + MOZ_COUNT_DTOR(uGlobalMenuSeparator); +} + +/*static*/ uGlobalMenuObject* +uGlobalMenuSeparator::Create(uGlobalMenuObject *aParent, + uGlobalMenuDocListener *aListener, + nsIContent *aContent, + uGlobalMenuBar *aMenuBar) +{ + TRACE_WITH_CONTENT(aContent); + + uGlobalMenuSeparator *menuitem = new uGlobalMenuSeparator(); + if (!menuitem) { + return nsnull; + } + + if (NS_FAILED(menuitem->Init(aParent, aListener, aContent, aMenuBar))) { + delete menuitem; + return nsnull; + } + + return static_cast<uGlobalMenuObject *>(menuitem); +} + +void +uGlobalMenuSeparator::AboutToShowNotify() +{ + if (IsDirty()) { + UpdateInfoFromContentClass(); + SyncVisibilityFromContent(); + + ClearInvalid(); + } else { + UpdateVisibility(); + } +} + +void +uGlobalMenuSeparator::ObserveAttributeChanged(nsIDocument *aDocument, + nsIContent *aContent, + nsIAtom *aAttribute) +{ + NS_ASSERTION(aContent == mContent, "Received an event that wasn't meant for us!"); + + if (IsDirty()) { + return; + } + + if (mParent->GetType() == Menu && + !(static_cast<uGlobalMenu *>(mParent))->IsOpening()) { + Invalidate(); + return; + } + + if (aAttribute == uWidgetAtoms::hidden || + aAttribute == uWidgetAtoms::collapsed) { + SyncVisibilityFromContent(); + } else if (aAttribute == uWidgetAtoms::_class) { + UpdateInfoFromContentClass(); + SyncVisibilityFromContent(); + } +} + +void +uGlobalMenuSeparator::ObserveContentRemoved(nsIDocument *aDocument, + nsIContent *aContainer, + nsIContent *aChild, + PRInt32 aIndexInContainer) +{ + NS_ASSERTION(0, "We can't remove content from a menuseparator!"); +} + +void +uGlobalMenuSeparator::ObserveContentInserted(nsIDocument *aDocument, + nsIContent *aContainer, + nsIContent *aChild, + PRInt32 aIndexInContainer) +{ + NS_ASSERTION(0, "We can't insert content in to a menuseparator!"); +} --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uWidgetAtoms.cpp +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uWidgetAtoms.cpp @@ -0,0 +1,81 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1998 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Original Author: Mike Pinkerton (pinkerton@netscape.com) + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include <uWidgetAtoms.h> +#include <nsDebug.h> +#include <nsIAtomService.h> +#include <nsIAtom.h> +#include <nsServiceManagerUtils.h> +#include <nsStringAPI.h> +#include <nsMemory.h> + +#define WIDGET_ATOM(_name, _value) nsIAtom* uWidgetAtoms::_name = 0; +#include "uWidgetAtomList.h" +#undef WIDGET_ATOM + +struct uWidgetAtom { + const char *raw; + nsIAtom **atom; +}; + +static const uWidgetAtom atoms[] = { +#define WIDGET_ATOM(_name, _value) { _value, &uWidgetAtoms::_name }, +#include "uWidgetAtomList.h" +#undef WIDGET_ATOM +}; + +nsresult +uWidgetAtoms::RegisterAtoms() +{ + nsCOMPtr<nsIAtomService> as = + do_GetService("@mozilla.org/atom-service;1"); + NS_ENSURE_TRUE(as, NS_ERROR_OUT_OF_MEMORY); + + nsAutoString aAtomStr; + nsCAutoString cAtomStr; + + for (PRUint32 i = 0; i < NS_ARRAY_LENGTH(atoms); i++) { + cAtomStr = atoms[i].raw; + CopyUTF8toUTF16(cAtomStr, aAtomStr); + nsresult rv = as->GetAtom(aAtomStr, atoms[i].atom); + NS_ENSURE_SUCCESS(rv, rv); + } + + return NS_OK; +} --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uDebug.cpp +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uDebug.cpp @@ -0,0 +1,43 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include "uDebug.h" + +#ifdef DEBUG_chrisccoulson +PRUint32 FunctionTracer::sDepth = 0; +#endif --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uGlobalMenuSeparator.h +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uGlobalMenuSeparator.h @@ -0,0 +1,75 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef _U_GLOBALMENUSEPARATOR_H +#define _U_GLOBALMENUSEPARATOR_H + +#include "uGlobalMenuObject.h" +#include "uMenuChangeObserver.h" + +class nsIContent; +class uGlobalMenuDocListener; +class uGlobalMenuBar; + +class uGlobalMenuSeparator: public uGlobalMenuObject, + public uMenuChangeObserver +{ +public: + NS_DECL_UMENUCHANGEOBSERVER + + static uGlobalMenuObject* Create(uGlobalMenuObject *aParent, + uGlobalMenuDocListener *aListener, + nsIContent *aContent, + uGlobalMenuBar *aMenuBar); + + void AboutToShowNotify(); + +private: + uGlobalMenuSeparator(); + + nsresult Init(uGlobalMenuObject *aParent, + uGlobalMenuDocListener *aListener, + nsIContent *aContent, + uGlobalMenuBar *aMenuBar); + ~uGlobalMenuSeparator(); + + nsresult ConstructDbusMenuItem(); +}; + + +#endif --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uGlobalMenuDummy.cpp +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uGlobalMenuDummy.cpp @@ -0,0 +1,136 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * Mike Conley <mconley@mozillamessaging.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include <nsIAtom.h> +#include <nsDebug.h> +#include <nsIContent.h> + +#include <glib-object.h> +#include <libdbusmenu-glib/server.h> + +#include "uGlobalMenuDummy.h" +#include "uGlobalMenuBar.h" +#include "uWidgetAtoms.h" + +#include "uDebug.h" + +nsresult +uGlobalMenuDummy::ConstructDbusMenuItem() +{ + mDbusMenuItem = dbusmenu_menuitem_new(); + if (!mDbusMenuItem) + return NS_ERROR_OUT_OF_MEMORY; + + dbusmenu_menuitem_property_set(mDbusMenuItem, + DBUSMENU_MENUITEM_PROP_VISIBLE, + FALSE); + + return NS_OK; +} + +uGlobalMenuDummy::uGlobalMenuDummy(): + uGlobalMenuObject(MenuDummy) +{ + MOZ_COUNT_CTOR(uGlobalMenuDummy); +} + +uGlobalMenuDummy::~uGlobalMenuDummy() +{ + + if (mDbusMenuItem) + g_object_unref(mDbusMenuItem); + + MOZ_COUNT_DTOR(uGlobalMenuDummy); +} + +nsresult +uGlobalMenuDummy::Init() +{ + mParent = nsnull; + mMenuBar = nsnull; + + return ConstructDbusMenuItem(); +} + +/*static*/ uGlobalMenuObject* +uGlobalMenuDummy::Create() +{ + TRACE(); + + uGlobalMenuDummy *menuitem = new uGlobalMenuDummy(); + if (!menuitem) { + return nsnull; + } + + if (NS_FAILED(menuitem->Init())) { + delete menuitem; + return nsnull; + } + + return static_cast<uGlobalMenuObject *>(menuitem); +} + +// GlobalMenuDummy is inert, and does not observe/react to content +// changes. The following methods are included simply to fill out +// the interface. +void +uGlobalMenuDummy::ObserveAttributeChanged(nsIDocument *aDocument, + nsIContent *aContent, + nsIAtom *aAttribute) +{ + +} + +void +uGlobalMenuDummy::ObserveContentRemoved(nsIDocument *aDocument, + nsIContent *aContainer, + nsIContent *aChild, + PRInt32 aIndexInContainer) +{ + +} + +void +uGlobalMenuDummy::ObserveContentInserted(nsIDocument *aDocument, + nsIContent *aContainer, + nsIContent *aChild, + PRInt32 aIndexInContainer) +{ + +} --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uGlobalMenuLoader.h +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uGlobalMenuLoader.h @@ -0,0 +1,77 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include <nsIObserver.h> +#include <nsIWindowMediatorListener.h> +#include <nsIWebProgressListener.h> +#include <nsWeakReference.h> + +#include "uIGlobalMenuService.h" + +#define U_GLOBALMENULOADER_CID \ +{ 0x1e8f2f48, 0xe0a8, 0x4649, { 0x98, 0xef, 0x13, 0x22, 0xc0, 0x3f, 0xf0, 0x8e } } + +#define U_GLOBALMENULOADER_CONTRACTID "@canonical.com/globalmenu-loader;1" + +class nsIXULWindow; +class nsIDocShell; +class nsIWidget; + +class uGlobalMenuLoader: public nsIObserver, + public nsIWindowMediatorListener, + public nsIWebProgressListener, + public nsSupportsWeakReference +{ +public: + NS_DECL_ISUPPORTS + NS_DECL_NSIOBSERVER + NS_DECL_NSIWINDOWMEDIATORLISTENER + NS_DECL_NSIWEBPROGRESSLISTENER + + uGlobalMenuLoader() { }; + ~uGlobalMenuLoader(); + nsresult Init(); + +private: + void RegisterAllMenus(); + void RegisterMenuForWindow(nsIXULWindow *aWindow); + PRBool RegisterMenu(nsIWidget *aWindow, + nsIDocShell *aDocShell); + + nsCOMPtr<uIGlobalMenuService> mService; +}; --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uGlobalMenuDummy.h +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uGlobalMenuDummy.h @@ -0,0 +1,68 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * Mike Conley <mconley@mozillamessaging.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef _U_GLOBALMENUDUMMY_H +#define _U_GLOBALMENUDUMMY_H + +#include "uGlobalMenuObject.h" +#include "uMenuChangeObserver.h" + +class nsIContent; +class uGlobalMenuDocListener; + +class uGlobalMenuDummy: public uGlobalMenuObject, + public uMenuChangeObserver +{ +public: + NS_DECL_UMENUCHANGEOBSERVER + + static uGlobalMenuObject* Create(); + +private: + uGlobalMenuDummy(); + + nsresult Init(); + + ~uGlobalMenuDummy(); + + nsresult ConstructDbusMenuItem(); +}; + + +#endif --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uGlobalMenu.h +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uGlobalMenu.h @@ -0,0 +1,116 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef _U_GLOBALMENU_H +#define _U_GLOBALMENU_H + +#include <prtypes.h> +#include <nsTArray.h> +#include <nsAutoPtr.h> +#include <nsCOMPtr.h> +#include <nsIContent.h> + +#include <libdbusmenu-glib/server.h> + +#include "uGlobalMenuObject.h" +#include "uMenuChangeObserver.h" + +class uGlobalMenuItem; +class uGlobalMenuBar; +class uGlobalMenuDocListener; + +class uGlobalMenu: public uGlobalMenuObject, + public uMenuChangeObserver +{ +public: + NS_DECL_UMENUCHANGEOBSERVER + + static uGlobalMenuObject* Create(uGlobalMenuObject *aParent, + uGlobalMenuDocListener *aListener, + nsIContent *aContent, + uGlobalMenuBar *aMenuBar); + + ~uGlobalMenu(); + + PRBool CanOpen(); + void OpenMenu(); + void AboutToShowNotify(); + PRBool IsOpening() { return !!mOpening; } + +private: + uGlobalMenu(); + + // Initialize the menu structure + nsresult Init(uGlobalMenuObject *aParent, + uGlobalMenuDocListener *aListener, + nsIContent *aContent, + uGlobalMenuBar *aMenuBar); + PRBool InsertMenuObjectAt(uGlobalMenuObject *menuObj, + PRUint32 index); + PRBool AppendMenuObject(uGlobalMenuObject *menuObj); + PRBool RemoveMenuObjectAt(PRUint32 index); + nsresult ConstructDbusMenuItem(); + nsresult Build(); + void SyncProperties(); + void GetMenuPopupFromMenu(nsIContent **aResult); + static PRBool MenuAboutToOpenCallback(DbusmenuMenuitem *menu, + void *data); + static PRBool MenuEventCallback(DbusmenuMenuitem *menu, + const gchar *name, + GVariant *value, + guint timestamp, + void *data); + void AboutToOpen(); + void OnOpen(); + void OnClose(); + void Activate(); + void Deactivate(); + void SetNeedsRebuild() { mNeedsRebuild = PR_TRUE; } + void ClearNeedsRebuild() { mNeedsRebuild = PR_FALSE; } + PRBool DoesNeedRebuild() { return !!mNeedsRebuild; } + + nsCOMPtr<nsIContent> mPopupContent; + nsTArray< nsAutoPtr<uGlobalMenuObject> > mMenuObjects; + PRUint32 mOpenHandlerID; + PRUint32 mEventHandlerID; + PRPackedBool mOpening; + PRPackedBool mNeedsRebuild; + PRPackedBool mPrimed; +}; + +#endif --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uGlobalMenuUtils.h +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uGlobalMenuUtils.h @@ -0,0 +1,104 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef _U_GLOBALMENUFACTORY_H +#define _U_GLOBALMENUFACTORY_H + +#include <gio/gio.h> + +class uGlobalMenuObject; +class uGlobalMenuDocListener; +class nsIContent; +class uGlobalMenuBar; +class nsIAtom; + +class uGlobalMenuRequestAutoCanceller +{ +public: + static uGlobalMenuRequestAutoCanceller* Create() + { + uGlobalMenuRequestAutoCanceller *canceller = + new uGlobalMenuRequestAutoCanceller(); + if (!canceller) { + return nsnull; + } + + if (!canceller->Init()) { + delete canceller; + canceller = nsnull; + } + + return canceller; + } + + GCancellable* GetCancellable() + { + return mCancellable; + } + + void Destroy() + { + if (mCancellable) { + g_object_unref(mCancellable); + mCancellable = nsnull; + } + } + + ~uGlobalMenuRequestAutoCanceller() + { + if (mCancellable) { + g_cancellable_cancel(mCancellable); + g_object_unref(mCancellable); + } + } +private: + uGlobalMenuRequestAutoCanceller() { }; + PRBool Init() + { + mCancellable = g_cancellable_new(); + return mCancellable ? PR_TRUE : PR_FALSE; + } + + GCancellable *mCancellable; +}; + +uGlobalMenuObject* NewGlobalMenuItem(uGlobalMenuObject *aParent, + uGlobalMenuDocListener *aListener, + nsIContent *aContent, + uGlobalMenuBar *aMenuBar); +#endif --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uGlobalMenuDocListener.cpp +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uGlobalMenuDocListener.cpp @@ -0,0 +1,308 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1998 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Josh Aas <josh@mozilla.com> + * Thomas K. Dyas <tom.dyas@gmail.com> + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include <prtypes.h> +#include <nsIDocument.h> +#include <nsIAtom.h> +#include <nsINode.h> +#include <mozilla/dom/Element.h> +#include <nsIContent.h> +#include <nsIDocument.h> + +#include "uGlobalMenuDocListener.h" + +#include "uDebug.h" + +NS_IMPL_ISUPPORTS1(uGlobalMenuDocListener, nsIMutationObserver) + +nsresult +uGlobalMenuDocListener::Init(nsIContent *rootNode) +{ + NS_ENSURE_ARG(rootNode); + + mDocument = rootNode->GetOwnerDoc(); + if (!mDocument) + return NS_ERROR_FAILURE; + mDocument->AddMutationObserver(this); + + return NS_OK; +} + +void +uGlobalMenuDocListener::Destroy() +{ + if (mDocument) { + mDocument->RemoveMutationObserver(this); + } +} + +uGlobalMenuDocListener::uGlobalMenuDocListener() : +#ifdef DEBUG_chrisccoulson + mCount(0), +#endif + mDocument(nsnull) +{ + mContentToObserverTable.Init(); +} + +uGlobalMenuDocListener::~uGlobalMenuDocListener() +{ + NS_ASSERTION(mCount == 0, "Some nodes forgot to unregister listeners"); +} + +void +uGlobalMenuDocListener::CharacterDataWillChange(nsIDocument *aDocument, + nsIContent *aContent, + CharacterDataChangeInfo *aInfo) +{ + +} + +void +uGlobalMenuDocListener::CharacterDataChanged(nsIDocument *aDocument, + nsIContent *aContent, + CharacterDataChangeInfo *aInfo) +{ + +} + +void +uGlobalMenuDocListener::AttributeWillChange(nsIDocument *aDocument, + mozilla::dom::Element *aElement, + PRInt32 aNameSpaceID, + nsIAtom *aAttribute, + PRInt32 aModType) +{ + +} + +void +uGlobalMenuDocListener::AttributeChanged(nsIDocument *aDocument, + mozilla::dom::Element *aElement, + PRInt32 aNameSpaceID, + nsIAtom *aAttribute, + PRInt32 aModType) +{ + if (!aElement) + return; + + nsTArray<uMenuChangeObserver *> listeners; + GetListeners(aElement, listeners); + + for (PRUint32 i = 0; i < listeners.Length(); i++) { + listeners[i]->ObserveAttributeChanged(aDocument, aElement, aAttribute); + } +} + +void +uGlobalMenuDocListener::ContentAppended(nsIDocument *aDocument, + nsIContent *aContainer, + nsIContent *aFirstNewContent, + PRInt32 aNewIndexInContainer) +{ + for (nsIContent* cur = aFirstNewContent; cur; cur = cur->GetNextSibling()) { + ContentInserted(aDocument, aContainer, cur, aNewIndexInContainer); + aNewIndexInContainer++; + } +} + +void +uGlobalMenuDocListener::ContentInserted(nsIDocument *aDocument, + nsIContent *aContainer, + nsIContent *aChild, + PRInt32 aIndexInContainer) +{ + if (!aContainer) + return; + + nsTArray<uMenuChangeObserver *> listeners; + GetListeners(aContainer, listeners); + + for (PRUint32 i = 0; i < listeners.Length(); i++) { + listeners[i]->ObserveContentInserted(aDocument, aContainer, aChild, + aIndexInContainer); + } + + if (listeners.Length() == 0) { + for (PRUint32 i = 0; i < mGlobalObservers.Length(); i++) { + mGlobalObservers[i]->ObserveContentInserted(aDocument, aContainer, + aChild, aIndexInContainer); + } + } +} + +void +uGlobalMenuDocListener::ContentRemoved(nsIDocument *aDocument, + nsIContent *aContainer, + nsIContent *aChild, + PRInt32 aIndexInContainer, + nsIContent *aPreviousSibling) +{ + if (!aContainer) + return; + + nsTArray<uMenuChangeObserver *> listeners; + GetListeners(aContainer, listeners); + + for (PRUint32 i = 0; i < listeners.Length(); i++) { + listeners[i]->ObserveContentRemoved(aDocument, aContainer, aChild, + aIndexInContainer); + } + + if (listeners.Length() == 0) { + for (PRUint32 i = 0; i < mGlobalObservers.Length(); i++) { + mGlobalObservers[i]->ObserveContentRemoved(aDocument, aContainer, aChild, + aIndexInContainer); + } + } +} + +void +uGlobalMenuDocListener::NodeWillBeDestroyed(const nsINode *aNode) +{ + mDocument = nsnull; +} + +void +uGlobalMenuDocListener::ParentChainChanged(nsIContent *aContent) +{ + +} + +nsresult +uGlobalMenuDocListener::RegisterForContentChanges(nsIContent *aContent, + uMenuChangeObserver *aMenuObject) +{ + NS_ENSURE_ARG(aContent); + NS_ENSURE_ARG(aMenuObject); + + nsTArray<uMenuChangeObserver *> *listeners; + if (!mContentToObserverTable.Get(aContent, &listeners)) { + listeners = new nsTArray<uMenuChangeObserver *>(); + mContentToObserverTable.Put(aContent, listeners); + } + + for (PRUint32 i = 0; i < listeners->Length(); i++) { + if (listeners->ElementAt(i) == aMenuObject) { + return NS_ERROR_FAILURE; + } + } + + listeners->AppendElement(aMenuObject); +#ifdef DEBUG_chrisccoulson + mCount++; +#endif + return NS_OK; +} + +nsresult +uGlobalMenuDocListener::UnregisterForContentChanges(nsIContent *aContent, + uMenuChangeObserver *aMenuObject) +{ + NS_ENSURE_ARG(aContent); + NS_ENSURE_ARG(aMenuObject); + + nsTArray<uMenuChangeObserver *> *listeners; + if (!mContentToObserverTable.Get(aContent, &listeners)) { + return NS_ERROR_FAILURE; + } + + PRUint32 length = listeners->Length(); + for (PRUint32 i = 0; i < length; i++) { + if (listeners->ElementAt(i) == aMenuObject) { + listeners->RemoveElementAt(i); +#ifdef DEBUG_chrisccoulson + mCount--; +#endif + } + } + + nsresult rv = listeners->Length() < length ? NS_OK : NS_ERROR_FAILURE; + + if (listeners->Length() == 0) { + mContentToObserverTable.Remove(aContent); + } + + return rv; +} + +nsresult +uGlobalMenuDocListener::RegisterForAllChanges(uMenuChangeObserver *aMenuObject) +{ + NS_ENSURE_ARG(aMenuObject); + + PRUint32 count = mGlobalObservers.Length(); + for (PRUint32 i = 0; i < count; i ++) { + if (mGlobalObservers[i] == aMenuObject) { + // Don't add more than once + return NS_ERROR_FAILURE; + } + } + + mGlobalObservers.AppendElement(aMenuObject); + return NS_OK; +} + +nsresult +uGlobalMenuDocListener::UnregisterForAllChanges(uMenuChangeObserver *aMenuObject) +{ + NS_ENSURE_ARG(aMenuObject); + + PRUint32 count = mGlobalObservers.Length(); + for (PRUint32 i = 0; i < count; i++) { + if (mGlobalObservers[i] == aMenuObject) { + mGlobalObservers.RemoveElementAt(i); + return NS_OK; + } + } + + return NS_ERROR_FAILURE; +} + +void +uGlobalMenuDocListener::GetListeners(nsIContent *aContent, + nsTArray<uMenuChangeObserver *>& _result) +{ + nsTArray<uMenuChangeObserver *> *listeners; + if (mContentToObserverTable.Get(aContent, &listeners)) { + _result.ReplaceElementsAt(0, _result.Length(), listeners->Elements(), + listeners->Length()); + } +} --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uGlobalMenuService.cpp +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uGlobalMenuService.cpp @@ -0,0 +1,429 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include <nsCOMPtr.h> +#include <nsIContent.h> +#include <nsIObserverService.h> +#include <nsStringAPI.h> +#include <nsDebug.h> +#include <nsComponentManagerUtils.h> +#include <nsIInterfaceRequestorUtils.h> +#include <nsServiceManagerUtils.h> +#include <nsIWidget.h> +#include <nsIWindowMediator.h> +#include <nsIBaseWindow.h> +#include <nsIXULWindow.h> +#include <prenv.h> + +#include <glib-object.h> + +#include "uGlobalMenuService.h" +#include "uWidgetAtoms.h" + +#include "uDebug.h" + +class RegisterWindowCbData +{ +public: + RegisterWindowCbData(uGlobalMenuBar *aMenu, + uGlobalMenuRequestAutoCanceller *aCanceller): + mMenu(aMenu), + mCanceller(aCanceller) + { + mCancellable = mCanceller->GetCancellable(); + if (mCancellable) { + g_object_ref(mCancellable); + mID = g_cancellable_connect(mCancellable, G_CALLBACK(Cancelled), this, nsnull); + } + } + + static void Cancelled(GCancellable *aCancellable, + gpointer userdata) + { + RegisterWindowCbData *cbdata = + static_cast<RegisterWindowCbData *>(userdata); + + // If the request was cancelled, then invalidate pointers to objects + // that might not exist anymore + + cbdata->mMenu = nsnull; + cbdata->mCanceller = nsnull; + } + + uGlobalMenuBar* GetMenuBar() { return mMenu; } + + ~RegisterWindowCbData() + { + if (mCancellable) { + g_cancellable_disconnect(mCancellable, mID); + g_object_unref(mCancellable); + } + } + +private: + uGlobalMenuBar *mMenu; + GCancellable *mCancellable; + uGlobalMenuRequestAutoCanceller *mCanceller; + PRUint32 mID; +}; + +NS_IMPL_ISUPPORTS2(uGlobalMenuService, uIGlobalMenuService, nsIWindowMediatorListener) + +/*static*/ void +uGlobalMenuService::ProxyCreatedCallback(GObject *object, + GAsyncResult *res, + gpointer userdata) +{ + uGlobalMenuService *self = static_cast<uGlobalMenuService *>(userdata); + + GError *error = NULL; + GDBusProxy *proxy = g_dbus_proxy_new_for_bus_finish(res, &error); + + if (error && g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { + // We should only get cancelled if the service was destroyed. + // In this case, it is no longer safe to proceed + return; + } + + self->mCancellable->Destroy(); + self->mCancellable = nsnull; + + self->mDbusProxy = proxy; + + if (!proxy) { + NS_WARNING("Failed to create proxy for AppMenu registrar"); + self->SetOnline(PR_FALSE); + return; + } + + self->mNOCHandlerID = g_signal_connect(self->mDbusProxy, "notify::g-name-owner", + G_CALLBACK(NameOwnerChangedCallback), + userdata); + + char *owner = g_dbus_proxy_get_name_owner(self->mDbusProxy); + self->SetOnline(owner ? PR_TRUE : PR_FALSE); + + if (error) { + g_error_free(error); + } + g_free(owner); +} + +/*static*/ void +uGlobalMenuService::NameOwnerChangedCallback(GObject *object, + GParamSpec *pspec, + gpointer userdata) +{ + uGlobalMenuService *self = static_cast<uGlobalMenuService *>(userdata); + + char *owner = g_dbus_proxy_get_name_owner(self->mDbusProxy); + self->SetOnline(owner ? PR_TRUE : PR_FALSE); + g_free(owner); +} + +/*static*/ void +uGlobalMenuService::RegisterWindowCallback(GObject *object, + GAsyncResult *res, + gpointer userdata) +{ + RegisterWindowCbData *data = + static_cast<RegisterWindowCbData *>(userdata); + + uGlobalMenuBar *menu = data->GetMenuBar(); + GDBusProxy *proxy = G_DBUS_PROXY(object); + + GError *error = NULL; + // RegisterWindowCbData owns a reference to the proxy + GVariant *result = g_dbus_proxy_call_finish(proxy, res, &error); + if (result) { + g_variant_unref(result); + } + + if (error && g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { + // The call is cancelled if uGlobalMenuService goes away or the + // panel service goes offline. In either case, the menu has now + // been destroyed + delete data; + return; + } + + if (menu && !PR_GetEnv("GLOBAL_MENU_DEBUG")) { + // This check is probably bogus. menu should only be invalid if + // the request was cancelled, in which case, we should have + // returned already + menu->SetMenuBarRegistered(error ? PR_FALSE : PR_TRUE); + } + + if (error) { + g_error_free(error); + } + + delete data; +} + +void +uGlobalMenuService::DestroyMenus() +{ + PRUint32 count = mMenus.Length(); + for (PRUint32 j = 0; j < count; j++) { + mMenus.RemoveElementAt(0); + } +} + +void +uGlobalMenuService::DestroyMenuForWidget(nsIWidget *aWidget) +{ + for (PRUint32 i = 0; i < mMenus.Length(); i++) { + if (mMenus[i]->WidgetHasSameToplevelWindow(aWidget)) { + mMenus.RemoveElementAt(i); + return; + } + } +} + +void +uGlobalMenuService::SetOnline(PRBool aOnline) +{ + if (mOnline != !!aOnline) { + mOnline = !!aOnline; + nsCOMPtr<nsIObserverService> os = + do_GetService("@mozilla.org/observer-service;1"); + if (os) { + os->NotifyObservers(nsnull, mOnline ? "native-menu-service:online" : "native-menu-service:offline", 0); + } + + if (!mOnline) { + DestroyMenus(); + } + } +} + +PRBool +uGlobalMenuService::WidgetHasGlobalMenu(nsIWidget *aWidget) +{ + for (PRUint32 i = 0; i < mMenus.Length(); i++) { + if (mMenus[i]->WidgetHasSameToplevelWindow(aWidget)) + return PR_TRUE; + } + return PR_FALSE; +} + +nsresult +uGlobalMenuService::Init() +{ + nsresult rv; + rv = uWidgetAtoms::RegisterAtoms(); + NS_ENSURE_SUCCESS(rv, rv); + + mCancellable = uGlobalMenuRequestAutoCanceller::Create(); + + GDBusProxyFlags flags = static_cast<GDBusProxyFlags>( + G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES | + G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS | + G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START); + + g_dbus_proxy_new_for_bus(G_BUS_TYPE_SESSION, + flags, + NULL, + "com.canonical.AppMenu.Registrar", + "/com/canonical/AppMenu/Registrar", + "com.canonical.AppMenu.Registrar", + mCancellable->GetCancellable(), + ProxyCreatedCallback, + this); + + nsCOMPtr<nsIWindowMediator> wm = + do_GetService("@mozilla.org/appshell/window-mediator;1"); + NS_ENSURE_TRUE(wm, NS_ERROR_OUT_OF_MEMORY); + + wm->AddListener(this); + return rv; +} + +uGlobalMenuService::~uGlobalMenuService() +{ + nsCOMPtr<nsIWindowMediator> wm = + do_GetService("@mozilla.org/appshell/window-mediator;1"); + + if (wm) { + wm->RemoveListener(this); + } + + if (mDbusProxy) { + g_signal_handler_disconnect(mDbusProxy, mNOCHandlerID); + g_object_unref(mDbusProxy); + } +} + +NS_IMETHODIMP +uGlobalMenuService::CreateGlobalMenuBar(nsIWidget *aParent, + nsIContent *aMenuBarNode) +{ + NS_ENSURE_ARG(aParent); + NS_ENSURE_ARG(aMenuBarNode); + + NS_ENSURE_TRUE(mOnline, NS_ERROR_FAILURE); + + // Sanity check to make sure we don't register more than one menu + // for each top-level window + if (WidgetHasGlobalMenu(aParent)) + return NS_ERROR_FAILURE; + + uGlobalMenuBar *menu = uGlobalMenuBar::Create(aParent, aMenuBarNode); + NS_ENSURE_TRUE(menu, NS_ERROR_FAILURE); + + mMenus.AppendElement(menu); + + return NS_OK; +} + +/* [noscript, notxpcom] void registerGlobalMenuBar (in uGlobalMenuBarPtr menuBar); */ +NS_IMETHODIMP_(void) +uGlobalMenuService::RegisterGlobalMenuBar(uGlobalMenuBar *aMenuBar, + uGlobalMenuRequestAutoCanceller *aCanceller) +{ + if (mOnline != PR_TRUE) + return; + + if (!aMenuBar) + return; + + if (!aCanceller) { + return; + } + + PRUint32 xid = aMenuBar->GetWindowID(); + nsCAutoString path(aMenuBar->GetMenuPath()); + if (xid == 0 || path.IsEmpty()) + return; + + RegisterWindowCbData *data = + new RegisterWindowCbData(aMenuBar, + aCanceller); + if (!data) { + return; + } + + g_dbus_proxy_call(mDbusProxy, + "RegisterWindow", + g_variant_new("(uo)", xid, path.get()), + G_DBUS_CALL_FLAGS_NONE, + -1, + aCanceller->GetCancellable(), + RegisterWindowCallback, + data); +} + +/* void registerNotification (in nsIObserver observer); */ +NS_IMETHODIMP +uGlobalMenuService::RegisterNotification(nsIObserver *aObserver) +{ + NS_ENSURE_ARG(aObserver); + + nsCOMPtr<nsIObserverService> os = + do_GetService("@mozilla.org/observer-service;1"); + NS_ENSURE_TRUE(os, NS_ERROR_OUT_OF_MEMORY); + + nsresult rv; + rv = os->AddObserver(aObserver, "native-menu-service:online", PR_FALSE); + NS_ENSURE_SUCCESS(rv, rv); + + rv = os->AddObserver(aObserver, "native-menu-service:offline", PR_FALSE); + NS_ENSURE_SUCCESS(rv, rv); + + rv = os->AddObserver(aObserver, "native-menu-service:popup-open", PR_FALSE); + return rv; +} + +/* void unregisterNotification (in nsIObserver observer); */ +NS_IMETHODIMP +uGlobalMenuService::UnregisterNotification(nsIObserver *aObserver) +{ + NS_ENSURE_ARG(aObserver); + + nsCOMPtr<nsIObserverService> os = + do_GetService("@mozilla.org/observer-service;1"); + NS_ENSURE_TRUE(os, NS_ERROR_OUT_OF_MEMORY); + + nsresult rv; + rv = os->RemoveObserver(aObserver, "native-menu-service:online"); + NS_ENSURE_SUCCESS(rv, rv); + + rv = os->RemoveObserver(aObserver, "native-menu-service:offline"); + NS_ENSURE_SUCCESS(rv, rv); + + rv = os->RemoveObserver(aObserver, "native-menu-service:popup-open"); + return rv; +} + +/* readonly attribute boolean online; */ +NS_IMETHODIMP +uGlobalMenuService::GetOnline(PRBool *online) +{ + NS_ENSURE_ARG_POINTER(online); + *online = !!mOnline; + return NS_OK; +} + +NS_IMETHODIMP +uGlobalMenuService::OnWindowTitleChange(nsIXULWindow *window, + const PRUnichar *newTitle) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +uGlobalMenuService::OnOpenWindow(nsIXULWindow *window) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +uGlobalMenuService::OnCloseWindow(nsIXULWindow *window) +{ + nsCOMPtr<nsIBaseWindow> baseWindow = do_QueryInterface(window); + NS_ENSURE_TRUE(baseWindow, NS_ERROR_INVALID_ARG); + + nsCOMPtr<nsIWidget> widget; + baseWindow->GetMainWidget(getter_AddRefs(widget)); + NS_ENSURE_TRUE(widget, NS_ERROR_FAILURE); + + DestroyMenuForWidget(widget); + + return NS_OK; +} --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uMenuChangeObserver.h +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uMenuChangeObserver.h @@ -0,0 +1,80 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Communicator. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corp. + * Portions created by the Initial Developer are Copyright (C) 1999 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Mike Pinkerton + * Josh Aas <josh@mozilla.com> (decomtaminate) + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef _U_MENUCHANGEOBSERVER_H +#define _U_MENUCHANGEOBSERVER_H + +class nsIContent; +class nsIDocument; +class nsIAtom; + +#define NS_DECL_UMENUCHANGEOBSERVER \ +void ObserveAttributeChanged(nsIDocument *aDocument, nsIContent *aContent, nsIAtom *aAttribute); \ +void ObserveContentRemoved(nsIDocument *aDocument, nsIContent *aContainer, nsIContent *aChild, PRInt32 aIndexInContainer); \ +void ObserveContentInserted(nsIDocument *aDocument, nsIContent *aContainer, nsIContent *aChild, PRInt32 aIndexInContainer); + +// Something that wants to be alerted to changes in attributes or changes in +// its corresponding content object. +// +// This interface is used by our menu code so we only have to have one +// nsIDocumentObserver. +// +// Any class that implements this interface must take care to unregister itself +// on deletion. +class uMenuChangeObserver +{ +public: + // XXX use dom::Element + virtual void ObserveAttributeChanged(nsIDocument *aDocument, + nsIContent *aContent, + nsIAtom *aAttribute)=0; + + virtual void ObserveContentRemoved(nsIDocument *aDocument, + nsIContent *aContainer, + nsIContent *aChild, + PRInt32 aIndexInContainer)=0; + + virtual void ObserveContentInserted(nsIDocument *aDocument, + nsIContent *aContainer, + nsIContent *aChild, + PRInt32 aIndexInContainer)=0; +}; + +#endif --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uGlobalMenuObject.h +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uGlobalMenuObject.h @@ -0,0 +1,174 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef _U_GLOBALMENUBASE_H +#define _U_GLOBALMENUBASE_H + +#include <nsIContent.h> +#include <nsCOMPtr.h> +#include <nsAutoPtr.h> +#include <imgIDecoderObserver.h> +#include <imgIRequest.h> +#include <imgIContainerObserver.h> +#include <nsThreadUtils.h> +#include <imgILoader.h> + +#include <libdbusmenu-glib/server.h> + +#include "uGlobalMenuDocListener.h" + +enum uMenuObjectType { + MenuBar, + Menu, + MenuItem, + MenuSeparator, + MenuDummy +}; + +class uGlobalMenuObject; +class uGlobalMenuBar; + +#define UGM_BLOCK_EVENTS_FOR_CURRENT_SCOPE() \ + uGlobalMenuObjectEventBlocker _event_blocker(this); +#define UGM_ENSURE_EVENTS_UNBLOCKED() \ + if (mEventsBlocked) { \ + DEBUG_WITH_THIS_MENUOBJECT("Events are blocked on this node"); \ + return; \ + } + +class uGlobalMenuIconLoader: public imgIDecoderObserver, + public nsRunnable +{ + friend class uGlobalMenuObject; +public: + NS_DECL_ISUPPORTS + NS_DECL_IMGIDECODEROBSERVER + NS_DECL_IMGICONTAINEROBSERVER + NS_DECL_NSIRUNNABLE + + void LoadIcon(); + + uGlobalMenuIconLoader(uGlobalMenuObject *aMenuItem): + mMenuItem(aMenuItem) { }; + ~uGlobalMenuIconLoader() { }; + +protected: + void Destroy(); + +private: + void ClearIcon(); + PRBool ShouldShowIcon(); + + PRBool mIconLoaded; + uGlobalMenuObject *mMenuItem; + nsCOMPtr<nsIContent> mContent; + nsCOMPtr<imgIRequest> mIconRequest; + nsIntRect mImageRect; + static PRPackedBool sImagesInMenus; + static nsCOMPtr<imgILoader> sLoader; +}; + +class uGlobalMenuObject +{ + friend class uGlobalMenuIconLoader; + friend class uGlobalMenuObjectEventBlocker; +public: + uGlobalMenuObject (uMenuObjectType aType): mDbusMenuItem(nsnull), + mListener(nsnull), + mParent(nsnull), + mType(aType), + mEventsBlocked(PR_FALSE), + mDirty(PR_FALSE) + { }; + DbusmenuMenuitem* GetDbusMenuItem() { return mDbusMenuItem; } + uGlobalMenuObject* GetParent() { return mParent; } + uMenuObjectType GetType() { return mType; } + void GetContent(nsIContent **_retval); + virtual void AboutToShowNotify() { }; + virtual ~uGlobalMenuObject() { }; + +protected: + void SyncLabelFromContent(nsIContent *aContent); + void SyncLabelFromContent(); + void SyncVisibilityFromContent(); + void SyncSensitivityFromContent(nsIContent *aContent); + void SyncSensitivityFromContent(); + void SyncIconFromContent(); + void UpdateInfoFromContentClass(); + void UpdateVisibility(); + void DestroyIconLoader(); + PRBool WithFavicon() { return !!mWithFavicon; } + PRBool IsHidden(); + void Invalidate() { mDirty = PR_TRUE; } + void ClearInvalid() { mDirty = PR_FALSE; } + PRBool IsDirty() { return !!mDirty; } + + nsCOMPtr<nsIContent> mContent; + DbusmenuMenuitem *mDbusMenuItem; + nsRefPtr<uGlobalMenuDocListener> mListener; + uGlobalMenuObject *mParent; + uMenuObjectType mType; + uGlobalMenuBar *mMenuBar; + PRPackedBool mContentVisible; + PRPackedBool mEventsBlocked; + +private: + PRBool ShouldShowOnlyForKb() { return !!mShowOnlyForKb; } + + nsRefPtr<uGlobalMenuIconLoader> mIconLoader; + PRPackedBool mWithFavicon; + PRPackedBool mShowOnlyForKb; + PRPackedBool mDirty; +}; + +class uGlobalMenuObjectEventBlocker +{ +public: + uGlobalMenuObjectEventBlocker(uGlobalMenuObject *aMenuObject): + mMenuObject(aMenuObject) + { + mMenuObject->mEventsBlocked = PR_TRUE; + } + + ~uGlobalMenuObjectEventBlocker() { mMenuObject->mEventsBlocked = PR_FALSE; } + +private: + uGlobalMenuObject *mMenuObject; +}; + +#endif --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uGlobalMenuBar.h +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uGlobalMenuBar.h @@ -0,0 +1,156 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef _U_GLOBALMENUBAR_H +#define _U_GLOBALMENUBAR_H + +#include <prtypes.h> +#include <nsTArray.h> +#include <nsAutoPtr.h> +#include <nsStringAPI.h> +#include <nsIDOMEventTarget.h> +#include <nsIContent.h> +#include <nsIDOMEventListener.h> + +#include <libdbusmenu-glib/server.h> +#include <gtk/gtk.h> + +#include "uMenuChangeObserver.h" +#include "uGlobalMenuObject.h" +#include "uGlobalMenuUtils.h" + +// Meh. X.h defines this +#ifdef KeyPress +# undef KeyPress +#endif + +class nsIObserver; +class nsIWidget; +class nsIDOMEvent; +class uGlobalMenuService; +class uGlobalMenu; +class uGlobalMenuBar; +class nsIDOMKeyEvent; + +class uGlobalMenuBarListener: public nsIDOMEventListener +{ +public: + NS_DECL_ISUPPORTS + NS_DECL_NSIDOMEVENTLISTENER + + uGlobalMenuBarListener(uGlobalMenuBar *aMenuBar): + mMenuBar(aMenuBar) { }; + ~uGlobalMenuBarListener() { }; + +private: + uGlobalMenuBar *mMenuBar; +}; + +class uGlobalMenuBar: public uGlobalMenuObject, + public uMenuChangeObserver +{ + friend class uGlobalMenuBarListener; +public: + NS_DECL_UMENUCHANGEOBSERVER + + static uGlobalMenuBar* Create(nsIWidget *aWindow, + nsIContent *aMenuBar); + ~uGlobalMenuBar(); + + // Return the native ID of the window + PRUint32 GetWindowID(); + + // Returns the path of the menubar on the session bus + const char* GetMenuPath(); + + // Checks if the menubar shares the same top level window as the + // specified nsIWidget + PRBool WidgetHasSameToplevelWindow(nsIWidget *aWidget); + + // Returns whether the menu was opened via a keyboard shortcut + PRBool OpenedByKeyboard() { return !!mOpenedByKeyboard; } + + // Called from the menu service. Used to hide the DOM element for the menubar + void SetMenuBarRegistered(PRBool aRegistered); + + PRBool IsRegistered() { return mCancellable == nsnull; } + +protected: + void Focus(); + void Blur(); + nsresult KeyPress(nsIDOMEvent *aKeyEvent); + nsresult KeyUp(nsIDOMEvent *aKeyEvent); + nsresult KeyDown(nsIDOMEvent *aKeyEvent); +private: + uGlobalMenuBar(); + // Initialize the menu structure + nsresult Init(nsIWidget *aWindow, + nsIContent *aMenuBar); + + GtkWidget* WidgetToGTKWindow(nsIWidget *aWidget); + nsresult Build(); + PRUint32 GetModifiersFromEvent(nsIDOMKeyEvent *aKeyEvent); + PRBool ShouldHandleKeyEvent(nsIDOMEvent *aKeyEvent); + + PRBool RemoveMenuObjectAt(PRUint32 index); + PRBool InsertMenuObjectAt(uGlobalMenuObject *menu, + PRUint32 index); + PRBool AppendMenuObject(uGlobalMenuObject *menu); + PRBool ShouldParentStayVisible(nsIContent *aContent); + PRBool IsParentOfMenuBar(nsIContent *aContent); + void SetXULMenuBarHidden(PRBool hidden); + + DbusmenuServer *mServer; + GtkWidget *mTopLevel; + nsCString mPath; + + nsCOMPtr<nsIContent> mHiddenElement; + nsCOMPtr<nsIDOMEventTarget> mDocTarget; + PRPackedBool mRestoreHidden; + PRPackedBool mXULMenuHidden; + nsRefPtr<uGlobalMenuBarListener> mEventListener; + PRInt32 mAccessKey; + PRUint32 mAccessKeyMask; + PRPackedBool mOpenedByKeyboard; + nsAutoPtr<uGlobalMenuRequestAutoCanceller> mCancellable; + + // Should probably have a container class and subclass that + nsTArray< nsAutoPtr<uGlobalMenuObject> > mMenuObjects; +}; + +#endif --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uGlobalMenuLoader.cpp +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uGlobalMenuLoader.cpp @@ -0,0 +1,311 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include <nsServiceManagerUtils.h> +#include <nsIWindowMediator.h> +#include <nsIXULWindow.h> +#include <nsIDocShell.h> +#include <nsIWidget.h> +#include <nsIBaseWindow.h> +#include <nsIContentViewer.h> +#include <nsIDOMDocument.h> +#include <nsIDOMNode.h> +#include <nsIDOMNodeList.h> +#include <nsIContent.h> +#include <nsIWebProgress.h> +#include <nsIInterfaceRequestorUtils.h> +#include <nsIDOMWindow.h> +#include <nsPIDOMWindow.h> + +#include "uIGlobalMenuService.h" +#include "uGlobalMenuLoader.h" + +#include "uDebug.h" + +// XXX: The sole purpose of this class is to listen for new nsIXULWindows +// and do the task that xpfe/appshell/src/nsWebShellWindow.cpp +// would be doing if this extension were part of Mozilla core. The reason +// it is an entirely separate entity is so that the menubar service +// implementation is as close as possible to how it might look inside Mozilla + +void +uGlobalMenuLoader::RegisterMenuForWindow(nsIXULWindow *aWindow) +{ + nsCOMPtr<nsIBaseWindow> baseWindow = do_QueryInterface(aWindow); + if (!baseWindow) + return; + + nsCOMPtr<nsIWidget> mainWidget; + baseWindow->GetMainWidget(getter_AddRefs(mainWidget)); + if (!mainWidget) + return; + + nsCOMPtr<nsIDocShell> docShell; + aWindow->GetDocShell(getter_AddRefs(docShell)); + if (!docShell) + return; + + PRBool res = RegisterMenu(mainWidget, docShell); + + if (!res) { + // If we've been called off a window open event from the window mediator, + // then the document probably hasn't loaded yet. To fix this, we set up a progress + // listener on the docshell, so we can do the actual menu load once the + // document has finished loading + nsCOMPtr<nsIWebProgress> progress = do_GetInterface(docShell); + if (progress) { + progress->AddProgressListener(this, nsIWebProgress::NOTIFY_STATE_NETWORK); + } + } +} + +PRBool +uGlobalMenuLoader::RegisterMenu(nsIWidget *aWindow, + nsIDocShell *aDocShell) +{ + nsCOMPtr<nsIContentViewer> cv; + aDocShell->GetContentViewer(getter_AddRefs(cv)); + if (!cv) + return PR_FALSE; + + nsIDocument *doc = cv->GetDocument(); + nsCOMPtr<nsIDOMDocument> domDoc = do_QueryInterface(doc); + if (!domDoc) + return PR_FALSE; + + nsresult rv; + nsCOMPtr<nsIDOMNodeList> elements; + rv = domDoc->GetElementsByTagNameNS(NS_LITERAL_STRING("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"), + NS_LITERAL_STRING("menubar"), + getter_AddRefs(elements)); + if (NS_FAILED(rv) || !elements) + return PR_TRUE; + + nsCOMPtr<nsIDOMNode> menubar; + elements->Item(0, getter_AddRefs(menubar)); + if (!menubar) + return PR_TRUE; + + nsCOMPtr<nsIContent> menubarContent = do_QueryInterface(menubar); + // XXX: Should we do anything with errors here? + mService->CreateGlobalMenuBar(aWindow, menubarContent); + + return PR_TRUE; +} + +void +uGlobalMenuLoader::RegisterAllMenus() +{ + nsCOMPtr<nsIWindowMediator> wm = + do_GetService("@mozilla.org/appshell/window-mediator;1"); + if (!wm) { + return; + } + + nsCOMPtr<nsISimpleEnumerator> iter; + wm->GetXULWindowEnumerator(nsnull, getter_AddRefs(iter)); + if (!iter) { + return; + } + + PRBool hasMore; + iter->HasMoreElements(&hasMore); + + while (hasMore) { + nsCOMPtr<nsISupports> elem; + iter->GetNext(getter_AddRefs(elem)); + iter->HasMoreElements(&hasMore); + if (!elem) + continue; + + nsCOMPtr<nsIXULWindow> xulWindow = do_QueryInterface(elem); + if (!xulWindow) + continue; + + RegisterMenuForWindow(xulWindow); + } +} + +NS_IMPL_ISUPPORTS3(uGlobalMenuLoader, nsIObserver, nsIWebProgressListener, nsISupportsWeakReference) + +nsresult +uGlobalMenuLoader::Init() +{ + mService = do_GetService("@canonical.com/globalmenu-service;1"); + NS_ENSURE_TRUE(mService, NS_ERROR_OUT_OF_MEMORY); + + mService->RegisterNotification(this); + + nsCOMPtr<nsIWindowMediator> wm = + do_GetService("@mozilla.org/appshell/window-mediator;1"); + NS_ENSURE_TRUE(wm, NS_ERROR_OUT_OF_MEMORY); + + wm->AddListener(this); + + PRBool online; + mService->GetOnline(&online); + if (online) { + RegisterAllMenus(); + } + + return NS_OK; +} + +uGlobalMenuLoader::~uGlobalMenuLoader() +{ + mService->UnregisterNotification(this); + + nsCOMPtr<nsIWindowMediator> wm = + do_GetService("@mozilla.org/appshell/window-mediator;1"); + + if (wm) { + wm->RemoveListener(this); + } +} + +NS_IMETHODIMP +uGlobalMenuLoader::Observe(nsISupports *aSubject, + const char *aTopic, + const PRUnichar *aData) +{ + if (strcmp(aTopic, "native-menu-service:online") == 0) { + RegisterAllMenus(); + } + + return NS_OK; +} + +/* void onWindowTitleChange (in nsIXULWindow window, in wstring newTitle); */ +NS_IMETHODIMP +uGlobalMenuLoader::OnWindowTitleChange(nsIXULWindow *window, + const PRUnichar *newTitle) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +/* void onOpenWindow (in nsIXULWindow window); */ +NS_IMETHODIMP +uGlobalMenuLoader::OnOpenWindow(nsIXULWindow *window) +{ + RegisterMenuForWindow(window); + return NS_OK; +} + +/* void onCloseWindow (in nsIXULWindow window); */ +NS_IMETHODIMP +uGlobalMenuLoader::OnCloseWindow(nsIXULWindow *window) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +uGlobalMenuLoader::OnStateChange(nsIWebProgress *aWebProgress, + nsIRequest *aRequest, + PRUint32 aStateFlags, + nsresult aStatus) +{ + // Borrowed from nsWebShellWindow.cpp + + // If the notification is not about a document finishing, then just + // ignore it... + if (!(aStateFlags & nsIWebProgressListener::STATE_STOP) || + !(aStateFlags & nsIWebProgressListener::STATE_IS_NETWORK)) { + return NS_OK; + } + + // If this document notification is for a frame then ignore it... + nsCOMPtr<nsIDOMWindow> eventWin; + aWebProgress->GetDOMWindow(getter_AddRefs(eventWin)); + nsCOMPtr<nsPIDOMWindow> eventPWin(do_QueryInterface(eventWin)); + if (eventPWin) { + nsPIDOMWindow *rootPWin = eventPWin->GetPrivateRoot(); + if (eventPWin != rootPWin) + return NS_OK; + } + + aWebProgress->RemoveProgressListener(this); + + nsCOMPtr<nsIBaseWindow> baseWindow = do_GetInterface(aWebProgress); + if (baseWindow) { + nsCOMPtr<nsIWidget> parentWidget; + baseWindow->GetParentWidget(getter_AddRefs(parentWidget)); + + nsCOMPtr<nsIDocShell> docShell = do_GetInterface(aWebProgress); + if (docShell && parentWidget) { + RegisterMenu(parentWidget, docShell); + } + } + + return NS_OK; +} + +NS_IMETHODIMP +uGlobalMenuLoader::OnProgressChange(nsIWebProgress *aWebProgress, + nsIRequest *aRequest, + PRInt32 aCurSelfProgress, + PRInt32 aMaxSelfProgress, + PRInt32 aCurTotalProgress, + PRInt32 aMaxTotalProgress) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +uGlobalMenuLoader::OnLocationChange(nsIWebProgress *aWebProgress, + nsIRequest *aRequest, + nsIURI *aLocation) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +uGlobalMenuLoader::OnStatusChange(nsIWebProgress *aWebProgress, + nsIRequest *aRequest, + nsresult aStatus, + const PRUnichar *aMessage) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +uGlobalMenuLoader::OnSecurityChange(nsIWebProgress *aWebProgress, + nsIRequest *aRequest, + PRUint32 aState) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uGlobalMenuDocListener.h +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uGlobalMenuDocListener.h @@ -0,0 +1,85 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1998 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Josh Aas <josh@mozilla.com> + * Thomas K. Dyas <tom.dyas@gmail.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef _U_GLOBALMENUDOCLISTENER_H +#define _U_GLOBALMENUDOCLISTENER_H + +#include <nsIMutationObserver.h> +#include <nsAutoPtr.h> +#include <nsHashKeys.h> +#include <nsClassHashtable.h> + +#include "uMenuChangeObserver.h" + +#ifdef DEBUG +#define DEBUG_chrisccoulson +#endif + +class nsIContent; +class nsIDocument; + +class uGlobalMenuDocListener: public nsIMutationObserver +{ +public: + NS_DECL_ISUPPORTS + NS_DECL_NSIMUTATIONOBSERVER + + uGlobalMenuDocListener(); + nsresult Init(nsIContent *rootNode); + nsresult RegisterForContentChanges(nsIContent *aContent, + uMenuChangeObserver *aMenuObject); + nsresult UnregisterForContentChanges(nsIContent *aContent, + uMenuChangeObserver *aMenuObject); + nsresult RegisterForAllChanges(uMenuChangeObserver *aMenuObject); + nsresult UnregisterForAllChanges(uMenuChangeObserver *aMenuObject); + void Destroy(); + ~uGlobalMenuDocListener(); + +private: + void GetListeners(nsIContent *aContent, nsTArray<uMenuChangeObserver *>& _result); + + nsIDocument *mDocument; + nsClassHashtable<nsPtrHashKey<nsIContent>, nsTArray<uMenuChangeObserver *> > mContentToObserverTable; + nsTArray<uMenuChangeObserver *> mGlobalObservers; +#ifdef DEBUG_chrisccoulson + PRUint32 mCount; +#endif +}; + +#endif --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uGlobalMenuService.h +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uGlobalMenuService.h @@ -0,0 +1,98 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef _U_GLOBALMENUSERVICE_H +#define _U_GLOBALMENUSERVICE_H + +#include <prtypes.h> +#include <nsTArray.h> +#include <nsCOMPtr.h> +#include <nsIWindowMediatorListener.h> + +#include <glib.h> +#include <gio/gio.h> + +#include "uGlobalMenuBar.h" +#include "uIGlobalMenuService.h" +#include "uGlobalMenuUtils.h" + +#define U_GLOBALMENUSERVICE_CID \ +{ 0xa9e41684, 0xbf71, 0x46e3, { 0x93, 0xbf, 0x3c, 0xda, 0x1e, 0xc6, 0x16, 0x49 } } + +#define U_GLOBALMENUSERVICE_CONTRACTID "@canonical.com/globalmenu-service;1" + +class nsIWidget; + +class uGlobalMenuService: public uIGlobalMenuService, + public nsIWindowMediatorListener +{ +public: + NS_DECL_ISUPPORTS + NS_DECL_UIGLOBALMENUSERVICE + NS_DECL_NSIWINDOWMEDIATORLISTENER + + uGlobalMenuService() : mOnline(PR_FALSE), + mDbusProxy(NULL), + mCancellable(NULL) { }; + nsresult Init(); + + ~uGlobalMenuService(); + +private: + void SetOnline(PRBool aOnline); + static void ProxyCreatedCallback(GObject *object, + GAsyncResult *res, + gpointer userdata); + static void NameOwnerChangedCallback(GObject *object, + GParamSpec *pspec, + gpointer userdata); + static void RegisterWindowCallback(GObject *object, + GAsyncResult *res, + gpointer userdata); + PRBool WidgetHasGlobalMenu(nsIWidget *aWidget); + void DestroyMenus(); + void DestroyMenuForWidget(nsIWidget *aWidget); + + PRPackedBool mOnline; + GDBusProxy *mDbusProxy; + nsAutoPtr<uGlobalMenuRequestAutoCanceller> mCancellable; + PRUint32 mNOCHandlerID; + nsTArray< nsAutoPtr<uGlobalMenuBar> > mMenus; +}; + +#endif --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uGlobalMenuBar.cpp +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uGlobalMenuBar.cpp @@ -0,0 +1,695 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include <nsDebug.h> +#include <nsIObserver.h> +#include <nsIWidget.h> +#include <nsServiceManagerUtils.h> +#include <nsIDOMWindow.h> +#include <nsIXULWindow.h> +#include <nsIInterfaceRequestorUtils.h> +#include <nsIDocShell.h> +#if 1 +# include <nsIDOMNSEvent.h> +#endif +#include <nsIPrefBranch.h> +#include <nsIPrefService.h> +#include <nsIDOMKeyEvent.h> +#include <nsIDOMEventListener.h> +#include <nsICaseConversion.h> +#include <nsUnicharUtilCIID.h> + +#include <glib-object.h> +#include <gdk/gdk.h> +#include <gdk/gdkx.h> + +#include "uGlobalMenuBar.h" +#include "uGlobalMenu.h" +#include "uGlobalMenuUtils.h" +#include "uIGlobalMenuService.h" +#include "uWidgetAtoms.h" + +#include "uDebug.h" + +#define MODIFIER_SHIFT 1 +#define MODIFIER_CONTROL 2 +#define MODIFIER_ALT 4 +#define MODIFIER_META 8 + +NS_IMPL_ISUPPORTS1(uGlobalMenuBarListener, nsIDOMEventListener) + +NS_IMETHODIMP +uGlobalMenuBarListener::HandleEvent(nsIDOMEvent *aEvent) +{ + nsAutoString type; + nsresult rv = aEvent->GetType(type); + NS_ENSURE_SUCCESS(rv, rv); + + if (type.EqualsLiteral("focus")) { + mMenuBar->Focus(); + } else if (type.EqualsLiteral("blur")) { + mMenuBar->Blur(); + } else if (type.EqualsLiteral("keypress")) { + rv = mMenuBar->KeyPress(aEvent); + } else if (type.EqualsLiteral("keydown")) { + rv = mMenuBar->KeyDown(aEvent); + } else if (type.EqualsLiteral("keyup")) { + rv = mMenuBar->KeyUp(aEvent); + } + + return rv; +} + +GtkWidget* +uGlobalMenuBar::WidgetToGTKWindow(nsIWidget *aWidget) +{ + // Get the main GDK drawing window from our nsIWidget + GdkWindow *window = static_cast<GdkWindow *>(aWidget->GetNativeData(NS_NATIVE_WINDOW)); + if (!window) + return nsnull; + + // Get the widget for the main drawing window, which should be a MozContainer + gpointer user_data = nsnull; + gdk_window_get_user_data(window, &user_data); + if (!user_data || !GTK_IS_CONTAINER(user_data)) + return nsnull; + + return gtk_widget_get_toplevel(GTK_WIDGET(user_data)); +} + +PRBool +uGlobalMenuBar::AppendMenuObject(uGlobalMenuObject *menu) +{ + gboolean res = dbusmenu_menuitem_child_append(mDbusMenuItem, + menu->GetDbusMenuItem()); + return res && mMenuObjects.AppendElement(menu); +} + +PRBool +uGlobalMenuBar::InsertMenuObjectAt(uGlobalMenuObject *menu, + PRUint32 index) +{ + gboolean res = dbusmenu_menuitem_child_add_position(mDbusMenuItem, + menu->GetDbusMenuItem(), + index); + return res && mMenuObjects.InsertElementAt(index, menu); +} + +PRBool +uGlobalMenuBar::RemoveMenuObjectAt(PRUint32 index) +{ + NS_ASSERTION(index < mMenuObjects.Length(), "Invalid index"); + if (index >= mMenuObjects.Length()) { + return PR_FALSE; + } + + gboolean res = dbusmenu_menuitem_child_delete(mDbusMenuItem, + mMenuObjects[index]->GetDbusMenuItem()); + mMenuObjects.RemoveElementAt(index); + + return !!res; +} + +nsresult +uGlobalMenuBar::Build() +{ + PRUint32 count = mContent->GetChildCount(); + + for (PRUint32 i = 0; i < count; i++) { + nsIContent *menuContent = mContent->GetChildAt(i); + uGlobalMenuObject *newItem = + NewGlobalMenuItem(static_cast<uGlobalMenuObject *>(this), + mListener, menuContent, this); + PRBool res = PR_FALSE; + if (newItem) { + res = AppendMenuObject(newItem); + } + NS_ASSERTION(res, "Failed to append menuitem. Our menu representation is out-of-sync with reality"); + if (!res) { + // XXX: Is there anything else we should do here? + return NS_ERROR_FAILURE; + } + } + + return NS_OK; +} + +nsresult +uGlobalMenuBar::Init(nsIWidget *aWindow, + nsIContent *aMenuBar) +{ + NS_ENSURE_ARG(aWindow); + NS_ENSURE_ARG(aMenuBar); + + // We create this early so that IsRegistered() works + mCancellable = uGlobalMenuRequestAutoCanceller::Create(); + + mContent = aMenuBar; + + mTopLevel = WidgetToGTKWindow(aWindow); + if (!GTK_IS_WINDOW(mTopLevel)) + return NS_ERROR_FAILURE; + + g_object_ref(mTopLevel); + + mPath = NS_LITERAL_CSTRING("/com/canonical/menu/"); + char xid[10]; + sprintf(xid, "%X", (PRUint32) GDK_WINDOW_XID(gtk_widget_get_window(mTopLevel))); + mPath.Append(xid); + + mServer = dbusmenu_server_new(mPath.get()); + if (!mServer) + return NS_ERROR_OUT_OF_MEMORY; + + mDbusMenuItem = dbusmenu_menuitem_new(); + if (!mDbusMenuItem) + return NS_ERROR_OUT_OF_MEMORY; + + dbusmenu_server_set_root(mServer, mDbusMenuItem); + + mListener = new uGlobalMenuDocListener(); + if (!mListener) + return NS_ERROR_OUT_OF_MEMORY; + + nsresult rv = mListener->Init(mContent); + NS_ENSURE_SUCCESS(rv, rv); + + rv = mListener->RegisterForContentChanges(mContent, this); + NS_ENSURE_SUCCESS(rv, rv); + + rv = Build(); + NS_ENSURE_SUCCESS(rv, rv); + + mEventListener = new uGlobalMenuBarListener(this); + NS_ENSURE_TRUE(mEventListener, NS_ERROR_OUT_OF_MEMORY); + + mDocTarget = do_QueryInterface(mContent->GetCurrentDoc()); + + mDocTarget->AddEventListener(NS_LITERAL_STRING("focus"), + mEventListener, + PR_TRUE); + mDocTarget->AddEventListener(NS_LITERAL_STRING("blur"), + mEventListener, + PR_TRUE); + mDocTarget->AddEventListener(NS_LITERAL_STRING("keypress"), + mEventListener, + PR_FALSE); + mDocTarget->AddEventListener(NS_LITERAL_STRING("keydown"), + mEventListener, + PR_FALSE); + mDocTarget->AddEventListener(NS_LITERAL_STRING("keyup"), + mEventListener, + PR_FALSE); + + nsCOMPtr<nsIPrefBranch> prefs = do_GetService(NS_PREFSERVICE_CONTRACTID); + NS_ENSURE_TRUE(prefs, NS_ERROR_FAILURE); + + prefs->GetIntPref("ui.key.menuAccessKey", &mAccessKey); + if (mAccessKey == nsIDOMKeyEvent::DOM_VK_SHIFT) { + mAccessKeyMask = MODIFIER_SHIFT; + } else if (mAccessKey == nsIDOMKeyEvent::DOM_VK_CONTROL) { + mAccessKeyMask = MODIFIER_CONTROL; + } else if (mAccessKey == nsIDOMKeyEvent::DOM_VK_ALT) { + mAccessKeyMask = MODIFIER_ALT; + } else if (mAccessKey == nsIDOMKeyEvent::DOM_VK_META) { + mAccessKeyMask = MODIFIER_META; + } else { + mAccessKeyMask = MODIFIER_ALT; + } + + rv = mListener->RegisterForAllChanges(this); + NS_ENSURE_SUCCESS(rv, rv); + + nsCOMPtr<uIGlobalMenuService> service = + do_GetService("@canonical.com/globalmenu-service;1"); + NS_ENSURE_TRUE(service, NS_ERROR_FAILURE); + + service->RegisterGlobalMenuBar(this, mCancellable); + + return NS_OK; +} + +PRBool +uGlobalMenuBar::ShouldParentStayVisible(nsIContent *aContent) +{ + static nsIAtom *blacklist[] = + { uWidgetAtoms::toolbarspring, nsnull }; + + nsIContent *parent = aContent->GetParent(); + if (!parent) { + return PR_TRUE; + } + + PRUint32 count = parent->GetChildCount(); + + if (count <= 1) { + // It's just us + return PR_FALSE; + } + + for (PRUint32 i = 0 ; i < count ; i++) { + nsIContent *child = parent->GetChildAt(i); + if (child == aContent) { + continue; + } + + PRBool found = PR_FALSE; + for (PRUint32 j = 0 ; blacklist[j] != nsnull ; j++) { + if (child->Tag() == blacklist[j]) { + found = PR_TRUE; + break; + } + } + + if (!found) { + return PR_TRUE; + } + } + + return PR_FALSE; +} + +PRUint32 +uGlobalMenuBar::GetModifiersFromEvent(nsIDOMKeyEvent *aKeyEvent) +{ + PRUint32 modifiers = 0; + PRBool modifier; + + aKeyEvent->GetAltKey(&modifier); + if (modifier) { + modifiers |= MODIFIER_ALT; + } + + aKeyEvent->GetShiftKey(&modifier); + if (modifier) { + modifiers |= MODIFIER_SHIFT; + } + + aKeyEvent->GetCtrlKey(&modifier); + if (modifier) { + modifiers |= MODIFIER_CONTROL; + } + + aKeyEvent->GetMetaKey(&modifier); + if (modifier) { + modifiers |= MODIFIER_META; + } + + return modifiers; +} + +PRBool +uGlobalMenuBar::IsParentOfMenuBar(nsIContent *aContent) +{ + nsIContent *tmp = mContent->GetParent(); + + while (tmp) { + if (tmp == aContent) { + return PR_TRUE; + } + + tmp = tmp->GetParent(); + } + + return PR_FALSE; +} + +void +uGlobalMenuBar::SetXULMenuBarHidden(PRBool hidden) +{ + mXULMenuHidden = hidden; + + if (hidden) { + if (mHiddenElement) { + mHiddenElement->SetAttr(kNameSpaceID_None, uWidgetAtoms::hidden, + mRestoreHidden ? NS_LITERAL_STRING("true") : + NS_LITERAL_STRING("false"), PR_TRUE); + } + nsIContent *tmp = mContent; + + // Walk up the DOM tree until we find a node with siblings + while (tmp) { + if (ShouldParentStayVisible(tmp)) { + break; + } + + tmp = tmp->GetParent(); + } + + mHiddenElement = tmp; + mRestoreHidden = mHiddenElement->AttrValueIs(kNameSpaceID_None, + uWidgetAtoms::hidden, + uWidgetAtoms::_true, + eCaseMatters); + + mHiddenElement->SetAttr(kNameSpaceID_None, uWidgetAtoms::hidden, + NS_LITERAL_STRING("true"), PR_TRUE); + } else if (mHiddenElement) { + mHiddenElement->SetAttr(kNameSpaceID_None, uWidgetAtoms::hidden, + mRestoreHidden ? NS_LITERAL_STRING("true") : + NS_LITERAL_STRING("false"), PR_TRUE); + mHiddenElement = nsnull; + } +} + +uGlobalMenuBar::uGlobalMenuBar(): + uGlobalMenuObject(MenuBar), mServer(nsnull), mTopLevel(nsnull), + mOpenedByKeyboard(PR_FALSE) +{ + MOZ_COUNT_CTOR(uGlobalMenuBar); +} + +uGlobalMenuBar::~uGlobalMenuBar() +{ + SetXULMenuBarHidden(PR_FALSE); + + if (mDocTarget) { + mDocTarget->RemoveEventListener(NS_LITERAL_STRING("focus"), + mEventListener, + PR_TRUE); + mDocTarget->RemoveEventListener(NS_LITERAL_STRING("blur"), + mEventListener, + PR_TRUE); + mDocTarget->RemoveEventListener(NS_LITERAL_STRING("keypress"), + mEventListener, + PR_FALSE); + mDocTarget->RemoveEventListener(NS_LITERAL_STRING("keydown"), + mEventListener, + PR_FALSE); + mDocTarget->RemoveEventListener(NS_LITERAL_STRING("keyup"), + mEventListener, + PR_FALSE); + } + + if (mListener) { + mListener->UnregisterForAllChanges(this); + mListener->UnregisterForContentChanges(mContent, this); + mListener->Destroy(); + } + + if (mTopLevel) + g_object_unref(mTopLevel); + + if (mDbusMenuItem) + g_object_unref(mDbusMenuItem); + + if (mServer) + g_object_unref(mServer); + + MOZ_COUNT_DTOR(uGlobalMenuBar); +} + +/*static*/ uGlobalMenuBar* +uGlobalMenuBar::Create(nsIWidget *aWindow, + nsIContent *aMenuBar) +{ + uGlobalMenuBar *menubar = new uGlobalMenuBar(); + if (!menubar) { + return nsnull; + } + + if (NS_FAILED(menubar->Init(aWindow, aMenuBar))) { + delete menubar; + return nsnull; + } + + return menubar; +} + +void +uGlobalMenuBar::Blur() +{ + dbusmenu_server_set_status(mServer, DBUSMENU_STATUS_NORMAL); +} + +void +uGlobalMenuBar::Focus() +{ + mOpenedByKeyboard = PR_FALSE; +} + +PRBool +uGlobalMenuBar::ShouldHandleKeyEvent(nsIDOMEvent *aKeyEvent) +{ +#if 0 +# define nsEvent aKeyEvent +#else + nsCOMPtr<nsIDOMNSEvent> nsEvent = do_QueryInterface(aKeyEvent); + if (!nsEvent) { + return PR_FALSE; + } +#endif + + PRBool handled, trusted; + nsEvent->GetPreventDefault(&handled); + nsEvent->GetIsTrusted(&trusted); + +#if 0 +# undef nsEvent +#endif + + if (handled || !trusted) { + return PR_FALSE; + } + + return PR_TRUE; +} + +nsresult +uGlobalMenuBar::KeyDown(nsIDOMEvent *aKeyEvent) +{ + if (!ShouldHandleKeyEvent(aKeyEvent)) { + return NS_OK; + } + + nsCOMPtr<nsIDOMKeyEvent> keyEvent = do_QueryInterface(aKeyEvent); + if (keyEvent) { + PRUint32 keyCode; + keyEvent->GetKeyCode(&keyCode); + PRUint32 modifiers = GetModifiersFromEvent(keyEvent); + if ((keyCode == static_cast<PRUint32>(mAccessKey)) && + ((modifiers & ~mAccessKeyMask) == 0)) { + dbusmenu_server_set_status(mServer, DBUSMENU_STATUS_NOTICE); + } + } + + return NS_OK; +} + +nsresult +uGlobalMenuBar::KeyUp(nsIDOMEvent *aKeyEvent) +{ + if (!ShouldHandleKeyEvent(aKeyEvent)) { + return NS_OK; + } + + nsCOMPtr<nsIDOMKeyEvent> keyEvent = do_QueryInterface(aKeyEvent); + if (keyEvent) { + PRUint32 keyCode; + keyEvent->GetKeyCode(&keyCode); + if (keyCode == static_cast<PRUint32>(mAccessKey)) { + dbusmenu_server_set_status(mServer, DBUSMENU_STATUS_NORMAL); + } + } + + return NS_OK; +} + +nsresult +uGlobalMenuBar::KeyPress(nsIDOMEvent *aKeyEvent) +{ + if (!ShouldHandleKeyEvent(aKeyEvent)) { + return NS_OK; + } + + nsCOMPtr<nsIDOMKeyEvent> keyEvent = do_QueryInterface(aKeyEvent); + uGlobalMenuObject *found = nsnull; + PRUint32 keyCode = nsnull; + + if (keyEvent) { + keyEvent->GetKeyCode(&keyCode); + PRUint32 count = mMenuObjects.Length(); + PRUint32 modifiers = GetModifiersFromEvent(keyEvent); + if ((modifiers & mAccessKeyMask) && ((modifiers & ~mAccessKeyMask) == 0)) { + // The menu access modifier is pressed + PRUint32 charCode; + keyEvent->GetCharCode(&charCode); + if (charCode != 0) { + PRUnichar ch = PRUnichar(charCode); + PRUnichar chl; + PRUnichar chu; + // XXX: I think we need to link against libxul.so to get ToLowerCase + // and ToUpperCase from nsUnicharUtils.h + nsCOMPtr<nsICaseConversion> converter = + do_GetService(NS_UNICHARUTIL_CONTRACTID); + if (converter) { + converter->ToUpper(ch, &chu); + converter->ToLower(ch, &chl); + } else { + if (ch < 256) { + chu = toupper(char(ch)); + chl = tolower(char(ch)); + } else { + chu = ch; + chl = ch; + } + } + + for (PRUint32 i = 0; i < count; i++) { + nsCOMPtr<nsIContent> content; + mMenuObjects[i]->GetContent(getter_AddRefs(content)); + if (content) { + nsAutoString accessKey; + content->GetAttr(kNameSpaceID_None, uWidgetAtoms::accesskey, + accessKey); + const PRUnichar *key = accessKey.BeginReading(); + if (*key == chl || *key == chu) { + found = mMenuObjects[i]; + break; + } + } + } + } + } else if (keyCode == nsIDOMKeyEvent::DOM_VK_F10) { + // Go through each mMenuObject, and find the first one + // that is both visible and sensitive, and mark it found + // for opening. + for (PRUint32 i = 0; i < count; i++) { + uGlobalMenu *menu = static_cast<uGlobalMenu *>((uGlobalMenuObject *)mMenuObjects[i]); + if (menu->CanOpen()) { + found = mMenuObjects[i]; + break; + } + } + } + } + + if (found) { + mOpenedByKeyboard = PR_TRUE; + uGlobalMenu *menu = static_cast<uGlobalMenu *>(found); + menu->OpenMenu(); + aKeyEvent->StopPropagation(); + aKeyEvent->PreventDefault(); + } + + return NS_OK; +} + +void +uGlobalMenuBar::SetMenuBarRegistered(PRBool aRegistered) +{ + if (mCancellable) { + mCancellable->Destroy(); + mCancellable = nsnull; + } + + SetXULMenuBarHidden(aRegistered); +} + +PRUint32 +uGlobalMenuBar::GetWindowID() +{ + return (PRUint32) GDK_WINDOW_XID(gtk_widget_get_window(mTopLevel)); +} + +const char* +uGlobalMenuBar::GetMenuPath() +{ + return mPath.get(); +} + +PRBool +uGlobalMenuBar::WidgetHasSameToplevelWindow(nsIWidget *aWidget) +{ + GtkWidget *topLevel = WidgetToGTKWindow(aWidget); + return GDK_WINDOW_XID(gtk_widget_get_window(mTopLevel)) == GDK_WINDOW_XID(gtk_widget_get_window(topLevel)); +} + +void +uGlobalMenuBar::ObserveAttributeChanged(nsIDocument *aDocument, + nsIContent *aContent, + nsIAtom *aAttribute) +{ + +} + +void +uGlobalMenuBar::ObserveContentRemoved(nsIDocument *aDocument, + nsIContent *aContainer, + nsIContent *aChild, + PRInt32 aIndexInContainer) +{ + if (IsParentOfMenuBar(aContainer)) { + SetXULMenuBarHidden(mXULMenuHidden); + return; + } + + if (aContainer != mContent) { + return; + } + + PRBool res = RemoveMenuObjectAt(aIndexInContainer); + NS_ASSERTION(res, "Failed to remove menuitem. Our menu representation is out-of-sync with reality"); + // XXX: Is there anything else we can do if removal fails? +} + +void +uGlobalMenuBar::ObserveContentInserted(nsIDocument *aDocument, + nsIContent *aContainer, + nsIContent *aChild, + PRInt32 aIndexInContainer) +{ + if (IsParentOfMenuBar(aContainer)) { + SetXULMenuBarHidden(mXULMenuHidden); + return; + } + + if (aContainer != mContent) { + return; + } + + uGlobalMenuObject *newItem = + NewGlobalMenuItem(static_cast<uGlobalMenuObject *>(this), + mListener, aChild, this); + PRBool res = PR_FALSE; + if (newItem) { + res = InsertMenuObjectAt(newItem, aIndexInContainer); + } + NS_ASSERTION(res, "Failed to insert menuitem. Our menu representation is out-of-sync with reality"); + // XXX: Is there anything else we can do if insertion fails? +} --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uGlobalMenuObject.cpp +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uGlobalMenuObject.cpp @@ -0,0 +1,673 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include <prtypes.h> +#include <nsStringAPI.h> +#include <nsIURI.h> +#include <nsILoadGroup.h> +#include <nsServiceManagerUtils.h> +#include <imgIContainer.h> +#include <nsNetError.h> +#include <nsNetUtil.h> +#include <nsIImageToPixbuf.h> +#include <nsIDOMNSElement.h> +#include <nsIDOMDOMTokenList.h> +#include <nsIDOMDocument.h> +#include <nsIDOMWindow.h> +#include <nsIDOMElement.h> +#include <nsIDOMCSSStyleDeclaration.h> +#include <nsIDOMCSSValue.h> +#include <nsIDOMCSSPrimitiveValue.h> +#include <nsIDOMRect.h> +#include <nsICaseConversion.h> +#include <nsUnicharUtilCIID.h> + +#include <libdbusmenu-gtk/menuitem.h> +#include <gtk/gtk.h> + +#include "uGlobalMenuObject.h" +#include "uGlobalMenuBar.h" +#include "uWidgetAtoms.h" + +#include "uDebug.h" + +#define MAX_LABEL_NCHARS 40 + +typedef nsresult (nsIDOMRect::*GetRectSideMethod)(nsIDOMCSSPrimitiveValue**); + +NS_IMPL_ISUPPORTS3(uGlobalMenuIconLoader, imgIDecoderObserver, imgIContainerObserver, nsIRunnable) + +// Yes, we're abusing PRPackedBool a bit here. We initialize it to a value +// that is neither true or false, so that we don't need another static member +// to indicate the intialization status of it. +PRPackedBool uGlobalMenuIconLoader::sImagesInMenus = -1; +nsCOMPtr<imgILoader> uGlobalMenuIconLoader::sLoader = 0; + +PRBool +uGlobalMenuIconLoader::ShouldShowIcon() +{ + // Ideally, we want to get the visibility of the XUL image in our menu item, + // but that is anonymous content which is only created when the frame is drawn + // (which obviously never happens here). + // As an alternative, we get the user setting for menus-have-icons from + // nsILookAndFeel. If menu icons are to be hidden, we hide everything except + // for menuitems with the menuitem-with-favicon class. This is basically + // how the visibility gets set anyway (see chrome://toolkit/content/xul.css), + // which should work in most cases. But, I guess a theme could override this, + // and then we ignore the users theme settings. Oh well...... + + if (sImagesInMenus == static_cast<PRPackedBool>(-1)) { + // We could get the correct GtkSettings by getting the GdkScreen that our + // top-level window is on. However, I don't think this matters, as + // nsILookAndFeel never had per-screen settings + GtkSettings *settings = gtk_settings_get_default(); + gboolean menus_have_icons; + g_object_get(settings, "gtk-menu-images", &menus_have_icons, NULL); + + sImagesInMenus = !!menus_have_icons; + } + + if (sImagesInMenus) { + return PR_TRUE; + } + + return mMenuItem->WithFavicon(); +} + +void +uGlobalMenuIconLoader::LoadIcon() +{ + NS_DispatchToCurrentThread(this); +} + +static PRInt32 +GetDOMRectSide(nsIDOMRect* aRect, GetRectSideMethod aMethod) +{ + nsCOMPtr<nsIDOMCSSPrimitiveValue> dimensionValue; + (aRect->*aMethod)(getter_AddRefs(dimensionValue)); + if (!dimensionValue) + return -1; + + PRUint16 primitiveType; + nsresult rv = dimensionValue->GetPrimitiveType(&primitiveType); + if (NS_FAILED(rv) || primitiveType != nsIDOMCSSPrimitiveValue::CSS_PX) + return -1; + + float dimension = 0; + rv = dimensionValue->GetFloatValue(nsIDOMCSSPrimitiveValue::CSS_PX, + &dimension); + if (NS_FAILED(rv)) + return -1; + + return NSToIntRound(dimension); +} + +NS_IMETHODIMP +uGlobalMenuIconLoader::Run() +{ + // Some of this is borrowed from widget/src/cocoa/nsMenuItemIconX.mm + if (mIconRequest) { + mIconRequest->Cancel(NS_BINDING_ABORTED); + mIconRequest = nsnull; + } + + if (!mMenuItem) { + // Our menu item got destroyed already + return NS_OK; + } + + mMenuItem->GetContent(getter_AddRefs(mContent)); + + nsIDocument *doc = mContent->GetCurrentDoc(); + if (!doc) { + // We might have been removed from the menu, in which case we will + // no longer be in a document + return NS_OK; + } + + if (!ShouldShowIcon()) { + ClearIcon(); + return NS_OK; + } + + mIconLoaded = PR_FALSE; + + nsAutoString uriString; + PRBool hasImage = mContent->GetAttr(kNameSpaceID_None, uWidgetAtoms::image, + uriString); + + nsresult rv; + nsCOMPtr<nsIDOMRect> domRect; + + if (!hasImage) { + nsCOMPtr<nsIDOMCSSStyleDeclaration> cssStyleDecl; + nsCOMPtr<nsIDOMWindow> domWin; + nsCOMPtr<nsIDOMDocument> domDoc = do_QueryInterface(doc); + if (domDoc) { + domDoc->GetDefaultView(getter_AddRefs(domWin)); + if (domWin) { + nsCOMPtr<nsIDOMElement> domElement = do_QueryInterface(mContent); + if (domElement) { + domWin->GetComputedStyle(domElement, EmptyString(), + getter_AddRefs(cssStyleDecl)); + } + } + } + + if (!cssStyleDecl) { + return NS_ERROR_FAILURE; + } + + nsCOMPtr<nsIDOMCSSValue> cssValue; + nsCOMPtr<nsIDOMCSSPrimitiveValue> primitiveValue; + PRUint16 primitiveType; + cssStyleDecl->GetPropertyCSSValue(NS_LITERAL_STRING("list-style-image"), + getter_AddRefs(cssValue)); + if (cssValue) { + primitiveValue = do_QueryInterface(cssValue); + if (primitiveValue) { + primitiveValue->GetPrimitiveType(&primitiveType); + if (primitiveType == nsIDOMCSSPrimitiveValue::CSS_URI) { + rv = primitiveValue->GetStringValue(uriString); + if (NS_SUCCEEDED(rv)) { + hasImage = PR_TRUE; + } + } else { + NS_WARNING("list-style-image has wrong primitive type"); + } + } + } + + if (!hasImage) { + return NS_OK; + } + + cssStyleDecl->GetPropertyCSSValue(NS_LITERAL_STRING("-moz-image-region"), + getter_AddRefs(cssValue)); + if (cssValue) { + primitiveValue = do_QueryInterface(cssValue); + if (primitiveValue) { + primitiveValue->GetPrimitiveType(&primitiveType); + if (primitiveType == nsIDOMCSSPrimitiveValue::CSS_RECT) { + primitiveValue->GetRectValue(getter_AddRefs(domRect)); + } + } + } + } + + nsCOMPtr<nsIURI> uri; + rv = NS_NewURI(getter_AddRefs(uri), uriString); + if (NS_FAILED(rv)) { + ClearIcon(); + return NS_OK; + } + + if (!sLoader) { + sLoader = do_GetService("@mozilla.org/image/loader;1"); + } + + NS_ASSERTION(sLoader, "No icon loader"); + if (!sLoader) { + return NS_OK; + } + + nsCOMPtr<nsILoadGroup> loadGroup = doc->GetDocumentLoadGroup(); + +#if MOZILLA_BRANCH_MAJOR_VERSION >= 8 + sLoader->LoadImage(uri, nsnull, nsnull, nsnull, loadGroup, this, +#else + sLoader->LoadImage(uri, nsnull, nsnull, loadGroup, this, +#endif + nsnull, nsIRequest::LOAD_NORMAL, nsnull, + nsnull, nsnull, getter_AddRefs(mIconRequest)); + + mImageRect.SetEmpty(); + + if (domRect) { + PRInt32 bottom = GetDOMRectSide(domRect, &nsIDOMRect::GetBottom); + PRInt32 right = GetDOMRectSide(domRect, &nsIDOMRect::GetRight); + PRInt32 top = GetDOMRectSide(domRect, &nsIDOMRect::GetTop); + PRInt32 left = GetDOMRectSide(domRect, &nsIDOMRect::GetLeft); + + if (top < 0 || left < 0 || bottom <= top || right <= left) { + return NS_ERROR_FAILURE; + } + + mImageRect.SetRect(left, top, right - left, bottom - top); + } + + return NS_OK; +} + +void +uGlobalMenuIconLoader::ClearIcon() +{ + dbusmenu_menuitem_property_remove(mMenuItem->GetDbusMenuItem(), + DBUSMENU_MENUITEM_PROP_ICON_DATA); +} + +NS_IMETHODIMP +uGlobalMenuIconLoader::OnStartRequest(imgIRequest *aRequest) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +uGlobalMenuIconLoader::OnStartDecode(imgIRequest *aRequest) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +uGlobalMenuIconLoader::OnStartContainer(imgIRequest *aRequest, imgIContainer *aContainer) +{ + aContainer->RequestDecode(); + return NS_OK; +} + +NS_IMETHODIMP +uGlobalMenuIconLoader::OnStartFrame(imgIRequest *aRequest, PRUint32 aFrame) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +uGlobalMenuIconLoader::OnDataAvailable(imgIRequest *aRequest, + PRBool aCurrentFrame, + const nsIntRect *aRect) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +uGlobalMenuIconLoader::OnStopFrame(imgIRequest *aRequest, PRUint32 aFrame) +{ + if (aRequest != mIconRequest) { + return NS_ERROR_FAILURE; + } + + if (mIconLoaded) { + return NS_OK; + } + + mIconLoaded = PR_TRUE; + + nsCOMPtr<imgIContainer> img; + aRequest->GetImage(getter_AddRefs(img)); + if (!img) { + return NS_ERROR_FAILURE; + } + + PRInt32 origWidth; + PRInt32 origHeight; + img->GetWidth(&origWidth); + img->GetHeight(&origHeight); + + PRBool needsClip = PR_FALSE; + + if (!mImageRect.IsEmpty()) { + if (mImageRect.XMost() > origWidth || mImageRect.YMost() > origHeight) { + return NS_ERROR_FAILURE; + } + + if (!(mImageRect.x == 0 && mImageRect.y == 0 && + mImageRect.width == origWidth && mImageRect.height == origHeight)) { + needsClip = PR_TRUE; + } + } + + if ((!needsClip && (origWidth > 100 || origHeight > 100)) || + (needsClip && (mImageRect.width > 100 || mImageRect.height > 100))) { + /* The icon data needs to go across DBus. Make sure the icon + * data isn't too large, else our connection gets terminated and + * GDbus helpfully aborts the application. Thank you :) + */ + NS_WARNING("Icon data too large"); + ClearIcon(); + return NS_OK; + } + + nsCOMPtr<imgIContainer> clippedImg; + if (needsClip) { + nsresult rv = img->ExtractFrame(0, mImageRect, 0, + getter_AddRefs(clippedImg)); + if (NS_FAILED(rv)) { + return NS_ERROR_FAILURE; + } + } + + nsCOMPtr<nsIImageToPixbuf> converter = + do_GetService("@mozilla.org/widget/image-to-gdk-pixbuf;1"); + if (!converter) { + return NS_ERROR_FAILURE; + } + + GdkPixbuf *pixbuf = + converter->ConvertImageToPixbuf(clippedImg ? clippedImg : img); + if (pixbuf) { + dbusmenu_menuitem_property_set_image(mMenuItem->GetDbusMenuItem(), + DBUSMENU_MENUITEM_PROP_ICON_DATA, + pixbuf); + g_object_unref(pixbuf); + } else { + ClearIcon(); + } + + return NS_OK; +} + +NS_IMETHODIMP +uGlobalMenuIconLoader::OnStopContainer(imgIRequest *aRequest, + imgIContainer *aContainer) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +uGlobalMenuIconLoader::OnStopDecode(imgIRequest *aRequest, nsresult status, + const PRUnichar *statusArg) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +uGlobalMenuIconLoader::OnStopRequest(imgIRequest *aRequest, PRBool aIsLastPart) +{ + if (mIconRequest) { + mIconRequest->Cancel(NS_BINDING_ABORTED); + mIconRequest = nsnull; + } + + return NS_OK; +} + +NS_IMETHODIMP +uGlobalMenuIconLoader::OnDiscard(imgIRequest *aRequest) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +uGlobalMenuIconLoader::FrameChanged(imgIContainer *aContainer, + const nsIntRect *aDirtyRect) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +void +uGlobalMenuIconLoader::Destroy() +{ + if (mIconRequest) { + mIconRequest->Cancel(NS_BINDING_ABORTED); + mIconRequest = nsnull; + } + + mMenuItem = nsnull; +} + +void +uGlobalMenuObject::GetContent(nsIContent **_retval) +{ + if (!_retval) { + return; + } + *_retval = mContent; + NS_IF_ADDREF(*_retval); +} + +void +uGlobalMenuObject::SyncLabelFromContent(nsIContent *aContent) +{ + TRACE_WITH_THIS_MENUOBJECT(); + // Gecko stores the label and access key in separate attributes + // so we need to convert label="Foo"/accesskey="F" in to + // label="_Foo" for dbusmenu + + nsAutoString label; + if (aContent && aContent->GetAttr(kNameSpaceID_None, + uWidgetAtoms::label, label)) { + UGM_BLOCK_EVENTS_FOR_CURRENT_SCOPE(); + DEBUG_WITH_CONTENT(aContent, "Content has label \"%s\"", DEBUG_CSTR_FROM_UTF16(label)); + mContent->SetAttr(kNameSpaceID_None, uWidgetAtoms::label, label, PR_TRUE); + } else { + mContent->GetAttr(kNameSpaceID_None, uWidgetAtoms::label, label); + } + + nsAutoString accesskey; + mContent->GetAttr(kNameSpaceID_None, uWidgetAtoms::accesskey, accesskey); + + const PRUnichar *tmp = accesskey.BeginReading(); + PRUnichar keyUpper; + PRUnichar keyLower; + // XXX: I think we need to link against libxul.so to get ToLowerCase + // and ToUpperCase from nsUnicharUtils.h + nsCOMPtr<nsICaseConversion> converter = + do_GetService(NS_UNICHARUTIL_CONTRACTID); + if (converter) { + converter->ToUpper(*tmp, &keyUpper); + converter->ToLower(*tmp, &keyLower); + } else { + if (*tmp < 256) { + keyUpper = toupper(char(*tmp)); + keyLower = tolower(char(*tmp)); + } else { + NS_WARNING("accesskey matching is case-sensitive when it shouldn't be"); + keyUpper = *tmp; + keyLower = *tmp; + } + } + + PRUnichar *cur = label.BeginWriting(); + PRUnichar *end = label.EndWriting(); + int length = label.Length(); + int pos = 0; + PRBool foundAccessKey = PR_FALSE; + + while (cur < end) { + if (*cur != PRUnichar('_')) { + if ((*cur != keyLower && *cur != keyUpper) || foundAccessKey) { + cur++; + pos++; + continue; + } + foundAccessKey = PR_TRUE; + } + + length += 1; + label.SetLength(length); + int newLength = label.Length(); + if (length != newLength) + break; + + cur = label.BeginWriting() + pos; + end = label.EndWriting(); + memmove(cur + 1, cur, (length - 1 - pos) * sizeof(PRUnichar)); +// \^/ + *cur = PRUnichar('_'); // Yeah! +// v + + cur += 2; + pos += 2; + } + + // Ellipsize long labels. I've picked an arbitrary length here + if (length > MAX_LABEL_NCHARS) { + cur = label.BeginWriting(); + for (PRUint32 i = 1; i < 4; i++) { + *(cur + (MAX_LABEL_NCHARS - i)) = PRUnichar('.'); + } + *(cur + MAX_LABEL_NCHARS) = nsnull; + label.SetLength(MAX_LABEL_NCHARS); + } + + nsCAutoString clabel; + CopyUTF16toUTF8(label, clabel); + DEBUG_WITH_THIS_MENUOBJECT("Setting label to \"%s\"", clabel.get()); + dbusmenu_menuitem_property_set(mDbusMenuItem, + DBUSMENU_MENUITEM_PROP_LABEL, + clabel.get()); +} + +void +uGlobalMenuObject::SyncLabelFromContent() +{ + SyncLabelFromContent(nsnull); +} + +// Synchronize the 'hidden' attribute on the DOM node with the +// 'visible' property on the dbusmenu node +void +uGlobalMenuObject::SyncVisibilityFromContent() +{ + TRACE_WITH_THIS_MENUOBJECT(); + mContentVisible = !IsHidden(); + PRBool realVis = (!mMenuBar || !ShouldShowOnlyForKb() || + mMenuBar->OpenedByKeyboard()) ? + mContentVisible : PR_FALSE; + DEBUG_WITH_THIS_MENUOBJECT("Setting %s", realVis ? "visible" : "hidden"); + + dbusmenu_menuitem_property_set_bool(mDbusMenuItem, + DBUSMENU_MENUITEM_PROP_VISIBLE, + realVis); +} + +void +uGlobalMenuObject::SyncSensitivityFromContent(nsIContent *aContent) +{ + TRACE_WITH_THIS_MENUOBJECT(); + + nsIContent *content; + if (aContent) { + content = aContent; + } else { + content = mContent; + } + PRBool disabled = content->AttrValueIs(kNameSpaceID_None, + uWidgetAtoms::disabled, + uWidgetAtoms::_true, + eCaseMatters); + DEBUG_WITH_THIS_MENUOBJECT("Setting %s", disabled ? "disabled" : "enabled"); + + if (aContent) { + UGM_BLOCK_EVENTS_FOR_CURRENT_SCOPE(); + if (disabled) { + mContent->SetAttr(kNameSpaceID_None, uWidgetAtoms::disabled, + NS_LITERAL_STRING("true"), PR_TRUE); + } else { + mContent->UnsetAttr(kNameSpaceID_None, uWidgetAtoms::disabled, PR_TRUE); + } + } + + dbusmenu_menuitem_property_set_bool(mDbusMenuItem, + DBUSMENU_MENUITEM_PROP_ENABLED, + !disabled); +} + +void +uGlobalMenuObject::SyncSensitivityFromContent() +{ + SyncSensitivityFromContent(nsnull); +} + +void +uGlobalMenuObject::UpdateInfoFromContentClass() +{ + nsCOMPtr<nsIDOMNSElement> element(do_QueryInterface(mContent)); + if (!element) { + return; + } + + nsCOMPtr<nsIDOMDOMTokenList> classes; + element->GetClassList(getter_AddRefs(classes)); + if (!classes) { + return; + } + + PRBool tmp; + classes->Contains(NS_LITERAL_STRING("show-only-for-keyboard"), + &tmp); + mShowOnlyForKb = !!tmp; + + classes->Contains(NS_LITERAL_STRING("menuitem-with-favicon"), + &tmp); + mWithFavicon = !!tmp; +} + +PRBool +uGlobalMenuObject::IsHidden() +{ + return mContent->AttrValueIs(kNameSpaceID_None, uWidgetAtoms::hidden, + uWidgetAtoms::_true, eCaseMatters) || + mContent->AttrValueIs(kNameSpaceID_None, uWidgetAtoms::collapsed, + uWidgetAtoms::_true, eCaseMatters); +} + +void +uGlobalMenuObject::UpdateVisibility() +{ + TRACE_WITH_THIS_MENUOBJECT(); + if (!mMenuBar) { + return; + } + + PRBool newVis = (!ShouldShowOnlyForKb() || mMenuBar->OpenedByKeyboard()) ? + mContentVisible : PR_FALSE; + + DEBUG_WITH_THIS_MENUOBJECT("Setting %s", newVis ? "visible" : "hidden"); + dbusmenu_menuitem_property_set_bool(mDbusMenuItem, + DBUSMENU_MENUITEM_PROP_VISIBLE, + newVis); +} + +void +uGlobalMenuObject::SyncIconFromContent() +{ + if (!mIconLoader) { + mIconLoader = new uGlobalMenuIconLoader(this); + } + + mIconLoader->LoadIcon(); +} + +void +uGlobalMenuObject::DestroyIconLoader() +{ + if (mIconLoader) { + mIconLoader->Destroy(); + } +} --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uDebug.h +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uDebug.h @@ -0,0 +1,175 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef _U_DEBUG_H +#define _U_DEBUG_H + +#include <nsStringAPI.h> +#include <nsXPCOM.h> + +#if defined DEBUG_chrisccoulson && !defined DEBUG +#undef NS_ASSERTION +#undef NS_WARN_IF_FALSE +#undef NS_WARNING + +#define NS_ASSERTION(expr, str) \ + do { \ + if (!(expr)) { \ + NS_DebugBreak(NS_DEBUG_ASSERTION, str, #expr, __FILE__, __LINE__); \ + } \ + } while(0) + +#define NS_WARN_IF_FALSE(_expr,_msg) \ + do { \ + if (!(_expr)) { \ + NS_DebugBreak(NS_DEBUG_WARNING, _msg, #_expr, __FILE__, __LINE__); \ + } \ + } while(0) + +#define NS_WARNING(str) \ + NS_DebugBreak(NS_DEBUG_WARNING, str, nsnull, __FILE__, __LINE__) +#endif + +#ifdef DEBUG +#define DEBUG_chrisccoulson +#endif + +#ifdef DEBUG_chrisccoulson +class FunctionTracer +{ +public: + FunctionTracer(const char *funcName, const char *extra): mFuncName(funcName), mExtra(extra) + { + if (getenv("GLOBAL_MENU_VERBOSE")) { + printf("%*s=== globalmenu-extension: Entering %s (%s) ===\n", sDepth, "", mFuncName.get(), mExtra.get()); + } + sDepth++; + } + + FunctionTracer(const char *funcName): mFuncName(funcName) + { + if (getenv("GLOBAL_MENU_VERBOSE")) { + printf("%*s=== globalmenu-extension: Entering %s ===\n", sDepth, "", mFuncName.get()); + } + sDepth++; + } + + ~FunctionTracer() + { + sDepth--; + if (getenv("GLOBAL_MENU_VERBOSE")) { + if (mExtra.Length() > 0) { + printf("%*s=== globalmenu-extension: Leaving %s (%s) ===\n", sDepth, "", mFuncName.get(), mExtra.get()); + } else { + printf("%*s=== globalmenu-extension: Leaving %s ===\n", sDepth, "", mFuncName.get()); + } + } + } + + static PRUint32 sDepth; +private: + nsCString mFuncName; + nsCString mExtra; +}; + +#define DEBUG_WITH_THIS_MENUOBJECT(format...) \ + if (getenv("GLOBAL_MENU_VERBOSE")) { \ + nsAutoString id; \ + nsCAutoString cid; \ + mContent->GetAttr(kNameSpaceID_None, uWidgetAtoms::id, id); \ + CopyUTF16toUTF8(id, cid); \ + char *str; \ + asprintf(&str, format); \ + printf("%*s* globalmenu-extension %s: %s (id: %s)\n", FunctionTracer::sDepth, "", __PRETTY_FUNCTION__, str, cid.get()); \ + free(str); \ + } + +#define DEBUG_WITH_CONTENT(content, format...) \ + if (getenv("GLOBAL_MENU_VERBOSE")) { \ + nsAutoString id; \ + nsCAutoString cid; \ + content->GetAttr(kNameSpaceID_None, uWidgetAtoms::id, id); \ + CopyUTF16toUTF8(id, cid); \ + char *str; \ + asprintf(&str, format); \ + printf("%*s* globalmenu-extension %s: %s (id: %s)\n", FunctionTracer::sDepth, "", __PRETTY_FUNCTION__, str, cid.get()); \ + free(str); \ + } + +#define DEBUG_CSTR_FROM_UTF16(str) __extension__({ \ + nsCAutoString cstr; \ + CopyUTF16toUTF8(str, cstr); \ + cstr.get(); \ +}) + +#define TRACE_WITH_THIS_MENUOBJECT() \ + char *_id_s; \ + { \ + nsAutoString _id; \ + mContent->GetAttr(kNameSpaceID_None, uWidgetAtoms::id, _id); \ + nsCAutoString _cid; \ + CopyUTF16toUTF8(_id, _cid); \ + asprintf(&_id_s, "id: %s", _cid.get()); \ + } \ + FunctionTracer _marker(__PRETTY_FUNCTION__, _id_s); \ + free(_id_s); + +#define TRACE_WITH_CONTENT(content) \ + char *_id_s; \ + { \ + nsAutoString _id; \ + content->GetAttr(kNameSpaceID_None, uWidgetAtoms::id, _id); \ + nsCAutoString _cid; \ + CopyUTF16toUTF8(_id, _cid); \ + asprintf(&_id_s, "id: %s", _cid.get()); \ + } \ + FunctionTracer _marker(__PRETTY_FUNCTION__, _id_s); \ + free(_id_s); + +#define TRACE() \ + FunctionTracer _marker(__PRETTY_FUNCTION__); +#else +#define DEBUG_WITH_THIS_MENUOBJECT(format...) +#define DEBUG_WITH_CONTENT(content, format...) +#define DEBUG_CSTR_FROM_UTF16(str) +#define TRACE_WITH_THIS_MENUOBJECT() +#define TRACE_WITH_CONTENT(content) +#define TRACE() +#endif + +#endif --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uWidgetAtomList.h +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uWidgetAtomList.h @@ -0,0 +1,65 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1999 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Original Author: Mike Pinkerton (pinkerton@netscape.com) + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +WIDGET_ATOM(accesskey, "accesskey") +WIDGET_ATOM(autocheck, "autocheck") +WIDGET_ATOM(checkbox, "checkbox") +WIDGET_ATOM(checked, "checked") +WIDGET_ATOM(_class, "class") +WIDGET_ATOM(collapsed, "collapsed") +WIDGET_ATOM(command, "command") +WIDGET_ATOM(disabled, "disabled") +WIDGET_ATOM(_false, "false") +WIDGET_ATOM(hidden, "hidden") +WIDGET_ATOM(id, "id") +WIDGET_ATOM(image, "image") +WIDGET_ATOM(key, "key") +WIDGET_ATOM(keycode, "keycode") +WIDGET_ATOM(label, "label") +WIDGET_ATOM(menu, "menu") +WIDGET_ATOM(menuactive, "_moz-menuactive") +WIDGET_ATOM(menuitem, "menuitem") +WIDGET_ATOM(menupopup, "menupopup") +WIDGET_ATOM(menuseparator, "menuseparator") +WIDGET_ATOM(modifiers, "modifiers") +WIDGET_ATOM(name, "name") +WIDGET_ATOM(open, "open") +WIDGET_ATOM(radio, "radio") +WIDGET_ATOM(toolbarspring, "toolbarspring") +WIDGET_ATOM(_true, "true") +WIDGET_ATOM(type, "type") --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uGlobalMenu.cpp +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uGlobalMenu.cpp @@ -0,0 +1,755 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include <nsDebug.h> +#include <nsIXBLService.h> +#include <nsIAtom.h> +#include <nsIDOMEvent.h> +#include <nsIDOMMouseEvent.h> +#include <nsIDOMWindow.h> +#include <nsIDOMDocument.h> +#include <nsStringAPI.h> +#include <nsIDOMEventTarget.h> +#include <nsIPrivateDOMEvent.h> +#include <nsPIDOMWindow.h> +#include <nsServiceManagerUtils.h> +#include <nsIObserverService.h> +#include <nsIDOMXULCommandEvent.h> +#include <nsIXPConnect.h> +#include <nsIScriptGlobalObject.h> +#include <nsIScriptContext.h> +#include <jsapi.h> +#include <mozilla/dom/Element.h> + +#include <glib-object.h> + +#include "uGlobalMenu.h" +#include "uGlobalMenuBar.h" +#include "uGlobalMenuUtils.h" +#include "uWidgetAtoms.h" + +#include "uDebug.h" + +/*static*/ PRBool +uGlobalMenu::MenuEventCallback(DbusmenuMenuitem *menu, + const gchar *name, + GVariant *value, + guint timestamp, + void *data) +{ + uGlobalMenu *self = static_cast<uGlobalMenu *>(data); + if (!g_strcmp0("closed", name)) { + self->OnClose(); + return PR_TRUE; + } + + if (!g_strcmp0("opened", name)) { + self->OnOpen(); + return PR_TRUE; + } + + return PR_FALSE; +} + +/*static*/ PRBool +uGlobalMenu::MenuAboutToOpenCallback(DbusmenuMenuitem *menu, + void *data) +{ + uGlobalMenu *self = static_cast<uGlobalMenu *>(data); + self->AboutToOpen(); + + // We return false here for "needsUpdate", as we have no way of + // knowing in advance if the menu structure is going to be updated. + // The menu layout will still update on the client, but we won't block + // opening the menu until it's happened + return PR_FALSE; +} + +void +uGlobalMenu::Activate() +{ + mContent->SetAttr(kNameSpaceID_None, uWidgetAtoms::menuactive, + NS_LITERAL_STRING("true"), PR_TRUE); + + nsIDocument *doc = mContent->GetOwnerDoc(); + nsCOMPtr<nsIDOMEventTarget> target = do_QueryInterface(mContent); + if (doc && target) { + nsCOMPtr<nsIDOMDocument> domDoc = do_QueryInterface(doc); + if (domDoc) { + nsCOMPtr<nsIDOMEvent> event; + domDoc->CreateEvent(NS_LITERAL_STRING("Events"), + getter_AddRefs(event)); + if (event) { + event->InitEvent(NS_LITERAL_STRING("DOMMenuItemActive"), + PR_TRUE, PR_TRUE); + nsCOMPtr<nsIPrivateDOMEvent> priv = do_QueryInterface(event); + if (priv) { + priv->SetTrusted(PR_TRUE); + } + PRBool dummy; + target->DispatchEvent(event, &dummy); + } + } + } +} + +void +uGlobalMenu::Deactivate() +{ + mContent->UnsetAttr(kNameSpaceID_None, uWidgetAtoms::menuactive, PR_TRUE); + + nsIDocument *doc = mContent->GetOwnerDoc(); + if (doc) { + nsCOMPtr<nsIDOMDocument> domDoc = do_QueryInterface(doc); + if (domDoc) { + nsCOMPtr<nsIDOMEvent> event; + domDoc->CreateEvent(NS_LITERAL_STRING("Events"), + getter_AddRefs(event)); + if (event) { + event->InitEvent(NS_LITERAL_STRING("DOMMenuItemInactive"), + PR_TRUE, PR_TRUE); + nsCOMPtr<nsIDOMEventTarget> target = do_QueryInterface(mContent); + if (target) { + nsCOMPtr<nsIPrivateDOMEvent> priv = do_QueryInterface(event); + if (priv) { + priv->SetTrusted(PR_TRUE); + } + PRBool dummy; + target->DispatchEvent(event, &dummy); + } + } + } + } +} + +PRBool +uGlobalMenu::CanOpen() +{ + PRBool isHidden = IsHidden(); + PRBool isDisabled = mContent->AttrValueIs(kNameSpaceID_None, + uWidgetAtoms::disabled, + uWidgetAtoms::_true, + eCaseMatters); + + return (!isHidden && !isDisabled); +} + +void +uGlobalMenu::AboutToOpen() +{ + TRACE_WITH_THIS_MENUOBJECT(); + // XXX: HACK, HACK, HACK ALERT!! + // We ignore the first AboutToOpen on top-level menus, because Unity + // stupidly sends this signal on all top-levels when the window opens. + // This isn't useful at all for us, and leaves the menu in a partially + // open state (it doesn't finish the job by sending open/close events), + // where we sit unnecessarily keeping our menu in-sync with the DOM + // (we do think it is in the middle of opening, after all) until after + // the menu is first opened, when sanity returns again + // YUCK! + if (!mPrimed) { + DEBUG_WITH_THIS_MENUOBJECT("Ignoring first AboutToOpen"); + mPrimed = PR_TRUE; + return; + } + + mOpening = PR_TRUE; + + if (DoesNeedRebuild()) { + Build(); + } + + // If there is no popup content, then there is nothing to do, and it's + // unsafe to proceed anyway + if (!mPopupContent) { + DEBUG_WITH_THIS_MENUOBJECT("Menu has no popup content"); + mOpening = PR_FALSE; + return; + } + + PRUint32 count = mMenuObjects.Length(); + for (PRUint32 i = 0; i < count; i++) { + mMenuObjects[i]->AboutToShowNotify(); + } + + // XXX: This should happen when the pointer hovers over the menu entry, + // but we don't have that information right now. We synthesize it for + // menus, but this doesn't work for menuitems at all + Activate(); + + nsIDocument *doc = mPopupContent->GetOwnerDoc(); + if (doc) { + nsCOMPtr<nsIDOMDocument> domDoc = do_QueryInterface(doc); + if (domDoc) { + nsCOMPtr<nsIDOMEvent> event; + domDoc->CreateEvent(NS_LITERAL_STRING("mouseevent"), + getter_AddRefs(event)); + if (event) { + nsCOMPtr<nsIDOMMouseEvent> mouseEvent = do_QueryInterface(event); + if (mouseEvent) { + nsCOMPtr<nsIDOMWindow> window; + domDoc->GetDefaultView(getter_AddRefs(window)); + if (window) { + mouseEvent->InitMouseEvent(NS_LITERAL_STRING("popupshowing"), + PR_TRUE, PR_TRUE, window, nsnull, + 0, 0, 0, 0, PR_FALSE, PR_FALSE, + PR_FALSE, PR_FALSE, 0, nsnull); + nsCOMPtr<nsIDOMEventTarget> target = do_QueryInterface(mPopupContent); + if (target) { + nsCOMPtr<nsIPrivateDOMEvent> priv = do_QueryInterface(event); + if (priv) { + priv->SetTrusted(PR_TRUE); + } + PRBool dummy; + // XXX: dummy == PR_FALSE means that we should prevent the + // the menu from opening, but there's no way to do this + target->DispatchEvent(event, &dummy); + } + } + } + } + } + } + + nsCOMPtr<nsIObserverService> os = + do_GetService("@mozilla.org/observer-service;1"); + if (os) { + nsAutoString popupID; + mPopupContent->GetAttr(kNameSpaceID_None, uWidgetAtoms::id, popupID); + os->NotifyObservers(nsnull, "native-menu-service:popup-open", popupID.get()); + } +} + +void +uGlobalMenu::OnOpen() +{ + if (!mOpening) { + AboutToOpen(); + } + + // If there is no popup content, then there is nothing to do, and it's + // unsafe to proceed anyway + if (!mPopupContent) { + mOpening = PR_FALSE; + return; + } + + mContent->SetAttr(kNameSpaceID_None, uWidgetAtoms::open, NS_LITERAL_STRING("true"), PR_TRUE); + + nsIDocument *doc = mPopupContent->GetOwnerDoc(); + if (doc) { + nsCOMPtr<nsIDOMDocument> domDoc = do_QueryInterface(doc); + if (domDoc) { + nsCOMPtr<nsIDOMEvent> event; + domDoc->CreateEvent(NS_LITERAL_STRING("mouseevent"), + getter_AddRefs(event)); + if (event) { + nsCOMPtr<nsIDOMMouseEvent> mouseEvent = do_QueryInterface(event); + if (mouseEvent) { + nsCOMPtr<nsIDOMWindow> window; + domDoc->GetDefaultView(getter_AddRefs(window)); + if (window) { + mouseEvent->InitMouseEvent(NS_LITERAL_STRING("popupshown"), + PR_TRUE, PR_TRUE, window, nsnull, + 0, 0, 0, 0, PR_FALSE, PR_FALSE, + PR_FALSE, PR_FALSE, 0, nsnull); + nsCOMPtr<nsIDOMEventTarget> target = do_QueryInterface(mPopupContent); + if (target) { + nsCOMPtr<nsIPrivateDOMEvent> priv = do_QueryInterface(event); + if (priv) { + priv->SetTrusted(PR_TRUE); + } + PRBool dummy; + target->DispatchEvent(event, &dummy); + } + } + } + } + } + } + + mOpening = PR_FALSE; +} + +void +uGlobalMenu::OnClose() +{ + mOpening = PR_FALSE; + // If there is no popup content, then there is nothing to do, and it's + // unsafe to proceed anyway + if (!mPopupContent) { + return; + } + + mContent->UnsetAttr(kNameSpaceID_None, uWidgetAtoms::open, PR_TRUE); + + nsIDocument *doc = mPopupContent->GetOwnerDoc(); + if (doc) { + nsCOMPtr<nsIDOMDocument> domDoc = do_QueryInterface(doc); + if (domDoc) { + nsCOMPtr<nsIDOMEvent> event; + domDoc->CreateEvent(NS_LITERAL_STRING("mouseevent"), + getter_AddRefs(event)); + if (event) { + nsCOMPtr<nsIDOMMouseEvent> mouseEvent = do_QueryInterface(event); + if (mouseEvent) { + nsCOMPtr<nsIDOMWindow> window; + domDoc->GetDefaultView(getter_AddRefs(window)); + if (window) { + mouseEvent->InitMouseEvent(NS_LITERAL_STRING("popuphiding"), + PR_TRUE, PR_TRUE, window, nsnull, + 0, 0, 0, 0, PR_FALSE, PR_FALSE, + PR_FALSE, PR_FALSE, 0, nsnull); + nsCOMPtr<nsIDOMEventTarget> target = do_QueryInterface(mPopupContent); + if (target) { + nsCOMPtr<nsIPrivateDOMEvent> priv = do_QueryInterface(event); + if (priv) { + priv->SetTrusted(PR_TRUE); + } + PRBool dummy; + target->DispatchEvent(event, &dummy); + + mouseEvent->InitMouseEvent(NS_LITERAL_STRING("popuphidden"), + PR_TRUE, PR_TRUE, window, nsnull, + 0, 0, 0, 0, PR_FALSE, PR_FALSE, + PR_FALSE, PR_FALSE, 0, nsnull); + target->DispatchEvent(event, &dummy); + } + } + } + } + } + } + + Deactivate(); +} + +void +uGlobalMenu::SyncProperties() +{ + TRACE_WITH_THIS_MENUOBJECT(); + + UpdateInfoFromContentClass(); + SyncLabelFromContent(); + SyncSensitivityFromContent(); + SyncVisibilityFromContent(); + SyncIconFromContent(); + + ClearInvalid(); +} + +nsresult +uGlobalMenu::ConstructDbusMenuItem() +{ + mDbusMenuItem = dbusmenu_menuitem_new(); + if (!mDbusMenuItem) + return NS_ERROR_OUT_OF_MEMORY; + + // This happens automatically when we add children, but we have to + // do this manually for menus which don't initially have children, + // so we can receive about-to-show which triggers a build of the menu + dbusmenu_menuitem_property_set(mDbusMenuItem, + DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY, + DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU); + + mOpenHandlerID = g_signal_connect(G_OBJECT(mDbusMenuItem), + "about-to-show", + G_CALLBACK(MenuAboutToOpenCallback), + this); + mEventHandlerID = g_signal_connect(G_OBJECT(mDbusMenuItem), + "event", + G_CALLBACK(MenuEventCallback), + this); + + SyncProperties(); + + return NS_OK; +} + +void +uGlobalMenu::GetMenuPopupFromMenu(nsIContent **aResult) +{ + if (!aResult) + return; + + *aResult = nsnull; + + // Taken from widget/src/cocoa/nsMenuX.mm. Not sure if we need this + nsresult rv; + nsCOMPtr<nsIXBLService> xblService = do_GetService("@mozilla.org/xbl;1", &rv); + if (!xblService) + return; + + PRInt32 dummy; + nsCOMPtr<nsIAtom> tag; + xblService->ResolveTag(mContent, &dummy, getter_AddRefs(tag)); + if (tag == uWidgetAtoms::menupopup) { + *aResult = mContent; + NS_ADDREF(*aResult); + return; + } + + PRUint32 count = mContent->GetChildCount(); + + for (PRUint32 i = 0; i < count; i++) { + PRInt32 dummy; + nsIContent *child = mContent->GetChildAt(i); + nsCOMPtr<nsIAtom> tag; + xblService->ResolveTag(child, &dummy, getter_AddRefs(tag)); + if (tag == uWidgetAtoms::menupopup) { + *aResult = child; + NS_ADDREF(*aResult); + return; + } + } +} + +PRBool +uGlobalMenu::InsertMenuObjectAt(uGlobalMenuObject *menuObj, + PRUint32 index) +{ + gboolean res = dbusmenu_menuitem_child_add_position(mDbusMenuItem, + menuObj->GetDbusMenuItem(), + index); + return res && mMenuObjects.InsertElementAt(index, menuObj); +} + +PRBool +uGlobalMenu::AppendMenuObject(uGlobalMenuObject *menuObj) +{ + gboolean res = dbusmenu_menuitem_child_append(mDbusMenuItem, + menuObj->GetDbusMenuItem()); + return res && mMenuObjects.AppendElement(menuObj); +} + +PRBool +uGlobalMenu::RemoveMenuObjectAt(PRUint32 index) +{ + NS_ASSERTION(index < mMenuObjects.Length(), "Invalid index"); + if (index >= mMenuObjects.Length()) { + return PR_FALSE; + } + + gboolean res = dbusmenu_menuitem_child_delete(mDbusMenuItem, + mMenuObjects[index]->GetDbusMenuItem()); + mMenuObjects.RemoveElementAt(index); + + return !!res; +} + +nsresult +uGlobalMenu::Build() +{ + TRACE_WITH_THIS_MENUOBJECT(); + + PRUint32 count = mMenuObjects.Length(); + for (PRUint32 i = 0; i < count; i++) { + RemoveMenuObjectAt(0); + } + + if (mPopupContent && mPopupContent != mContent) { + mListener->UnregisterForContentChanges(mPopupContent, this); + } + + GetMenuPopupFromMenu(getter_AddRefs(mPopupContent)); + + if (!mPopupContent) { + // The menu has no popup, so there are no menuitems here + return NS_OK; + } + + // Manually wrap the menupopup node to make sure it's bounded + // Borrowed from widget/src/cocoa/nsMenuX.mm, we need this to make + // some menus in Thunderbird work + nsIDocument *doc = mPopupContent->GetCurrentDoc(); + if (doc) { + nsresult rv; + nsCOMPtr<nsIXPConnect> xpconnect = + do_GetService(nsIXPConnect::GetCID(), &rv); + if (NS_SUCCEEDED(rv)) { + nsIScriptGlobalObject *sgo = doc->GetScriptGlobalObject(); + nsCOMPtr<nsIScriptContext> scriptContext = sgo->GetContext(); + JSObject *global = sgo->GetGlobalJSObject(); + if (scriptContext && global) { + JSContext *cx = (JSContext *)scriptContext->GetNativeContext(); + if (cx) { + nsCOMPtr<nsIXPConnectJSObjectHolder> wrapper; + xpconnect->WrapNative(cx, global, + mPopupContent, NS_GET_IID(nsISupports), + getter_AddRefs(wrapper)); + } + } + } + } + + if (mContent != mPopupContent) { + nsresult rv = mListener->RegisterForContentChanges(mPopupContent, this); + NS_ENSURE_SUCCESS(rv, rv); + } + + ClearNeedsRebuild(); + + count = mPopupContent->GetChildCount(); + + for (PRUint32 i = 0; i < count; i++) { + nsIContent *child = mPopupContent->GetChildAt(i); + uGlobalMenuObject *menuObject = + NewGlobalMenuItem(static_cast<uGlobalMenuObject *>(this), + mListener, child, mMenuBar); + PRBool res = PR_FALSE; + if (menuObject) { + res = AppendMenuObject(menuObject); + } + NS_WARN_IF_FALSE(res, "Failed to append menuitem. Marking menu invalid"); + if (!res) { + SetNeedsRebuild(); + return NS_ERROR_FAILURE; + } + } + + return NS_OK; +} + +nsresult +uGlobalMenu::Init(uGlobalMenuObject *aParent, + uGlobalMenuDocListener *aListener, + nsIContent *aContent, + uGlobalMenuBar *aMenuBar) +{ + NS_ENSURE_ARG(aParent); + NS_ENSURE_ARG(aListener); + NS_ENSURE_ARG(aContent); + NS_ENSURE_ARG(aMenuBar); + + mParent = aParent; + mListener = aListener; + mContent = aContent; + mMenuBar = aMenuBar; + + // See the hack comment above for why this workaround is here + if (mParent->GetType() != MenuBar || mMenuBar->IsRegistered()) { + mPrimed = PR_TRUE; + } + + nsresult rv = mListener->RegisterForContentChanges(mContent, this); + NS_ENSURE_SUCCESS(rv, rv); + + return ConstructDbusMenuItem(); +} + +uGlobalMenu::uGlobalMenu(): + uGlobalMenuObject(Menu), mOpening(PR_FALSE), mNeedsRebuild(PR_TRUE), + mPrimed(PR_FALSE) +{ + MOZ_COUNT_CTOR(uGlobalMenu); +} + +uGlobalMenu::~uGlobalMenu() +{ + if (mListener) { + mListener->UnregisterForContentChanges(mContent, this); + if (mPopupContent && mContent != mPopupContent) { + mListener->UnregisterForContentChanges(mPopupContent, this); + } + } + + DestroyIconLoader(); + + if (mDbusMenuItem) { + g_signal_handler_disconnect(mDbusMenuItem, mOpenHandlerID); + g_signal_handler_disconnect(mDbusMenuItem, mEventHandlerID); + g_object_unref(mDbusMenuItem); + } + + MOZ_COUNT_DTOR(uGlobalMenu); +} + +/*static*/ uGlobalMenuObject* +uGlobalMenu::Create(uGlobalMenuObject *aParent, + uGlobalMenuDocListener *aListener, + nsIContent *aContent, + uGlobalMenuBar *aMenuBar) +{ + TRACE_WITH_CONTENT(aContent); + + uGlobalMenu *menu = new uGlobalMenu(); + if (!menu) { + return nsnull; + } + + if (NS_FAILED(menu->Init(aParent, aListener, aContent, aMenuBar))) { + delete menu; + return nsnull; + } + + return static_cast<uGlobalMenuObject *>(menu); +} + +void +uGlobalMenu::AboutToShowNotify() +{ + TRACE_WITH_THIS_MENUOBJECT(); + + if (IsDirty()) { + SyncProperties(); + } else { + UpdateVisibility(); + } +} + +void +uGlobalMenu::OpenMenu() +{ + if (!CanOpen()) { + return; + } + + dbusmenu_menuitem_show_to_user(mDbusMenuItem, 0); +} + +void +uGlobalMenu::ObserveAttributeChanged(nsIDocument *aDocument, + nsIContent *aContent, + nsIAtom *aAttribute) +{ + TRACE_WITH_THIS_MENUOBJECT(); + NS_ASSERTION(aContent == mContent || aContent == mPopupContent, + "Received an event that wasn't meant for us!"); + + if (IsDirty()) { + DEBUG_WITH_THIS_MENUOBJECT("Previously marked as invalid"); + return; + } + + if (mParent->GetType() == Menu && + !(static_cast<uGlobalMenu *>(mParent))->IsOpening()) { + DEBUG_WITH_THIS_MENUOBJECT("Parent isn't opening. Marking invalid"); + Invalidate(); + return; + } + + if (aAttribute == uWidgetAtoms::open) { + return; + } + + if (aAttribute == uWidgetAtoms::disabled) { + SyncSensitivityFromContent(); + } else if (aAttribute == uWidgetAtoms::hidden || + aAttribute == uWidgetAtoms::collapsed) { + SyncVisibilityFromContent(); + } else if (aAttribute == uWidgetAtoms::label || + aAttribute == uWidgetAtoms::accesskey) { + SyncLabelFromContent(); + } else if (aAttribute == uWidgetAtoms::image) { + SyncIconFromContent(); + } else if (aAttribute == uWidgetAtoms::_class) { + UpdateInfoFromContentClass(); + SyncVisibilityFromContent(); + SyncIconFromContent(); + } +} + +void +uGlobalMenu::ObserveContentRemoved(nsIDocument *aDocument, + nsIContent *aContainer, + nsIContent *aChild, + PRInt32 aIndexInContainer) +{ + TRACE_WITH_THIS_MENUOBJECT(); + NS_ASSERTION(aContainer == mContent || aContainer == mPopupContent, + "Received an event that wasn't meant for us!"); + + if (DoesNeedRebuild()) { + DEBUG_WITH_THIS_MENUOBJECT("Previously marked as needing a rebuild"); + return; + } + + if (!IsOpening()) { + DEBUG_WITH_THIS_MENUOBJECT("Parent not opening - Marking as needing a rebuild"); + SetNeedsRebuild(); + return; + } + + if (aContainer == mPopupContent) { + PRBool res = RemoveMenuObjectAt(aIndexInContainer); + NS_WARN_IF_FALSE(res, "Failed to remove menuitem. Marking menu invalid"); + if (!res) { + SetNeedsRebuild(); + } + } else { + Build(); + } +} + +void +uGlobalMenu::ObserveContentInserted(nsIDocument *aDocument, + nsIContent *aContainer, + nsIContent *aChild, + PRInt32 aIndexInContainer) +{ + TRACE_WITH_THIS_MENUOBJECT(); + NS_ASSERTION(aContainer == mContent || aContainer == mPopupContent, + "Received an event that wasn't meant for us!"); + + if (DoesNeedRebuild()) { + DEBUG_WITH_THIS_MENUOBJECT("Previously marked as needing a rebuild"); + return; + } + + if (!IsOpening()) { + DEBUG_WITH_THIS_MENUOBJECT("Parent not opening - Marking as needing a rebuild"); + SetNeedsRebuild(); + return; + } + + if (aContainer == mPopupContent) { + uGlobalMenuObject *newItem = + NewGlobalMenuItem(static_cast<uGlobalMenuObject *>(this), + mListener, aChild, mMenuBar); + PRBool res = PR_FALSE; + if (newItem) { + res = InsertMenuObjectAt(newItem, aIndexInContainer); + } + NS_WARN_IF_FALSE(res, "Failed to insert menuitem. Marking menu invalid"); + if (!res) { + SetNeedsRebuild(); + } + } else { + Build(); + } +} --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/src/uGlobalMenuItem.cpp +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/src/uGlobalMenuItem.cpp @@ -0,0 +1,841 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include <nsDebug.h> +#include <nsIDocument.h> +#include <nsIAtom.h> +#include <nsIPrefService.h> +#include <nsIPrefBranch2.h> +#include <nsIDOMKeyEvent.h> +#include <nsCOMPtr.h> +#include <nsServiceManagerUtils.h> +#include <nsIDOMXULCommandEvent.h> +#include <nsPIDOMWindow.h> +#include <nsIDOMWindow.h> +#include <nsIDOMDocument.h> +#include <nsIPrivateDOMEvent.h> +#include <nsIDOMEventTarget.h> +#include <mozilla/dom/Element.h> +#include <nsIContent.h> + +#include <glib-object.h> +#include <gdk/gdk.h> +#include <gdk/gdkkeysyms.h> +#include <libdbusmenu-gtk/menuitem.h> + +#include "uGlobalMenuItem.h" +#include "uGlobalMenuBar.h" +#include "uGlobalMenu.h" +#include "uWidgetAtoms.h" + +#include "uDebug.h" + +// XXX: Borrowed from content/xbl/src/nsXBLPrototypeHandler.cpp. This doesn't +// seem to be publicly available, and we need a way to map key names +// to key codes (so we can then map them to GDK key codes) + +struct keyCodeData { + const char* str; + size_t strlength; + PRUint32 keycode; +}; + +// All of these must be uppercase, since the function below does +// case-insensitive comparison by converting to uppercase. +// XXX: be sure to check this periodically for new symbol additions! +static struct keyCodeData gKeyCodes[] = { + +#define KEYCODE_ENTRY(str) {#str, sizeof(#str) - 1, nsIDOMKeyEvent::DOM_##str} + + KEYCODE_ENTRY(VK_CANCEL), + KEYCODE_ENTRY(VK_BACK_SPACE), + KEYCODE_ENTRY(VK_TAB), + KEYCODE_ENTRY(VK_CLEAR), + KEYCODE_ENTRY(VK_RETURN), + KEYCODE_ENTRY(VK_ENTER), + KEYCODE_ENTRY(VK_SHIFT), + KEYCODE_ENTRY(VK_CONTROL), + KEYCODE_ENTRY(VK_ALT), + KEYCODE_ENTRY(VK_PAUSE), + KEYCODE_ENTRY(VK_CAPS_LOCK), + KEYCODE_ENTRY(VK_ESCAPE), + KEYCODE_ENTRY(VK_SPACE), + KEYCODE_ENTRY(VK_PAGE_UP), + KEYCODE_ENTRY(VK_PAGE_DOWN), + KEYCODE_ENTRY(VK_END), + KEYCODE_ENTRY(VK_HOME), + KEYCODE_ENTRY(VK_LEFT), + KEYCODE_ENTRY(VK_UP), + KEYCODE_ENTRY(VK_RIGHT), + KEYCODE_ENTRY(VK_DOWN), + KEYCODE_ENTRY(VK_PRINTSCREEN), + KEYCODE_ENTRY(VK_INSERT), + KEYCODE_ENTRY(VK_HELP), + KEYCODE_ENTRY(VK_DELETE), + KEYCODE_ENTRY(VK_0), + KEYCODE_ENTRY(VK_1), + KEYCODE_ENTRY(VK_2), + KEYCODE_ENTRY(VK_3), + KEYCODE_ENTRY(VK_4), + KEYCODE_ENTRY(VK_5), + KEYCODE_ENTRY(VK_6), + KEYCODE_ENTRY(VK_7), + KEYCODE_ENTRY(VK_8), + KEYCODE_ENTRY(VK_9), + KEYCODE_ENTRY(VK_SEMICOLON), + KEYCODE_ENTRY(VK_EQUALS), + KEYCODE_ENTRY(VK_A), + KEYCODE_ENTRY(VK_B), + KEYCODE_ENTRY(VK_C), + KEYCODE_ENTRY(VK_D), + KEYCODE_ENTRY(VK_E), + KEYCODE_ENTRY(VK_F), + KEYCODE_ENTRY(VK_G), + KEYCODE_ENTRY(VK_H), + KEYCODE_ENTRY(VK_I), + KEYCODE_ENTRY(VK_J), + KEYCODE_ENTRY(VK_K), + KEYCODE_ENTRY(VK_L), + KEYCODE_ENTRY(VK_M), + KEYCODE_ENTRY(VK_N), + KEYCODE_ENTRY(VK_O), + KEYCODE_ENTRY(VK_P), + KEYCODE_ENTRY(VK_Q), + KEYCODE_ENTRY(VK_R), + KEYCODE_ENTRY(VK_S), + KEYCODE_ENTRY(VK_T), + KEYCODE_ENTRY(VK_U), + KEYCODE_ENTRY(VK_V), + KEYCODE_ENTRY(VK_W), + KEYCODE_ENTRY(VK_X), + KEYCODE_ENTRY(VK_Y), + KEYCODE_ENTRY(VK_Z), + KEYCODE_ENTRY(VK_NUMPAD0), + KEYCODE_ENTRY(VK_NUMPAD1), + KEYCODE_ENTRY(VK_NUMPAD2), + KEYCODE_ENTRY(VK_NUMPAD3), + KEYCODE_ENTRY(VK_NUMPAD4), + KEYCODE_ENTRY(VK_NUMPAD5), + KEYCODE_ENTRY(VK_NUMPAD6), + KEYCODE_ENTRY(VK_NUMPAD7), + KEYCODE_ENTRY(VK_NUMPAD8), + KEYCODE_ENTRY(VK_NUMPAD9), + KEYCODE_ENTRY(VK_MULTIPLY), + KEYCODE_ENTRY(VK_ADD), + KEYCODE_ENTRY(VK_SEPARATOR), + KEYCODE_ENTRY(VK_SUBTRACT), + KEYCODE_ENTRY(VK_DECIMAL), + KEYCODE_ENTRY(VK_DIVIDE), + KEYCODE_ENTRY(VK_F1), + KEYCODE_ENTRY(VK_F2), + KEYCODE_ENTRY(VK_F3), + KEYCODE_ENTRY(VK_F4), + KEYCODE_ENTRY(VK_F5), + KEYCODE_ENTRY(VK_F6), + KEYCODE_ENTRY(VK_F7), + KEYCODE_ENTRY(VK_F8), + KEYCODE_ENTRY(VK_F9), + KEYCODE_ENTRY(VK_F10), + KEYCODE_ENTRY(VK_F11), + KEYCODE_ENTRY(VK_F12), + KEYCODE_ENTRY(VK_F13), + KEYCODE_ENTRY(VK_F14), + KEYCODE_ENTRY(VK_F15), + KEYCODE_ENTRY(VK_F16), + KEYCODE_ENTRY(VK_F17), + KEYCODE_ENTRY(VK_F18), + KEYCODE_ENTRY(VK_F19), + KEYCODE_ENTRY(VK_F20), + KEYCODE_ENTRY(VK_F21), + KEYCODE_ENTRY(VK_F22), + KEYCODE_ENTRY(VK_F23), + KEYCODE_ENTRY(VK_F24), + KEYCODE_ENTRY(VK_NUM_LOCK), + KEYCODE_ENTRY(VK_SCROLL_LOCK), + KEYCODE_ENTRY(VK_COMMA), + KEYCODE_ENTRY(VK_PERIOD), + KEYCODE_ENTRY(VK_SLASH), + KEYCODE_ENTRY(VK_BACK_QUOTE), + KEYCODE_ENTRY(VK_OPEN_BRACKET), + KEYCODE_ENTRY(VK_BACK_SLASH), + KEYCODE_ENTRY(VK_CLOSE_BRACKET), + KEYCODE_ENTRY(VK_QUOTE) + +#undef KEYCODE_ENTRY +}; + +PRUint32 +uGlobalMenuItem::GetKeyCode(nsAString &aKeyName) +{ + nsCAutoString keyName; + CopyUTF16toUTF8(aKeyName, keyName); + ToUpperCase(keyName); // We want case-insensitive comparison with data + // stored as uppercase. + + PRUint32 keyNameLength = keyName.Length(); + const char* keyNameStr = keyName.get(); + for (PRUint16 i = 0; i < (sizeof(gKeyCodes) / sizeof(gKeyCodes[0])); ++i) + if (keyNameLength == gKeyCodes[i].strlength && + !strcmp(gKeyCodes[i].str, keyNameStr)) + return gKeyCodes[i].keycode; + + return 0; +} + +// XXX: Borrowed from widget/src/gtk2/nsGtkKeyUtils.cpp +struct nsKeyConverter { + int vkCode; // Platform independent key code + int keysym; // GDK keysym key code +}; + +// +// Netscape keycodes are defined in widget/public/nsGUIEvent.h +// GTK keycodes are defined in <gdk/gdkkeysyms.h> +// +static struct nsKeyConverter nsKeycodes[] = { + { nsIDOMKeyEvent::DOM_VK_CANCEL, GDK_Cancel }, + { nsIDOMKeyEvent::DOM_VK_BACK_SPACE, GDK_BackSpace }, + { nsIDOMKeyEvent::DOM_VK_TAB, GDK_Tab }, + { nsIDOMKeyEvent::DOM_VK_TAB, GDK_ISO_Left_Tab }, + { nsIDOMKeyEvent::DOM_VK_CLEAR, GDK_Clear }, + { nsIDOMKeyEvent::DOM_VK_RETURN, GDK_Return }, + { nsIDOMKeyEvent::DOM_VK_SHIFT, GDK_Shift_L }, + { nsIDOMKeyEvent::DOM_VK_SHIFT, GDK_Shift_R }, + { nsIDOMKeyEvent::DOM_VK_CONTROL, GDK_Control_L }, + { nsIDOMKeyEvent::DOM_VK_CONTROL, GDK_Control_R }, + { nsIDOMKeyEvent::DOM_VK_ALT, GDK_Alt_L }, + { nsIDOMKeyEvent::DOM_VK_ALT, GDK_Alt_R }, + { nsIDOMKeyEvent::DOM_VK_META, GDK_Meta_L }, + { nsIDOMKeyEvent::DOM_VK_META, GDK_Meta_R }, + { nsIDOMKeyEvent::DOM_VK_PAUSE, GDK_Pause }, + { nsIDOMKeyEvent::DOM_VK_CAPS_LOCK, GDK_Caps_Lock }, + { nsIDOMKeyEvent::DOM_VK_KANA, GDK_Kana_Lock }, + { nsIDOMKeyEvent::DOM_VK_KANA, GDK_Kana_Shift }, + { nsIDOMKeyEvent::DOM_VK_HANGUL, GDK_Hangul }, + // { nsIDOMKeyEvent::DOM_VK_JUNJA, GDK_XXX }, + // { nsIDOMKeyEvent::DOM_VK_FINAL, GDK_XXX }, + { nsIDOMKeyEvent::DOM_VK_HANJA, GDK_Hangul_Hanja }, + { nsIDOMKeyEvent::DOM_VK_KANJI, GDK_Kanji }, + { nsIDOMKeyEvent::DOM_VK_ESCAPE, GDK_Escape }, + { nsIDOMKeyEvent::DOM_VK_CONVERT, GDK_Henkan }, + { nsIDOMKeyEvent::DOM_VK_NONCONVERT, GDK_Muhenkan }, + // { nsIDOMKeyEvent::DOM_VK_ACCEPT, GDK_XXX }, + { nsIDOMKeyEvent::DOM_VK_MODECHANGE, GDK_Mode_switch }, + { nsIDOMKeyEvent::DOM_VK_SPACE, GDK_space }, + { nsIDOMKeyEvent::DOM_VK_PAGE_UP, GDK_Page_Up }, + { nsIDOMKeyEvent::DOM_VK_PAGE_DOWN, GDK_Page_Down }, + { nsIDOMKeyEvent::DOM_VK_END, GDK_End }, + { nsIDOMKeyEvent::DOM_VK_HOME, GDK_Home }, + { nsIDOMKeyEvent::DOM_VK_LEFT, GDK_Left }, + { nsIDOMKeyEvent::DOM_VK_UP, GDK_Up }, + { nsIDOMKeyEvent::DOM_VK_RIGHT, GDK_Right }, + { nsIDOMKeyEvent::DOM_VK_DOWN, GDK_Down }, + { nsIDOMKeyEvent::DOM_VK_SELECT, GDK_Select }, + { nsIDOMKeyEvent::DOM_VK_PRINT, GDK_Print }, + { nsIDOMKeyEvent::DOM_VK_EXECUTE, GDK_Execute }, + { nsIDOMKeyEvent::DOM_VK_PRINTSCREEN, GDK_Print }, + { nsIDOMKeyEvent::DOM_VK_INSERT, GDK_Insert }, + { nsIDOMKeyEvent::DOM_VK_DELETE, GDK_Delete }, + { nsIDOMKeyEvent::DOM_VK_HELP, GDK_Help }, + + // keypad keys + { nsIDOMKeyEvent::DOM_VK_LEFT, GDK_KP_Left }, + { nsIDOMKeyEvent::DOM_VK_RIGHT, GDK_KP_Right }, + { nsIDOMKeyEvent::DOM_VK_UP, GDK_KP_Up }, + { nsIDOMKeyEvent::DOM_VK_DOWN, GDK_KP_Down }, + { nsIDOMKeyEvent::DOM_VK_PAGE_UP, GDK_KP_Page_Up }, + // Not sure what these are + //{ nsIDOMKeyEvent::DOM_VK_, GDK_KP_Prior }, + //{ nsIDOMKeyEvent::DOM_VK_, GDK_KP_Next }, + // GDK_KP_Begin is the 5 on the non-numlock keypad + //{ nsIDOMKeyEvent::DOM_VK_, GDK_KP_Begin }, + { nsIDOMKeyEvent::DOM_VK_PAGE_DOWN, GDK_KP_Page_Down }, + { nsIDOMKeyEvent::DOM_VK_HOME, GDK_KP_Home }, + { nsIDOMKeyEvent::DOM_VK_END, GDK_KP_End }, + { nsIDOMKeyEvent::DOM_VK_INSERT, GDK_KP_Insert }, + { nsIDOMKeyEvent::DOM_VK_DELETE, GDK_KP_Delete }, + + { nsIDOMKeyEvent::DOM_VK_MULTIPLY, GDK_KP_Multiply }, + { nsIDOMKeyEvent::DOM_VK_ADD, GDK_KP_Add }, + { nsIDOMKeyEvent::DOM_VK_SEPARATOR, GDK_KP_Separator }, + { nsIDOMKeyEvent::DOM_VK_SUBTRACT, GDK_KP_Subtract }, + { nsIDOMKeyEvent::DOM_VK_DECIMAL, GDK_KP_Decimal }, + { nsIDOMKeyEvent::DOM_VK_DIVIDE, GDK_KP_Divide }, + { nsIDOMKeyEvent::DOM_VK_RETURN, GDK_KP_Enter }, + { nsIDOMKeyEvent::DOM_VK_NUM_LOCK, GDK_Num_Lock }, + { nsIDOMKeyEvent::DOM_VK_SCROLL_LOCK,GDK_Scroll_Lock }, + + { nsIDOMKeyEvent::DOM_VK_COMMA, GDK_comma }, + { nsIDOMKeyEvent::DOM_VK_PERIOD, GDK_period }, + { nsIDOMKeyEvent::DOM_VK_SLASH, GDK_slash }, + { nsIDOMKeyEvent::DOM_VK_BACK_SLASH, GDK_backslash }, + { nsIDOMKeyEvent::DOM_VK_BACK_QUOTE, GDK_grave }, + { nsIDOMKeyEvent::DOM_VK_OPEN_BRACKET, GDK_bracketleft }, + { nsIDOMKeyEvent::DOM_VK_CLOSE_BRACKET, GDK_bracketright }, + { nsIDOMKeyEvent::DOM_VK_SEMICOLON, GDK_colon }, + { nsIDOMKeyEvent::DOM_VK_QUOTE, GDK_apostrophe }, + + // context menu key, keysym 0xff67, typically keycode 117 on 105-key (Microsoft) + // x86 keyboards, located between right 'Windows' key and right Ctrl key + { nsIDOMKeyEvent::DOM_VK_CONTEXT_MENU, GDK_Menu }, + { nsIDOMKeyEvent::DOM_VK_SLEEP, GDK_Sleep }, + + // NS doesn't have dash or equals distinct from the numeric keypad ones, + // so we'll use those for now. See bug 17008: + { nsIDOMKeyEvent::DOM_VK_SUBTRACT, GDK_minus }, + { nsIDOMKeyEvent::DOM_VK_EQUALS, GDK_equal }, + + // Some shifted keys, see bug 15463 as well as 17008. + // These should be subject to different keyboard mappings. + { nsIDOMKeyEvent::DOM_VK_QUOTE, GDK_quotedbl }, + { nsIDOMKeyEvent::DOM_VK_OPEN_BRACKET, GDK_braceleft }, + { nsIDOMKeyEvent::DOM_VK_CLOSE_BRACKET, GDK_braceright }, + { nsIDOMKeyEvent::DOM_VK_BACK_SLASH, GDK_bar }, + { nsIDOMKeyEvent::DOM_VK_SEMICOLON, GDK_semicolon }, + { nsIDOMKeyEvent::DOM_VK_BACK_QUOTE, GDK_asciitilde }, + { nsIDOMKeyEvent::DOM_VK_COMMA, GDK_less }, + { nsIDOMKeyEvent::DOM_VK_PERIOD, GDK_greater }, + { nsIDOMKeyEvent::DOM_VK_SLASH, GDK_question }, + { nsIDOMKeyEvent::DOM_VK_1, GDK_exclam }, + { nsIDOMKeyEvent::DOM_VK_2, GDK_at }, + { nsIDOMKeyEvent::DOM_VK_3, GDK_numbersign }, + { nsIDOMKeyEvent::DOM_VK_4, GDK_dollar }, + { nsIDOMKeyEvent::DOM_VK_5, GDK_percent }, + { nsIDOMKeyEvent::DOM_VK_6, GDK_asciicircum }, + { nsIDOMKeyEvent::DOM_VK_7, GDK_ampersand }, + { nsIDOMKeyEvent::DOM_VK_8, GDK_asterisk }, + { nsIDOMKeyEvent::DOM_VK_9, GDK_parenleft }, + { nsIDOMKeyEvent::DOM_VK_0, GDK_parenright }, + { nsIDOMKeyEvent::DOM_VK_SUBTRACT, GDK_underscore }, + { nsIDOMKeyEvent::DOM_VK_EQUALS, GDK_plus } +}; + +PRUint32 +uGlobalMenuItem::MozKeyCodeToGdkKeyCode(PRUint32 aMozKeyCode) +{ + if (aMozKeyCode >= nsIDOMKeyEvent::DOM_VK_A && + aMozKeyCode <= nsIDOMKeyEvent::DOM_VK_Z) + return aMozKeyCode; + + if (aMozKeyCode >= nsIDOMKeyEvent::DOM_VK_0 && + aMozKeyCode <= nsIDOMKeyEvent::DOM_VK_9) + return aMozKeyCode; + + if (aMozKeyCode >= nsIDOMKeyEvent::DOM_VK_NUMPAD0 && + aMozKeyCode <= nsIDOMKeyEvent::DOM_VK_NUMPAD9) + return aMozKeyCode - nsIDOMKeyEvent::DOM_VK_NUMPAD0 + GDK_0; + + if (aMozKeyCode >= nsIDOMKeyEvent::DOM_VK_F1 && + aMozKeyCode <= nsIDOMKeyEvent::DOM_VK_F24) + return aMozKeyCode - nsIDOMKeyEvent::DOM_VK_F1 + GDK_KEY_F1; + + for (PRUint32 i = 0; i < NS_ARRAY_LENGTH(nsKeycodes); i++) { + if (nsKeycodes[i].vkCode == aMozKeyCode) + return nsKeycodes[i].keysym; + } + + return GDK_VoidSymbol; +} + +void +uGlobalMenuItem::SyncAccelFromContent() +{ + if (!mKeyContent) { + dbusmenu_menuitem_property_remove(mDbusMenuItem, + DBUSMENU_MENUITEM_PROP_SHORTCUT); + return; + } + + nsAutoString modStr; + mKeyContent->GetAttr(kNameSpaceID_None, uWidgetAtoms::modifiers, modStr); + + PRUint32 modifier = 0; + + if (!modStr.IsEmpty()) { + char* str = ToNewUTF8String(modStr); + char *token = strtok(str, ", \t"); + while(token) { + if (strcmp(token, "shift") == 0) { + modifier |= GDK_SHIFT_MASK; + } else if (strcmp(token, "alt") == 0) { + modifier |= GDK_MOD1_MASK; + } else if (strcmp(token, "meta") == 0) { + modifier |= GDK_META_MASK; + } else if (strcmp(token, "control") == 0) { + modifier |= GDK_CONTROL_MASK; + } else if (strcmp(token, "accel") == 0) { + nsCOMPtr<nsIPrefBranch> prefs = do_GetService(NS_PREFSERVICE_CONTRACTID); + if (prefs) { + PRInt32 accel; + prefs->GetIntPref("ui.key.accelKey", &accel); + if (accel == nsIDOMKeyEvent::DOM_VK_META) { + modifier |= GDK_META_MASK; + } else if (accel == nsIDOMKeyEvent::DOM_VK_ALT) { + modifier |= GDK_MOD1_MASK; + } else { + modifier |= GDK_CONTROL_MASK; + } + } else { + // This is the default, see layout/xul/base/src/nsMenuFrame.cpp + modifier |= GDK_CONTROL_MASK; + } + } + + token = strtok(nsnull, ", \t"); + } + + nsMemory::Free(str); + } + + nsAutoString keyStr; + guint key = 0; + mKeyContent->GetAttr(kNameSpaceID_None, uWidgetAtoms::key, keyStr); + + nsCAutoString cKeyStr; + CopyUTF16toUTF8(keyStr, cKeyStr); + + if (!cKeyStr.IsEmpty()) { + key = gdk_keyval_from_name(cKeyStr.get()); + } + + if (key == 0 && !keyStr.IsEmpty()) { + key = gdk_unicode_to_keyval(*keyStr.BeginReading()); + } + + if (key == 0) { + mKeyContent->GetAttr(kNameSpaceID_None, uWidgetAtoms::keycode, keyStr); + if (!keyStr.IsEmpty()) + key = MozKeyCodeToGdkKeyCode(GetKeyCode(keyStr)); + } + + if (key == 0) { + key = GDK_VoidSymbol; + } + + if (key != GDK_VoidSymbol) { + dbusmenu_menuitem_property_set_shortcut(mDbusMenuItem, key, + static_cast<GdkModifierType>(modifier)); + } else { + dbusmenu_menuitem_property_remove(mDbusMenuItem, + DBUSMENU_MENUITEM_PROP_SHORTCUT); + } +} + +void +uGlobalMenuItem::SyncTypeAndStateFromContent() +{ + static nsIContent::AttrValuesArray attrs[] = + { &uWidgetAtoms::checkbox, &uWidgetAtoms::radio, nsnull }; + PRInt32 type = mContent->FindAttrValueIn(kNameSpaceID_None, + uWidgetAtoms::type, + attrs, eCaseMatters); + + if (type >= 0 && type < 2) { + if (type == 0) { + dbusmenu_menuitem_property_set(mDbusMenuItem, + DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE, + DBUSMENU_MENUITEM_TOGGLE_CHECK); + mType = CheckBox; + } else if (type == 1) { + dbusmenu_menuitem_property_set(mDbusMenuItem, + DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE, + DBUSMENU_MENUITEM_TOGGLE_RADIO); + mType = Radio; + } + + nsIContent *content = mCommandContent ? mCommandContent : mContent; + mToggleState = content->AttrValueIs(kNameSpaceID_None, + uWidgetAtoms::checked, + uWidgetAtoms::_true, + eCaseMatters); + dbusmenu_menuitem_property_set_int(mDbusMenuItem, + DBUSMENU_MENUITEM_PROP_TOGGLE_STATE, + mToggleState ? + DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED : + DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED); + + if (mCommandContent) { + UGM_BLOCK_EVENTS_FOR_CURRENT_SCOPE(); + if (mToggleState) { + mContent->SetAttr(kNameSpaceID_None, uWidgetAtoms::checked, + NS_LITERAL_STRING("true"), PR_TRUE); + } else { + mContent->UnsetAttr(kNameSpaceID_None, uWidgetAtoms::checked, + PR_TRUE); + } + } + + mIsToggle = PR_TRUE; + } else { + dbusmenu_menuitem_property_remove(mDbusMenuItem, + DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE); + dbusmenu_menuitem_property_remove(mDbusMenuItem, + DBUSMENU_MENUITEM_PROP_TOGGLE_STATE); + mIsToggle = PR_FALSE; + mType = Normal; + } +} + +void +uGlobalMenuItem::SyncProperties() +{ + TRACE_WITH_THIS_MENUOBJECT(); + + if (mCommandContent) { + mListener->UnregisterForContentChanges(mCommandContent, this); + mCommandContent = nsnull; + } + if (mKeyContent) { + mListener->UnregisterForContentChanges(mKeyContent, this); + mKeyContent = nsnull; + } + + nsIDocument *doc = mContent->GetCurrentDoc(); + nsAutoString value; + mContent->GetAttr(kNameSpaceID_None, uWidgetAtoms::command, value); + if (!value.IsEmpty()) { + mCommandContent = doc->GetElementById(value); + if (mCommandContent) { + mListener->RegisterForContentChanges(mCommandContent, this); + } + } + mContent->GetAttr(kNameSpaceID_None, uWidgetAtoms::key, value); + if (!value.IsEmpty()) { + mKeyContent = doc->GetElementById(value); + if (mKeyContent) { + mListener->RegisterForContentChanges(mKeyContent, this); + } + } + + // We need to do this first, as some of the next functions may + // trigger mutation events, which we want to handle if we our parent + // is opening + ClearInvalid(); + + UpdateInfoFromContentClass(); + SyncLabelFromContent(mCommandContent); + SyncSensitivityFromContent(mCommandContent); + SyncVisibilityFromContent(); + SyncTypeAndStateFromContent(); + SyncAccelFromContent(); + SyncIconFromContent(); +} + +/*static*/ void +uGlobalMenuItem::ItemActivatedCallback(DbusmenuMenuitem *menuItem, + PRUint32 timeStamp, + void *data) +{ + uGlobalMenuItem *self = static_cast<uGlobalMenuItem *>(data); + self->Activate(); +} + +void +uGlobalMenuItem::Activate() +{ + // This first bit seems backwards, but it's not really. If autocheck is + // not set or autocheck==true, then the checkbox state is usually updated + // by the input event that clicked on the menu item. In this case, we need + // to manually update the checkbox state. If autocheck==false, then the input + // event doesn't toggle the checkbox state, and it is up to the handler on + // this node to do it instead. In this case, we leave it alone + + // XXX: it is important to update the checkbox state before dispatching + // the event, as the handler might check the new state + if (!mContent->AttrValueIs(kNameSpaceID_None, uWidgetAtoms::autocheck, + uWidgetAtoms::_false, eCaseMatters) && + mType != Normal) { + nsIContent *content = mCommandContent ? mCommandContent : mContent; + if (!mToggleState) { + // We're currently not checked, so check now + content->SetAttr(kNameSpaceID_None, uWidgetAtoms::checked, + NS_LITERAL_STRING("true"), PR_TRUE); + } else if (mToggleState && mType == CheckBox) { + // We're currently checked, so uncheck now. Don't do this for radio buttons + content->UnsetAttr(kNameSpaceID_None, uWidgetAtoms::checked, PR_TRUE); + } + } + + nsIDocument *doc = mContent->GetOwnerDoc(); + if (doc) { + nsCOMPtr<nsIDOMDocument> domDoc = do_QueryInterface(doc); + if (domDoc) { + nsCOMPtr<nsIDOMEvent> event; + domDoc->CreateEvent(NS_LITERAL_STRING("xulcommandevent"), + getter_AddRefs(event)); + if (event) { + nsCOMPtr<nsIDOMXULCommandEvent> cmdEvent = do_QueryInterface(event); + if (cmdEvent) { + nsCOMPtr<nsIDOMWindow> window; + domDoc->GetDefaultView(getter_AddRefs(window)); + if (window) { + cmdEvent->InitCommandEvent(NS_LITERAL_STRING("command"), + PR_TRUE, PR_TRUE, window, 0, + PR_FALSE, PR_FALSE, PR_FALSE, + PR_FALSE, nsnull); + nsCOMPtr<nsIDOMEventTarget> target = do_QueryInterface(mContent); + if (target) { + nsCOMPtr<nsIPrivateDOMEvent> priv = do_QueryInterface(event); + if (priv) { + priv->SetTrusted(PR_TRUE); + } + PRBool dummy; + target->DispatchEvent(event, &dummy); + } + } + } + } + } + } +} + +nsresult +uGlobalMenuItem::ConstructDbusMenuItem() +{ + mDbusMenuItem = dbusmenu_menuitem_new(); + if (!mDbusMenuItem) + return NS_ERROR_OUT_OF_MEMORY; + + mHandlerID = g_signal_connect(G_OBJECT(mDbusMenuItem), + DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, + G_CALLBACK(ItemActivatedCallback), + this); + + SyncProperties(); + + return NS_OK; +} + +nsresult +uGlobalMenuItem::Init(uGlobalMenuObject *aParent, + uGlobalMenuDocListener *aListener, + nsIContent *aContent, + uGlobalMenuBar *aMenuBar) +{ + NS_ENSURE_ARG(aParent); + NS_ENSURE_ARG(aListener); + NS_ENSURE_ARG(aContent); + NS_ENSURE_ARG(aMenuBar); + + mParent = aParent; + mListener = aListener; + mContent = aContent; + mMenuBar = aMenuBar; + + nsresult rv; + rv = mListener->RegisterForContentChanges(mContent, this); + NS_ENSURE_SUCCESS(rv, rv); + + return ConstructDbusMenuItem(); +} + +void +uGlobalMenuItem::UncheckSiblings() +{ + if (mType != Radio) { + // If we're not a radio button, we don't care + return; + } + + nsAutoString name; + mContent->GetAttr(kNameSpaceID_None, uWidgetAtoms::name, name); + if (name.IsEmpty()) { + // If we don't have a name, then we can't find our siblings + return; + } + + nsIContent *parent = mContent->GetParent(); + if (!parent) { + return; + } + + PRUint32 count = parent->GetChildCount(); + for (PRUint32 i = 0; i < count; i++) { + nsIContent *sibling = parent->GetChildAt(i); + if (sibling->AttrValueIs(kNameSpaceID_None, uWidgetAtoms::name, + name, eCaseMatters) && sibling != mContent && + sibling->AttrValueIs(kNameSpaceID_None, uWidgetAtoms::type, + uWidgetAtoms::radio, eCaseMatters)) { + sibling->UnsetAttr(kNameSpaceID_None, uWidgetAtoms::checked, PR_TRUE); + } + } +} + +uGlobalMenuItem::uGlobalMenuItem(): + uGlobalMenuObject(MenuItem) +{ + MOZ_COUNT_CTOR(uGlobalMenuItem); +} + +uGlobalMenuItem::~uGlobalMenuItem() +{ + if (mListener) { + mListener->UnregisterForContentChanges(mContent, this); + if (mCommandContent) { + mListener->UnregisterForContentChanges(mCommandContent, this); + } + if (mKeyContent) { + mListener->UnregisterForContentChanges(mKeyContent, this); + } + } + + DestroyIconLoader(); + + if (mDbusMenuItem) { + g_signal_handler_disconnect(mDbusMenuItem, mHandlerID); + g_object_unref(mDbusMenuItem); + } + + MOZ_COUNT_DTOR(uGlobalMenuItem); +} + +/*static*/ uGlobalMenuObject* +uGlobalMenuItem::Create(uGlobalMenuObject *aParent, + uGlobalMenuDocListener *aListener, + nsIContent *aContent, + uGlobalMenuBar *aMenuBar) +{ + TRACE_WITH_CONTENT(aContent); + + uGlobalMenuItem *menuitem = new uGlobalMenuItem(); + if (!menuitem) { + return nsnull; + } + + if (NS_FAILED(menuitem->Init(aParent, aListener, aContent, aMenuBar))) { + delete menuitem; + return nsnull; + } + + return static_cast<uGlobalMenuObject *>(menuitem); +} + +void +uGlobalMenuItem::AboutToShowNotify() +{ + TRACE_WITH_THIS_MENUOBJECT(); + + if (IsDirty()) { + SyncProperties(); + } else { + UpdateVisibility(); + } +} + +void +uGlobalMenuItem::ObserveAttributeChanged(nsIDocument *aDocument, + nsIContent *aContent, + nsIAtom *aAttribute) +{ + TRACE_WITH_THIS_MENUOBJECT(); + UGM_ENSURE_EVENTS_UNBLOCKED(); + NS_ASSERTION(aContent == mContent || aContent == mCommandContent || + aContent == mKeyContent, + "Received an event that wasn't meant for us!"); + + if ((aContent == mContent || aContent == mCommandContent) && + aAttribute == uWidgetAtoms::checked && + aContent->AttrValueIs(kNameSpaceID_None, uWidgetAtoms::checked, + uWidgetAtoms::_true, eCaseMatters)) { + UncheckSiblings(); + } + + if (IsDirty()) { + DEBUG_WITH_THIS_MENUOBJECT("Previously marked as invalid"); + return; + } + + if (mParent->GetType() == Menu && + !(static_cast<uGlobalMenu *>(mParent))->IsOpening()) { + DEBUG_WITH_THIS_MENUOBJECT("Parent isn't opening. Marking invalid"); + Invalidate(); + return; + } + + if (aContent == mContent) { + if (aAttribute == uWidgetAtoms::command || + aAttribute == uWidgetAtoms::key) { + SyncProperties(); + } else if (aAttribute == uWidgetAtoms::label || + aAttribute == uWidgetAtoms::accesskey) { + SyncLabelFromContent(mCommandContent); + } else if (aAttribute == uWidgetAtoms::hidden || + aAttribute == uWidgetAtoms::collapsed) { + SyncVisibilityFromContent(); + } else if (aAttribute == uWidgetAtoms::disabled) { + SyncSensitivityFromContent(mCommandContent); + } else if (aAttribute == uWidgetAtoms::checked || + aAttribute == uWidgetAtoms::type) { + SyncTypeAndStateFromContent(); + } else if (aAttribute == uWidgetAtoms::image) { + SyncIconFromContent(); + } else if (aAttribute == uWidgetAtoms::_class) { + UpdateInfoFromContentClass(); + SyncVisibilityFromContent(); + SyncIconFromContent(); + } + } else if (aContent == mCommandContent) { + if (aAttribute == uWidgetAtoms::label) { + SyncLabelFromContent(mCommandContent); + } else if (aAttribute == uWidgetAtoms::disabled) { + SyncSensitivityFromContent(mCommandContent); + } else if (aAttribute == uWidgetAtoms::checked) { + SyncTypeAndStateFromContent(); + } + } else if (aContent == mKeyContent) { + SyncAccelFromContent(); + } +} + +void +uGlobalMenuItem::ObserveContentRemoved(nsIDocument *aDocument, + nsIContent *aContainer, + nsIContent *aChild, + PRInt32 aIndexInContainer) +{ + NS_ASSERTION(0, "We can't remove content from a menuitem!"); +} + +void +uGlobalMenuItem::ObserveContentInserted(nsIDocument *aDocument, + nsIContent *aContainer, + nsIContent *aChild, + PRInt32 aIndexInContainer) +{ + NS_ASSERTION(0, "We can't insert content in to a menuitem!"); +} --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/public/uIGlobalMenuService.idl +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/public/uIGlobalMenuService.idl @@ -0,0 +1,71 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include "nsISupports.idl" +#include "nsIObserver.idl" + +[ptr] native uGlobalMenuBarPtr(uGlobalMenuBar); +[ptr] native nsIWidgetPtr(nsIWidget); +[ptr] native nsIContentPtr(nsIContent); +[ptr] native uGlobalMenuRequestAutoCancellerPtr(uGlobalMenuRequestAutoCanceller); + +%{C++ +class uGlobalMenuBar; +class uGlobalMenuRequestAutoCanceller; +class nsIWidget; +class nsIContent; +%} + +[scriptable, uuid(92e2d4d4-84d6-400b-99ce-bb3b63639b5b)] +interface uIGlobalMenuService : nsISupports +{ + /* Create a menu bar from the specified DOM node and associate with the top-level + * window containing the specified DOM window */ + [noscript] void createGlobalMenuBar (in nsIWidgetPtr parent, in nsIContentPtr menuBarNode); + + /* Register a menu bar with the menu bar service */ + [noscript, notxpcom] void registerGlobalMenuBar (in uGlobalMenuBarPtr menuBar, in uGlobalMenuRequestAutoCancellerPtr canceller); + + /* Convenience functions to register to receive notification of the menu + * service online status changing */ + void registerNotification (in nsIObserver observer); + void unregisterNotification (in nsIObserver observer); + + /* Menu service online status */ + readonly attribute boolean online; +}; --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/components/public/Makefile.in +++ firefox-7.0+build2+nobinonly/debian/globalmenu/components/public/Makefile.in @@ -0,0 +1,52 @@ +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Chris Coulson <chris.coulson@canonical.com> +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +DEPTH = ../../../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +MODULE = globalmenu +XPI_NAME = globalmenu + +XPIDLSRCS = \ + uIGlobalMenuService.idl \ + $(NULL) + +include $(topsrcdir)/config/rules.mk --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/chrome/Makefile.in +++ firefox-7.0+build2+nobinonly/debian/globalmenu/chrome/Makefile.in @@ -0,0 +1,49 @@ +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Chris Coulson <chris.coulson@canonical.com> +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +DEPTH = ../../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +MODULE = globalmenu +XPI_NAME = globalmenu +USE_EXTENSION_MANIFEST = 1 + +include $(topsrcdir)/config/rules.mk --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/chrome/jar.mn +++ firefox-7.0+build2+nobinonly/debian/globalmenu/chrome/jar.mn @@ -0,0 +1,8 @@ +globalmenu.jar: +% content globalmenu %content/ + content/firefoxOverlay.xul (content/firefoxOverlay.xul) + content/firefoxMenu.js (content/firefoxMenu.js) + content/thunderbirdOverlay.xul (content/thunderbirdOverlay.xul) + content/thunderbirdMenu.js (content/thunderbirdMenu.js) +% overlay chrome://browser/content/browser.xul chrome://globalmenu/content/firefoxOverlay.xul application={ec8030f7-c20a-464f-9b0e-13a3a9e97384} +% overlay chrome://messenger/content/messenger.xul chrome://globalmenu/content/thunderbirdOverlay.xul application={3550f703-e582-4d05-9a08-453d09bdfdc6} --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/chrome/content/thunderbirdOverlay.xul +++ firefox-7.0+build2+nobinonly/debian/globalmenu/chrome/content/thunderbirdOverlay.xul @@ -0,0 +1,41 @@ +<?xml version="1.0"?> +<!-- ***** BEGIN LICENSE BLOCK ***** + - Version: MPL 1.1/GPL 2.0/LGPL 2.1 + - + - The contents of this file are subject to the Mozilla Public License Version + - 1.1 (the "License"); you may not use this file except in compliance with + - the License. You may obtain a copy of the License at + - http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS IS" basis, + - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + - for the specific language governing rights and limitations under the + - License. + - + - The Original Code is globalmenu-extension. + - + - The Initial Developer of the Original Code is + - Canonical Ltd. + - Portions created by the Initial Developer are Copyright (C) 2010 + - the Initial Developer. All Rights Reserved. + - + - Contributor(s): + - Chris Coulson <chris.coulson@canonical.com> + - + - Alternatively, the contents of this file may be used under the terms of + - either the GNU General Public License Version 2 or later (the "GPL"), or + - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + - in which case the provisions of the GPL or the LGPL are applicable instead + - of those above. If you wish to allow use of your version of this file only + - under the terms of either the GPL or the LGPL, and not to allow others to + - use your version of this file under the terms of the MPL, indicate your + - decision by deleting the provisions above and replace them with the notice + - and other provisions required by the GPL or the LGPL. If you do not delete + - the provisions above, a recipient may use your version of this file under + - the terms of any one of the MPL, the GPL or the LGPL. + - + - ***** END LICENSE BLOCK ***** --> + +<overlay id="globalmenu-extension-messenger-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> + <script type="application/x-javascript" src="chrome://globalmenu/content/thunderbirdMenu.js" /> +</overlay> --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/chrome/content/firefoxOverlay.xul +++ firefox-7.0+build2+nobinonly/debian/globalmenu/chrome/content/firefoxOverlay.xul @@ -0,0 +1,41 @@ +<?xml version="1.0"?> +<!-- ***** BEGIN LICENSE BLOCK ***** + - Version: MPL 1.1/GPL 2.0/LGPL 2.1 + - + - The contents of this file are subject to the Mozilla Public License Version + - 1.1 (the "License"); you may not use this file except in compliance with + - the License. You may obtain a copy of the License at + - http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS IS" basis, + - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + - for the specific language governing rights and limitations under the + - License. + - + - The Original Code is globalmenu-extension. + - + - The Initial Developer of the Original Code is + - Canonical Ltd. + - Portions created by the Initial Developer are Copyright (C) 2010 + - the Initial Developer. All Rights Reserved. + - + - Contributor(s): + - Chris Coulson <chris.coulson@canonical.com> + - + - Alternatively, the contents of this file may be used under the terms of + - either the GNU General Public License Version 2 or later (the "GPL"), or + - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + - in which case the provisions of the GPL or the LGPL are applicable instead + - of those above. If you wish to allow use of your version of this file only + - under the terms of either the GPL or the LGPL, and not to allow others to + - use your version of this file under the terms of the MPL, indicate your + - decision by deleting the provisions above and replace them with the notice + - and other provisions required by the GPL or the LGPL. If you do not delete + - the provisions above, a recipient may use your version of this file under + - the terms of any one of the MPL, the GPL or the LGPL. + - + - ***** END LICENSE BLOCK ***** --> + +<overlay id="globalmenu-extension-browser-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> + <script type="application/x-javascript" src="chrome://globalmenu/content/firefoxMenu.js" /> +</overlay> --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/chrome/content/thunderbirdMenu.js +++ firefox-7.0+build2+nobinonly/debian/globalmenu/chrome/content/thunderbirdMenu.js @@ -0,0 +1,214 @@ +/* -*- Mode: javascript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * Nils Maier <maierman@web.de> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +(function() { + "use strict"; + + function $(id) document.getElementById(id); + + function uGlobalMenuObserver() { + this.init(); + } + + uGlobalMenuObserver.prototype = { + init: function() { + this.savedThrobberPos = -1; + this.menuService = Cc["@canonical.com/globalmenu-service;1"]. + getService(Ci.uIGlobalMenuService); + this.menuService.registerNotification(this); + if (this.menuService.online) { + this.fixupUI(); + } + }, + + observe: function(subject, topic, data) { + if((topic == "native-menu-service:online") || + (topic == "native-menu-service:offline")) { + this.fixupUI(); + } + }, + + fixupUI: function() { + var menuBar = $("mail-toolbar-menubar2"); + var mailBar = $("mail-bar3"); + if (!mailBar || !menuBar) { + return; + } + + if (this.menuService.online) { + + if (mailBar.hidden) { + return; + } + + let curSet = menuBar.currentSet.split(","); + this.savedThrobberPos = curSet.indexOf("throbber-box"); + if (this.savedThrobberPos == -1) { + return; + } + this.savedThrobberPosLHS = null; + this.savedThrobberPosRHS = null; + if (this.savedThrobberPos > 0) { + this.savedThrobberPosLHS = curSet[this.savedThrobberPos - 1]; + } + if (this.savedThrobberPos < (curSet.length - 1)) { + this.savedThrobberPosRHS = curSet[this.savedThrobberPos + 1]; + } + + curSet.splice(this.savedThrobberPos, 1); + menuBar.currentSet = curSet.join(","); + mailBar.currentSet += ",throbber-box"; + + this.spinnerMoved = true; + + } else { + + if (this.savedThrobberPos == -1) { + return; + } + + let curSet = mailBar.currentSet.split(","); + let throbberPos = curSet.indexOf("throbber-box"); + if (throbberPos == -1) { + return; + } + + curSet.splice(throbberPos, 1); + mailBar.currentSet = curSet.join(","); + + // We try to restore the original position of the spinner now + curSet = menuBar.currentSet.split(","); + let newPos = 0; + // Get the indices of our former siblings + let lhsIndex = curSet.indexOf(this.savedThrobberPosLHS); + let rhsIndex = curSet.indexOf(this.savedThrobberPosRHS); + if (!this.savedThrobberPosLHS) { + // We were positioned on the LHS before, so stick the spinner + // at the beginning + newPos = 0; + } else if (!this.savedThrobberPosRHS) { + // We were positioned on the RHS before, so stick the spinner + // at the end + newPos = curSet.length; + } else { + // We were positioned somewhere in the middle if we get here + if (lhsIndex == -1 && rhsIndex == -1) { + // Neither of our former siblings exist any more, so insert + // the spinner at its former index + newPos = this.savedThrobberPos; + } else if (lhsIndex == -1) { + // We only have the former sibling from the RHS, so stick the + // spinner to the left of it + newPos = rhsIndex; + } else if (rhsIndex == -1) { + // We only have the former sibling from the LHS, so stick the + // spinner to the right of it + newPos = lhsIndex + 1; + } else { + // We have both former siblings + if ((rhsIndex - lhsIndex) == 1) { + // ...and they are adjacent to each other. Split them with + // the spinner + newPos = lhsIndex + 1; + } else { + // ...but they aren't adjacent to each other. Work out the + // closest one to our previous index and stick the spinner next + // to that + let lhsDist = Math.abs(this.savedThrobberPos - lhsIndex); + let rhsDist = Math.abs(this.savedThrobberPos - rhsIndex); + if (lhsDist < rhsDist) { + newPos = lhsIndex + 1; + } else { + newPos = rhsIndex; + } + } + } + } + + // Make sure we stick the spinner within the bounds of the menubar + if (newPos < 0) { + newPos = 0; + } else if (newPos > curSet.length) { + newPos = curSet.length; + } + + // If 1 of our former siblings was a spring and it has gone now, then + // bring it back + if ((lhsIndex == -1) && (this.savedThrobberPosLHS == "spring")) { + curSet.splice(newPos, 0, "spring"); + newPos += 1; + } else if ((rhsIndex == -1) && (this.savedThrobberPosRHS == "spring")) { + curSet.splice(newPos, 0, "spring"); + } + // Do it! + curSet.splice(newPos, 0, "throbber-box"); + menuBar.currentSet = curSet.join(","); + + this.savedThrobberPos = -1; + + } + }, + + shutdown: function() { + this.menuService.unregisterNotification(this); + } + } + + const Cc = Components.classes; + const Ci = Components.interfaces; + + var menuObserver = null; + + addEventListener("load", function onLoad() { + removeEventListener("load", onLoad, false); + + if (menuObserver == null) { + menuObserver = new uGlobalMenuObserver(); + } + }, false); + + addEventListener("unload", function onUnload() { + removeEventListener("unload", onUnload, false); + if (menuObserver) { + menuObserver.shutdown(); + menuObserver = null; + } + }, false); + +})(); --- firefox-7.0+build2+nobinonly.orig/debian/globalmenu/chrome/content/firefoxMenu.js +++ firefox-7.0+build2+nobinonly/debian/globalmenu/chrome/content/firefoxMenu.js @@ -0,0 +1,165 @@ +/* -*- Mode: javascript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is globalmenu-extension. + * + * The Initial Developer of the Original Code is + * Canonical Ltd. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Chris Coulson <chris.coulson@canonical.com> + * Nils Maier <maierman@web.de> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); + +(function unity_overrides() { + "use strict"; + + function enablePlacesNativeViewMenu(name) { + // store the original ctor + var menuCtor = window[name]; + + // Override the original ctor, so that nativeView = true gets set + // Note that somebody might have had the same stupid idea to override the ctor. ;) + // So, try to interfere the least + window[name] = function(aEvent) { + var rootElt = aEvent.target; + var viewElt = rootElt.parentNode; + if (viewElt.parentNode.localName == "menubar") { + this._nativeView = true; + rootElt._startMarker = -1; + rootElt._endMarker = -1; + } + menuCtor.apply(this, arguments); + } + // rewrite the prototype + window[name].prototype = menuCtor.prototype; + } + + enablePlacesNativeViewMenu("PlacesMenu"); + enablePlacesNativeViewMenu("HistoryMenu"); + +})(); + +(function unity_init() { + "use strict"; + + function $(id) document.getElementById(id); + + function uGlobalMenuObserver() { + this.init(); + } + + uGlobalMenuObserver.prototype = { + init: function() { + this._menuService = Cc["@canonical.com/globalmenu-service;1"]. + getService(Ci.uIGlobalMenuService); + this._menuService.registerNotification(this); + if (this._menuService.online) { + this.fixupUI(true); + } + }, + + observe: function(subject, topic, data) { + if (topic == "native-menu-service:popup-open") { + if (data == "menu_EditPopup") { + // This is really hacky, but the edit menu items only set the correct + // sensitivity when the menupopup state == showing or open, which is + // a read only property set in layout/xul/base/src/nsMenuPopupFrame.cpp + // We can't do this off the popupshowing event, because we might run + // before the handler hanging off the onpopupshowing attribute, which + // will set the wrong sensitivity again, so we have our own notification + // Uuuurgh! :( + var saved_gEditUIVisible = gEditUIVisible; + gEditUIVisible = true; + goUpdateGlobalEditMenuItems(); + gEditUIVisible = saved_gEditUIVisible; + } + } else if (topic == "native-menu-service:online") { + this.fixupUI(true); + } else if (topic == "native-menu-service:offline") { + this.fixupUI(false); + } + }, + + handleEvent: function(aEvent) { + let target = aEvent.target; + let id = target.id; + if ((aEvent.type == "DOMAttrModified") && (id == "toolbar-menubar") && + (target.getAttribute("autohide") != "false")) { + this.autohideSaved = target.getAttribute("autohide"); + target.setAttribute("autohide", "false"); + } + }, + + fixupUI: function(online) { + if (online == true) { + // XXX: localstore.rdf is re-applied when additional overlays are loaded + // (https://bugzilla.mozilla.org/show_bug.cgi?id=640158), which + // causes this to be undone and the bookmark button to reappear + $("toolbar-menubar").addEventListener("DOMAttrModified", this); + this.autohideSaved = $("toolbar-menubar").getAttribute("autohide"); + $("toolbar-menubar").setAttribute("autohide", "false"); + $("toolbar-menubar").removeAttribute("toolbarname"); + } else { + $("toolbar-menubar").removeEventListener("DOMAttrModified", this); + $("toolbar-menubar").setAttribute("autohide", this.autohideSaved); + $("toolbar-menubar").setAttribute("toolbarname", "&menubarCmd.label;"); + } + + updateAppButtonDisplay(); + }, + + shutdown: function() { + this._menuService.unregisterNotification(this); + } + } + + var menuObserver = null; + + addEventListener("load", function onLoad() + { + removeEventListener("load", onLoad, false); + + if (!menuObserver) { + menuObserver = new uGlobalMenuObserver(); + } + }, false); + + addEventListener("unload", function onUnload() + { + removeEventListener("unload", onUnload, false); + if (menuObserver) { + menuObserver.shutdown(); + menuObserver = null; + } + }, false); + +})(); --- firefox-7.0+build2+nobinonly.orig/debian/mozclient/firefox.mk +++ firefox-7.0+build2+nobinonly/debian/mozclient/firefox.mk @@ -0,0 +1,52 @@ +# -*- mode: makefile; coding: utf-8 -*- + +# Copyright (c) 2008-2009 Fabien Tassin <fta@sofaraway.org> +# Description: Project firefox +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-13.7 USA. + +-include /usr/share/mozilla-devscripts/mozclient.mk + +COMPARE_FILTER_PRE_IN := sed \ + -e 's,foo,bar,' \ + $(NULL) + +COMPARE_FILTER_PRE_OUT := sed \ + -e 's,^usr/lib/firefox-trunk[^/]*/,,' \ + $(NULL) + +COMPARE_FILTER_IN := sed \ + -e 's,^usr/lib/firefox-trunk[^/]*/searchplugins,usr/lib/firefox-addons/searchplugins,' \ + -e 's,^usr/lib/firefox-trunk[^/]*/extensions/inspector@mozilla.org/.*,,' \ + -e 's,^usr/lib/firefox-trunk[^/]*/extensions,usr/lib/xulrunner-addons/extensions,' \ + -e 's,^usr/lib/firefox-trunk[^/]*/defaults/profile,etc/firefox-trunk/profile,' \ + -e 's,^usr/lib/firefox-trunk[^/]*/\(old-homepage-default.properties\|README.txt\|removed-files\),,' \ + -e 's,^usr/lib/firefox-trunk[^/]*/.autoreg,,' \ + -e 's,^etc/firefox-trunk[^/]*/.autoreg,,' \ + $(NULL) + +COMPARE_FILTER_OUT := sed \ + -e 's,^DEBIAN/.*,,' \ + -e 's,^usr/lib/debug/.*,,' \ + -e 's,^usr/share/doc/.*,,' \ + -e 's,^usr/share/menu/.*,,' \ + -e 's,^usr/share/applications/.*,,' \ + -e 's,^usr/share/bug/firefox-trunk/presubj,,' \ + -e 's,^etc/firefox-trunk/\(firefoxrc\|pref/firefox.js\),,' \ + -e 's,^usr/lib/firefox-addons/searchplugins/\(debsearch\|wikipedia\).\(gif\|src\),,' \ + -e 's,^usr/lib/firefox-trunk[^/]*/\(firefox-trunk-restart-required.update-notifier\|firefox.cfg\|firefox.sh\|ffox-4-beta-profile-migration-dialog\),,' \ + $(NULL) + +-include /usr/share/mozilla-devscripts/compare.mk --- firefox-7.0+build2+nobinonly.orig/debian/mozclient/firefox.conf +++ firefox-7.0+build2+nobinonly/debian/mozclient/firefox.conf @@ -0,0 +1,28 @@ +# Copyright (c) 2008-2009 Fabien Tassin <fta@sofaraway.org> +# Description: Project firefox +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +MOZCLIENT_APPNAME = firefox +MOZCLIENT_PROJECT = mozilla-release +MOZCLIENT_VCS = hg +MOZCLIENT_VCS_LOC = http://hg.mozilla.org/releases/ +MOZCLIENT_FILE = mozilla/browser/config/version.txt +MOZCLIENT_GETVERSION = sed -e 's/pre//; s/\([ab]\)\([0-9]*\)/~\1\2/' mozilla/browser/config/version.txt +#MOZCLIENT_POSTCOCMD = cd mozilla && python client.py checkout +MOZCLIENT_GETDATE = sh debian/moz-rev.sh http://hg.mozilla.org/releases/mozilla-release default +MOZCLIENT_EMBEDDED = 1 +MOZCLIENT_WANTMOZDIR = 1 +MOZCLIENT_POSTCOCMD = bzr branch lp:~mozillateam/firefox-l10n/l10n-stable mozilla/l10n && rm -rf mozilla/l10n/.bzr --- firefox-7.0+build2+nobinonly.orig/debian/patches/compile-pldhash-as-C++.patch +++ firefox-7.0+build2+nobinonly/debian/patches/compile-pldhash-as-C++.patch @@ -0,0 +1,1970 @@ +# HG changeset patch +# User Mike Hommey <mh+mozilla@glandium.org> +# Date 1312873597 -7200 +# Node ID 3d20269baeeef329887625951d46872c15b4c861 +# Parent 4c3bcc010d85f1ac063e76da0329d4df3ae6dadc +Bug 675618 - Compile pldhash as C++. r=bsmedberg + +--- a/xpcom/build/Makefile.in ++++ b/xpcom/build/Makefile.in +@@ -55,10 +55,6 @@ EXPORT_LIBRARY = 1 + GRE_MODULE = 1 + MOZILLA_INTERNAL_API = 1 + +-CSRCS = \ +- $(XPCOM_GLUE_SRC_LCSRCS) \ +- $(NULL) +- + CPPSRCS = \ + $(XPCOM_GLUE_SRC_LCPPSRCS) \ + $(XPCOM_GLUENS_SRC_LCPPSRCS) \ +@@ -128,7 +124,7 @@ EXPORTS_mozilla = \ + # Force use of PIC + FORCE_USE_PIC = 1 + +-GARBAGE += $(XPCOM_GLUE_SRC_LCSRCS) $(XPCOM_GLUE_SRC_LCPPSRCS) $(XPCOM_GLUENS_SRC_LCPPSRCS) $(wildcard *.$(OBJ_SUFFIX)) ++GARBAGE += $(XPCOM_GLUE_SRC_LCPPSRCS) $(XPCOM_GLUENS_SRC_LCPPSRCS) $(wildcard *.$(OBJ_SUFFIX)) + + include $(topsrcdir)/config/config.mk + include $(topsrcdir)/ipc/chromium/chromium-config.mk +@@ -148,5 +144,5 @@ ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT)) + CXXFLAGS += $(TK_CFLAGS) + endif + +-export:: $(XPCOM_GLUE_SRC_CSRCS) $(XPCOM_GLUE_SRC_CPPSRCS) $(XPCOM_GLUENS_SRC_CPPSRCS) ++export:: $(XPCOM_GLUE_SRC_CPPSRCS) $(XPCOM_GLUENS_SRC_CPPSRCS) + $(INSTALL) $^ . +--- a/xpcom/glue/Makefile.in ++++ b/xpcom/glue/Makefile.in +@@ -55,10 +55,6 @@ LOCAL_INCLUDES = \ + -I$(srcdir)/../build \ + $(NULL) + +-CSRCS = \ +- $(XPCOM_GLUE_SRC_LCSRCS) \ +- $(NULL) +- + CPPSRCS = \ + $(XPCOM_GLUE_SRC_LCPPSRCS) \ + $(XPCOM_GLUENS_SRC_LCPPSRCS) \ +--- a/xpcom/glue/nomozalloc/Makefile.in ++++ b/xpcom/glue/nomozalloc/Makefile.in +@@ -54,10 +54,6 @@ LOCAL_INCLUDES = \ + -I$(srcdir)/../../build \ + $(NULL) + +-CSRCS = \ +- $(XPCOM_GLUE_SRC_LCSRCS) \ +- $(NULL) +- + CPPSRCS = \ + $(XPCOM_GLUE_SRC_LCPPSRCS) \ + $(XPCOM_GLUENS_SRC_LCPPSRCS) \ +@@ -69,7 +65,7 @@ SDK_LIBRARY = + $(LIB_PREFIX)xpcomglue_s_nomozalloc.$(LIB_SUFFIX) \ + $(NULL) + +-GARBAGE += $(CSRCS) $(CPPSRCS) DeadlockDetector.h SSE.h arm.h ++GARBAGE += $(CPPSRCS) DeadlockDetector.h SSE.h arm.h + + # we don't want the shared lib, but we want to force the creation of a static lib. + FORCE_STATIC_LIB = 1 +@@ -94,7 +90,7 @@ OS_COMPILE_CFLAGS += -Zl + DEFINES += -D_USE_ANSI_CPP + endif + +-export:: $(XPCOM_GLUE_SRC_CSRCS) $(XPCOM_GLUE_SRC_CPPSRCS) $(XPCOM_GLUENS_SRC_CPPSRCS) $(topsrcdir)/xpcom/glue/nsStringAPI.cpp $(topsrcdir)/xpcom/glue/GenericModule.cpp $(topsrcdir)/xpcom/glue/DeadlockDetector.h $(topsrcdir)/xpcom/glue/SSE.h $(topsrcdir)/xpcom/glue/arm.h ++export:: $(XPCOM_GLUE_SRC_CPPSRCS) $(XPCOM_GLUENS_SRC_CPPSRCS) $(topsrcdir)/xpcom/glue/nsStringAPI.cpp $(topsrcdir)/xpcom/glue/GenericModule.cpp $(topsrcdir)/xpcom/glue/DeadlockDetector.h $(topsrcdir)/xpcom/glue/SSE.h $(topsrcdir)/xpcom/glue/arm.h + $(INSTALL) $^ . + + ifdef TARGET_XPCOM_ABI +--- a/xpcom/glue/objs.mk ++++ b/xpcom/glue/objs.mk +@@ -34,12 +34,6 @@ + # + # ***** END LICENSE BLOCK ***** + +-XPCOM_GLUE_SRC_LCSRCS = \ +- pldhash.c \ +- $(NULL) +- +-XPCOM_GLUE_SRC_CSRCS = $(addprefix $(topsrcdir)/xpcom/glue/, $(XPCOM_GLUE_SRC_LCSRCS)) +- + XPCOM_GLUE_SRC_LCPPSRCS = \ + nsArrayEnumerator.cpp \ + nsArrayUtils.cpp \ +@@ -66,6 +60,7 @@ XPCOM_GLUE_SRC_LCPPSRCS = \ + nsCycleCollectionParticipant.cpp \ + nsCycleCollectorUtils.cpp \ + nsDeque.cpp \ ++ pldhash.cpp \ + $(NULL) + + XPCOM_GLUE_SRC_CPPSRCS = $(addprefix $(topsrcdir)/xpcom/glue/, $(XPCOM_GLUE_SRC_LCPPSRCS)) +--- a/xpcom/glue/standalone/Makefile.in ++++ b/xpcom/glue/standalone/Makefile.in +@@ -71,10 +71,6 @@ LINKSRC = nsGlueLinkingNull.cpp + $(warning TinderboxPrint:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=298044">Error: XPCOM Glue</a>) + endif + +-CSRCS = \ +- $(XPCOM_GLUE_SRC_LCSRCS) \ +- $(NULL) +- + CPPSRCS = \ + $(XPCOM_GLUE_SRC_LCPPSRCS) \ + nsStringAPI.cpp \ +@@ -104,7 +100,7 @@ USE_STATIC_LIBS = 1 + # Don't use STL wrappers here (i.e. wrapped <new>); they require mozalloc + STL_FLAGS = + +-GARBAGE += $(XPCOM_GLUE_SRC_LCSRCS) $(XPCOM_GLUE_SRC_LCPPSRCS) $(wildcard *.$(OBJ_SUFFIX)) ++GARBAGE += $(XPCOM_GLUE_SRC_LCPPSRCS) $(wildcard *.$(OBJ_SUFFIX)) + + SRCS_IN_OBJDIR = 1 + +@@ -117,7 +113,7 @@ OS_COMPILE_CFLAGS += -Zl + DEFINES += -D_USE_ANSI_CPP + endif + +-export:: $(XPCOM_GLUE_SRC_CSRCS) $(XPCOM_GLUE_SRC_CPPSRCS) $(topsrcdir)/xpcom/glue/nsStringAPI.cpp ++export:: $(XPCOM_GLUE_SRC_CPPSRCS) $(topsrcdir)/xpcom/glue/nsStringAPI.cpp + $(INSTALL) $^ . + + GARBAGE += nsStringAPI.cpp +--- a/xpcom/glue/pldhash.c ++++ /dev/null +@@ -1,915 +0,0 @@ +-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +-/* ***** BEGIN LICENSE BLOCK ***** +- * Version: MPL 1.1/GPL 2.0/LGPL 2.1 +- * +- * The contents of this file are subject to the Mozilla Public License Version +- * 1.1 (the "License"); you may not use this file except in compliance with +- * the License. You may obtain a copy of the License at +- * http://www.mozilla.org/MPL/ +- * +- * Software distributed under the License is distributed on an "AS IS" basis, +- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +- * for the specific language governing rights and limitations under the +- * License. +- * +- * The Original Code is Mozilla JavaScript code. +- * +- * The Initial Developer of the Original Code is +- * Netscape Communications Corporation. +- * Portions created by the Initial Developer are Copyright (C) 1999-2001 +- * the Initial Developer. All Rights Reserved. +- * +- * Contributor(s): +- * Brendan Eich <brendan@mozilla.org> (Original Author) +- * Chris Waterson <waterson@netscape.com> +- * L. David Baron <dbaron@dbaron.org>, Mozilla Corporation +- * +- * Alternatively, the contents of this file may be used under the terms of +- * either of the GNU General Public License Version 2 or later (the "GPL"), +- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +- * in which case the provisions of the GPL or the LGPL are applicable instead +- * of those above. If you wish to allow use of your version of this file only +- * under the terms of either the GPL or the LGPL, and not to allow others to +- * use your version of this file under the terms of the MPL, indicate your +- * decision by deleting the provisions above and replace them with the notice +- * and other provisions required by the GPL or the LGPL. If you do not delete +- * the provisions above, a recipient may use your version of this file under +- * the terms of any one of the MPL, the GPL or the LGPL. +- * +- * ***** END LICENSE BLOCK ***** */ +- +-/* +- * Double hashing implementation. +- * GENERATED BY js/src/plify_jsdhash.sed -- DO NOT EDIT!!! +- */ +-#include <stdio.h> +-#include <stdlib.h> +-#include <string.h> +-#include "prbit.h" +-#include "pldhash.h" +-#include "nsDebug.h" /* for PR_ASSERT */ +- +-#ifdef PL_DHASHMETER +-# if defined MOZILLA_CLIENT && defined DEBUG_XXXbrendan +-# include "nsTraceMalloc.h" +-# endif +-# define METER(x) x +-#else +-# define METER(x) /* nothing */ +-#endif +- +-/* +- * The following DEBUG-only code is used to assert that calls to one of +- * table->ops or to an enumerator do not cause re-entry into a call that +- * can mutate the table. The recursion level is stored in additional +- * space allocated at the end of the entry store to avoid changing +- * PLDHashTable, which could cause issues when mixing DEBUG and +- * non-DEBUG components. +- */ +-#ifdef DEBUG +- +-#define JSDHASH_ONELINE_ASSERT PR_ASSERT +-#define RECURSION_LEVEL(table_) (*(PRUint32*)(table_->entryStore + \ +- PL_DHASH_TABLE_SIZE(table_) * \ +- table_->entrySize)) +-/* +- * Most callers that assert about the recursion level don't care about +- * this magical value because they are asserting that mutation is +- * allowed (and therefore the level is 0 or 1, depending on whether they +- * incremented it). +- * +- * Only PL_DHashTableFinish needs to allow this special value. +- */ +-#define IMMUTABLE_RECURSION_LEVEL ((PRUint32)-1) +- +-#define RECURSION_LEVEL_SAFE_TO_FINISH(table_) \ +- (RECURSION_LEVEL(table_) == 0 || \ +- RECURSION_LEVEL(table_) == IMMUTABLE_RECURSION_LEVEL) +- +-#define ENTRY_STORE_EXTRA sizeof(PRUint32) +-#define INCREMENT_RECURSION_LEVEL(table_) \ +- PR_BEGIN_MACRO \ +- if (RECURSION_LEVEL(table_) != IMMUTABLE_RECURSION_LEVEL) \ +- ++RECURSION_LEVEL(table_); \ +- PR_END_MACRO +-#define DECREMENT_RECURSION_LEVEL(table_) \ +- PR_BEGIN_MACRO \ +- if (RECURSION_LEVEL(table_) != IMMUTABLE_RECURSION_LEVEL) { \ +- NS_ASSERTION(RECURSION_LEVEL(table_) > 0, "RECURSION_LEVEL(table_) > 0"); \ +- --RECURSION_LEVEL(table_); \ +- } \ +- PR_END_MACRO +- +-#else +- +-#define ENTRY_STORE_EXTRA 0 +-#define INCREMENT_RECURSION_LEVEL(table_) PR_BEGIN_MACRO PR_END_MACRO +-#define DECREMENT_RECURSION_LEVEL(table_) PR_BEGIN_MACRO PR_END_MACRO +- +-#endif /* defined(DEBUG) */ +- +-void * +-PL_DHashAllocTable(PLDHashTable *table, PRUint32 nbytes) +-{ +- return malloc(nbytes); +-} +- +-void +-PL_DHashFreeTable(PLDHashTable *table, void *ptr) +-{ +- free(ptr); +-} +- +-PLDHashNumber +-PL_DHashStringKey(PLDHashTable *table, const void *key) +-{ +- PLDHashNumber h; +- const unsigned char *s; +- +- h = 0; +- for (s = (const unsigned char *) key; *s != '\0'; s++) +- h = PR_ROTATE_LEFT32(h, 4) ^ *s; +- return h; +-} +- +-PLDHashNumber +-PL_DHashVoidPtrKeyStub(PLDHashTable *table, const void *key) +-{ +- return (PLDHashNumber)(unsigned long)key >> 2; +-} +- +-PRBool +-PL_DHashMatchEntryStub(PLDHashTable *table, +- const PLDHashEntryHdr *entry, +- const void *key) +-{ +- const PLDHashEntryStub *stub = (const PLDHashEntryStub *)entry; +- +- return stub->key == key; +-} +- +-PRBool +-PL_DHashMatchStringKey(PLDHashTable *table, +- const PLDHashEntryHdr *entry, +- const void *key) +-{ +- const PLDHashEntryStub *stub = (const PLDHashEntryStub *)entry; +- +- /* XXX tolerate null keys on account of sloppy Mozilla callers. */ +- return stub->key == key || +- (stub->key && key && +- strcmp((const char *) stub->key, (const char *) key) == 0); +-} +- +-void +-PL_DHashMoveEntryStub(PLDHashTable *table, +- const PLDHashEntryHdr *from, +- PLDHashEntryHdr *to) +-{ +- memcpy(to, from, table->entrySize); +-} +- +-void +-PL_DHashClearEntryStub(PLDHashTable *table, PLDHashEntryHdr *entry) +-{ +- memset(entry, 0, table->entrySize); +-} +- +-void +-PL_DHashFreeStringKey(PLDHashTable *table, PLDHashEntryHdr *entry) +-{ +- const PLDHashEntryStub *stub = (const PLDHashEntryStub *)entry; +- +- free((void *) stub->key); +- memset(entry, 0, table->entrySize); +-} +- +-void +-PL_DHashFinalizeStub(PLDHashTable *table) +-{ +-} +- +-static const PLDHashTableOps stub_ops = { +- PL_DHashAllocTable, +- PL_DHashFreeTable, +- PL_DHashVoidPtrKeyStub, +- PL_DHashMatchEntryStub, +- PL_DHashMoveEntryStub, +- PL_DHashClearEntryStub, +- PL_DHashFinalizeStub, +- NULL +-}; +- +-const PLDHashTableOps * +-PL_DHashGetStubOps(void) +-{ +- return &stub_ops; +-} +- +-PLDHashTable * +-PL_NewDHashTable(const PLDHashTableOps *ops, void *data, PRUint32 entrySize, +- PRUint32 capacity) +-{ +- PLDHashTable *table; +- +- table = (PLDHashTable *) malloc(sizeof *table); +- if (!table) +- return NULL; +- if (!PL_DHashTableInit(table, ops, data, entrySize, capacity)) { +- free(table); +- return NULL; +- } +- return table; +-} +- +-void +-PL_DHashTableDestroy(PLDHashTable *table) +-{ +- PL_DHashTableFinish(table); +- free(table); +-} +- +-PRBool +-PL_DHashTableInit(PLDHashTable *table, const PLDHashTableOps *ops, void *data, +- PRUint32 entrySize, PRUint32 capacity) +-{ +- int log2; +- PRUint32 nbytes; +- +-#ifdef DEBUG +- if (entrySize > 10 * sizeof(void *)) { +- printf_stderr( +- "pldhash: for the table at address %p, the given entrySize" +- " of %lu %s favors chaining over double hashing.\n", +- (void *) table, +- (unsigned long) entrySize, +- (entrySize > 16 * sizeof(void*)) ? "definitely" : "probably"); +- } +-#endif +- +- table->ops = ops; +- table->data = data; +- if (capacity < PL_DHASH_MIN_SIZE) +- capacity = PL_DHASH_MIN_SIZE; +- +- PR_CEILING_LOG2(log2, capacity); +- +- capacity = PR_BIT(log2); +- if (capacity >= PL_DHASH_SIZE_LIMIT) +- return PR_FALSE; +- table->hashShift = PL_DHASH_BITS - log2; +- table->maxAlphaFrac = (PRUint8)(0x100 * PL_DHASH_DEFAULT_MAX_ALPHA); +- table->minAlphaFrac = (PRUint8)(0x100 * PL_DHASH_DEFAULT_MIN_ALPHA); +- table->entrySize = entrySize; +- table->entryCount = table->removedCount = 0; +- table->generation = 0; +- nbytes = capacity * entrySize; +- +- table->entryStore = (char *) ops->allocTable(table, +- nbytes + ENTRY_STORE_EXTRA); +- if (!table->entryStore) +- return PR_FALSE; +- memset(table->entryStore, 0, nbytes); +- METER(memset(&table->stats, 0, sizeof table->stats)); +- +-#ifdef DEBUG +- RECURSION_LEVEL(table) = 0; +-#endif +- +- return PR_TRUE; +-} +- +-/* +- * Compute max and min load numbers (entry counts) from table params. +- */ +-#define MAX_LOAD(table, size) (((table)->maxAlphaFrac * (size)) >> 8) +-#define MIN_LOAD(table, size) (((table)->minAlphaFrac * (size)) >> 8) +- +-void +-PL_DHashTableSetAlphaBounds(PLDHashTable *table, +- float maxAlpha, +- float minAlpha) +-{ +- PRUint32 size; +- +- /* +- * Reject obviously insane bounds, rather than trying to guess what the +- * buggy caller intended. +- */ +- NS_ASSERTION(0.5 <= maxAlpha && maxAlpha < 1 && 0 <= minAlpha, +- "0.5 <= maxAlpha && maxAlpha < 1 && 0 <= minAlpha"); +- if (maxAlpha < 0.5 || 1 <= maxAlpha || minAlpha < 0) +- return; +- +- /* +- * Ensure that at least one entry will always be free. If maxAlpha at +- * minimum size leaves no entries free, reduce maxAlpha based on minimum +- * size and the precision limit of maxAlphaFrac's fixed point format. +- */ +- NS_ASSERTION(PL_DHASH_MIN_SIZE - (maxAlpha * PL_DHASH_MIN_SIZE) >= 1, +- "PL_DHASH_MIN_SIZE - (maxAlpha * PL_DHASH_MIN_SIZE) >= 1"); +- if (PL_DHASH_MIN_SIZE - (maxAlpha * PL_DHASH_MIN_SIZE) < 1) { +- maxAlpha = (float) +- (PL_DHASH_MIN_SIZE - PR_MAX(PL_DHASH_MIN_SIZE / 256, 1)) +- / PL_DHASH_MIN_SIZE; +- } +- +- /* +- * Ensure that minAlpha is strictly less than half maxAlpha. Take care +- * not to truncate an entry's worth of alpha when storing in minAlphaFrac +- * (8-bit fixed point format). +- */ +- NS_ASSERTION(minAlpha < maxAlpha / 2, +- "minAlpha < maxAlpha / 2"); +- if (minAlpha >= maxAlpha / 2) { +- size = PL_DHASH_TABLE_SIZE(table); +- minAlpha = (size * maxAlpha - PR_MAX(size / 256, 1)) / (2 * size); +- } +- +- table->maxAlphaFrac = (PRUint8)(maxAlpha * 256); +- table->minAlphaFrac = (PRUint8)(minAlpha * 256); +-} +- +-/* +- * Double hashing needs the second hash code to be relatively prime to table +- * size, so we simply make hash2 odd. +- */ +-#define HASH1(hash0, shift) ((hash0) >> (shift)) +-#define HASH2(hash0,log2,shift) ((((hash0) << (log2)) >> (shift)) | 1) +- +-/* +- * Reserve keyHash 0 for free entries and 1 for removed-entry sentinels. Note +- * that a removed-entry sentinel need be stored only if the removed entry had +- * a colliding entry added after it. Therefore we can use 1 as the collision +- * flag in addition to the removed-entry sentinel value. Multiplicative hash +- * uses the high order bits of keyHash, so this least-significant reservation +- * should not hurt the hash function's effectiveness much. +- * +- * If you change any of these magic numbers, also update PL_DHASH_ENTRY_IS_LIVE +- * in pldhash.h. It used to be private to pldhash.c, but then became public to +- * assist iterator writers who inspect table->entryStore directly. +- */ +-#define COLLISION_FLAG ((PLDHashNumber) 1) +-#define MARK_ENTRY_FREE(entry) ((entry)->keyHash = 0) +-#define MARK_ENTRY_REMOVED(entry) ((entry)->keyHash = 1) +-#define ENTRY_IS_REMOVED(entry) ((entry)->keyHash == 1) +-#define ENTRY_IS_LIVE(entry) PL_DHASH_ENTRY_IS_LIVE(entry) +-#define ENSURE_LIVE_KEYHASH(hash0) if (hash0 < 2) hash0 -= 2; else (void)0 +- +-/* Match an entry's keyHash against an unstored one computed from a key. */ +-#define MATCH_ENTRY_KEYHASH(entry,hash0) \ +- (((entry)->keyHash & ~COLLISION_FLAG) == (hash0)) +- +-/* Compute the address of the indexed entry in table. */ +-#define ADDRESS_ENTRY(table, index) \ +- ((PLDHashEntryHdr *)((table)->entryStore + (index) * (table)->entrySize)) +- +-void +-PL_DHashTableFinish(PLDHashTable *table) +-{ +- char *entryAddr, *entryLimit; +- PRUint32 entrySize; +- PLDHashEntryHdr *entry; +- +-#ifdef DEBUG_XXXbrendan +- static FILE *dumpfp = NULL; +- if (!dumpfp) dumpfp = fopen("/tmp/pldhash.bigdump", "w"); +- if (dumpfp) { +-#ifdef MOZILLA_CLIENT +- NS_TraceStack(1, dumpfp); +-#endif +- PL_DHashTableDumpMeter(table, NULL, dumpfp); +- fputc('\n', dumpfp); +- } +-#endif +- +- INCREMENT_RECURSION_LEVEL(table); +- +- /* Call finalize before clearing entries, so it can enumerate them. */ +- table->ops->finalize(table); +- +- /* Clear any remaining live entries. */ +- entryAddr = table->entryStore; +- entrySize = table->entrySize; +- entryLimit = entryAddr + PL_DHASH_TABLE_SIZE(table) * entrySize; +- while (entryAddr < entryLimit) { +- entry = (PLDHashEntryHdr *)entryAddr; +- if (ENTRY_IS_LIVE(entry)) { +- METER(table->stats.removeEnums++); +- table->ops->clearEntry(table, entry); +- } +- entryAddr += entrySize; +- } +- +- DECREMENT_RECURSION_LEVEL(table); +- NS_ASSERTION(RECURSION_LEVEL_SAFE_TO_FINISH(table), +- "RECURSION_LEVEL_SAFE_TO_FINISH(table)"); +- +- /* Free entry storage last. */ +- table->ops->freeTable(table, table->entryStore); +-} +- +-static PLDHashEntryHdr * PL_DHASH_FASTCALL +-SearchTable(PLDHashTable *table, const void *key, PLDHashNumber keyHash, +- PLDHashOperator op) +-{ +- PLDHashNumber hash1, hash2; +- int hashShift, sizeLog2; +- PLDHashEntryHdr *entry, *firstRemoved; +- PLDHashMatchEntry matchEntry; +- PRUint32 sizeMask; +- +- METER(table->stats.searches++); +- NS_ASSERTION(!(keyHash & COLLISION_FLAG), +- "!(keyHash & COLLISION_FLAG)"); +- +- /* Compute the primary hash address. */ +- hashShift = table->hashShift; +- hash1 = HASH1(keyHash, hashShift); +- entry = ADDRESS_ENTRY(table, hash1); +- +- /* Miss: return space for a new entry. */ +- if (PL_DHASH_ENTRY_IS_FREE(entry)) { +- METER(table->stats.misses++); +- return entry; +- } +- +- /* Hit: return entry. */ +- matchEntry = table->ops->matchEntry; +- if (MATCH_ENTRY_KEYHASH(entry, keyHash) && matchEntry(table, entry, key)) { +- METER(table->stats.hits++); +- return entry; +- } +- +- /* Collision: double hash. */ +- sizeLog2 = PL_DHASH_BITS - table->hashShift; +- hash2 = HASH2(keyHash, sizeLog2, hashShift); +- sizeMask = PR_BITMASK(sizeLog2); +- +- /* Save the first removed entry pointer so PL_DHASH_ADD can recycle it. */ +- firstRemoved = NULL; +- +- for (;;) { +- if (NS_UNLIKELY(ENTRY_IS_REMOVED(entry))) { +- if (!firstRemoved) +- firstRemoved = entry; +- } else { +- if (op == PL_DHASH_ADD) +- entry->keyHash |= COLLISION_FLAG; +- } +- +- METER(table->stats.steps++); +- hash1 -= hash2; +- hash1 &= sizeMask; +- +- entry = ADDRESS_ENTRY(table, hash1); +- if (PL_DHASH_ENTRY_IS_FREE(entry)) { +- METER(table->stats.misses++); +- return (firstRemoved && op == PL_DHASH_ADD) ? firstRemoved : entry; +- } +- +- if (MATCH_ENTRY_KEYHASH(entry, keyHash) && +- matchEntry(table, entry, key)) { +- METER(table->stats.hits++); +- return entry; +- } +- } +- +- /* NOTREACHED */ +- return NULL; +-} +- +-/* +- * This is a copy of SearchTable, used by ChangeTable, hardcoded to +- * 1. assume |op == PL_DHASH_ADD|, +- * 2. assume that |key| will never match an existing entry, and +- * 3. assume that no entries have been removed from the current table +- * structure. +- * Avoiding the need for |key| means we can avoid needing a way to map +- * entries to keys, which means callers can use complex key types more +- * easily. +- */ +-static PLDHashEntryHdr * PL_DHASH_FASTCALL +-FindFreeEntry(PLDHashTable *table, PLDHashNumber keyHash) +-{ +- PLDHashNumber hash1, hash2; +- int hashShift, sizeLog2; +- PLDHashEntryHdr *entry; +- PRUint32 sizeMask; +- +- METER(table->stats.searches++); +- NS_ASSERTION(!(keyHash & COLLISION_FLAG), +- "!(keyHash & COLLISION_FLAG)"); +- +- /* Compute the primary hash address. */ +- hashShift = table->hashShift; +- hash1 = HASH1(keyHash, hashShift); +- entry = ADDRESS_ENTRY(table, hash1); +- +- /* Miss: return space for a new entry. */ +- if (PL_DHASH_ENTRY_IS_FREE(entry)) { +- METER(table->stats.misses++); +- return entry; +- } +- +- /* Collision: double hash. */ +- sizeLog2 = PL_DHASH_BITS - table->hashShift; +- hash2 = HASH2(keyHash, sizeLog2, hashShift); +- sizeMask = PR_BITMASK(sizeLog2); +- +- for (;;) { +- NS_ASSERTION(!ENTRY_IS_REMOVED(entry), +- "!ENTRY_IS_REMOVED(entry)"); +- entry->keyHash |= COLLISION_FLAG; +- +- METER(table->stats.steps++); +- hash1 -= hash2; +- hash1 &= sizeMask; +- +- entry = ADDRESS_ENTRY(table, hash1); +- if (PL_DHASH_ENTRY_IS_FREE(entry)) { +- METER(table->stats.misses++); +- return entry; +- } +- } +- +- /* NOTREACHED */ +- return NULL; +-} +- +-static PRBool +-ChangeTable(PLDHashTable *table, int deltaLog2) +-{ +- int oldLog2, newLog2; +- PRUint32 oldCapacity, newCapacity; +- char *newEntryStore, *oldEntryStore, *oldEntryAddr; +- PRUint32 entrySize, i, nbytes; +- PLDHashEntryHdr *oldEntry, *newEntry; +- PLDHashMoveEntry moveEntry; +-#ifdef DEBUG +- PRUint32 recursionLevel; +-#endif +- +- /* Look, but don't touch, until we succeed in getting new entry store. */ +- oldLog2 = PL_DHASH_BITS - table->hashShift; +- newLog2 = oldLog2 + deltaLog2; +- oldCapacity = PR_BIT(oldLog2); +- newCapacity = PR_BIT(newLog2); +- if (newCapacity >= PL_DHASH_SIZE_LIMIT) +- return PR_FALSE; +- entrySize = table->entrySize; +- nbytes = newCapacity * entrySize; +- +- newEntryStore = (char *) table->ops->allocTable(table, +- nbytes + ENTRY_STORE_EXTRA); +- if (!newEntryStore) +- return PR_FALSE; +- +- /* We can't fail from here on, so update table parameters. */ +-#ifdef DEBUG +- recursionLevel = RECURSION_LEVEL(table); +-#endif +- table->hashShift = PL_DHASH_BITS - newLog2; +- table->removedCount = 0; +- table->generation++; +- +- /* Assign the new entry store to table. */ +- memset(newEntryStore, 0, nbytes); +- oldEntryAddr = oldEntryStore = table->entryStore; +- table->entryStore = newEntryStore; +- moveEntry = table->ops->moveEntry; +-#ifdef DEBUG +- RECURSION_LEVEL(table) = recursionLevel; +-#endif +- +- /* Copy only live entries, leaving removed ones behind. */ +- for (i = 0; i < oldCapacity; i++) { +- oldEntry = (PLDHashEntryHdr *)oldEntryAddr; +- if (ENTRY_IS_LIVE(oldEntry)) { +- oldEntry->keyHash &= ~COLLISION_FLAG; +- newEntry = FindFreeEntry(table, oldEntry->keyHash); +- NS_ASSERTION(PL_DHASH_ENTRY_IS_FREE(newEntry), +- "PL_DHASH_ENTRY_IS_FREE(newEntry)"); +- moveEntry(table, oldEntry, newEntry); +- newEntry->keyHash = oldEntry->keyHash; +- } +- oldEntryAddr += entrySize; +- } +- +- table->ops->freeTable(table, oldEntryStore); +- return PR_TRUE; +-} +- +-PLDHashEntryHdr * PL_DHASH_FASTCALL +-PL_DHashTableOperate(PLDHashTable *table, const void *key, PLDHashOperator op) +-{ +- PLDHashNumber keyHash; +- PLDHashEntryHdr *entry; +- PRUint32 size; +- int deltaLog2; +- +- NS_ASSERTION(op == PL_DHASH_LOOKUP || RECURSION_LEVEL(table) == 0, +- "op == PL_DHASH_LOOKUP || RECURSION_LEVEL(table) == 0"); +- INCREMENT_RECURSION_LEVEL(table); +- +- keyHash = table->ops->hashKey(table, key); +- keyHash *= PL_DHASH_GOLDEN_RATIO; +- +- /* Avoid 0 and 1 hash codes, they indicate free and removed entries. */ +- ENSURE_LIVE_KEYHASH(keyHash); +- keyHash &= ~COLLISION_FLAG; +- +- switch (op) { +- case PL_DHASH_LOOKUP: +- METER(table->stats.lookups++); +- entry = SearchTable(table, key, keyHash, op); +- break; +- +- case PL_DHASH_ADD: +- /* +- * If alpha is >= .75, grow or compress the table. If key is already +- * in the table, we may grow once more than necessary, but only if we +- * are on the edge of being overloaded. +- */ +- size = PL_DHASH_TABLE_SIZE(table); +- if (table->entryCount + table->removedCount >= MAX_LOAD(table, size)) { +- /* Compress if a quarter or more of all entries are removed. */ +- if (table->removedCount >= size >> 2) { +- METER(table->stats.compresses++); +- deltaLog2 = 0; +- } else { +- METER(table->stats.grows++); +- deltaLog2 = 1; +- } +- +- /* +- * Grow or compress table, returning null if ChangeTable fails and +- * falling through might claim the last free entry. +- */ +- if (!ChangeTable(table, deltaLog2) && +- table->entryCount + table->removedCount == size - 1) { +- METER(table->stats.addFailures++); +- entry = NULL; +- break; +- } +- } +- +- /* +- * Look for entry after possibly growing, so we don't have to add it, +- * then skip it while growing the table and re-add it after. +- */ +- entry = SearchTable(table, key, keyHash, op); +- if (!ENTRY_IS_LIVE(entry)) { +- /* Initialize the entry, indicating that it's no longer free. */ +- METER(table->stats.addMisses++); +- if (ENTRY_IS_REMOVED(entry)) { +- METER(table->stats.addOverRemoved++); +- table->removedCount--; +- keyHash |= COLLISION_FLAG; +- } +- if (table->ops->initEntry && +- !table->ops->initEntry(table, entry, key)) { +- /* We haven't claimed entry yet; fail with null return. */ +- memset(entry + 1, 0, table->entrySize - sizeof *entry); +- entry = NULL; +- break; +- } +- entry->keyHash = keyHash; +- table->entryCount++; +- } +- METER(else table->stats.addHits++); +- break; +- +- case PL_DHASH_REMOVE: +- entry = SearchTable(table, key, keyHash, op); +- if (ENTRY_IS_LIVE(entry)) { +- /* Clear this entry and mark it as "removed". */ +- METER(table->stats.removeHits++); +- PL_DHashTableRawRemove(table, entry); +- +- /* Shrink if alpha is <= .25 and table isn't too small already. */ +- size = PL_DHASH_TABLE_SIZE(table); +- if (size > PL_DHASH_MIN_SIZE && +- table->entryCount <= MIN_LOAD(table, size)) { +- METER(table->stats.shrinks++); +- (void) ChangeTable(table, -1); +- } +- } +- METER(else table->stats.removeMisses++); +- entry = NULL; +- break; +- +- default: +- NS_NOTREACHED("0"); +- entry = NULL; +- } +- +- DECREMENT_RECURSION_LEVEL(table); +- +- return entry; +-} +- +-void +-PL_DHashTableRawRemove(PLDHashTable *table, PLDHashEntryHdr *entry) +-{ +- PLDHashNumber keyHash; /* load first in case clearEntry goofs it */ +- +- NS_ASSERTION(RECURSION_LEVEL(table) != IMMUTABLE_RECURSION_LEVEL, +- "RECURSION_LEVEL(table) != IMMUTABLE_RECURSION_LEVEL"); +- +- NS_ASSERTION(PL_DHASH_ENTRY_IS_LIVE(entry), +- "PL_DHASH_ENTRY_IS_LIVE(entry)"); +- keyHash = entry->keyHash; +- table->ops->clearEntry(table, entry); +- if (keyHash & COLLISION_FLAG) { +- MARK_ENTRY_REMOVED(entry); +- table->removedCount++; +- } else { +- METER(table->stats.removeFrees++); +- MARK_ENTRY_FREE(entry); +- } +- table->entryCount--; +-} +- +-PRUint32 +-PL_DHashTableEnumerate(PLDHashTable *table, PLDHashEnumerator etor, void *arg) +-{ +- char *entryAddr, *entryLimit; +- PRUint32 i, capacity, entrySize, ceiling; +- PRBool didRemove; +- PLDHashEntryHdr *entry; +- PLDHashOperator op; +- +- INCREMENT_RECURSION_LEVEL(table); +- +- entryAddr = table->entryStore; +- entrySize = table->entrySize; +- capacity = PL_DHASH_TABLE_SIZE(table); +- entryLimit = entryAddr + capacity * entrySize; +- i = 0; +- didRemove = PR_FALSE; +- while (entryAddr < entryLimit) { +- entry = (PLDHashEntryHdr *)entryAddr; +- if (ENTRY_IS_LIVE(entry)) { +- op = etor(table, entry, i++, arg); +- if (op & PL_DHASH_REMOVE) { +- METER(table->stats.removeEnums++); +- PL_DHashTableRawRemove(table, entry); +- didRemove = PR_TRUE; +- } +- if (op & PL_DHASH_STOP) +- break; +- } +- entryAddr += entrySize; +- } +- +- NS_ASSERTION(!didRemove || RECURSION_LEVEL(table) == 1, +- "!didRemove || RECURSION_LEVEL(table) == 1"); +- +- /* +- * Shrink or compress if a quarter or more of all entries are removed, or +- * if the table is underloaded according to the configured minimum alpha, +- * and is not minimal-size already. Do this only if we removed above, so +- * non-removing enumerations can count on stable table->entryStore until +- * the next non-lookup-Operate or removing-Enumerate. +- */ +- if (didRemove && +- (table->removedCount >= capacity >> 2 || +- (capacity > PL_DHASH_MIN_SIZE && +- table->entryCount <= MIN_LOAD(table, capacity)))) { +- METER(table->stats.enumShrinks++); +- capacity = table->entryCount; +- capacity += capacity >> 1; +- if (capacity < PL_DHASH_MIN_SIZE) +- capacity = PL_DHASH_MIN_SIZE; +- +- PR_CEILING_LOG2(ceiling, capacity); +- ceiling -= PL_DHASH_BITS - table->hashShift; +- +- (void) ChangeTable(table, ceiling); +- } +- +- DECREMENT_RECURSION_LEVEL(table); +- +- return i; +-} +- +-#ifdef DEBUG +-void +-PL_DHashMarkTableImmutable(PLDHashTable *table) +-{ +- RECURSION_LEVEL(table) = IMMUTABLE_RECURSION_LEVEL; +-} +-#endif +- +-#ifdef PL_DHASHMETER +-#include <math.h> +- +-void +-PL_DHashTableDumpMeter(PLDHashTable *table, PLDHashEnumerator dump, FILE *fp) +-{ +- char *entryAddr; +- PRUint32 entrySize, entryCount; +- int hashShift, sizeLog2; +- PRUint32 i, tableSize, sizeMask, chainLen, maxChainLen, chainCount; +- PLDHashNumber hash1, hash2, saveHash1, maxChainHash1, maxChainHash2; +- double sqsum, mean, variance, sigma; +- PLDHashEntryHdr *entry, *probe; +- +- entryAddr = table->entryStore; +- entrySize = table->entrySize; +- hashShift = table->hashShift; +- sizeLog2 = PL_DHASH_BITS - hashShift; +- tableSize = PL_DHASH_TABLE_SIZE(table); +- sizeMask = PR_BITMASK(sizeLog2); +- chainCount = maxChainLen = 0; +- hash2 = 0; +- sqsum = 0; +- +- for (i = 0; i < tableSize; i++) { +- entry = (PLDHashEntryHdr *)entryAddr; +- entryAddr += entrySize; +- if (!ENTRY_IS_LIVE(entry)) +- continue; +- hash1 = HASH1(entry->keyHash & ~COLLISION_FLAG, hashShift); +- saveHash1 = hash1; +- probe = ADDRESS_ENTRY(table, hash1); +- chainLen = 1; +- if (probe == entry) { +- /* Start of a (possibly unit-length) chain. */ +- chainCount++; +- } else { +- hash2 = HASH2(entry->keyHash & ~COLLISION_FLAG, sizeLog2, +- hashShift); +- do { +- chainLen++; +- hash1 -= hash2; +- hash1 &= sizeMask; +- probe = ADDRESS_ENTRY(table, hash1); +- } while (probe != entry); +- } +- sqsum += chainLen * chainLen; +- if (chainLen > maxChainLen) { +- maxChainLen = chainLen; +- maxChainHash1 = saveHash1; +- maxChainHash2 = hash2; +- } +- } +- +- entryCount = table->entryCount; +- if (entryCount && chainCount) { +- mean = (double)entryCount / chainCount; +- variance = chainCount * sqsum - entryCount * entryCount; +- if (variance < 0 || chainCount == 1) +- variance = 0; +- else +- variance /= chainCount * (chainCount - 1); +- sigma = sqrt(variance); +- } else { +- mean = sigma = 0; +- } +- +- fprintf(fp, "Double hashing statistics:\n"); +- fprintf(fp, " table size (in entries): %u\n", tableSize); +- fprintf(fp, " number of entries: %u\n", table->entryCount); +- fprintf(fp, " number of removed entries: %u\n", table->removedCount); +- fprintf(fp, " number of searches: %u\n", table->stats.searches); +- fprintf(fp, " number of hits: %u\n", table->stats.hits); +- fprintf(fp, " number of misses: %u\n", table->stats.misses); +- fprintf(fp, " mean steps per search: %g\n", table->stats.searches ? +- (double)table->stats.steps +- / table->stats.searches : +- 0.); +- fprintf(fp, " mean hash chain length: %g\n", mean); +- fprintf(fp, " standard deviation: %g\n", sigma); +- fprintf(fp, " maximum hash chain length: %u\n", maxChainLen); +- fprintf(fp, " number of lookups: %u\n", table->stats.lookups); +- fprintf(fp, " adds that made a new entry: %u\n", table->stats.addMisses); +- fprintf(fp, "adds that recycled removeds: %u\n", table->stats.addOverRemoved); +- fprintf(fp, " adds that found an entry: %u\n", table->stats.addHits); +- fprintf(fp, " add failures: %u\n", table->stats.addFailures); +- fprintf(fp, " useful removes: %u\n", table->stats.removeHits); +- fprintf(fp, " useless removes: %u\n", table->stats.removeMisses); +- fprintf(fp, "removes that freed an entry: %u\n", table->stats.removeFrees); +- fprintf(fp, " removes while enumerating: %u\n", table->stats.removeEnums); +- fprintf(fp, " number of grows: %u\n", table->stats.grows); +- fprintf(fp, " number of shrinks: %u\n", table->stats.shrinks); +- fprintf(fp, " number of compresses: %u\n", table->stats.compresses); +- fprintf(fp, "number of enumerate shrinks: %u\n", table->stats.enumShrinks); +- +- if (dump && maxChainLen && hash2) { +- fputs("Maximum hash chain:\n", fp); +- hash1 = maxChainHash1; +- hash2 = maxChainHash2; +- entry = ADDRESS_ENTRY(table, hash1); +- i = 0; +- do { +- if (dump(table, entry, i++, fp) != PL_DHASH_NEXT) +- break; +- hash1 -= hash2; +- hash1 &= sizeMask; +- entry = ADDRESS_ENTRY(table, hash1); +- } while (PL_DHASH_ENTRY_IS_BUSY(entry)); +- } +-} +-#endif /* PL_DHASHMETER */ +--- /dev/null ++++ b/xpcom/glue/pldhash.cpp +@@ -0,0 +1,915 @@ ++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* ***** BEGIN LICENSE BLOCK ***** ++ * Version: MPL 1.1/GPL 2.0/LGPL 2.1 ++ * ++ * The contents of this file are subject to the Mozilla Public License Version ++ * 1.1 (the "License"); you may not use this file except in compliance with ++ * the License. You may obtain a copy of the License at ++ * http://www.mozilla.org/MPL/ ++ * ++ * Software distributed under the License is distributed on an "AS IS" basis, ++ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License ++ * for the specific language governing rights and limitations under the ++ * License. ++ * ++ * The Original Code is Mozilla JavaScript code. ++ * ++ * The Initial Developer of the Original Code is ++ * Netscape Communications Corporation. ++ * Portions created by the Initial Developer are Copyright (C) 1999-2001 ++ * the Initial Developer. All Rights Reserved. ++ * ++ * Contributor(s): ++ * Brendan Eich <brendan@mozilla.org> (Original Author) ++ * Chris Waterson <waterson@netscape.com> ++ * L. David Baron <dbaron@dbaron.org>, Mozilla Corporation ++ * ++ * Alternatively, the contents of this file may be used under the terms of ++ * either of the GNU General Public License Version 2 or later (the "GPL"), ++ * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ++ * in which case the provisions of the GPL or the LGPL are applicable instead ++ * of those above. If you wish to allow use of your version of this file only ++ * under the terms of either the GPL or the LGPL, and not to allow others to ++ * use your version of this file under the terms of the MPL, indicate your ++ * decision by deleting the provisions above and replace them with the notice ++ * and other provisions required by the GPL or the LGPL. If you do not delete ++ * the provisions above, a recipient may use your version of this file under ++ * the terms of any one of the MPL, the GPL or the LGPL. ++ * ++ * ***** END LICENSE BLOCK ***** */ ++ ++/* ++ * Double hashing implementation. ++ * GENERATED BY js/src/plify_jsdhash.sed -- DO NOT EDIT!!! ++ */ ++#include <stdio.h> ++#include <stdlib.h> ++#include <string.h> ++#include "prbit.h" ++#include "pldhash.h" ++#include "nsDebug.h" /* for PR_ASSERT */ ++ ++#ifdef PL_DHASHMETER ++# if defined MOZILLA_CLIENT && defined DEBUG_XXXbrendan ++# include "nsTraceMalloc.h" ++# endif ++# define METER(x) x ++#else ++# define METER(x) /* nothing */ ++#endif ++ ++/* ++ * The following DEBUG-only code is used to assert that calls to one of ++ * table->ops or to an enumerator do not cause re-entry into a call that ++ * can mutate the table. The recursion level is stored in additional ++ * space allocated at the end of the entry store to avoid changing ++ * PLDHashTable, which could cause issues when mixing DEBUG and ++ * non-DEBUG components. ++ */ ++#ifdef DEBUG ++ ++#define JSDHASH_ONELINE_ASSERT PR_ASSERT ++#define RECURSION_LEVEL(table_) (*(PRUint32*)(table_->entryStore + \ ++ PL_DHASH_TABLE_SIZE(table_) * \ ++ table_->entrySize)) ++/* ++ * Most callers that assert about the recursion level don't care about ++ * this magical value because they are asserting that mutation is ++ * allowed (and therefore the level is 0 or 1, depending on whether they ++ * incremented it). ++ * ++ * Only PL_DHashTableFinish needs to allow this special value. ++ */ ++#define IMMUTABLE_RECURSION_LEVEL ((PRUint32)-1) ++ ++#define RECURSION_LEVEL_SAFE_TO_FINISH(table_) \ ++ (RECURSION_LEVEL(table_) == 0 || \ ++ RECURSION_LEVEL(table_) == IMMUTABLE_RECURSION_LEVEL) ++ ++#define ENTRY_STORE_EXTRA sizeof(PRUint32) ++#define INCREMENT_RECURSION_LEVEL(table_) \ ++ PR_BEGIN_MACRO \ ++ if (RECURSION_LEVEL(table_) != IMMUTABLE_RECURSION_LEVEL) \ ++ ++RECURSION_LEVEL(table_); \ ++ PR_END_MACRO ++#define DECREMENT_RECURSION_LEVEL(table_) \ ++ PR_BEGIN_MACRO \ ++ if (RECURSION_LEVEL(table_) != IMMUTABLE_RECURSION_LEVEL) { \ ++ NS_ASSERTION(RECURSION_LEVEL(table_) > 0, "RECURSION_LEVEL(table_) > 0"); \ ++ --RECURSION_LEVEL(table_); \ ++ } \ ++ PR_END_MACRO ++ ++#else ++ ++#define ENTRY_STORE_EXTRA 0 ++#define INCREMENT_RECURSION_LEVEL(table_) PR_BEGIN_MACRO PR_END_MACRO ++#define DECREMENT_RECURSION_LEVEL(table_) PR_BEGIN_MACRO PR_END_MACRO ++ ++#endif /* defined(DEBUG) */ ++ ++void * ++PL_DHashAllocTable(PLDHashTable *table, PRUint32 nbytes) ++{ ++ return malloc(nbytes); ++} ++ ++void ++PL_DHashFreeTable(PLDHashTable *table, void *ptr) ++{ ++ free(ptr); ++} ++ ++PLDHashNumber ++PL_DHashStringKey(PLDHashTable *table, const void *key) ++{ ++ PLDHashNumber h; ++ const unsigned char *s; ++ ++ h = 0; ++ for (s = (const unsigned char *) key; *s != '\0'; s++) ++ h = PR_ROTATE_LEFT32(h, 4) ^ *s; ++ return h; ++} ++ ++PLDHashNumber ++PL_DHashVoidPtrKeyStub(PLDHashTable *table, const void *key) ++{ ++ return (PLDHashNumber)(unsigned long)key >> 2; ++} ++ ++PRBool ++PL_DHashMatchEntryStub(PLDHashTable *table, ++ const PLDHashEntryHdr *entry, ++ const void *key) ++{ ++ const PLDHashEntryStub *stub = (const PLDHashEntryStub *)entry; ++ ++ return stub->key == key; ++} ++ ++PRBool ++PL_DHashMatchStringKey(PLDHashTable *table, ++ const PLDHashEntryHdr *entry, ++ const void *key) ++{ ++ const PLDHashEntryStub *stub = (const PLDHashEntryStub *)entry; ++ ++ /* XXX tolerate null keys on account of sloppy Mozilla callers. */ ++ return stub->key == key || ++ (stub->key && key && ++ strcmp((const char *) stub->key, (const char *) key) == 0); ++} ++ ++void ++PL_DHashMoveEntryStub(PLDHashTable *table, ++ const PLDHashEntryHdr *from, ++ PLDHashEntryHdr *to) ++{ ++ memcpy(to, from, table->entrySize); ++} ++ ++void ++PL_DHashClearEntryStub(PLDHashTable *table, PLDHashEntryHdr *entry) ++{ ++ memset(entry, 0, table->entrySize); ++} ++ ++void ++PL_DHashFreeStringKey(PLDHashTable *table, PLDHashEntryHdr *entry) ++{ ++ const PLDHashEntryStub *stub = (const PLDHashEntryStub *)entry; ++ ++ free((void *) stub->key); ++ memset(entry, 0, table->entrySize); ++} ++ ++void ++PL_DHashFinalizeStub(PLDHashTable *table) ++{ ++} ++ ++static const PLDHashTableOps stub_ops = { ++ PL_DHashAllocTable, ++ PL_DHashFreeTable, ++ PL_DHashVoidPtrKeyStub, ++ PL_DHashMatchEntryStub, ++ PL_DHashMoveEntryStub, ++ PL_DHashClearEntryStub, ++ PL_DHashFinalizeStub, ++ NULL ++}; ++ ++const PLDHashTableOps * ++PL_DHashGetStubOps(void) ++{ ++ return &stub_ops; ++} ++ ++PLDHashTable * ++PL_NewDHashTable(const PLDHashTableOps *ops, void *data, PRUint32 entrySize, ++ PRUint32 capacity) ++{ ++ PLDHashTable *table; ++ ++ table = (PLDHashTable *) malloc(sizeof *table); ++ if (!table) ++ return NULL; ++ if (!PL_DHashTableInit(table, ops, data, entrySize, capacity)) { ++ free(table); ++ return NULL; ++ } ++ return table; ++} ++ ++void ++PL_DHashTableDestroy(PLDHashTable *table) ++{ ++ PL_DHashTableFinish(table); ++ free(table); ++} ++ ++PRBool ++PL_DHashTableInit(PLDHashTable *table, const PLDHashTableOps *ops, void *data, ++ PRUint32 entrySize, PRUint32 capacity) ++{ ++ int log2; ++ PRUint32 nbytes; ++ ++#ifdef DEBUG ++ if (entrySize > 10 * sizeof(void *)) { ++ printf_stderr( ++ "pldhash: for the table at address %p, the given entrySize" ++ " of %lu %s favors chaining over double hashing.\n", ++ (void *) table, ++ (unsigned long) entrySize, ++ (entrySize > 16 * sizeof(void*)) ? "definitely" : "probably"); ++ } ++#endif ++ ++ table->ops = ops; ++ table->data = data; ++ if (capacity < PL_DHASH_MIN_SIZE) ++ capacity = PL_DHASH_MIN_SIZE; ++ ++ PR_CEILING_LOG2(log2, capacity); ++ ++ capacity = PR_BIT(log2); ++ if (capacity >= PL_DHASH_SIZE_LIMIT) ++ return PR_FALSE; ++ table->hashShift = PL_DHASH_BITS - log2; ++ table->maxAlphaFrac = (PRUint8)(0x100 * PL_DHASH_DEFAULT_MAX_ALPHA); ++ table->minAlphaFrac = (PRUint8)(0x100 * PL_DHASH_DEFAULT_MIN_ALPHA); ++ table->entrySize = entrySize; ++ table->entryCount = table->removedCount = 0; ++ table->generation = 0; ++ nbytes = capacity * entrySize; ++ ++ table->entryStore = (char *) ops->allocTable(table, ++ nbytes + ENTRY_STORE_EXTRA); ++ if (!table->entryStore) ++ return PR_FALSE; ++ memset(table->entryStore, 0, nbytes); ++ METER(memset(&table->stats, 0, sizeof table->stats)); ++ ++#ifdef DEBUG ++ RECURSION_LEVEL(table) = 0; ++#endif ++ ++ return PR_TRUE; ++} ++ ++/* ++ * Compute max and min load numbers (entry counts) from table params. ++ */ ++#define MAX_LOAD(table, size) (((table)->maxAlphaFrac * (size)) >> 8) ++#define MIN_LOAD(table, size) (((table)->minAlphaFrac * (size)) >> 8) ++ ++void ++PL_DHashTableSetAlphaBounds(PLDHashTable *table, ++ float maxAlpha, ++ float minAlpha) ++{ ++ PRUint32 size; ++ ++ /* ++ * Reject obviously insane bounds, rather than trying to guess what the ++ * buggy caller intended. ++ */ ++ NS_ASSERTION(0.5 <= maxAlpha && maxAlpha < 1 && 0 <= minAlpha, ++ "0.5 <= maxAlpha && maxAlpha < 1 && 0 <= minAlpha"); ++ if (maxAlpha < 0.5 || 1 <= maxAlpha || minAlpha < 0) ++ return; ++ ++ /* ++ * Ensure that at least one entry will always be free. If maxAlpha at ++ * minimum size leaves no entries free, reduce maxAlpha based on minimum ++ * size and the precision limit of maxAlphaFrac's fixed point format. ++ */ ++ NS_ASSERTION(PL_DHASH_MIN_SIZE - (maxAlpha * PL_DHASH_MIN_SIZE) >= 1, ++ "PL_DHASH_MIN_SIZE - (maxAlpha * PL_DHASH_MIN_SIZE) >= 1"); ++ if (PL_DHASH_MIN_SIZE - (maxAlpha * PL_DHASH_MIN_SIZE) < 1) { ++ maxAlpha = (float) ++ (PL_DHASH_MIN_SIZE - PR_MAX(PL_DHASH_MIN_SIZE / 256, 1)) ++ / PL_DHASH_MIN_SIZE; ++ } ++ ++ /* ++ * Ensure that minAlpha is strictly less than half maxAlpha. Take care ++ * not to truncate an entry's worth of alpha when storing in minAlphaFrac ++ * (8-bit fixed point format). ++ */ ++ NS_ASSERTION(minAlpha < maxAlpha / 2, ++ "minAlpha < maxAlpha / 2"); ++ if (minAlpha >= maxAlpha / 2) { ++ size = PL_DHASH_TABLE_SIZE(table); ++ minAlpha = (size * maxAlpha - PR_MAX(size / 256, 1)) / (2 * size); ++ } ++ ++ table->maxAlphaFrac = (PRUint8)(maxAlpha * 256); ++ table->minAlphaFrac = (PRUint8)(minAlpha * 256); ++} ++ ++/* ++ * Double hashing needs the second hash code to be relatively prime to table ++ * size, so we simply make hash2 odd. ++ */ ++#define HASH1(hash0, shift) ((hash0) >> (shift)) ++#define HASH2(hash0,log2,shift) ((((hash0) << (log2)) >> (shift)) | 1) ++ ++/* ++ * Reserve keyHash 0 for free entries and 1 for removed-entry sentinels. Note ++ * that a removed-entry sentinel need be stored only if the removed entry had ++ * a colliding entry added after it. Therefore we can use 1 as the collision ++ * flag in addition to the removed-entry sentinel value. Multiplicative hash ++ * uses the high order bits of keyHash, so this least-significant reservation ++ * should not hurt the hash function's effectiveness much. ++ * ++ * If you change any of these magic numbers, also update PL_DHASH_ENTRY_IS_LIVE ++ * in pldhash.h. It used to be private to pldhash.c, but then became public to ++ * assist iterator writers who inspect table->entryStore directly. ++ */ ++#define COLLISION_FLAG ((PLDHashNumber) 1) ++#define MARK_ENTRY_FREE(entry) ((entry)->keyHash = 0) ++#define MARK_ENTRY_REMOVED(entry) ((entry)->keyHash = 1) ++#define ENTRY_IS_REMOVED(entry) ((entry)->keyHash == 1) ++#define ENTRY_IS_LIVE(entry) PL_DHASH_ENTRY_IS_LIVE(entry) ++#define ENSURE_LIVE_KEYHASH(hash0) if (hash0 < 2) hash0 -= 2; else (void)0 ++ ++/* Match an entry's keyHash against an unstored one computed from a key. */ ++#define MATCH_ENTRY_KEYHASH(entry,hash0) \ ++ (((entry)->keyHash & ~COLLISION_FLAG) == (hash0)) ++ ++/* Compute the address of the indexed entry in table. */ ++#define ADDRESS_ENTRY(table, index) \ ++ ((PLDHashEntryHdr *)((table)->entryStore + (index) * (table)->entrySize)) ++ ++void ++PL_DHashTableFinish(PLDHashTable *table) ++{ ++ char *entryAddr, *entryLimit; ++ PRUint32 entrySize; ++ PLDHashEntryHdr *entry; ++ ++#ifdef DEBUG_XXXbrendan ++ static FILE *dumpfp = NULL; ++ if (!dumpfp) dumpfp = fopen("/tmp/pldhash.bigdump", "w"); ++ if (dumpfp) { ++#ifdef MOZILLA_CLIENT ++ NS_TraceStack(1, dumpfp); ++#endif ++ PL_DHashTableDumpMeter(table, NULL, dumpfp); ++ fputc('\n', dumpfp); ++ } ++#endif ++ ++ INCREMENT_RECURSION_LEVEL(table); ++ ++ /* Call finalize before clearing entries, so it can enumerate them. */ ++ table->ops->finalize(table); ++ ++ /* Clear any remaining live entries. */ ++ entryAddr = table->entryStore; ++ entrySize = table->entrySize; ++ entryLimit = entryAddr + PL_DHASH_TABLE_SIZE(table) * entrySize; ++ while (entryAddr < entryLimit) { ++ entry = (PLDHashEntryHdr *)entryAddr; ++ if (ENTRY_IS_LIVE(entry)) { ++ METER(table->stats.removeEnums++); ++ table->ops->clearEntry(table, entry); ++ } ++ entryAddr += entrySize; ++ } ++ ++ DECREMENT_RECURSION_LEVEL(table); ++ NS_ASSERTION(RECURSION_LEVEL_SAFE_TO_FINISH(table), ++ "RECURSION_LEVEL_SAFE_TO_FINISH(table)"); ++ ++ /* Free entry storage last. */ ++ table->ops->freeTable(table, table->entryStore); ++} ++ ++static PLDHashEntryHdr * PL_DHASH_FASTCALL ++SearchTable(PLDHashTable *table, const void *key, PLDHashNumber keyHash, ++ PLDHashOperator op) ++{ ++ PLDHashNumber hash1, hash2; ++ int hashShift, sizeLog2; ++ PLDHashEntryHdr *entry, *firstRemoved; ++ PLDHashMatchEntry matchEntry; ++ PRUint32 sizeMask; ++ ++ METER(table->stats.searches++); ++ NS_ASSERTION(!(keyHash & COLLISION_FLAG), ++ "!(keyHash & COLLISION_FLAG)"); ++ ++ /* Compute the primary hash address. */ ++ hashShift = table->hashShift; ++ hash1 = HASH1(keyHash, hashShift); ++ entry = ADDRESS_ENTRY(table, hash1); ++ ++ /* Miss: return space for a new entry. */ ++ if (PL_DHASH_ENTRY_IS_FREE(entry)) { ++ METER(table->stats.misses++); ++ return entry; ++ } ++ ++ /* Hit: return entry. */ ++ matchEntry = table->ops->matchEntry; ++ if (MATCH_ENTRY_KEYHASH(entry, keyHash) && matchEntry(table, entry, key)) { ++ METER(table->stats.hits++); ++ return entry; ++ } ++ ++ /* Collision: double hash. */ ++ sizeLog2 = PL_DHASH_BITS - table->hashShift; ++ hash2 = HASH2(keyHash, sizeLog2, hashShift); ++ sizeMask = PR_BITMASK(sizeLog2); ++ ++ /* Save the first removed entry pointer so PL_DHASH_ADD can recycle it. */ ++ firstRemoved = NULL; ++ ++ for (;;) { ++ if (NS_UNLIKELY(ENTRY_IS_REMOVED(entry))) { ++ if (!firstRemoved) ++ firstRemoved = entry; ++ } else { ++ if (op == PL_DHASH_ADD) ++ entry->keyHash |= COLLISION_FLAG; ++ } ++ ++ METER(table->stats.steps++); ++ hash1 -= hash2; ++ hash1 &= sizeMask; ++ ++ entry = ADDRESS_ENTRY(table, hash1); ++ if (PL_DHASH_ENTRY_IS_FREE(entry)) { ++ METER(table->stats.misses++); ++ return (firstRemoved && op == PL_DHASH_ADD) ? firstRemoved : entry; ++ } ++ ++ if (MATCH_ENTRY_KEYHASH(entry, keyHash) && ++ matchEntry(table, entry, key)) { ++ METER(table->stats.hits++); ++ return entry; ++ } ++ } ++ ++ /* NOTREACHED */ ++ return NULL; ++} ++ ++/* ++ * This is a copy of SearchTable, used by ChangeTable, hardcoded to ++ * 1. assume |op == PL_DHASH_ADD|, ++ * 2. assume that |key| will never match an existing entry, and ++ * 3. assume that no entries have been removed from the current table ++ * structure. ++ * Avoiding the need for |key| means we can avoid needing a way to map ++ * entries to keys, which means callers can use complex key types more ++ * easily. ++ */ ++static PLDHashEntryHdr * PL_DHASH_FASTCALL ++FindFreeEntry(PLDHashTable *table, PLDHashNumber keyHash) ++{ ++ PLDHashNumber hash1, hash2; ++ int hashShift, sizeLog2; ++ PLDHashEntryHdr *entry; ++ PRUint32 sizeMask; ++ ++ METER(table->stats.searches++); ++ NS_ASSERTION(!(keyHash & COLLISION_FLAG), ++ "!(keyHash & COLLISION_FLAG)"); ++ ++ /* Compute the primary hash address. */ ++ hashShift = table->hashShift; ++ hash1 = HASH1(keyHash, hashShift); ++ entry = ADDRESS_ENTRY(table, hash1); ++ ++ /* Miss: return space for a new entry. */ ++ if (PL_DHASH_ENTRY_IS_FREE(entry)) { ++ METER(table->stats.misses++); ++ return entry; ++ } ++ ++ /* Collision: double hash. */ ++ sizeLog2 = PL_DHASH_BITS - table->hashShift; ++ hash2 = HASH2(keyHash, sizeLog2, hashShift); ++ sizeMask = PR_BITMASK(sizeLog2); ++ ++ for (;;) { ++ NS_ASSERTION(!ENTRY_IS_REMOVED(entry), ++ "!ENTRY_IS_REMOVED(entry)"); ++ entry->keyHash |= COLLISION_FLAG; ++ ++ METER(table->stats.steps++); ++ hash1 -= hash2; ++ hash1 &= sizeMask; ++ ++ entry = ADDRESS_ENTRY(table, hash1); ++ if (PL_DHASH_ENTRY_IS_FREE(entry)) { ++ METER(table->stats.misses++); ++ return entry; ++ } ++ } ++ ++ /* NOTREACHED */ ++ return NULL; ++} ++ ++static PRBool ++ChangeTable(PLDHashTable *table, int deltaLog2) ++{ ++ int oldLog2, newLog2; ++ PRUint32 oldCapacity, newCapacity; ++ char *newEntryStore, *oldEntryStore, *oldEntryAddr; ++ PRUint32 entrySize, i, nbytes; ++ PLDHashEntryHdr *oldEntry, *newEntry; ++ PLDHashMoveEntry moveEntry; ++#ifdef DEBUG ++ PRUint32 recursionLevel; ++#endif ++ ++ /* Look, but don't touch, until we succeed in getting new entry store. */ ++ oldLog2 = PL_DHASH_BITS - table->hashShift; ++ newLog2 = oldLog2 + deltaLog2; ++ oldCapacity = PR_BIT(oldLog2); ++ newCapacity = PR_BIT(newLog2); ++ if (newCapacity >= PL_DHASH_SIZE_LIMIT) ++ return PR_FALSE; ++ entrySize = table->entrySize; ++ nbytes = newCapacity * entrySize; ++ ++ newEntryStore = (char *) table->ops->allocTable(table, ++ nbytes + ENTRY_STORE_EXTRA); ++ if (!newEntryStore) ++ return PR_FALSE; ++ ++ /* We can't fail from here on, so update table parameters. */ ++#ifdef DEBUG ++ recursionLevel = RECURSION_LEVEL(table); ++#endif ++ table->hashShift = PL_DHASH_BITS - newLog2; ++ table->removedCount = 0; ++ table->generation++; ++ ++ /* Assign the new entry store to table. */ ++ memset(newEntryStore, 0, nbytes); ++ oldEntryAddr = oldEntryStore = table->entryStore; ++ table->entryStore = newEntryStore; ++ moveEntry = table->ops->moveEntry; ++#ifdef DEBUG ++ RECURSION_LEVEL(table) = recursionLevel; ++#endif ++ ++ /* Copy only live entries, leaving removed ones behind. */ ++ for (i = 0; i < oldCapacity; i++) { ++ oldEntry = (PLDHashEntryHdr *)oldEntryAddr; ++ if (ENTRY_IS_LIVE(oldEntry)) { ++ oldEntry->keyHash &= ~COLLISION_FLAG; ++ newEntry = FindFreeEntry(table, oldEntry->keyHash); ++ NS_ASSERTION(PL_DHASH_ENTRY_IS_FREE(newEntry), ++ "PL_DHASH_ENTRY_IS_FREE(newEntry)"); ++ moveEntry(table, oldEntry, newEntry); ++ newEntry->keyHash = oldEntry->keyHash; ++ } ++ oldEntryAddr += entrySize; ++ } ++ ++ table->ops->freeTable(table, oldEntryStore); ++ return PR_TRUE; ++} ++ ++PLDHashEntryHdr * PL_DHASH_FASTCALL ++PL_DHashTableOperate(PLDHashTable *table, const void *key, PLDHashOperator op) ++{ ++ PLDHashNumber keyHash; ++ PLDHashEntryHdr *entry; ++ PRUint32 size; ++ int deltaLog2; ++ ++ NS_ASSERTION(op == PL_DHASH_LOOKUP || RECURSION_LEVEL(table) == 0, ++ "op == PL_DHASH_LOOKUP || RECURSION_LEVEL(table) == 0"); ++ INCREMENT_RECURSION_LEVEL(table); ++ ++ keyHash = table->ops->hashKey(table, key); ++ keyHash *= PL_DHASH_GOLDEN_RATIO; ++ ++ /* Avoid 0 and 1 hash codes, they indicate free and removed entries. */ ++ ENSURE_LIVE_KEYHASH(keyHash); ++ keyHash &= ~COLLISION_FLAG; ++ ++ switch (op) { ++ case PL_DHASH_LOOKUP: ++ METER(table->stats.lookups++); ++ entry = SearchTable(table, key, keyHash, op); ++ break; ++ ++ case PL_DHASH_ADD: ++ /* ++ * If alpha is >= .75, grow or compress the table. If key is already ++ * in the table, we may grow once more than necessary, but only if we ++ * are on the edge of being overloaded. ++ */ ++ size = PL_DHASH_TABLE_SIZE(table); ++ if (table->entryCount + table->removedCount >= MAX_LOAD(table, size)) { ++ /* Compress if a quarter or more of all entries are removed. */ ++ if (table->removedCount >= size >> 2) { ++ METER(table->stats.compresses++); ++ deltaLog2 = 0; ++ } else { ++ METER(table->stats.grows++); ++ deltaLog2 = 1; ++ } ++ ++ /* ++ * Grow or compress table, returning null if ChangeTable fails and ++ * falling through might claim the last free entry. ++ */ ++ if (!ChangeTable(table, deltaLog2) && ++ table->entryCount + table->removedCount == size - 1) { ++ METER(table->stats.addFailures++); ++ entry = NULL; ++ break; ++ } ++ } ++ ++ /* ++ * Look for entry after possibly growing, so we don't have to add it, ++ * then skip it while growing the table and re-add it after. ++ */ ++ entry = SearchTable(table, key, keyHash, op); ++ if (!ENTRY_IS_LIVE(entry)) { ++ /* Initialize the entry, indicating that it's no longer free. */ ++ METER(table->stats.addMisses++); ++ if (ENTRY_IS_REMOVED(entry)) { ++ METER(table->stats.addOverRemoved++); ++ table->removedCount--; ++ keyHash |= COLLISION_FLAG; ++ } ++ if (table->ops->initEntry && ++ !table->ops->initEntry(table, entry, key)) { ++ /* We haven't claimed entry yet; fail with null return. */ ++ memset(entry + 1, 0, table->entrySize - sizeof *entry); ++ entry = NULL; ++ break; ++ } ++ entry->keyHash = keyHash; ++ table->entryCount++; ++ } ++ METER(else table->stats.addHits++); ++ break; ++ ++ case PL_DHASH_REMOVE: ++ entry = SearchTable(table, key, keyHash, op); ++ if (ENTRY_IS_LIVE(entry)) { ++ /* Clear this entry and mark it as "removed". */ ++ METER(table->stats.removeHits++); ++ PL_DHashTableRawRemove(table, entry); ++ ++ /* Shrink if alpha is <= .25 and table isn't too small already. */ ++ size = PL_DHASH_TABLE_SIZE(table); ++ if (size > PL_DHASH_MIN_SIZE && ++ table->entryCount <= MIN_LOAD(table, size)) { ++ METER(table->stats.shrinks++); ++ (void) ChangeTable(table, -1); ++ } ++ } ++ METER(else table->stats.removeMisses++); ++ entry = NULL; ++ break; ++ ++ default: ++ NS_NOTREACHED("0"); ++ entry = NULL; ++ } ++ ++ DECREMENT_RECURSION_LEVEL(table); ++ ++ return entry; ++} ++ ++void ++PL_DHashTableRawRemove(PLDHashTable *table, PLDHashEntryHdr *entry) ++{ ++ PLDHashNumber keyHash; /* load first in case clearEntry goofs it */ ++ ++ NS_ASSERTION(RECURSION_LEVEL(table) != IMMUTABLE_RECURSION_LEVEL, ++ "RECURSION_LEVEL(table) != IMMUTABLE_RECURSION_LEVEL"); ++ ++ NS_ASSERTION(PL_DHASH_ENTRY_IS_LIVE(entry), ++ "PL_DHASH_ENTRY_IS_LIVE(entry)"); ++ keyHash = entry->keyHash; ++ table->ops->clearEntry(table, entry); ++ if (keyHash & COLLISION_FLAG) { ++ MARK_ENTRY_REMOVED(entry); ++ table->removedCount++; ++ } else { ++ METER(table->stats.removeFrees++); ++ MARK_ENTRY_FREE(entry); ++ } ++ table->entryCount--; ++} ++ ++PRUint32 ++PL_DHashTableEnumerate(PLDHashTable *table, PLDHashEnumerator etor, void *arg) ++{ ++ char *entryAddr, *entryLimit; ++ PRUint32 i, capacity, entrySize, ceiling; ++ PRBool didRemove; ++ PLDHashEntryHdr *entry; ++ PLDHashOperator op; ++ ++ INCREMENT_RECURSION_LEVEL(table); ++ ++ entryAddr = table->entryStore; ++ entrySize = table->entrySize; ++ capacity = PL_DHASH_TABLE_SIZE(table); ++ entryLimit = entryAddr + capacity * entrySize; ++ i = 0; ++ didRemove = PR_FALSE; ++ while (entryAddr < entryLimit) { ++ entry = (PLDHashEntryHdr *)entryAddr; ++ if (ENTRY_IS_LIVE(entry)) { ++ op = etor(table, entry, i++, arg); ++ if (op & PL_DHASH_REMOVE) { ++ METER(table->stats.removeEnums++); ++ PL_DHashTableRawRemove(table, entry); ++ didRemove = PR_TRUE; ++ } ++ if (op & PL_DHASH_STOP) ++ break; ++ } ++ entryAddr += entrySize; ++ } ++ ++ NS_ASSERTION(!didRemove || RECURSION_LEVEL(table) == 1, ++ "!didRemove || RECURSION_LEVEL(table) == 1"); ++ ++ /* ++ * Shrink or compress if a quarter or more of all entries are removed, or ++ * if the table is underloaded according to the configured minimum alpha, ++ * and is not minimal-size already. Do this only if we removed above, so ++ * non-removing enumerations can count on stable table->entryStore until ++ * the next non-lookup-Operate or removing-Enumerate. ++ */ ++ if (didRemove && ++ (table->removedCount >= capacity >> 2 || ++ (capacity > PL_DHASH_MIN_SIZE && ++ table->entryCount <= MIN_LOAD(table, capacity)))) { ++ METER(table->stats.enumShrinks++); ++ capacity = table->entryCount; ++ capacity += capacity >> 1; ++ if (capacity < PL_DHASH_MIN_SIZE) ++ capacity = PL_DHASH_MIN_SIZE; ++ ++ PR_CEILING_LOG2(ceiling, capacity); ++ ceiling -= PL_DHASH_BITS - table->hashShift; ++ ++ (void) ChangeTable(table, ceiling); ++ } ++ ++ DECREMENT_RECURSION_LEVEL(table); ++ ++ return i; ++} ++ ++#ifdef DEBUG ++void ++PL_DHashMarkTableImmutable(PLDHashTable *table) ++{ ++ RECURSION_LEVEL(table) = IMMUTABLE_RECURSION_LEVEL; ++} ++#endif ++ ++#ifdef PL_DHASHMETER ++#include <math.h> ++ ++void ++PL_DHashTableDumpMeter(PLDHashTable *table, PLDHashEnumerator dump, FILE *fp) ++{ ++ char *entryAddr; ++ PRUint32 entrySize, entryCount; ++ int hashShift, sizeLog2; ++ PRUint32 i, tableSize, sizeMask, chainLen, maxChainLen, chainCount; ++ PLDHashNumber hash1, hash2, saveHash1, maxChainHash1, maxChainHash2; ++ double sqsum, mean, variance, sigma; ++ PLDHashEntryHdr *entry, *probe; ++ ++ entryAddr = table->entryStore; ++ entrySize = table->entrySize; ++ hashShift = table->hashShift; ++ sizeLog2 = PL_DHASH_BITS - hashShift; ++ tableSize = PL_DHASH_TABLE_SIZE(table); ++ sizeMask = PR_BITMASK(sizeLog2); ++ chainCount = maxChainLen = 0; ++ hash2 = 0; ++ sqsum = 0; ++ ++ for (i = 0; i < tableSize; i++) { ++ entry = (PLDHashEntryHdr *)entryAddr; ++ entryAddr += entrySize; ++ if (!ENTRY_IS_LIVE(entry)) ++ continue; ++ hash1 = HASH1(entry->keyHash & ~COLLISION_FLAG, hashShift); ++ saveHash1 = hash1; ++ probe = ADDRESS_ENTRY(table, hash1); ++ chainLen = 1; ++ if (probe == entry) { ++ /* Start of a (possibly unit-length) chain. */ ++ chainCount++; ++ } else { ++ hash2 = HASH2(entry->keyHash & ~COLLISION_FLAG, sizeLog2, ++ hashShift); ++ do { ++ chainLen++; ++ hash1 -= hash2; ++ hash1 &= sizeMask; ++ probe = ADDRESS_ENTRY(table, hash1); ++ } while (probe != entry); ++ } ++ sqsum += chainLen * chainLen; ++ if (chainLen > maxChainLen) { ++ maxChainLen = chainLen; ++ maxChainHash1 = saveHash1; ++ maxChainHash2 = hash2; ++ } ++ } ++ ++ entryCount = table->entryCount; ++ if (entryCount && chainCount) { ++ mean = (double)entryCount / chainCount; ++ variance = chainCount * sqsum - entryCount * entryCount; ++ if (variance < 0 || chainCount == 1) ++ variance = 0; ++ else ++ variance /= chainCount * (chainCount - 1); ++ sigma = sqrt(variance); ++ } else { ++ mean = sigma = 0; ++ } ++ ++ fprintf(fp, "Double hashing statistics:\n"); ++ fprintf(fp, " table size (in entries): %u\n", tableSize); ++ fprintf(fp, " number of entries: %u\n", table->entryCount); ++ fprintf(fp, " number of removed entries: %u\n", table->removedCount); ++ fprintf(fp, " number of searches: %u\n", table->stats.searches); ++ fprintf(fp, " number of hits: %u\n", table->stats.hits); ++ fprintf(fp, " number of misses: %u\n", table->stats.misses); ++ fprintf(fp, " mean steps per search: %g\n", table->stats.searches ? ++ (double)table->stats.steps ++ / table->stats.searches : ++ 0.); ++ fprintf(fp, " mean hash chain length: %g\n", mean); ++ fprintf(fp, " standard deviation: %g\n", sigma); ++ fprintf(fp, " maximum hash chain length: %u\n", maxChainLen); ++ fprintf(fp, " number of lookups: %u\n", table->stats.lookups); ++ fprintf(fp, " adds that made a new entry: %u\n", table->stats.addMisses); ++ fprintf(fp, "adds that recycled removeds: %u\n", table->stats.addOverRemoved); ++ fprintf(fp, " adds that found an entry: %u\n", table->stats.addHits); ++ fprintf(fp, " add failures: %u\n", table->stats.addFailures); ++ fprintf(fp, " useful removes: %u\n", table->stats.removeHits); ++ fprintf(fp, " useless removes: %u\n", table->stats.removeMisses); ++ fprintf(fp, "removes that freed an entry: %u\n", table->stats.removeFrees); ++ fprintf(fp, " removes while enumerating: %u\n", table->stats.removeEnums); ++ fprintf(fp, " number of grows: %u\n", table->stats.grows); ++ fprintf(fp, " number of shrinks: %u\n", table->stats.shrinks); ++ fprintf(fp, " number of compresses: %u\n", table->stats.compresses); ++ fprintf(fp, "number of enumerate shrinks: %u\n", table->stats.enumShrinks); ++ ++ if (dump && maxChainLen && hash2) { ++ fputs("Maximum hash chain:\n", fp); ++ hash1 = maxChainHash1; ++ hash2 = maxChainHash2; ++ entry = ADDRESS_ENTRY(table, hash1); ++ i = 0; ++ do { ++ if (dump(table, entry, i++, fp) != PL_DHASH_NEXT) ++ break; ++ hash1 -= hash2; ++ hash1 &= sizeMask; ++ entry = ADDRESS_ENTRY(table, hash1); ++ } while (PL_DHASH_ENTRY_IS_BUSY(entry)); ++ } ++} ++#endif /* PL_DHASHMETER */ --- firefox-7.0+build2+nobinonly.orig/debian/patches/only-add-ENABLE_JIT-to-CXXFLAGS-if-jit-is-enabled.patch +++ firefox-7.0+build2+nobinonly/debian/patches/only-add-ENABLE_JIT-to-CXXFLAGS-if-jit-is-enabled.patch @@ -0,0 +1,55 @@ +# HG changeset patch +# User Mike Hommey <mh+mozilla@glandium.org> +# Date 1314108801 -7200 +# Node ID 5847fed3426746e8692fdf4221acbd0917237d42 +# Parent 93e8590445364cc0a5710e276912aa55b8a938e4 +Bug 670719 - Only add -DENABLE_JIT=1 to CXXFLAGS if any of trace/method/yarr jit is enabled. r=dmandelin + +diff --git a/js/src/Makefile.in b/js/src/Makefile.in +--- a/js/src/Makefile.in ++++ b/js/src/Makefile.in +@@ -433,16 +433,19 @@ CPPSRCS += \ + YarrPattern.cpp \ + YarrSyntaxChecker.cpp \ + $(NULL) + else + + ############################################### + # BEGIN include sources for the Nitro assembler + # ++ ++ENABLE_YARR_JIT = 1 ++ + VPATH += $(srcdir)/assembler \ + $(srcdir)/assembler/wtf \ + $(srcdir)/assembler/jit \ + $(srcdir)/assembler/assembler \ + $(srcdir)/methodjit \ + $(srcdir)/yarr \ + $(NONE) + +@@ -1076,17 +1079,21 @@ endif + + ############################################### + # BEGIN kludges for the Nitro assembler + # + + # Needed to "configure" it correctly. Unfortunately these + # flags wind up being applied to all code in js/src, not just + # the code in js/src/assembler. +-CXXFLAGS += -DUSE_SYSTEM_MALLOC=1 -DENABLE_ASSEMBLER=1 -DENABLE_JIT=1 ++CXXFLAGS += -DUSE_SYSTEM_MALLOC=1 -DENABLE_ASSEMBLER=1 ++ ++ifneq (,$(ENABLE_YARR_JIT)$(ENABLE_TRACEJIT)$(ENABLE_METHODJIT)) ++CXXFLAGS += -DENABLE_JIT=1 ++endif + + INCLUDES += -I$(srcdir)/assembler -I$(srcdir)/yarr + + ifdef ENABLE_METHODJIT + # Build a standalone test program that exercises the assembler + # sources a bit. + TESTMAIN_OBJS = \ + Assertions.$(OBJ_SUFFIX) \ + + --- firefox-7.0+build2+nobinonly.orig/debian/patches/printf-fix.patch +++ firefox-7.0+build2+nobinonly/debian/patches/printf-fix.patch @@ -0,0 +1,11 @@ +--- a/gfx/2d/Logging.h ++++ b/gfx/2d/Logging.h +@@ -86,7 +86,7 @@ static void OutputMessage(const std::str + } + #else + if (aLevel >= sGfxLogLevel) { +- printf(aString.c_str()); ++ printf("%s", aString.c_str()); + } + #endif + } --- firefox-7.0+build2+nobinonly.orig/debian/patches/plugin-for-mimetype-pref.patch +++ firefox-7.0+build2+nobinonly/debian/patches/plugin-for-mimetype-pref.patch @@ -0,0 +1,57 @@ +Description: We introduce a new preference that allows users to set a preferred + plugin for a given mime-type. + + For example: + + pref ("modules.plugins.mimetype.application/x-shockwave-flash", "/usr/lib/firefox-3.0.1/plugins/libflashplayer.so") + + would make the flashplyer installed in that location the preferred one to use. + + In case the path is not valid, we just go ahead and search for the first match + given the mime-type. +Author: Alexander Sack <asac@ubuntu.com> +Forwarded: no + +--- a/dom/plugins/base/nsPluginHost.cpp ++++ b/dom/plugins/base/nsPluginHost.cpp +@@ -1647,6 +1647,40 @@ nsPluginHost::FindPluginForType(const ch + + LoadPlugins(); + ++ nsCOMPtr<nsIPrefBranch> pref (do_QueryInterface(mPrefService)); ++ ++ char *preferredPluginPath = NULL; ++ nsCAutoString mimetypePrefString ("modules.plugins.mimetype."); ++ mimetypePrefString.Append(aMimeType); ++ // FIXME: preferredPluginPath is leaked. Ouch ++ nsresult rv = pref->GetCharPref(mimetypePrefString.get(), &preferredPluginPath); ++ ++ if(NS_SUCCEEDED(rv) && preferredPluginPath) { ++ // FIXME: This should really check if the selected plugin can handle ++ // the specified mimetype and that it is enabled, and just reject the ++ // pref if not ++ nsPluginTag *plugins = mPlugins; ++ while (plugins) { ++ if (0 == PL_strcasecmp(plugins->mFileName.get(), preferredPluginPath) || ++ 0 == PL_strcasecmp(plugins->mFullPath.get(), preferredPluginPath)) { ++ return plugins; ++ } ++ plugins = plugins->mNext; ++ } ++ ++ // now lets search for substrings ++ plugins=mPlugins; ++ while (plugins) { ++ if (nsnull != PL_strstr(plugins->mFileName.get(), preferredPluginPath) || ++ nsnull != PL_strstr(plugins->mFullPath.get(), preferredPluginPath)) { ++ return plugins; ++ } ++ plugins = plugins->mNext; ++ } ++ } ++ ++ // if there is no pref for this mime-type, or if the plugin named in pref ++ // isn't found, we pick the first that matches for this mime-type + nsPluginTag *plugin = mPlugins; + while (plugin) { + if (!aCheckEnabled || plugin->IsEnabled()) { --- firefox-7.0+build2+nobinonly.orig/debian/patches/ubuntu-codes-google.patch +++ firefox-7.0+build2+nobinonly/debian/patches/ubuntu-codes-google.patch @@ -0,0 +1,138 @@ +Description: Update the Google search URL +Author: Chris Coulson <chris.coulson@canonical.com> +Forwarded: not-needed + +--- a/browser/locales/en-US/searchplugins/google.xml ++++ b/browser/locales/en-US/searchplugins/google.xml +@@ -5,13 +5,11 @@ + <Image width="16" height="16">data:image/png;base64,AAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs9Pt8xetPtu9FsfFNtu%2BTzvb2%2B%2Fne4dFJeBw0egA%2FfAJAfAA8ewBBegAAAAD%2B%2FPtft98Mp%2BwWsfAVsvEbs%2FQeqvF8xO7%2F%2F%2F63yqkxdgM7gwE%2FggM%2BfQA%2BegBDeQDe7PIbotgQufcMufEPtfIPsvAbs%2FQvq%2Bfz%2Bf%2F%2B%2B%2FZKhR05hgBBhQI8hgBAgAI9ewD0%2B%2Fg3pswAtO8Cxf4Kw%2FsJvvYAqupKsNv%2B%2Fv7%2F%2FP5VkSU0iQA7jQA9hgBDgQU%2BfQH%2F%2Ff%2FQ6fM4sM4KsN8AteMCruIqqdbZ7PH8%2Fv%2Fg6Nc%2Fhg05kAA8jAM9iQI%2BhQA%2BgQDQu6b97uv%2F%2F%2F7V8Pqw3eiWz97q8%2Ff%2F%2F%2F%2F7%2FPptpkkqjQE4kwA7kAA5iwI8iAA8hQCOSSKdXjiyflbAkG7u2s%2F%2B%2F%2F39%2F%2F7r8utrqEYtjQE8lgA7kwA7kwA9jwA9igA9hACiWSekVRyeSgiYSBHx6N%2F%2B%2Fv7k7OFRmiYtlAA5lwI7lwI4lAA7kgI9jwE9iwI4iQCoVhWcTxCmb0K%2BooT8%2Fv%2F7%2F%2F%2FJ2r8fdwI1mwA3mQA3mgA8lAE8lAE4jwA9iwE%2BhwGfXifWvqz%2B%2Ff%2F58u%2Fev6Dt4tr%2B%2F%2F2ZuIUsggA7mgM6mAM3lgA5lgA6kQE%2FkwBChwHt4dv%2F%2F%2F728ei1bCi7VAC5XQ7kz7n%2F%2F%2F6bsZkgcB03lQA9lgM7kwA2iQktZToPK4r9%2F%2F%2F9%2F%2F%2FSqYK5UwDKZAS9WALIkFn%2B%2F%2F3%2F%2BP8oKccGGcIRJrERILYFEMwAAuEAAdX%2F%2Ff7%2F%2FP%2B%2BfDvGXQLIZgLEWgLOjlf7%2F%2F%2F%2F%2F%2F9QU90EAPQAAf8DAP0AAfMAAOUDAtr%2F%2F%2F%2F7%2B%2Fu2bCTIYwDPZgDBWQDSr4P%2F%2Fv%2F%2F%2FP5GRuABAPkAA%2FwBAfkDAPAAAesAAN%2F%2F%2B%2Fz%2F%2F%2F64g1C5VwDMYwK8Yg7y5tz8%2Fv%2FV1PYKDOcAAP0DAf4AAf0AAfYEAOwAAuAAAAD%2F%2FPvi28ymXyChTATRrIb8%2F%2F3v8fk6P8MAAdUCAvoAAP0CAP0AAfYAAO4AAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAA</Image> + <Url type="application/x-suggestions+json" method="GET" template="http://suggestqueries.google.com/complete/search?output=firefox&client=firefox&hl={moz:locale}&q={searchTerms}"/> + <Url type="text/html" method="GET" template="http://www.google.com/search"> ++ <Param name="client" value="ubuntu"/> ++ <Param name="channel" value="fs"/> + <Param name="q" value="{searchTerms}"/> + <Param name="ie" value="utf-8"/> + <Param name="oe" value="utf-8"/> +- <Param name="aq" value="t"/> +- <!-- Dynamic parameters --> +- <Param name="rls" value="{moz:distributionID}:{moz:locale}:{moz:official}"/> +- <MozParam name="client" condition="defaultEngine" trueValue="firefox-a" falseValue="firefox"/> + </Url> + <SearchForm>http://www.google.com/</SearchForm> + </SearchPlugin> +--- a/l10n/bg/browser/searchplugins/google.xml ++++ b/l10n/bg/browser/searchplugins/google.xml +@@ -5,13 +5,11 @@ + <Image width="16" height="16">data:image/png;base64,AAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs9Pt8xetPtu9FsfFNtu%2BTzvb2%2B%2Fne4dFJeBw0egA%2FfAJAfAA8ewBBegAAAAD%2B%2FPtft98Mp%2BwWsfAVsvEbs%2FQeqvF8xO7%2F%2F%2F63yqkxdgM7gwE%2FggM%2BfQA%2BegBDeQDe7PIbotgQufcMufEPtfIPsvAbs%2FQvq%2Bfz%2Bf%2F%2B%2B%2FZKhR05hgBBhQI8hgBAgAI9ewD0%2B%2Fg3pswAtO8Cxf4Kw%2FsJvvYAqupKsNv%2B%2Fv7%2F%2FP5VkSU0iQA7jQA9hgBDgQU%2BfQH%2F%2Ff%2FQ6fM4sM4KsN8AteMCruIqqdbZ7PH8%2Fv%2Fg6Nc%2Fhg05kAA8jAM9iQI%2BhQA%2BgQDQu6b97uv%2F%2F%2F7V8Pqw3eiWz97q8%2Ff%2F%2F%2F%2F7%2FPptpkkqjQE4kwA7kAA5iwI8iAA8hQCOSSKdXjiyflbAkG7u2s%2F%2B%2F%2F39%2F%2F7r8utrqEYtjQE8lgA7kwA7kwA9jwA9igA9hACiWSekVRyeSgiYSBHx6N%2F%2B%2Fv7k7OFRmiYtlAA5lwI7lwI4lAA7kgI9jwE9iwI4iQCoVhWcTxCmb0K%2BooT8%2Fv%2F7%2F%2F%2FJ2r8fdwI1mwA3mQA3mgA8lAE8lAE4jwA9iwE%2BhwGfXifWvqz%2B%2Ff%2F58u%2Fev6Dt4tr%2B%2F%2F2ZuIUsggA7mgM6mAM3lgA5lgA6kQE%2FkwBChwHt4dv%2F%2F%2F728ei1bCi7VAC5XQ7kz7n%2F%2F%2F6bsZkgcB03lQA9lgM7kwA2iQktZToPK4r9%2F%2F%2F9%2F%2F%2FSqYK5UwDKZAS9WALIkFn%2B%2F%2F3%2F%2BP8oKccGGcIRJrERILYFEMwAAuEAAdX%2F%2Ff7%2F%2FP%2B%2BfDvGXQLIZgLEWgLOjlf7%2F%2F%2F%2F%2F%2F9QU90EAPQAAf8DAP0AAfMAAOUDAtr%2F%2F%2F%2F7%2B%2Fu2bCTIYwDPZgDBWQDSr4P%2F%2Fv%2F%2F%2FP5GRuABAPkAA%2FwBAfkDAPAAAesAAN%2F%2F%2B%2Fz%2F%2F%2F64g1C5VwDMYwK8Yg7y5tz8%2Fv%2FV1PYKDOcAAP0DAf4AAf0AAfYEAOwAAuAAAAD%2F%2FPvi28ymXyChTATRrIb8%2F%2F3v8fk6P8MAAdUCAvoAAP0CAP0AAfYAAO4AAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAA</Image> + <Url type="application/x-suggestions+json" method="GET" template="http://suggestqueries.google.com/complete/search?output=firefox&client=firefox&hl={moz:locale}&q={searchTerms}"/> + <Url type="text/html" method="GET" template="http://www.google.com/search"> ++ <Param name="client" value="ubuntu"/> ++ <Param name="channel" value="fs"/> + <Param name="q" value="{searchTerms}"/> + <Param name="ie" value="utf-8"/> + <Param name="oe" value="utf-8"/> +- <Param name="aq" value="t"/> +- <!-- Dynamic parameters --> +- <Param name="rls" value="{moz:distributionID}:{moz:locale}:{moz:official}"/> +- <MozParam name="client" condition="defaultEngine" trueValue="firefox-a" falseValue="firefox"/> + </Url> + <SearchForm>http://www.google.com/firefox</SearchForm> + </SearchPlugin> +--- a/l10n/ja/browser/searchplugins/google-jp.xml ++++ b/l10n/ja/browser/searchplugins/google-jp.xml +@@ -6,16 +6,14 @@ + <Image width="16" height="16">data:image/png;base64,AAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs9Pt8xetPtu9FsfFNtu%2BTzvb2%2B%2Fne4dFJeBw0egA%2FfAJAfAA8ewBBegAAAAD%2B%2FPtft98Mp%2BwWsfAVsvEbs%2FQeqvF8xO7%2F%2F%2F63yqkxdgM7gwE%2FggM%2BfQA%2BegBDeQDe7PIbotgQufcMufEPtfIPsvAbs%2FQvq%2Bfz%2Bf%2F%2B%2B%2FZKhR05hgBBhQI8hgBAgAI9ewD0%2B%2Fg3pswAtO8Cxf4Kw%2FsJvvYAqupKsNv%2B%2Fv7%2F%2FP5VkSU0iQA7jQA9hgBDgQU%2BfQH%2F%2Ff%2FQ6fM4sM4KsN8AteMCruIqqdbZ7PH8%2Fv%2Fg6Nc%2Fhg05kAA8jAM9iQI%2BhQA%2BgQDQu6b97uv%2F%2F%2F7V8Pqw3eiWz97q8%2Ff%2F%2F%2F%2F7%2FPptpkkqjQE4kwA7kAA5iwI8iAA8hQCOSSKdXjiyflbAkG7u2s%2F%2B%2F%2F39%2F%2F7r8utrqEYtjQE8lgA7kwA7kwA9jwA9igA9hACiWSekVRyeSgiYSBHx6N%2F%2B%2Fv7k7OFRmiYtlAA5lwI7lwI4lAA7kgI9jwE9iwI4iQCoVhWcTxCmb0K%2BooT8%2Fv%2F7%2F%2F%2FJ2r8fdwI1mwA3mQA3mgA8lAE8lAE4jwA9iwE%2BhwGfXifWvqz%2B%2Ff%2F58u%2Fev6Dt4tr%2B%2F%2F2ZuIUsggA7mgM6mAM3lgA5lgA6kQE%2FkwBChwHt4dv%2F%2F%2F728ei1bCi7VAC5XQ7kz7n%2F%2F%2F6bsZkgcB03lQA9lgM7kwA2iQktZToPK4r9%2F%2F%2F9%2F%2F%2FSqYK5UwDKZAS9WALIkFn%2B%2F%2F3%2F%2BP8oKccGGcIRJrERILYFEMwAAuEAAdX%2F%2Ff7%2F%2FP%2B%2BfDvGXQLIZgLEWgLOjlf7%2F%2F%2F%2F%2F%2F9QU90EAPQAAf8DAP0AAfMAAOUDAtr%2F%2F%2F%2F7%2B%2Fu2bCTIYwDPZgDBWQDSr4P%2F%2Fv%2F%2F%2FP5GRuABAPkAA%2FwBAfkDAPAAAesAAN%2F%2F%2B%2Fz%2F%2F%2F64g1C5VwDMYwK8Yg7y5tz8%2Fv%2FV1PYKDOcAAP0DAf4AAf0AAfYEAOwAAuAAAAD%2F%2FPvi28ymXyChTATRrIb8%2F%2F3v8fk6P8MAAdUCAvoAAP0CAP0AAfYAAO4AAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAA</Image> + <Url type="application/x-suggestions+json" method="GET" template="http://suggestqueries.google.com/complete/search?output=firefox&client=firefox&hl=ja&qu={searchTerms}"/><!-- suggestqueries.google.co.jp doesn't exist and suggestqueries.google.com can handle Japanese too --> + <Url type="text/html" method="GET" template="http://www.google.co.jp/search"> ++ <Param name="client" value="ubuntu"/> ++ <Param name="channel" value="fs"/> + <Param name="q" value="{searchTerms}"/> + <!-- <Param name="lr" value="lang_ja"/> --> + <!-- <Param name="num" value="100"/> --> + <Param name="ie" value="utf-8"/> + <Param name="oe" value="utf-8"/> +- <Param name="aq" value="t"/> +- <!-- Dynamic parameters --> +- <Param name="rls" value="{moz:distributionID}:{moz:locale}:{moz:official}"/> + <Param name="hl" value="ja"/> +- <MozParam name="client" condition="defaultEngine" trueValue="firefox-a" falseValue="firefox"/> + </Url> + <SearchForm>http://www.google.co.jp/</SearchForm> + </SearchPlugin> +--- a/l10n/ku/browser/searchplugins/google-ku.xml ++++ b/l10n/ku/browser/searchplugins/google-ku.xml +@@ -5,14 +5,12 @@ + <Image width="16" height="16">data:image/png;base64,AAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs9Pt8xetPtu9FsfFNtu%2BTzvb2%2B%2Fne4dFJeBw0egA%2FfAJAfAA8ewBBegAAAAD%2B%2FPtft98Mp%2BwWsfAVsvEbs%2FQeqvF8xO7%2F%2F%2F63yqkxdgM7gwE%2FggM%2BfQA%2BegBDeQDe7PIbotgQufcMufEPtfIPsvAbs%2FQvq%2Bfz%2Bf%2F%2B%2B%2FZKhR05hgBBhQI8hgBAgAI9ewD0%2B%2Fg3pswAtO8Cxf4Kw%2FsJvvYAqupKsNv%2B%2Fv7%2F%2FP5VkSU0iQA7jQA9hgBDgQU%2BfQH%2F%2Ff%2FQ6fM4sM4KsN8AteMCruIqqdbZ7PH8%2Fv%2Fg6Nc%2Fhg05kAA8jAM9iQI%2BhQA%2BgQDQu6b97uv%2F%2F%2F7V8Pqw3eiWz97q8%2Ff%2F%2F%2F%2F7%2FPptpkkqjQE4kwA7kAA5iwI8iAA8hQCOSSKdXjiyflbAkG7u2s%2F%2B%2F%2F39%2F%2F7r8utrqEYtjQE8lgA7kwA7kwA9jwA9igA9hACiWSekVRyeSgiYSBHx6N%2F%2B%2Fv7k7OFRmiYtlAA5lwI7lwI4lAA7kgI9jwE9iwI4iQCoVhWcTxCmb0K%2BooT8%2Fv%2F7%2F%2F%2FJ2r8fdwI1mwA3mQA3mgA8lAE8lAE4jwA9iwE%2BhwGfXifWvqz%2B%2Ff%2F58u%2Fev6Dt4tr%2B%2F%2F2ZuIUsggA7mgM6mAM3lgA5lgA6kQE%2FkwBChwHt4dv%2F%2F%2F728ei1bCi7VAC5XQ7kz7n%2F%2F%2F6bsZkgcB03lQA9lgM7kwA2iQktZToPK4r9%2F%2F%2F9%2F%2F%2FSqYK5UwDKZAS9WALIkFn%2B%2F%2F3%2F%2BP8oKccGGcIRJrERILYFEMwAAuEAAdX%2F%2Ff7%2F%2FP%2B%2BfDvGXQLIZgLEWgLOjlf7%2F%2F%2F%2F%2F%2F9QU90EAPQAAf8DAP0AAfMAAOUDAtr%2F%2F%2F%2F7%2B%2Fu2bCTIYwDPZgDBWQDSr4P%2F%2Fv%2F%2F%2FP5GRuABAPkAA%2FwBAfkDAPAAAesAAN%2F%2F%2B%2Fz%2F%2F%2F64g1C5VwDMYwK8Yg7y5tz8%2Fv%2FV1PYKDOcAAP0DAf4AAf0AAfYEAOwAAuAAAAD%2F%2FPvi28ymXyChTATRrIb8%2F%2F3v8fk6P8MAAdUCAvoAAP0CAP0AAfYAAO4AAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAA</Image> + <Url type="application/x-suggestions+json" method="GET" template="http://suggestqueries.google.com/complete/search?output=firefox&client=firefox&hl=en&q={searchTerms}"/> + <Url type="text/html" method="GET" template="http://www.google.com/search"> ++ <Param name="client" value="ubuntu"/> ++ <Param name="channel" value="fs"/> + <Param name="q" value="{searchTerms}"/> + <Param name="ie" value="utf-8"/> + <Param name="oe" value="utf-8"/> +- <Param name="aq" value="t"/> + <Param name="hl" value="en"/> +- <!-- Dynamic parameters --> +- <Param name="rls" value="{moz:distributionID}:{moz:locale}:{moz:official}"/> +- <MozParam name="client" condition="defaultEngine" trueValue="firefox-a" falseValue="firefox"/> + </Url> + <SearchForm>http://www.google.com/firefox?hl=en</SearchForm> + </SearchPlugin> +--- /dev/null ++++ b/l10n/en-GB/browser/searchplugins/google-en-GB.xml +@@ -0,0 +1,16 @@ ++<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/"> ++<ShortName>Google</ShortName> ++<Description>Google Search</Description> ++<InputEncoding>UTF-8</InputEncoding> ++<Image width="16" height="16">data:image/png;base64,AAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs9Pt8xetPtu9FsfFNtu%2BTzvb2%2B%2Fne4dFJeBw0egA%2FfAJAfAA8ewBBegAAAAD%2B%2FPtft98Mp%2BwWsfAVsvEbs%2FQeqvF8xO7%2F%2F%2F63yqkxdgM7gwE%2FggM%2BfQA%2BegBDeQDe7PIbotgQufcMufEPtfIPsvAbs%2FQvq%2Bfz%2Bf%2F%2B%2B%2FZKhR05hgBBhQI8hgBAgAI9ewD0%2B%2Fg3pswAtO8Cxf4Kw%2FsJvvYAqupKsNv%2B%2Fv7%2F%2FP5VkSU0iQA7jQA9hgBDgQU%2BfQH%2F%2Ff%2FQ6fM4sM4KsN8AteMCruIqqdbZ7PH8%2Fv%2Fg6Nc%2Fhg05kAA8jAM9iQI%2BhQA%2BgQDQu6b97uv%2F%2F%2F7V8Pqw3eiWz97q8%2Ff%2F%2F%2F%2F7%2FPptpkkqjQE4kwA7kAA5iwI8iAA8hQCOSSKdXjiyflbAkG7u2s%2F%2B%2F%2F39%2F%2F7r8utrqEYtjQE8lgA7kwA7kwA9jwA9igA9hACiWSekVRyeSgiYSBHx6N%2F%2B%2Fv7k7OFRmiYtlAA5lwI7lwI4lAA7kgI9jwE9iwI4iQCoVhWcTxCmb0K%2BooT8%2Fv%2F7%2F%2F%2FJ2r8fdwI1mwA3mQA3mgA8lAE8lAE4jwA9iwE%2BhwGfXifWvqz%2B%2Ff%2F58u%2Fev6Dt4tr%2B%2F%2F2ZuIUsggA7mgM6mAM3lgA5lgA6kQE%2FkwBChwHt4dv%2F%2F%2F728ei1bCi7VAC5XQ7kz7n%2F%2F%2F6bsZkgcB03lQA9lgM7kwA2iQktZToPK4r9%2F%2F%2F9%2F%2F%2FSqYK5UwDKZAS9WALIkFn%2B%2F%2F3%2F%2BP8oKccGGcIRJrERILYFEMwAAuEAAdX%2F%2Ff7%2F%2FP%2B%2BfDvGXQLIZgLEWgLOjlf7%2F%2F%2F%2F%2F%2F9QU90EAPQAAf8DAP0AAfMAAOUDAtr%2F%2F%2F%2F7%2B%2Fu2bCTIYwDPZgDBWQDSr4P%2F%2Fv%2F%2F%2FP5GRuABAPkAA%2FwBAfkDAPAAAesAAN%2F%2F%2B%2Fz%2F%2F%2F64g1C5VwDMYwK8Yg7y5tz8%2Fv%2FV1PYKDOcAAP0DAf4AAf0AAfYEAOwAAuAAAAD%2F%2FPvi28ymXyChTATRrIb8%2F%2F3v8fk6P8MAAdUCAvoAAP0CAP0AAfYAAO4AAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAA</Image> ++<Url type="application/x-suggestions+json" method="GET" template="http://suggestqueries.google.com/complete/search?output=firefox&client=firefox&hl={moz:locale}&q={searchTerms}"/> ++<Url type="text/html" method="GET" template="http://www.google.com/search"> ++ <Param name="client" value="ubuntu"/> ++ <Param name="channel" value="fs"/> ++ <Param name="q" value="{searchTerms}"/> ++ <Param name="ie" value="utf-8"/> ++ <Param name="oe" value="utf-8"/> ++ <Param name="gl" value="uk"/> ++</Url> ++<SearchForm>http://www.google.com/</SearchForm> ++</SearchPlugin> +--- a/l10n/en-GB/browser/searchplugins/list.txt ++++ b/l10n/en-GB/browser/searchplugins/list.txt +@@ -2,6 +2,6 @@ amazon-en-GB + bing + chambers-en-GB + eBay-en-GB +-google ++google-en-GB + wikipedia + yahoo-en-GB +--- /dev/null ++++ b/l10n/en-ZA/browser/searchplugins/google-en-ZA.xml +@@ -0,0 +1,16 @@ ++<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/"> ++<ShortName>Google</ShortName> ++<Description>Google Search</Description> ++<InputEncoding>UTF-8</InputEncoding> ++<Image width="16" height="16">data:image/png;base64,AAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs9Pt8xetPtu9FsfFNtu%2BTzvb2%2B%2Fne4dFJeBw0egA%2FfAJAfAA8ewBBegAAAAD%2B%2FPtft98Mp%2BwWsfAVsvEbs%2FQeqvF8xO7%2F%2F%2F63yqkxdgM7gwE%2FggM%2BfQA%2BegBDeQDe7PIbotgQufcMufEPtfIPsvAbs%2FQvq%2Bfz%2Bf%2F%2B%2B%2FZKhR05hgBBhQI8hgBAgAI9ewD0%2B%2Fg3pswAtO8Cxf4Kw%2FsJvvYAqupKsNv%2B%2Fv7%2F%2FP5VkSU0iQA7jQA9hgBDgQU%2BfQH%2F%2Ff%2FQ6fM4sM4KsN8AteMCruIqqdbZ7PH8%2Fv%2Fg6Nc%2Fhg05kAA8jAM9iQI%2BhQA%2BgQDQu6b97uv%2F%2F%2F7V8Pqw3eiWz97q8%2Ff%2F%2F%2F%2F7%2FPptpkkqjQE4kwA7kAA5iwI8iAA8hQCOSSKdXjiyflbAkG7u2s%2F%2B%2F%2F39%2F%2F7r8utrqEYtjQE8lgA7kwA7kwA9jwA9igA9hACiWSekVRyeSgiYSBHx6N%2F%2B%2Fv7k7OFRmiYtlAA5lwI7lwI4lAA7kgI9jwE9iwI4iQCoVhWcTxCmb0K%2BooT8%2Fv%2F7%2F%2F%2FJ2r8fdwI1mwA3mQA3mgA8lAE8lAE4jwA9iwE%2BhwGfXifWvqz%2B%2Ff%2F58u%2Fev6Dt4tr%2B%2F%2F2ZuIUsggA7mgM6mAM3lgA5lgA6kQE%2FkwBChwHt4dv%2F%2F%2F728ei1bCi7VAC5XQ7kz7n%2F%2F%2F6bsZkgcB03lQA9lgM7kwA2iQktZToPK4r9%2F%2F%2F9%2F%2F%2FSqYK5UwDKZAS9WALIkFn%2B%2F%2F3%2F%2BP8oKccGGcIRJrERILYFEMwAAuEAAdX%2F%2Ff7%2F%2FP%2B%2BfDvGXQLIZgLEWgLOjlf7%2F%2F%2F%2F%2F%2F9QU90EAPQAAf8DAP0AAfMAAOUDAtr%2F%2F%2F%2F7%2B%2Fu2bCTIYwDPZgDBWQDSr4P%2F%2Fv%2F%2F%2FP5GRuABAPkAA%2FwBAfkDAPAAAesAAN%2F%2F%2B%2Fz%2F%2F%2F64g1C5VwDMYwK8Yg7y5tz8%2Fv%2FV1PYKDOcAAP0DAf4AAf0AAfYEAOwAAuAAAAD%2F%2FPvi28ymXyChTATRrIb8%2F%2F3v8fk6P8MAAdUCAvoAAP0CAP0AAfYAAO4AAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAA</Image> ++<Url type="application/x-suggestions+json" method="GET" template="http://suggestqueries.google.com/complete/search?output=firefox&client=firefox&hl={moz:locale}&q={searchTerms}"/> ++<Url type="text/html" method="GET" template="http://www.google.com/search"> ++ <Param name="client" value="ubuntu"/> ++ <Param name="channel" value="fs"/> ++ <Param name="q" value="{searchTerms}"/> ++ <Param name="ie" value="utf-8"/> ++ <Param name="oe" value="utf-8"/> ++ <Param name="gl" value="za"/> ++</Url> ++<SearchForm>http://www.google.com/</SearchForm> ++</SearchPlugin> +--- a/l10n/en-ZA/browser/searchplugins/list.txt ++++ b/l10n/en-ZA/browser/searchplugins/list.txt +@@ -1,6 +1,6 @@ + amazondotcom + bing + eBay +-google ++google-en-ZA + wikipedia + yahoo --- firefox-7.0+build2+nobinonly.orig/debian/patches/distro-locale-searchplugins.patch +++ firefox-7.0+build2+nobinonly/debian/patches/distro-locale-searchplugins.patch @@ -0,0 +1,125 @@ +Description: Add support for localized distribution searchplugins +Author: Alexander Sack <asac@ubuntu.com> +Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=515232 +Forwarded: https://bugzilla.mozilla.org/attachment.cgi?id=399338 + +diff --git a/browser/components/dirprovider/DirectoryProvider.cpp b/browser/components/dirprovider/DirectoryProvider.cpp +--- a/browser/components/dirprovider/DirectoryProvider.cpp ++++ b/browser/components/dirprovider/DirectoryProvider.cpp +@@ -30,16 +30,17 @@ + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + ++#include "nsIChromeRegistry.h" + #include "nsIDirectoryService.h" + #include "DirectoryProvider.h" + + #include "nsIFile.h" + #include "nsISimpleEnumerator.h" + #include "nsIPrefService.h" + #include "nsIPrefBranch.h" + +@@ -198,47 +199,51 @@ AppendDistroSearchDirs(nsIProperties* aD + if (NS_FAILED(rv) || !exists) + return; + + nsCOMPtr<nsIFile> commonPlugins; + rv = searchPlugins->Clone(getter_AddRefs(commonPlugins)); + if (NS_SUCCEEDED(rv)) { + commonPlugins->AppendNative(NS_LITERAL_CSTRING("common")); + rv = commonPlugins->Exists(&exists); +- if (NS_SUCCEEDED(rv) && exists) +- array.AppendObject(commonPlugins); ++ if (NS_FAILED(rv) || !exists) ++ commonPlugins = nsnull; ++ } ++ if (NS_FAILED(rv)) ++ return; ++ ++ nsCAutoString locale; ++ nsCOMPtr<nsIFile> localePlugins; ++ rv = searchPlugins->Clone(getter_AddRefs(localePlugins)); ++ if (NS_FAILED(rv)) ++ return; ++ ++ nsCOMPtr<nsIXULChromeRegistry> chromeReg = ++ do_GetService(NS_CHROMEREGISTRY_CONTRACTID); ++ if (!chromeReg) ++ return; ++ ++ chromeReg->GetSelectedLocale(NS_LITERAL_CSTRING("global"), locale); ++ if (NS_SUCCEEDED(rv)) { ++ nsCOMPtr<nsIFile> curLocalePlugins; ++ rv = localePlugins->Clone(getter_AddRefs(curLocalePlugins)); ++ if (NS_SUCCEEDED(rv)) { ++ curLocalePlugins->AppendNative(locale); ++ rv = curLocalePlugins->Exists(&exists); ++ if (NS_SUCCEEDED(rv) && exists) { ++ array.AppendObject(curLocalePlugins); ++ if (commonPlugins) ++ array.AppendObject(commonPlugins); ++ return; // all done ++ } ++ } + } + + nsCOMPtr<nsIPrefBranch> prefs(do_GetService(NS_PREFSERVICE_CONTRACTID)); + if (prefs) { +- +- nsCOMPtr<nsIFile> localePlugins; +- rv = searchPlugins->Clone(getter_AddRefs(localePlugins)); +- if (NS_FAILED(rv)) +- return; +- +- localePlugins->AppendNative(NS_LITERAL_CSTRING("locale")); +- +- nsCString locale; +- rv = prefs->GetCharPref("general.useragent.locale", getter_Copies(locale)); +- if (NS_SUCCEEDED(rv)) { +- +- nsCOMPtr<nsIFile> curLocalePlugins; +- rv = localePlugins->Clone(getter_AddRefs(curLocalePlugins)); +- if (NS_SUCCEEDED(rv)) { +- +- curLocalePlugins->AppendNative(locale); +- rv = curLocalePlugins->Exists(&exists); +- if (NS_SUCCEEDED(rv) && exists) { +- array.AppendObject(curLocalePlugins); +- return; // all done +- } +- } +- } +- + // we didn't append the locale dir - try the default one + nsCString defLocale; + rv = prefs->GetCharPref("distribution.searchplugins.defaultLocale", + getter_Copies(defLocale)); + if (NS_SUCCEEDED(rv)) { + + nsCOMPtr<nsIFile> defLocalePlugins; + rv = localePlugins->Clone(getter_AddRefs(defLocalePlugins)); +@@ -246,16 +251,19 @@ AppendDistroSearchDirs(nsIProperties* aD + + defLocalePlugins->AppendNative(defLocale); + rv = defLocalePlugins->Exists(&exists); + if (NS_SUCCEEDED(rv) && exists) + array.AppendObject(defLocalePlugins); + } + } + } ++ ++ if (commonPlugins) ++ array.AppendObject(commonPlugins); + } + + NS_IMETHODIMP + DirectoryProvider::GetFiles(const char *aKey, nsISimpleEnumerator* *aResult) + { + nsresult rv; + + if (!strcmp(aKey, NS_APP_SEARCH_DIR_LIST)) { --- firefox-7.0+build2+nobinonly.orig/debian/patches/allow-lockPref-everywhere.patch +++ firefox-7.0+build2+nobinonly/debian/patches/allow-lockPref-everywhere.patch @@ -0,0 +1,99 @@ +Description: Allow use of lockPref in all preference files +Author: Alexander Sack <asac@ubuntu.com> +Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=467738 +Forwarded: https://bugzilla.mozilla.org/attachment.cgi?id=351145 + +--- a/modules/libpref/src/prefread.cpp ++++ b/modules/libpref/src/prefread.cpp +@@ -75,6 +75,7 @@ enum { + #define BITS_PER_HEX_DIGIT 4 + + static const char kUserPref[] = "user_pref"; ++static const char kLockPref[] = "lockPref"; + static const char kPref[] = "pref"; + static const char kTrue[] = "true"; + static const char kFalse[] = "false"; +@@ -161,7 +162,7 @@ pref_DoCallback(PrefParseState *ps) + default: + break; + } +- (*ps->reader)(ps->closure, ps->lb, value, ps->vtype, ps->fdefault); ++ (*ps->reader)(ps->closure, ps->lb, value, ps->vtype, ps->fdefault, ps->flock); + return PR_TRUE; + } + +@@ -220,6 +221,7 @@ PREF_ParseBuf(PrefParseState *ps, const + ps->vb = NULL; + ps->vtype = PREF_INVALID; + ps->fdefault = PR_FALSE; ++ ps->flock = PR_FALSE; + } + switch (c) { + case '/': /* begin comment block or line? */ +@@ -230,7 +232,9 @@ PREF_ParseBuf(PrefParseState *ps, const + break; + case 'u': /* indicating user_pref */ + case 'p': /* indicating pref */ +- ps->smatch = (c == 'u' ? kUserPref : kPref); ++ case 'l': /* indicating lockPref */ ++ ps->smatch = (c == 'u' ? kUserPref : ++ (c == 'p' ? kPref : kLockPref)); + ps->sindex = 1; + ps->nextstate = PREF_PARSE_UNTIL_OPEN_PAREN; + state = PREF_PARSE_MATCH_STRING; +@@ -274,7 +278,8 @@ PREF_ParseBuf(PrefParseState *ps, const + /* name parsing */ + case PREF_PARSE_UNTIL_NAME: + if (c == '\"' || c == '\'') { +- ps->fdefault = (ps->smatch == kPref); ++ ps->fdefault = (ps->smatch != kUserPref); ++ ps->flock = (ps->smatch == kLockPref); + ps->quotechar = c; + ps->nextstate = PREF_PARSE_UNTIL_COMMA; /* return here when done */ + state = PREF_PARSE_QUOTED_STRING; +--- a/modules/libpref/src/prefread.h ++++ b/modules/libpref/src/prefread.h +@@ -62,7 +62,8 @@ typedef void (*PrefReader)(void *c + const char *pref, + PrefValue val, + PrefType type, +- PRBool defPref); ++ PRBool defPref, ++ PRBool lockPref); + + /* structure fields are private */ + typedef struct PrefParseState { +@@ -83,6 +84,7 @@ typedef struct PrefParseState { + char *vb; /* value buffer (ptr into lb) */ + PrefType vtype; /* PREF_STRING,INT,BOOL */ + PRBool fdefault; /* PR_TRUE if (default) pref */ ++ PRBool flock; /* PR_TRUE if pref to be locked */ + } PrefParseState; + + /** +--- a/modules/libpref/src/prefapi.cpp ++++ b/modules/libpref/src/prefapi.cpp +@@ -942,7 +942,10 @@ void PREF_ReaderCallback(void *clo + const char *pref, + PrefValue value, + PrefType type, +- PRBool isDefault) ++ PRBool isDefault, ++ PRBool isLocked) + { + pref_HashPref(pref, value, type, isDefault); ++ if (isLocked) ++ PREF_LockPref(pref, PR_TRUE); + } +--- a/modules/libpref/src/prefapi.h ++++ b/modules/libpref/src/prefapi.h +@@ -207,7 +207,8 @@ void PREF_ReaderCallback( void *closure, + const char *pref, + PrefValue value, + PrefType type, +- PRBool isDefault); ++ PRBool isDefault, ++ PRBool isLocked); + + PR_END_EXTERN_C + #endif --- firefox-7.0+build2+nobinonly.orig/debian/patches/ubuntu-bookmarks.patch +++ firefox-7.0+build2+nobinonly/debian/patches/ubuntu-bookmarks.patch @@ -0,0 +1,31 @@ +Description: Customize the default bookmarks for Ubuntu +Author: Alexander Sack <asac@ubuntu.com> +Forwarded: not-needed + +--- a/browser/locales/generic/profile/bookmarks.html.in ++++ b/browser/locales/generic/profile/bookmarks.html.in +@@ -14,6 +14,16 @@ + <DT><A HREF="http://www.mozilla.com/@AB_CD@/firefox/central/" ID="rdf:#$GvPhC3">@getting_started@</A> + <DT><A HREF="http://fxfeeds.mozilla.com/@AB_CD@/firefox/livebookmarks/" FEEDURL="http://fxfeeds.mozilla.com/@AB_CD@/firefox/headlines.xml" ID="rdf:#$HvPhC3">@latest_headlines@</A> + </DL><p> ++ <DT><H3 ADD_DATE="1181129907" LAST_MODIFIED="1180687506" ID="rdf:#$jYrW.3">Ubuntu and Free Software links</H3> ++<DD>Information and resources about Ubuntu, Debian and Free Software in general ++ <DL><p> ++ <DT><A HREF="http://www.ubuntulinux.org/" ADD_DATE="1181129907" LAST_MODIFIED="1181129907" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACSklEQVQ4jX1TXWhSYRj+ZMxRN7vpZuwiRrBREchgxS6CQXTn1EULyWiFdIQQRCu6yI0Yg4KUJIOhNCSiusqLbmSMLroQ2WgRw5Oxc456NHeOOmPqMX/W4ekm/46uF76bl/d53p/n+QhRRImLjWf9Djdvm9xmZ1UyO6uSedvkdtbvcJe42LiyvisKQZedMQzWWC1Bv8cYBmuFoMveA6RpWv3z0aWNo4CslqDOx9BIMw1Wp5IzzsvrNE2rWwSi59arLoBOhZzHitLGW5Q/vYewNIc6t4NGhgOrU4HVEmT9DjchhBBpd0vD6lRyE5yyTkNcMaGyuY5m1PkYhKU5JG+e6mwil5mvZ4jopXzNZPzaCVS/b6KeoBE3jiB5ewKJ66PIeayQpSL+HOTB3znXIskFHj4hSfMY10wUXi8DAPKrD3pukHVRAAAp/LGVS1omYoTVEvx69xTybwl7Tj3qfAzx+eEeAu7KcRRDARwEX7ZV0Q80CKMfaBTWFiFLRaTtMzjMpsAZ1H2VSNsugrdoOkiPVUh8YTTdWmFtEQCw59T3gu0zAIBiKNC9gvjM9KZ1xPlh1H58QTUaQdw4gsSNk+AMagjLRjQyHA73M11KCF7LKqlEw1OdncQVE7IuCuXPH9oycjsQHl9F0nxaIeO3s4QQQoTnCwHlyPkXNhRDARRDAaTunkc1GkE1Gmk38lK+lhMZhhlK37sQ+Z+V/60ms1qC9P3pcJeVmyT9JlE+0Uv5GIYZOvJHVqLhKdFL+ToNljSPcaKX8km7Wxpl/V9ZLTo82gQ36wAAAABJRU5ErkJggg==" ID="rdf:#$kYrW.3">Ubuntu</A> ++ <DT><A HREF="http://wiki.ubuntu.com" ADD_DATE="1181129907" LAST_MODIFIED="1181129907" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACmklEQVQ4jY2TX0hTcRzFj+7v3b+7zS0357wuNTfM9bB7g2tbGGaEYkhhJbUeRiiSpkEoSKRFUgjLFgRa/qE/SBGWYGgzNMg07EGEIvxDWZnggyCUhuZ2fz2IkTbJ8/4533MOfIEtqsXnUw9XleRW+nzqLQFdRXGKkfMWfuis+eAVnrKMpSv7CEeT5ymKXgCaTcHum8my8ixlbLiBmScBGyEBG/Hn6+6Ppak+EI4mvamKKQDpEeHafK126i47cnSv3nfnuOHRmsFcnfXHiVRZfbFB2rkvXtYEwBLRYMDvbCdBD5lsZb9uUyLbYRJf1spx8YBd3jhaGTe95GcWhQYmnOOQewFEr4PddvUOoccdJkEPqT1pfQuAMxqhKuBBuXSg1WJ4Ji5YpknARl5XmN4DMAEAPDapc7Dc3F6WSRe/ueF8t9DJ/6KkqNTr1w9VAIjOuNVVoetMeNnPrOhlyAYADJ8z95CAjXyvT1goyTM3jbe65gFkA4jaWDEB0MVIcEorQQUAFkAUqvdrakINTOiB1zjZWJbUv9DJL8vFyIq0UbNN7hVYzUrIpV42ScCtHdFLRShkjJLScLc7RIIeUl1obUwGZH/DLxMhn96lGiUcTYYcytmNKcUAFC+upfWToIdMtLFzFjH4W3GUtS0R8kE7xc84Va8IRxPBpRFyaVEHANs/Ec20xDXR6prJ43VPbzPUY4HVCAKrCRGOJg+T5B9PGyR9RUZpEMBhANJINUVqChlJUhxbcWkWCUcTwtHkWQr1rcZrHVjqyvh5yWttBqCPBAMAaoHoeIAyiHAohxY1F2jFHdul0Vc/32O/kKCHjLewswAcmxqsKXN1Fy2AWAD6I3tiSoN1Oz/l7tY/AWD/r0EEKQFwWH2kP/1/Aw7z2faOzA5FAAAAAElFTkSuQmCC" ID="rdf:#$mYrW.3">Ubuntu Wiki (community-edited website)</A> ++ <DT><A HREF="https://answers.launchpad.net/ubuntu/+addquestion" ADD_DATE="1181129907" LAST_MODIFIED="1181129907" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAEgSURBVDiNpZO7SgNBGIW/2awDaTRJs7FaEdfCylcQsbT2AcTSN/ABtvAJAj6AlfYWIjaCjYWwBC0kWISQgBd0sxfntwi6Jibrmpxy5sx3Dv/MKBERZpA1upAkCXEcTwcIggDf92m1WtMBoijCGFP48C/AqKR/j3m9AkkwT2fI+y0wPDI7D5A+HGC6xyhdR+L2IHFhg7m1UyjN/93gO2WlgV6/plTfwzyfkz4eFmvwJau2PTAvLfPRPkJeLrK9IoAsroayq0jSzQdMelvydoOkPVTZy5g/DVprADqdDp6XmdK7XVAa0zsBoLS4Px7gui6O4xCG4XBy2ETCJqq8iu01sCqbQ3UnKg52pH+Za5H/DXGMcq/Rqm6h7EouQM36nT8B8aKcEoKd93oAAAAASUVORK5CYII=" ID="rdf:#$nYrW.3">Make a Support Request to the Ubuntu Community</A> ++ <DT><A HREF="http://www.debian.org/" ADD_DATE="1181129907" LAST_MODIFIED="1181129907" ICON="data:image/x-icon;base64,AAABAAQAICAAAAEACACoCAAARgAAACAgEAABAAQA6AIAAO4IAAAQEAAAAQAIAGgFAADWCwAAEBAQAAEABAAoAQAAPhEAACgAAAAgAAAAQAAAAAEACAAAAAAAgAQAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAMDcwADwyqYAACBAAAAgYAAAIIAAACCgAAAgwAAAIOAAAEAAAABAIAAAQEAAAEBgAABAgAAAQKAAAEDAAABA4AAAYAAAAGAgAABgQAAAYGAAAGCAAABgoAAAYMAAAGDgAACAAAAAgCAAAIBAAACAYAAAgIAAAICgAACAwAAAgOAAAKAAAACgIAAAoEAAAKBgAACggAAAoKAAAKDAAACg4AAAwAAAAMAgAADAQAAAwGAAAMCAAADAoAAAwMAAAMDgAADgAAAA4CAAAOBAAADgYAAA4IAAAOCgAADgwAAA4OAAQAAAAEAAIABAAEAAQABgAEAAgABAAKAAQADAAEAA4ABAIAAAQCAgAEAgQABAIGAAQCCAAEAgoABAIMAAQCDgAEBAAABAQCAAQEBAAEBAYABAQIAAQECgAEBAwABAQOAAQGAAAEBgIABAYEAAQGBgAEBggABAYKAAQGDAAEBg4ABAgAAAQIAgAECAQABAgGAAQICAAECAoABAgMAAQIDgAECgAABAoCAAQKBAAECgYABAoIAAQKCgAECgwABAoOAAQMAAAEDAIABAwEAAQMBgAEDAgABAwKAAQMDAAEDA4ABA4AAAQOAgAEDgQABA4GAAQOCAAEDgoABA4MAAQODgAIAAAACAACAAgABAAIAAYACAAIAAgACgAIAAwACAAOAAgCAAAIAgIACAIEAAgCBgAIAggACAIKAAgCDAAIAg4ACAQAAAgEAgAIBAQACAQGAAgECAAIBAoACAQMAAgEDgAIBgAACAYCAAgGBAAIBgYACAYIAAgGCgAIBgwACAYOAAgIAAAICAIACAgEAAgIBgAICAgACAgKAAgIDAAICA4ACAoAAAgKAgAICgQACAoGAAgKCAAICgoACAoMAAgKDgAIDAAACAwCAAgMBAAIDAYACAwIAAgMCgAIDAwACAwOAAgOAAAIDgIACA4EAAgOBgAIDggACA4KAAgODAAIDg4ADAAAAAwAAgAMAAQADAAGAAwACAAMAAoADAAMAAwADgAMAgAADAICAAwCBAAMAgYADAIIAAwCCgAMAgwADAIOAAwEAAAMBAIADAQEAAwEBgAMBAgADAQKAAwEDAAMBA4ADAYAAAwGAgAMBgQADAYGAAwGCAAMBgoADAYMAAwGDgAMCAAADAgCAAwIBAAMCAYADAgIAAwICgAMCAwADAgOAAwKAAAMCgIADAoEAAwKBgAMCggADAoKAAwKDAAMCg4ADAwAAAwMAgAMDAQADAwGAAwMCAAMDAoADw+/8ApKCgAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAADnTpenAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAl0YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAl0ZOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGTgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARkYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXRpcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABORgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRkYAAAAAAAAAAAAA75ef7wAAAAAAAAAAAAAAAAAAAJ9GAAAAAAAAAAAAV05ORkZGRp8AAAAAAAAAAAAAAAAARkYAAAAAAAAAp05OTqcAAADvRkbvAAAAAAAAAAAAAKdGRgAAAAAAAADvTp8AAAAAAAAA70aXAAAAAAAAAAAAp0aXAAAAAAAAAE5GAAAAp1cAAAAA70bvAAAAAAAAAACnRqcAAAAAAACnRu8AAAAAAABXAAAATkbvAAAAAAAAAJdGlwAAAAAAAKdGAAAAAAAAAKcAAAAARu8AAAAAAAAAp0ZOAAAAAAAAp0YAAAAAAAAAAAAAAABGTgAAAAAAAACnRkYAAAAAAAAARgAAAAAAAAAA5wAAAEZG7wAAAAAAAJ9GRgAAAAAAAADvnwAAAAAAAAAAAAAARkbvAAAAAAAA70ZGpwAAAAAAAABO7wAAAAAApwAAAABGTqcAAAAAAADvV0ZOAAAAAAAAAKdGpwAAAADvAAAA70ZO7wAAAAAAAO9GRkYAAAAAAAAAAO9ORkZGpwAAAACfRlfvAAAAAAAAAABGRk4AAAAAAAAAAAAAAAAAAAAAAEZGp6cAAAAAAAAApwBGRk4AAAAAAAAAAAAAAAAAAACnRkZGAAAAAAAAAAAAAJ9GRkbvAAAAAAAAAAAAAAAAAEZGRk4AAAAAAAAAAAAAAEZGRkanAAAAAAAAAAAAAABGRkZGAAAAAAAAAAAAAAAAAEZGRkZGlwAAAAAAAABORkZGRgAAAAAAAAAAAAAAAAAAAE5GRkZGRkZGRkZGRkZGRkYAAAAAAAAAAAAAAAAAAAAAAABGRkZGRkZGRkZGRk7vAAAAAAAAAAAAAAAAAAAAAAAAAAAATkZGTleXn6cAAAAAAAAAAAAAAP/8P///+f///+P////P////n////z////5////8f////P////n////5////8f+H//P+Af/z+Dh/4/j+P+P5zx/j8fuP4/P7z+Pz/8/j+/3H4/n/x+H8+8fh/HuH4f4Hh/j//4f0f/8P/B//D/4P/h//A/g//4AAf//gAP//+Af/KAAAACAAAABAAAAAAQAEAAAAAACAAgAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAACZkAAAAAAAAAAAAAAAAACZAAAAAAAAAAAAAAAAAACZkAAAAAAAAAAAAAAAAAAJkAAAAAAAAAAAAAAAAAAAmQAAAAAAAAAAAAAAAAAACZAAAAAAAAAAAAAAAAAAAJkAAAAAAAAAAAAAAAAAAAmZAAAAAAAAAAAAAAAAAAAJkAAAAAAAAAAAAAAAAAAAmZAAAAAAAAAAAAAAAAAAAJmQAAAAAAAAAAAAAAAAAACZAAAAAAAJkAAAAAAAAAAJkAAAAACZmZmZAAAAAAAACZAAAAAJmQAACZkAAAAAAAmQAAAAmQAAAAAJkAAAAAAJkAAAAJAAAJAAAJkAAAAAmZAAAAmQAAAAkACZAAAAAJmQAAAJkAAAAAkACQAAAACZkAAACQAAAAAAAAmQAAAAmZAAAAmQAAAACQAJkAAAAJmQAAAAmQAAAAAACZkAAAAJkAAAAAkAAAAJAAmZAAAACZkAAAAAkAAAkAAJmQAAAACZAAAAAAmZkAAAmZAAAAAAmZAAAAAAAAAAAJmQAAAAAAmZAAAAAAAAAAmZkAAAAAAJmZAAAAAAAAAJmQAAAAAAAJmZAAAAAAAAmZkAAAAAAAAJmZmQAAAAmZmQAAAAAAAAAJmZmZmZmZmZAAAAAAAAAAAAmZmZmZmZAAAAAAAAAAAAAACZmZmQAAAAAAAP/+P///+f///+P////P////n////z////5////8f////P////j////4////+f/P//P+Af/z/Hx/8/n/P/P775/j8/uf4/P93+P3/8/j8/3P4/n/x/P9/cfx/vvH+f8Pj/j//4/8f/8P/D//H/4f/h//A/g//4AAf//gAf//+A//KAAAABAAAAAgAAAAAQAIAAAAAABAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAADAwMAAwNzAAPDKpgAAIEAAACBgAAAggAAAIKAAACDAAAAg4AAAQAAAAEAgAABAQAAAQGAAAECAAABAoAAAQMAAAEDgAABgAAAAYCAAAGBAAABgYAAAYIAAAGCgAABgwAAAYOAAAIAAAACAIAAAgEAAAIBgAACAgAAAgKAAAIDAAACA4AAAoAAAAKAgAACgQAAAoGAAAKCAAACgoAAAoMAAAKDgAADAAAAAwCAAAMBAAADAYAAAwIAAAMCgAADAwAAAwOAAAOAAAADgIAAA4EAAAOBgAADggAAA4KAAAODAAADg4ABAAAAAQAAgAEAAQABAAGAAQACAAEAAoABAAMAAQADgAEAgAABAICAAQCBAAEAgYABAIIAAQCCgAEAgwABAIOAAQEAAAEBAIABAQEAAQEBgAEBAgABAQKAAQEDAAEBA4ABAYAAAQGAgAEBgQABAYGAAQGCAAEBgoABAYMAAQGDgAECAAABAgCAAQIBAAECAYABAgIAAQICgAECAwABAgOAAQKAAAECgIABAoEAAQKBgAECggABAoKAAQKDAAECg4ABAwAAAQMAgAEDAQABAwGAAQMCAAEDAoABAwMAAQMDgAEDgAABA4CAAQOBAAEDgYABA4IAAQOCgAEDgwABA4OAAgAAAAIAAIACAAEAAgABgAIAAgACAAKAAgADAAIAA4ACAIAAAgCAgAIAgQACAIGAAgCCAAIAgoACAIMAAgCDgAIBAAACAQCAAgEBAAIBAYACAQIAAgECgAIBAwACAQOAAgGAAAIBgIACAYEAAgGBgAIBggACAYKAAgGDAAIBg4ACAgAAAgIAgAICAQACAgGAAgICAAICAoACAgMAAgIDgAICgAACAoCAAgKBAAICgYACAoIAAgKCgAICgwACAoOAAgMAAAIDAIACAwEAAgMBgAIDAgACAwKAAgMDAAIDA4ACA4AAAgOAgAIDgQACA4GAAgOCAAIDgoACA4MAAgODgAMAAAADAACAAwABAAMAAYADAAIAAwACgAMAAwADAAOAAwCAAAMAgIADAIEAAwCBgAMAggADAIKAAwCDAAMAg4ADAQAAAwEAgAMBAQADAQGAAwECAAMBAoADAQMAAwEDgAMBgAADAYCAAwGBAAMBgYADAYIAAwGCgAMBgwADAYOAAwIAAAMCAIADAgEAAwIBgAMCAgADAgKAAwIDAAMCA4ADAoAAAwKAgAMCgQADAoGAAwKCAAMCgoADAoMAAwKDgAMDAAADAwCAAwMBAAMDAYADAwIAAwMCgAPD7/wCkoKAAgICAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAADvTqfvAAAAAAAAAAAAAACXTu8AAAAAAAAAAAAAAACfTu8AAAAAAAAAAAAAAACfTu8AAAAAAAAAAAAAAADvRqcAAAAAAAAAAAAAAAAAVkYAAAAAp6fvAAAAAAAA70bvAACnl05GRpfvAAAAAKdGAAAAl6cAAABOTu8AAACfRgAAp1YA76cAAJeXAAAAn04AAKdWAAAApwCfTu8AAKdGAAAAnwAAAAAAp0bvAADvRp8AAACfl58AAJdO7wAAAJdO7wAAAAAAAO9GlwAAAADvTkanAAAAAO+XRu8AAAAAAO9ORlaXl1ZORu8AAAAAAAAA76dWRkZWp+8AAAAA/D/vgfj/74Hx/wAA4/86AMf/AgDPHysBjAcAApzjAgCZM0oBmdEAAp3xBACOMVgBx+OBAcPDAALgB08C8A/OAigAAAAQAAAAIAAAAAEABAAAAAAAwAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAACZAAAAAAAAmQAAAAAAAAmQAAAAAAAAmQAAAAAAAAmQAAAAAAAACQAAmZkAAACZAAmQCZkAAJkAmQAACZAAmQCQCZAJkACZAJAACQCZAJkACQAJAJkACZAAmZAAmQAJmQAAAAmQAACZkAAAmZAAAAmZmZmZAAAAAJmZmQAAD+f++B+f/vgfP/PALn/+sCz/8CAN4fCgKcx+sCmfMGAJszJwKb2RICndmAAs456wLH8wIA4+M1AvAH6wL4H++B" ID="rdf:#$pYrW.3">Debian (Ubuntu is based on Debian)</A> ++ <DT><A HREF="https://one.ubuntu.com/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB9ElEQVQ4jb2Rz0uTARjH3z8j6BR1CIqMYAQeOnSIQQUdrCg7tZMjEBTEi5ewIJACiwgPYcnaq85MHfYqm2vbO7e9Tt2m7/byirG9urfN/XC8WESHfboVI9g89b0+z/fD9/s8gvA/FbXfRTrfybEN5Rf3sF4/pPTkOvNnLqJ3OZA77e0BxelzCIIgHI4+oCEO0hh3Yg5cxnPqbHvzoXSVxoqN8pztz7LhPE195DY/nl7jaKhNhe/BW/xa6iAj/hu1MmiDRyeoDF1pninjw9Tf9lJ85aAS7qEe7EZJKCRTm7jcrqblUn8HRt+lZkDBM0LD1cfR6H3KoX7qygC6rqHrGn6/r33vb6ZJbuoZpv8Ndd9NfqYfk1E+IUdCLHjnEARBEKdF3De6UE5eQLbf+QtNpZKUSkU2NhJkttapBbph5zl7K06Wlz+zKC2wvZ3Gsiw0dYtZRw9uZ29zqnQ6yVpCIRqLkJKGsRKDBOZfUikfsL9vUK1WqNWqqKpKobBHVsvw/sN462ri2BiGkeegfIBlWeSNHLquoapp1hJxJibetQbk8l8plYqYZoHd3R2ymkpWy7AalZHlIItL3taAvJFjc3OdtUScaCxCLB4lshpGjoSQIyFC4WD77wS++PH5JKQlL/MLs3hmJpn5OMmUR2TC1eYGx9VvRTF1ghnsWBgAAAAASUVORK5CYII=">Ubuntu One - The personal cloud that brings your digital life together</A> ++ </DL> ++ </DT> + <DT><H3 ID="rdf:#$ZvPhC3">@firefox_heading@</H3> + <DL><p> + <DT><A HREF="http://www.mozilla.com/@AB_CD@/firefox/help/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$22iCK1">@firefox_help@</A> +--- a/browser/components/places/tests/unit/head_bookmarks.js ++++ b/browser/components/places/tests/unit/head_bookmarks.js +@@ -108,4 +108,4 @@ const SMART_BOOKMARKS_ON_MENU = 3; // Ta + + // Default bookmarks constants. + const DEFAULT_BOOKMARKS_ON_TOOLBAR = 2; +-const DEFAULT_BOOKMARKS_ON_MENU = 1; ++const DEFAULT_BOOKMARKS_ON_MENU = 2; --- firefox-7.0+build2+nobinonly.orig/debian/patches/series +++ firefox-7.0+build2+nobinonly/debian/patches/series @@ -0,0 +1,18 @@ +reload-new-plugins.patch +ubuntu-codes-amazon.patch +ubuntu-bookmarks.patch +distro-locale-searchplugins.patch +normalize-distribution-searchplugins.patch +#dont-reset-user-prefs-on-upgrade.patch +ubuntu-codes-google.patch +plugin-for-mimetype-pref.patch +allow-lockPref-everywhere.patch +mozilla-kde.patch +firefox-kde.patch +unity-globalmenu-build-support.patch +#fix-selection-drag-autoscroll.patch +ubuntu-codes-baidu.patch +printf-fix.patch +only-add-ENABLE_JIT-to-CXXFLAGS-if-jit-is-enabled.patch +build-fix-for-no-ENABLE_YARR_JIT.patch +compile-pldhash-as-C++.patch --- firefox-7.0+build2+nobinonly.orig/debian/patches/ubuntu-codes-amazon.patch +++ firefox-7.0+build2+nobinonly/debian/patches/ubuntu-codes-amazon.patch @@ -0,0 +1,248 @@ +Description: Update the URL for Amazon search +Author: Alexander Sack <asac@ubuntu.com> +Forwarded: not-needed +--- + browser/locales/en-US/searchplugins/amazondotcom.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/browser/locales/en-US/searchplugins/amazondotcom.xml ++++ b/browser/locales/en-US/searchplugins/amazondotcom.xml +@@ -6,7 +6,7 @@ + <Url type="text/html" method="GET" template="http://www.amazon.com/exec/obidos/external-search/"> + <Param name="field-keywords" value="{searchTerms}"/> + <Param name="mode" value="blended"/> +- <Param name="tag" value="mozilla-20"/> ++ <Param name="tag" value="wwwcanoniccom-20"/> + <Param name="sourceid" value="Mozilla-search"/> + </Url> + <SearchForm>http://www.amazon.com/</SearchForm> +--- a/l10n/ar/browser/searchplugins/amazondotcom.xml ++++ b/l10n/ar/browser/searchplugins/amazondotcom.xml +@@ -6,7 +6,7 @@ + <Url type="text/html" method="GET" template="http://www.amazon.com/exec/obidos/external-search/"> + <Param name="field-keywords" value="{searchTerms}"/> + <Param name="mode" value="blended"/> +- <Param name="tag" value="mozilla-20"/> ++ <Param name="tag" value="wwwcanoniccom-20"/> + <Param name="sourceid" value="Mozilla-search"/> + </Url> + <SearchForm>http://www.amazon.com/</SearchForm> +--- a/l10n/bg/browser/searchplugins/amazondotcom.xml ++++ b/l10n/bg/browser/searchplugins/amazondotcom.xml +@@ -6,7 +6,7 @@ + <Url type="text/html" method="GET" template="http://www.amazon.com/exec/obidos/external-search/"> + <Param name="field-keywords" value="{searchTerms}"/> + <Param name="mode" value="blended"/> +- <Param name="tag" value="mozilla-20"/> ++ <Param name="tag" value="wwwcanoniccom-20"/> + <Param name="sourceid" value="Mozilla-search"/> + </Url> + <SearchForm>http://www.amazon.com/</SearchForm> +--- a/l10n/br/browser/searchplugins/amazon-france.xml ++++ b/l10n/br/browser/searchplugins/amazon-france.xml +@@ -6,7 +6,7 @@ + <Url type="text/html" method="GET" template="http://www.amazon.fr/exec/obidos/external-search/"> + <Param name="field-keywords" value="{searchTerms}"/> + <Param name="mode" value="blended"/> +- <Param name="tag" value="firefox-fr-21"/> ++ <Param name="tag" value="wwwcanoniccom-20"/> + <Param name="sourceid" value="Mozilla-search"/> + </Url> + <SearchForm>http://www.amazon.fr/</SearchForm> +--- a/l10n/cy/browser/searchplugins/amazon-en-GB.xml ++++ b/l10n/cy/browser/searchplugins/amazon-en-GB.xml +@@ -6,7 +6,7 @@ + <Url type="text/html" method="GET" template="http://www.amazon.co.uk/exec/obidos/external-search/"> + <Param name="field-keywords" value="{searchTerms}"/> + <Param name="mode" value="blended"/> +- <Param name="tag" value="firefox-uk-21"/> ++ <Param name="tag" value="wwwcanoniccom-20"/> + <Param name="sourceid" value="Mozilla-search"/> + </Url> + <SearchForm>http://www.amazon.co.uk/</SearchForm> +--- a/l10n/da/browser/searchplugins/amazon-co-uk.xml ++++ b/l10n/da/browser/searchplugins/amazon-co-uk.xml +@@ -6,7 +6,7 @@ + <Url type="text/html" method="GET" template="http://www.amazon.co.uk/exec/obidos/external-search/"> + <Param name="field-keywords" value="{searchTerms}"/> + <Param name="mode" value="blended"/> +- <Param name="tag" value="firefox-uk-21"/> ++ <Param name="tag" value="wwwcanoniccom-20"/> + <Param name="sourceid" value="Mozilla-search"/> + </Url> + <SearchForm>http://www.amazon.co.uk/</SearchForm> +--- a/l10n/de/browser/searchplugins/amazondotcom-de.xml ++++ b/l10n/de/browser/searchplugins/amazondotcom-de.xml +@@ -6,7 +6,7 @@ + <Url type="text/html" method="GET" template="http://www.amazon.de/exec/obidos/external-search/"> + <Param name="field-keywords" value="{searchTerms}"/> + <Param name="mode" value="blended"/> +- <Param name="tag" value="firefox-de-21"/> ++ <Param name="tag" value="wwwcanoniccom-20"/> + <Param name="sourceid" value="Mozilla-search"/> + </Url> + <SearchForm>http://www.amazon.de/</SearchForm> +--- a/l10n/el/browser/searchplugins/amazon-en-GB.xml ++++ b/l10n/el/browser/searchplugins/amazon-en-GB.xml +@@ -6,7 +6,7 @@ + <Url type="text/html" method="GET" template="http://www.amazon.co.uk/exec/obidos/external-search/"> + <Param name="field-keywords" value="{searchTerms}"/> + <Param name="mode" value="blended"/> +- <Param name="tag" value="firefox-uk-21"/> ++ <Param name="tag" value="wwwcanoniccom-20"/> + <Param name="sourceid" value="Mozilla-search"/> + </Url> + <SearchForm>http://www.amazon.co.uk/</SearchForm> +--- a/l10n/en-GB/browser/searchplugins/amazon-en-GB.xml ++++ b/l10n/en-GB/browser/searchplugins/amazon-en-GB.xml +@@ -6,7 +6,7 @@ + <Url type="text/html" method="GET" template="http://www.amazon.co.uk/exec/obidos/external-search/"> + <Param name="field-keywords" value="{searchTerms}"/> + <Param name="mode" value="blended"/> +- <Param name="tag" value="firefox-uk-21"/> ++ <Param name="tag" value="wwwcanoniccom-20"/> + <Param name="sourceid" value="Mozilla-search"/> + </Url> + <SearchForm>http://www.amazon.co.uk/</SearchForm> +--- a/l10n/eu/browser/searchplugins/amazon-en-GB.xml ++++ b/l10n/eu/browser/searchplugins/amazon-en-GB.xml +@@ -6,7 +6,7 @@ + <Url type="text/html" method="GET" template="http://www.amazon.co.uk/exec/obidos/external-search/"> + <Param name="field-keywords" value="{searchTerms}"/> + <Param name="mode" value="blended"/> +- <Param name="tag" value="firefox-uk-21"/> ++ <Param name="tag" value="wwwcanoniccom-20"/> + <Param name="sourceid" value="Mozilla-search"/> + </Url> + <SearchForm>http://www.amazon.co.uk/</SearchForm> +--- a/l10n/fr/browser/searchplugins/amazon-france.xml ++++ b/l10n/fr/browser/searchplugins/amazon-france.xml +@@ -6,7 +6,7 @@ + <Url type="text/html" method="GET" template="http://www.amazon.fr/exec/obidos/external-search/"> + <Param name="field-keywords" value="{searchTerms}"/> + <Param name="mode" value="blended"/> +- <Param name="tag" value="firefox-fr-21"/> ++ <Param name="tag" value="wwwcanoniccom-20"/> + <Param name="sourceid" value="Mozilla-search"/> + </Url> + <SearchForm>http://www.amazon.fr/</SearchForm> +--- a/l10n/ga-IE/browser/searchplugins/amazon-en-GB.xml ++++ b/l10n/ga-IE/browser/searchplugins/amazon-en-GB.xml +@@ -6,7 +6,7 @@ + <Url type="text/html" method="GET" template="http://www.amazon.co.uk/exec/obidos/external-search/"> + <Param name="field-keywords" value="{searchTerms}"/> + <Param name="mode" value="blended"/> +- <Param name="tag" value="firefox-uk-21"/> ++ <Param name="tag" value="wwwcanoniccom-20"/> + <Param name="sourceid" value="Mozilla-search"/> + </Url> + <SearchForm>http://www.amazon.co.uk/</SearchForm> +--- a/l10n/gd/browser/searchplugins/amazon-en-GB.xml ++++ b/l10n/gd/browser/searchplugins/amazon-en-GB.xml +@@ -6,7 +6,7 @@ + <Url type="text/html" method="GET" template="http://www.amazon.co.uk/exec/obidos/external-search/"> + <Param name="field-keywords" value="{searchTerms}"/> + <Param name="mode" value="blended"/> +- <Param name="tag" value="firefox-uk-21"/> ++ <Param name="tag" value="wwwcanoniccom-20"/> + <Param name="sourceid" value="Mozilla-search"/> + </Url> + <SearchForm>http://www.amazon.co.uk/</SearchForm> +--- a/l10n/gl/browser/searchplugins/amazon-en-GB.xml ++++ b/l10n/gl/browser/searchplugins/amazon-en-GB.xml +@@ -6,7 +6,7 @@ + <Url type="text/html" method="GET" template="http://www.amazon.co.uk/exec/obidos/external-search/"> + <Param name="field-keywords" value="{searchTerms}"/> + <Param name="mode" value="blended"/> +- <Param name="tag" value="firefox-uk-21"/> ++ <Param name="tag" value="wwwcanoniccom-20"/> + <Param name="sourceid" value="Mozilla-search"/> + </Url> + <SearchForm>http://www.amazon.co.uk/</SearchForm> +--- a/l10n/hr/browser/searchplugins/amazon-en-GB.xml ++++ b/l10n/hr/browser/searchplugins/amazon-en-GB.xml +@@ -6,7 +6,7 @@ + <Url type="text/html" method="GET" template="http://www.amazon.co.uk/exec/obidos/external-search/"> + <Param name="field-keywords" value="{searchTerms}"/> + <Param name="mode" value="blended"/> +- <Param name="tag" value="firefox-uk-21"/> ++ <Param name="tag" value="wwwcanoniccom-20"/> + <Param name="sourceid" value="Mozilla-search"/> + </Url> + <SearchForm>http://www.amazon.co.uk/</SearchForm> +--- a/l10n/ja/browser/searchplugins/amazon-jp.xml ++++ b/l10n/ja/browser/searchplugins/amazon-jp.xml +@@ -11,7 +11,7 @@ + <Param name="mode" value="books-jp"/> + <Param name="mode" value="books-us"/> + --> +- <Param name="tag" value="mozillajapan-fx-22"/> ++ <Param name="tag" value="wwwcanoniccom-20"/> + <Param name="sourceid" value="Mozilla-search"/> + <!-- + <Param name="sz" value="25"/> +--- a/l10n/nb-NO/browser/searchplugins/amazon-en-GB.xml ++++ b/l10n/nb-NO/browser/searchplugins/amazon-en-GB.xml +@@ -6,7 +6,7 @@ + <Url type="text/html" method="GET" template="http://www.amazon.co.uk/exec/obidos/external-search/"> + <Param name="field-keywords" value="{searchTerms}"/> + <Param name="mode" value="blended"/> +- <Param name="tag" value="firefox-uk-21"/> ++ <Param name="tag" value="wwwcanoniccom-20"/> + <Param name="sourceid" value="Mozilla-search"/> + </Url> + <SearchForm>http://www.amazon.co.uk/</SearchForm> +--- a/l10n/nn-NO/browser/searchplugins/amazon-en-GB.xml ++++ b/l10n/nn-NO/browser/searchplugins/amazon-en-GB.xml +@@ -6,7 +6,7 @@ + <Url type="text/html" method="GET" template="http://www.amazon.co.uk/exec/obidos/external-search/"> + <Param name="field-keywords" value="{searchTerms}"/> + <Param name="mode" value="blended"/> +- <Param name="tag" value="firefox-uk-21"/> ++ <Param name="tag" value="wwwcanoniccom-20"/> + <Param name="sourceid" value="Mozilla-search"/> + </Url> + <SearchForm>http://www.amazon.co.uk/</SearchForm> +--- a/l10n/pt-PT/browser/searchplugins/amazon-en-GB.xml ++++ b/l10n/pt-PT/browser/searchplugins/amazon-en-GB.xml +@@ -6,7 +6,7 @@ + <Url type="text/html" method="GET" template="http://www.amazon.co.uk/exec/obidos/external-search/"> + <Param name="field-keywords" value="{searchTerms}"/> + <Param name="mode" value="blended"/> +- <Param name="tag" value="firefox-uk-21"/> ++ <Param name="tag" value="wwwcanoniccom-20"/> + <Param name="sourceid" value="Mozilla-search"/> + </Url> + <SearchForm>http://www.amazon.co.uk/</SearchForm> +--- a/l10n/sq/browser/searchplugins/amazon-en-GB.xml ++++ b/l10n/sq/browser/searchplugins/amazon-en-GB.xml +@@ -6,7 +6,7 @@ + <Url type="text/html" method="GET" template="http://www.amazon.co.uk/exec/obidos/external-search/"> + <Param name="field-keywords" value="{searchTerms}"/> + <Param name="mode" value="blended"/> +-<Param name="tag" value="firefox-uk-21"/> ++<Param name="tag" value="wwwcanoniccom-20"/> + <Param name="sourceid" value="Mozilla-search"/> + </Url> + <SearchForm>http://www.amazon.co.uk/</SearchForm> +--- a/l10n/sr/browser/searchplugins/amazon-en-GB.xml ++++ b/l10n/sr/browser/searchplugins/amazon-en-GB.xml +@@ -6,7 +6,7 @@ + <Url type="text/html" method="GET" template="http://www.amazon.co.uk/exec/obidos/external-search/"> + <Param name="field-keywords" value="{searchTerms}"/> + <Param name="mode" value="blended"/> +- <Param name="tag" value="firefox-uk-21"/> ++ <Param name="tag" value="wwwcanoniccom-20"/> + <Param name="sourceid" value="Mozilla-search"/> + </Url> + <SearchForm>http://www.amazon.co.uk/</SearchForm> +--- a/l10n/zh-CN/browser/searchplugins/amazondotcn.xml ++++ b/l10n/zh-CN/browser/searchplugins/amazondotcn.xml +@@ -11,6 +11,7 @@ + <Param name="Go.x" value="0"/> + <Param name="Go.y" value="0"/> + <Param name="bestSaleNum" value="0"/> ++ <Param name="tag" value="wwwcanoniccom-20"/> + </Url> + <SearchForm>http://www.amazon.cn/</SearchForm> + </SearchPlugin> --- firefox-7.0+build2+nobinonly.orig/debian/patches/unity-globalmenu-build-support.patch +++ firefox-7.0+build2+nobinonly/debian/patches/unity-globalmenu-build-support.patch @@ -0,0 +1,91 @@ +Description: Support building globalmenu-extension from the Firefox source +Author: Chris Coulson <chris.coulson@canonical.com> +Forwarded: not-needed + +--- a/config/autoconf.mk.in ++++ b/config/autoconf.mk.in +@@ -546,6 +546,11 @@ MOZ_ENABLE_D3D10_LAYER = @MOZ_ENABLE_D3 + MOZ_GTK2_CFLAGS = @MOZ_GTK2_CFLAGS@ + MOZ_GTK2_LIBS = @MOZ_GTK2_LIBS@ + ++DBUSMENU_CFLAGS = @DBUSMENU_CFLAGS@ ++DBUSMENU_LIBS = @DBUSMENU_LIBS@ ++ ++UNITY_GLOBALMENU = @UNITY_GLOBALMENU@ ++ + MOZ_QT_CFLAGS = @MOZ_QT_CFLAGS@ + MOZ_QT_LIBS = @MOZ_QT_LIBS@ + MOZ_ENABLE_QTNETWORK = @MOZ_ENABLE_QTNETWORK@ +--- a/config/system-headers ++++ b/config/system-headers +@@ -391,6 +391,10 @@ LFocusBox.h + LGrafPortView.h + LHandleStream.h + libc_r.h ++#ifdef UNITY_GLOBALMENU ++libdbusmenu-glib/server.h ++libdbusmenu-gtk/menuitem.h ++#endif + libelf.h + libelf/libelf.h + libgen.h +@@ -1016,6 +1020,11 @@ osso-mem.h + #ifdef MOZ_ENABLE_GIO + gio/gio.h + #endif ++#ifdef UNITY_GLOBALMENU ++#ifndef MOZ_ENABLE_GIO ++gio/gio.h ++#endif ++#endif + #ifdef MOZ_ENABLE_LIBCONIC + conic/conicconnection.h + conic/conicconnectionevent.h +--- a/configure.in ++++ b/configure.in +@@ -8600,6 +8600,20 @@ AC_SUBST(MOZ_CAIRO_LIBS) + AC_SUBST(MOZ_TREE_PIXMAN) + + dnl ======================================================== ++dnl Dbus-Menu ++dnl ======================================================== ++ ++UNITY_GLOBALMENU=0 ++if test `echo "$MOZ_EXTENSIONS" | grep -c globalmenu` -ne 0; then ++ PKG_CHECK_MODULES(DBUSMENU, dbusmenu-gtk-0.4 gio-2.0) ++ UNITY_GLOBALMENU=1 ++ AC_SUBST(DBUSMENU_CFLAGS) ++ AC_SUBST(DBUSMENU_LIBS) ++ AC_DEFINE(UNITY_GLOBALMENU) ++fi ++AC_SUBST(UNITY_GLOBALMENU) ++ ++dnl ======================================================== + dnl qcms + dnl ======================================================== + +--- a/js/src/config/system-headers ++++ b/js/src/config/system-headers +@@ -391,6 +391,10 @@ LFocusBox.h + LGrafPortView.h + LHandleStream.h + libc_r.h ++#ifdef UNITY_GLOBALMENU ++libdbusmenu-glib/server.h ++libdbusmenu-gtk/menuitem.h ++#endif + libelf.h + libelf/libelf.h + libgen.h +@@ -1016,6 +1020,11 @@ osso-mem.h + #ifdef MOZ_ENABLE_GIO + gio/gio.h + #endif ++#ifdef UNITY_GLOBALMENU ++#ifndef MOZ_ENABLE_GIO ++gio/gio.h ++#endif ++#endif + #ifdef MOZ_ENABLE_LIBCONIC + conic/conicconnection.h + conic/conicconnectionevent.h --- firefox-7.0+build2+nobinonly.orig/debian/patches/fix-selection-drag-autoscroll.patch +++ firefox-7.0+build2+nobinonly/debian/patches/fix-selection-drag-autoscroll.patch @@ -0,0 +1,188 @@ +Description: Fix selection autoscroll with maximized windows +Author: Chris Coulson <chris.coulson@canonical.com> +Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=644621 +Bug-Ubuntu: https://launchpad.net/bugs/744580 +Forwarded: https://bug644621.bugzilla.mozilla.org/attachment.cgi?id=525563 + +diff --git a/layout/generic/nsSelection.cpp b/layout/generic/nsSelection.cpp +--- a/layout/generic/nsSelection.cpp ++++ b/layout/generic/nsSelection.cpp +@@ -4720,18 +4720,20 @@ nsTypedSelection::DoAutoScroll(nsIFrame + nsRootPresContext* rootPC = presContext->GetRootPresContext(); + if (!rootPC) + return NS_OK; + nsIFrame* rootmostFrame = rootPC->PresShell()->FrameManager()->GetRootFrame(); + // Get the point relative to the root most frame because the scroll we are + // about to do will change the coordinates of aFrame. + nsPoint globalPoint = aPoint + aFrame->GetOffsetToCrossDoc(rootmostFrame); + ++ nsRect rect = nsIntRect(-20, -20, 40, 40). ++ ToAppUnits(presContext->AppUnitsPerDevPixel()); + PRBool didScroll = presContext->PresShell()-> +- ScrollFrameRectIntoView(aFrame, nsRect(aPoint, nsSize(1,1)), ++ ScrollFrameRectIntoView(aFrame, rect + aPoint, + NS_PRESSHELL_SCROLL_ANYWHERE, + NS_PRESSHELL_SCROLL_ANYWHERE, 0); + + // + // Start the AutoScroll timer if necessary. + // + + if (didScroll && mAutoScrollTimer) +diff --git a/layout/generic/test/Makefile.in b/layout/generic/test/Makefile.in +--- a/layout/generic/test/Makefile.in ++++ b/layout/generic/test/Makefile.in +@@ -124,16 +124,17 @@ _TEST_FILES = \ + test_bug522632.html \ + test_bug589621.html \ + test_bug589623.html \ + test_bug632379.xul \ + test_bug633762.html \ + bug633762_iframe.html \ + $(srcdir)/../../reftests/backgrounds/blue-32x32.png \ + $(srcdir)/../../reftests/backgrounds/fuchsia-32x32.png \ ++ test_drag_selection_autoscroll.html \ + $(NULL) + + _CHROME_FILES = \ + test_bug514732-2.xul \ + file_bug514732_window.xul \ + $(NULL) + + libs:: $(_TEST_FILES) +diff --git a/layout/generic/test/test_drag_selection_autoscroll.html b/layout/generic/test/test_drag_selection_autoscroll.html +new file mode 100644 +--- /dev/null ++++ b/layout/generic/test/test_drag_selection_autoscroll.html +@@ -0,0 +1,130 @@ ++<!DOCTYPE HTML> ++<html> ++<head> ++ <title>Test for autoscrolling the selection into view, when dragging ++ ++ ++ ++ ++ ++ ++ ++
++
++
Test
++
++
++ ++
++
++
++ ++ + --- firefox-7.0+build2+nobinonly.orig/debian/patches/reload-new-plugins.patch +++ firefox-7.0+build2+nobinonly/debian/patches/reload-new-plugins.patch @@ -0,0 +1,59 @@ +Description: Ensure that new plugins are reloaded +Author: Alexander Sack +Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=460917 +Forwarded: https://bugzilla.mozilla.org/attachment.cgi?id=350845 +--- + browser/base/content/browser.js | 20 +++++++++++++++++++- + 1 file changed, 19 insertions(+), 1 deletion(-) + +--- a/browser/base/content/browser.js ++++ b/browser/base/content/browser.js +@@ -6780,7 +6780,11 @@ var gPluginHandler = { + if (notification) + notificationBox.removeNotification(notification); + +- // reload the browser to make the new plugin show. ++ // reload plugins ++ var pm = Components.classes["@mozilla.org/plugin/manager;1"] ++ .getService(Components.interfaces.nsIPluginManager); ++ pm.reloadPlugins(false); ++ // ... and reload the browser to activate new plugins available + browser.reload(); + }, + +@@ -6791,9 +6795,17 @@ var gPluginHandler = { + var pluginInfo = getPluginInfo(plugin); + missingPluginsArray[pluginInfo.mimetype] = pluginInfo; + ++ gBrowser.selectedBrowser.addEventListener("NewPluginInstalled", ++ gPluginHandler.newPluginInstalled, ++ false); ++ + openDialog("chrome://mozapps/content/plugins/pluginInstallerWizard.xul", + "PFSWindow", "chrome,centerscreen,resizable=yes", + {plugins: missingPluginsArray, browser: gBrowser.selectedBrowser}); ++ ++ gBrowser.selectedBrowser.removeEventListener("NewPluginInstalled", ++ gPluginHandler.newPluginInstalled, ++ false); + }, + + // Callback for user clicking on a disabled plugin +@@ -6855,11 +6867,17 @@ var gPluginHandler = { + function showPluginsMissing() { + // get the urls of missing plugins + var missingPluginsArray = gBrowser.selectedBrowser.missingPlugins; ++ gBrowser.selectedBrowser.addEventListener("NewPluginInstalled", ++ gPluginHandler.newPluginInstalled, ++ false); + if (missingPluginsArray) { + openDialog("chrome://mozapps/content/plugins/pluginInstallerWizard.xul", + "PFSWindow", "chrome,centerscreen,resizable=yes", + {plugins: missingPluginsArray, browser: gBrowser.selectedBrowser}); + } ++ gBrowser.selectedBrowser.removeEventListener("NewPluginInstalled", ++ gPluginHandler.newPluginInstalled, ++ false); + } + + #ifdef XP_MACOSX --- firefox-7.0+build2+nobinonly.orig/debian/patches/firefox-kde.patch +++ firefox-7.0+build2+nobinonly/debian/patches/firefox-kde.patch @@ -0,0 +1,432 @@ +Description: Add KDE integration to Firefox (browser parts) +Author: Wolfgang Rosenauer +Author: Felix Geyer +Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751 +Bug-Ubuntu: https://launchpad.net/bugs/494067 +Bug-OpenSUSE: https://bugzilla.novell.com/show_bug.cgi?id=170055 +Forwarded: no + +--- a/browser/base/content/browser-kde.xul ++++ b/browser/base/content/browser-kde.xul +@@ -200,7 +200,7 @@ + +