firefox-kde added

This commit is contained in:
AlmAck 2013-04-28 01:01:01 +02:00
parent f96e96c0e6
commit d0926d3de1
20 changed files with 7096 additions and 0 deletions

210
firefox-i18n/PKGBUILD Normal file
View File

@ -0,0 +1,210 @@
pkgname=firefox-i18n
pkgver=20.0.1
pkgrel=1
pkgdesc="Language pack for Firefox"
arch=('any')
url="http://www.mozilla.com/"
license=('MPL' 'GPL')
pkgdesc="Language pack for Firefox"
_languages=(
'ach "Acoli"'
'af "Afrikaans"'
'ak "Akan"'
'ar "Arabic"'
'as "Assamese"'
'ast "Asturian"'
'be "Belarusian"'
'bg "Bulgarian"'
'bn-BD "Bengali (Bangladesh)"'
'bn-IN "Bengali (India)"'
'br "Breton"'
'bs "Bosnian"'
'ca "Catalan"'
'cs "Czech"'
'csb "Kashubian"'
'cy "Welsh"'
'da "Danish"'
'de "German"'
'el "Greek"'
'en-GB "English (United Kingdom)"'
'en-US "English (United States)"'
'en-ZA "English (South Africa)"'
'eo "Esperanto"'
'es-AR "Spanish (Argentina)"'
'es-CL "Spanish (Chile)"'
'es-ES "Spanish (Spain)"'
'es-MX "Spanish (Mexico)"'
'et "Estonian"'
'eu "Basque"'
'fa "Persian"'
'ff "Fula"'
'fi "Finnish"'
'fr "French"'
'fy-NL "Frisian (Netherlands)"'
'ga-IE "Irish"'
'gd "Gaelic"'
'gl "Galician"'
'gu-IN "Gujarati (India)"'
'he "Hebrew"'
'hi-IN "Hindi (India)"'
'hr "Croatian"'
'hu "Hungarian"'
'hy-AM "Armenian"'
'id "Indonesian"'
'is "Icelandic"'
'it "Italian"'
'ja "Japanese"'
'kk "Kazakh"'
'km "Khmer"'
'kn "Kannada"'
'ko "Korean"'
'ku "Kurdish"'
'lg "Ganda"'
'lij "Ligurian"'
'lt "Lithuanian"'
'lv "Latvian"'
'mai "Maithili"'
'mk "Macedonian"'
'ml "Malayalam"'
'mr "Marathi"'
'nb-NO "Norwegian (Bokmal)"'
'nl "Dutch"'
'nn-NO "Norwegian (Nynorsk)"'
'nso "Northern Sotho (Sesotho sa lebowa)"'
'or "Oriya"'
'pa-IN "Punjabi"'
'pl "Polish"'
'pt-BR "Brazilian Portuguese"'
'pt-PT "Portuguese"'
'rm "Romansh"'
'ro "Romanian"'
'ru "Russian"'
'si "Sinhalese"'
'sk "Slovak"'
'sl "Slovenian"'
'son "Songhai"'
'sq "Albanian"'
'sr "Serbian"'
'sv-SE "Swedish"'
'ta-LK "Tamil (Sri Lanka)"'
'ta "Tamil"'
'te "Telugu"'
'th "Thai"'
'tr "Turkish"'
'uk "Ukrainian"'
'vi "Vietnamese"'
'zh-CN "Chinese (simplified)"'
'zh-TW "Chinese (traditional)"'
'zu "Zulu"'
)
source=()
_url=http://download.cdn.mozilla.net/pub/mozilla.org/firefox/releases/$pkgver/linux-i686/xpi
for _lang in "${_languages[@]}"; do
_locale=${_lang%% *}
source+=("firefox-i18n-$pkgver-$_locale.xpi::$_url/$_locale.xpi")
done
# Don't extract anything
noextract=(${source[@]%%::*})
package() {
for _lang in "${_languages[@]}"; do
_locale=${_lang%% *}
install -Dm644 firefox-i18n-$pkgver-${_locale}.xpi \
"$pkgdir/opt/firefox/extensions/langpack-${_locale}@firefox.mozilla.org.xpi"
done
}
md5sums=('597e3ef4a20841b5bec461634bb46a6d'
'0b89340b7cab8803fe5f86c627d52770'
'c2a3a0fe444fa389f61339ad5d189fdc'
'f32fb82611adb9422cb88599f1c0eb56'
'9372776226c93de0115e3cef93477f7a'
'1148ca8998b7a13ec415328da3ec311b'
'0bf3d930144ce0649a7c42f29316092e'
'2e89e7fceca13697bb2f434913b2975a'
'7a35eb4ec90cc6dd0ea3fe83f92304dc'
'3a3d215e72bf6dea35f8da0a0dca6fc5'
'085cc2de9c4bbb541d29ddc5aeb4fbb5'
'dbd5046c3d3dab6c4fefef999fe50781'
'c38a2f030b88f65681610f3bf60b96c9'
'82d0b81be13d1e584a5d92709529440c'
'8e5f36b655ac2a1ef63d57bca9b492eb'
'aece86a38b9f6d20352426f1ccdfa1fb'
'0a0f93a504fb87ff26afffa8c84aa12e'
'd9e685e55d32caf84f419f72a1c468ec'
'50b88fdc3782f106ef86fe87ebdeac8c'
'553f17d16fa89063675ffcef806feb89'
'2b2eb97db05c4b7b6fc0d42c57f4e27a'
'9739ad4f2a26d964d20d95c0e6e89236'
'86a3fd95c1f3217300ee0e289a834030'
'3d175fbe1b1970e70b3f62af3b900525'
'cb35fbc928fe465a3bc934b1f6bb745f'
'50437c49670acab136604b505b404b20'
'cf7ddc9b121746963c937199a33d92d7'
'7faf0ba42b4233a103a37899afabe2ae'
'aaaf844852925aa7071233c6f09ab91a'
'06c41a72518f06bf93eae67584a6485d'
'935f2c53f26e3a353db73cf29307f569'
'aecf7230cb90ca550370c578238ce5a4'
'f2de7bfe152ad2797fba831c197d388c'
'a68ad8ca8569beb99f680239986db0cf'
'94e8e358b0f092618c3acf57b1d0906f'
'14f889b49e889293d51721337c33a4d2'
'44b618e828a07d7446b095934c56d5e9'
'd53b4f6a29ded966b9d187ffd05e4b70'
'de0ac2693ed958604ded2f23636effbf'
'1618522eb50f173acec7f092c7c96f39'
'26db544175c2bcbce4ce30d160cedc87'
'b99c07102adab6c7e5fa5f1cb15c5f76'
'8e0396a4f6474a35c4918de2784c5221'
'4b74f98a3342db51c2ec77ed16b8556b'
'a91b96f872177553e7690f244bff7462'
'11ed58204ca499e790d192d0bd25b2b3'
'97605ae1cfee9bbd73ef64502fcf74c0'
'a5e0b54c1b62e8230e68f9e08885d60b'
'04fc0ec71cb3737ac22fbca8972836ba'
'ce7057480c8e8c6cb4628881aa282935'
'1c67943a68874b8bbd1247c2b182c392'
'5ff652376c9f8b8cebf35289691d4ea4'
'969767e3b6f854678d7a14540b06dfd0'
'f12c9f983d359de24e81dc6537272bee'
'4d1612c3479b8425fd0d59d7f6f8c62f'
'1438937613d33972e169c73e4c623dab'
'f43bb1be2f6010ae2aca60d1f4afc41d'
'1834a840381523dfe342e16f8ff981cd'
'4cef624804aedc2a1e03b59fe4e240ae'
'8b8c116f33b2a2c2339b6d7086b613e4'
'c5014cc33ffa8f6fb77deb99f44ee7c5'
'd1063014c0c76e8c859f8344cba32c70'
'3cf5a45579f12400518dc71347e673c1'
'd2915e7ac4fabada4c3724e784171320'
'c959f7257ba9ffc8b5c7f6a356ae23cc'
'5c8f905eebdc01706474711024787e37'
'959e327c760433883fa99391983c1d92'
'289c26f04aac9162f97cfcf119e047a1'
'baa58c0da97b9f00c40b7fac5649917e'
'1c73ed43e67724374a6d63ded286853b'
'2ff6dba5d558be87f55685ce5847f237'
'bbde96f321c72b9e36ba4858152e0abc'
'41223f817c308106b4d6cd36472971bd'
'874fd27d3497ce8861f59898d4ca071e'
'591270d06d4465ca12e4f0af8e877e04'
'5ca701859cccf06e76a57a0f058844cd'
'5ac2747d887a0d45a30679664dd36af5'
'2599b9f22a873a69bf4fc1d8df35b1a8'
'ac9b4e003bbcbff1fffade3dac13cda1'
'83c02b0e4a0632a585fc604a5034e2b7'
'ecb95562b073024cb51d179e1b28417e'
'cbce947435041ff404b7b127429a66ab'
'52a316fd6f158ff05350aba2f3c8ddda'
'579c897bd19c133d26c3a9bb99db25a7'
'd9cfd223fd70df09c6f9d5e479ab76b6'
'9c4a74f244eeb96bafc2f10f9eb71e6d'
'b3cd3bf0724be59bdc35e0e8fe87536c'
'e837b3b7f94de1d980b786d115f99e5c'
'a89fbe66af0b56518e94471b32517a5d')

114
firefox-kde/PKGBUILD Normal file
View File

@ -0,0 +1,114 @@
# Contributor: Weng Xuetian <wengxt@gmail.com>
pkgname=firefox-kde
pkgver=20.0.1
pkgrel=1
pkgdesc="Standalone web browser from mozilla.org with OpenSUSE patch, integrate better with KDE"
url='http://www.mozilla.org/projects/firefox'
arch=('x86_64')
license=('MPL' 'GPL' 'LGPL')
depends=('gtk2' 'libnotify' 'alsa-lib' 'gstreamer0.10' 'gstreamer0.10-base' 'libxt' 'firefox-i18n' 'dbus-glib')
makedepends=('zip' 'pkg-config' 'diffutils' 'python2' 'wireless_tools' 'unzip' 'autoconf2.13' 'mesa' 'yasm')
screenshot="http://img864.imageshack.us/img864/5116/firefoxm.png"
provides=("firefox=${pkgver}")
conflicts=('firefox')
install=firefox.install
url="http://www.mozilla.org/projects/firefox"
#source=(http://releases.mozilla.org/pub/mozilla.org/firefox/releases/${pkgver}/source/firefox-${pkgver}.source.tar.bz2
#patch http://www.rosenauer.org/hg/mozilla/
#patch https://build.opensuse.org/package/show?package=MozillaFirefox&project=mozilla%3AFactory
source=(ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${pkgver}/source/firefox-${pkgver}.source.tar.bz2
mozconfig
firefox.desktop
firefox-install-dir.patch
vendor.js
kde.js
firefox-kde.patch
mozilla-nongnome-proxies.patch
mozilla-kde.patch
mozilla-gstreamer-760140.patch
firefox-712763.patch
duckduckgo.xml
)
md5sums=('b822ff4b2348410587dec563235d9320'
'55864e6a1b7f165efe272472217934d3'
'af37777ea15a693e837a5be36e0de3ca'
'150ac0fb3ac7b2114c8e8851a9e0516c'
'b1b1ad060b411a4abee7dcc63927aa02'
'75df0f88cc7a7fa7d522459e4ff82cc5'
'194da028eba1fbc316cf37dd586c4112'
'79f113b56057e17ca2466cd0ac578bb3'
'8e833c5abff5ddd3d20bc81eb9bfc028'
'9f4e6467284a5c82fbba0c0afe862f31'
'7303a96e92e600a46dd6a2cf9af5ada5'
'f6e2a6759b8711b445dbc9d35cbd275f')
build() {
cd "mozilla-release"
patch -Np1 -i "../firefox-install-dir.patch"
# modify the patch to make it work in bundle
cp ../mozilla-kde.patch ../mozilla-kde-mod.patch
sed -i 's|\(\+\#define KMOZILLAHELPER "\)/usr/lib/mozilla/kmozillahelper\("\)|\1kmozillahelper\2|' ../mozilla-kde-mod.patch
sed -i 's|\(\+ \)execv\(( KMOZILLAHELPER, args )\)|\1execvp\2|' ../mozilla-kde-mod.patch
# remove the new file, to make life easier with call makepkg multiple times
rm -f content/media/gstreamer/nsGStreamerFormatHelper.cpp \
content/media/gstreamer/GStreamerFormatHelper.cpp \
content/media/gstreamer/nsGStreamerFormatHelper.h \
content/media/gstreamer/GStreamerFormatHelper.h
rm -f browser/components/shell/src/nsKDEShellService.cpp \
browser/components/shell/src/nsKDEShellService.h \
browser/components/shell/src/nsUnixShellService.cpp \
browser/components/shell/src/nsUnixShellService.h \
browser/base/content/browser-kde.xul
rm -f toolkit/xre/nsKDEUtils.cpp \
toolkit/xre/nsKDEUtils.h \
uriloader/exthandler/unix/nsCommonRegistry.cpp \
uriloader/exthandler/unix/nsCommonRegistry.h \
uriloader/exthandler/unix/nsKDERegistry.cpp \
uriloader/exthandler/unix/nsKDERegistry.h \
toolkit/content/widgets/dialog-kde.xml \
toolkit/content/widgets/preferences-kde.xml
msg "apply mozilla-gstreamer-760140.patch"
patch -Np1 -i "../mozilla-gstreamer-760140.patch" || return 1
msg "apply firefox-712763.patch"
patch -Np1 -i "../firefox-712763.patch" || return 1
msg "apply mozilla-nongnome-proxies.patch"
patch -Np1 -i "../mozilla-nongnome-proxies.patch" || return 1
msg "apply mozilla-kde.patch"
patch -Np1 -i "../mozilla-kde-mod.patch" || return 1
msg "apply firefox-kde.patch"
patch -Np1 -i "../firefox-kde.patch" || return 1
cp "../mozconfig" .mozconfig
# Fix PRE_RELEASE_SUFFIX
sed -i '/^PRE_RELEASE_SUFFIX := ""/s/ ""//' \
browser/base/Makefile.in
export LDFLAGS="$LDFLAGS"
export PYTHON="/usr/bin/python2"
make -j1 -f client.mk build MOZ_MAKE_FLAGS="${MAKEFLAGS}"
}
package() {
cd mozilla-release
make -j1 -f client.mk MOZ_PKG_FATAL_WARNINGS=0 package
mkdir -p $pkgdir/opt
tar -C $pkgdir/opt -xf obj-ff/dist/firefox-$pkgver.en-US.linux-${CARCH}.tar.bz2
install -Dm644 ../vendor.js "$pkgdir/opt/firefox/defaults/preferences/vendor.js"
install -Dm644 ../kde.js "$pkgdir/opt/firefox/defaults/preferences/kde.js"
install -Dm644 ../duckduckgo.xml "$pkgdir/opt/firefox/searchplugins/duckduckgo.xml"
# Use system-provided dictionaries
rm -rf "$pkgdir"/opt/firefox/{dictionaries,hyphenation}
ln -s /usr/share/hunspell "$pkgdir/opt/firefox/dictionaries"
ln -s /usr/share/hyphen "$pkgdir/opt/firefox/hyphenation"
}

14
firefox-kde/PKGINFO Normal file
View File

@ -0,0 +1,14 @@
name=firefox
version=20.0.1
description=The Mozilla Web-Browser
icon=firefox.png
desktop=firefox.desktop
screenshot=http://www.ghacks.net/wp-content/uploads/2008/11/firefox_default_header1-500x338.jpg
url=http://www.mozilla.com
type=Launcher
config=external
pkgz=flashplugin kmozillahelper firefox alsa-lib glib2 atk cairo dbus-core dbus-glib expat fontconfig freetype2 gcc-libs gdk-pixbuf2 gstreamer0.10 gstreamer0.10-base gtk2 libffi libice libpng libsm libx11 libxau libxcb libxcomposite libxcursor libxdamage libxdmcp libxext libxfixes libxi libxinerama libxml2 libxrandr libxrender libxt orc pango pixman startup-notification xcb-util zlib pcre yasm firefox-i18n
build=alsa-lib atk cairo dbus-core dbus-glib glib2 expat fontconfig freetype2 gcc-libs gdk-pixbuf2 gstreamer0.10 gstreamer0.10-base gtk2 libffi libice libpng libsm libx11 libxau libxcb libxcomposite libxcursor libxdamage libxdmcp libxext libxfixes libxi libxinerama libxml2 libxrandr libxrender libxt orc pango pixman startup-notification xcb-util zlib python2 wireless_tools autoconf2.13 mesa pcre yasm flashplugin kmozillahelper firefox-i18n @firefox
env==LD_LIBRARY_PATH=$ORIGIN/lib:$ORIGIN/usr/lib:$ORIGIN/usr/lib/gtk-2.0,,,MOZ_PLUGIN_PATH=$ORIGIN/usr/lib/mozilla/plugins,,,PATH=$ORIGIN/usr/lib/mozilla/:$PATH,,,_BUNDLE_FIREFOX_DESKTOP=firefox-20.0.1-1-x86_64.desktop
binary=/opt/firefox/firefox /opt/firefox/libxul.so
exec=/firefox_launcher.sh

View File

@ -0,0 +1,10 @@
<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/" xmlns:os="http://a9.com/-/spec/opensearch/1.1/">
<os:ShortName>DuckDuckGo</os:ShortName>
<os:Description>DuckDuckGo</os:Description>
<os:InputEncoding>UTF-8</os:InputEncoding>
<os:Image width="16" height="16">data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAANcNAADXDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyDsJmlk8pf6+v3s/v7+++zr/fcnIOyzJyDsgCcg7CYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIOwBJyDscCcg7PZttJ7/7Pfs//////++xO7/S5GA/ycg7P8nIOz2JyDscCcg7AEAAAAAAAAAAAAAAAAnIOwBJyDstScg7P8nIOz/Y8p5/2fHZf9Yv0z/YcF2/1rBUv8nIOz/JyDs/ycg7P8nIOy1JyDsAQAAAAAAAAAAJyDscCcg7P8nIOz/JyDs/4jQoP/p9+n//////05X3v9LkYD/JyDs/ycg7P8nIOz/JyDs/ycg7HAAAAAAJyDsJicg7PYnIOz/JyDs/zUu7f/+/v////////////89N+7/JyDs/yUo7f8nIOz/JyDs/ycg7P8nIOz2JyDsJicg7IAnIOz/JyDs/ycg7P9hXPH////////////t/P//GIr2/wfD+/8Gyfz/DKv5/yM57/8nIOz/JyDs/ycg7H8nIOyzJyDs/ycg7P8nIOz/jov1////////////Otz9/w3G/P8cWfH/JSvt/ycg7P8nIOz/JyDs/ycg7P8nIOyzJyDs5icg7P8nIOz/JyDs/7u5+f///////////27l/v8E0v3/BNL9/wTQ/f8Oofn/IT7v/ycg7P8nIOz/JyDs5icg7OYnIOz/JyDs/ycg7P/p6P3/uWsC////////////5fr//6Po/f8Thfb/DKv5/w6f+f8nIOz/JyDs/ycg7OYnIOyzJyDs/ycg7P8nIOz/9/b+/////////////////7lrAv/V1Pv/JyDs/ycg7P8nIOz/JyDs/ycg7P8nIOyzJyDsgCcg7P8nIOz/JyDs/8/N+///////////////////////iIX1/ycg7P8nIOz/JyDs/ycg7P8nIOz/JyDsfycg7CYnIOz2JyDs/ycg7P9FP+7/q6n4/+7u/f/n5v3/fXn0/yoj7P8nIOz/JyDs/ycg7P8nIOz/JyDs9icg7CYAAAAAJyDscCcg7P8nIOz/wsD6/+no/f/Y1/z/eHTz/ycg7P8nIOz/JyDs/ycg7P8nIOz/JyDs/ycg7HAAAAAAAAAAACcg7AEnIOy1JyDs/ycg7P8nIOz/JyDs/ycg7P8nIOz/JyDs/ycg7P8nIOz/JyDs/ycg7LUnIOwBAAAAAAAAAAAAAAAAJyDsAScg7HAnIOz2JyDs/ycg7P8nIOz/JyDs/ycg7P8nIOz/JyDs9icg7HAnIOwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyDsJicg7IAnIOyzJyDs5icg7OYnIOyzJyDsgCcg7CYAAAAAAAAAAAAAAAAAAAAA+B8AAPAPAADAAwAAwAMAAIABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAACAAQAAwAMAAMADAADwDwAA+B8AAA==</os:Image>
<os:Url type="text/html" method="GET" template="http://duckduckgo.com/">
<Param name="t" value="chakra"/>
<Param name="q" value="{searchTerms}"/>
</os:Url>
</SearchPlugin>

View File

@ -0,0 +1,95 @@
# HG changeset patch
# User Tim Taubert <ttaubert@mozilla.com>
# Date 1358185823 -3600
# Node ID f7a2af238d06c17d10c49c94ef860434d5b76758
Bug 712763 - Backout changes from bug 669272 to keep original window order when restoring a session
diff --git a/browser/components/sessionstore/src/SessionStore.jsm b/browser/components/sessionstore/src/SessionStore.jsm
--- a/browser/components/sessionstore/src/SessionStore.jsm
+++ b/browser/components/sessionstore/src/SessionStore.jsm
@@ -1757,23 +1757,16 @@ let SessionStoreInternal = {
// We want to re-use the last opened window instead of opening a new one in
// the case where it's "empty" and not associated with a window in the session.
// We will do more processing via _prepWindowToRestoreInto if we need to use
// the lastWindow.
let lastWindow = this._getMostRecentBrowserWindow();
let canUseLastWindow = lastWindow &&
!lastWindow.__SS_lastSessionWindowID;
- let lastSessionFocusedWindow = null;
- this.windowToFocus = lastWindow;
-
- // move the last focused window to the start of the array so that we
- // minimize window movement (see bug 669272)
- lastSessionState.windows.unshift(
- lastSessionState.windows.splice(lastSessionState.selectedWindow - 1, 1)[0]);
// Restore into windows or open new ones as needed.
for (let i = 0; i < lastSessionState.windows.length; i++) {
let winState = lastSessionState.windows[i];
let lastSessionWindowID = winState.__lastSessionWindowID;
// delete lastSessionWindowID so we don't add that to the window again
delete winState.__lastSessionWindowID;
@@ -1801,28 +1794,19 @@ let SessionStoreInternal = {
// Restore into that window - pretend it's a followup since we'll already
// have a focused window.
//XXXzpao This is going to merge extData together (taking what was in
// winState over what is in the window already. The hack we have
// in _preWindowToRestoreInto will prevent most (all?) Panorama
// weirdness but we will still merge other extData.
// Bug 588217 should make this go away by merging the group data.
this.restoreWindow(windowToUse, { windows: [winState] }, canOverwriteTabs, true);
- if (i == 0)
- lastSessionFocusedWindow = windowToUse;
-
- // if we overwrote the tabs for our last focused window, we should
- // give focus to the window that had it in the previous session
- if (canOverwriteTabs && windowToUse == lastWindow)
- this.windowToFocus = lastSessionFocusedWindow;
}
else {
- let win = this._openWindowWithState({ windows: [winState] });
- if (i == 0)
- lastSessionFocusedWindow = win;
+ this._openWindowWithState({ windows: [winState] });
}
}
// Merge closed windows from this session with ones from last session
if (lastSessionState._closedWindows) {
this._closedWindows = this._closedWindows.concat(lastSessionState._closedWindows);
this._capClosedWindows();
}
@@ -2735,27 +2719,27 @@ let SessionStoreInternal = {
this._setWindowStateBusy(aWindow);
if (root._closedWindows)
this._closedWindows = root._closedWindows;
var winData;
if (!root.selectedWindow || root.selectedWindow > root.windows.length) {
root.selectedWindow = 0;
- } else {
- // put the selected window at the beginning of the array to ensure that
- // it gets restored first
- root.windows.unshift(root.windows.splice(root.selectedWindow - 1, 1)[0]);
}
+
// open new windows for all further window entries of a multi-window session
// (unless they don't contain any tab data)
for (var w = 1; w < root.windows.length; w++) {
winData = root.windows[w];
if (winData && winData.tabs && winData.tabs[0]) {
var window = this._openWindowWithState({ windows: [winData] });
+ if (w == root.selectedWindow - 1) {
+ this.windowToFocus = window;
+ }
}
}
winData = root.windows[0];
if (!winData.tabs) {
winData.tabs = [];
}
// don't restore a single blank tab when we've had an external
// URL passed in for loading at startup (cf. bug 357419)

View File

@ -0,0 +1,30 @@
diff -Nur mozilla-release.orig/config/baseconfig.mk mozilla-release/config/baseconfig.mk
--- mozilla-release.orig/config/baseconfig.mk 2012-10-09 07:34:41.762092280 +0000
+++ mozilla-release/config/baseconfig.mk 2012-10-09 07:40:53.052771576 +0000
@@ -1,9 +1,9 @@
INCLUDED_AUTOCONF_MK = 1
-includedir := $(includedir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
-idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
-installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
-sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION)
+includedir := $(includedir)/$(MOZ_APP_NAME)
+idldir = $(datadir)/idl/$(MOZ_APP_NAME)
+installdir = $(libdir)/$(MOZ_APP_NAME)
+sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel
DIST = $(DEPTH)/dist
# We do magic with OBJ_SUFFIX in config.mk, the following ensures we don't
diff -Nur mozilla-release.orig/js/src/config/baseconfig.mk mozilla-release/js/src/config/baseconfig.mk
--- mozilla-release.orig/js/src/config/baseconfig.mk 2012-10-09 07:34:58.411973276 +0000
+++ mozilla-release/js/src/config/baseconfig.mk 2012-10-09 07:39:55.143186168 +0000
@@ -1,7 +1,7 @@
INCLUDED_AUTOCONF_MK = 1
-installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
-sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION)
+installdir = $(libdir)/$(MOZ_APP_NAME)
+sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel
ifneq (,$(filter /%,$(TOP_DIST)))
DIST = $(TOP_DIST)

File diff suppressed because it is too large Load Diff

84
firefox-kde/firefox.desktop Executable file
View File

@ -0,0 +1,84 @@
#!/usr/bin/env xdg-open
[Desktop Entry]
Name=Firefox
Name[bn]=
Name[eo]=Fajrovulpo
Name[fi]=Firefox
Name[pa]=
Name[tg]=Рӯбоҳи оташин
GenericName=Web Browser
GenericName[af]=Web Blaaier
GenericName[ar]=متصفح ويب
GenericName[az]=Veb Səyyahı
GenericName[bg]=Браузър
GenericName[bn]=
GenericName[br]=Furcher ar Gwiad
GenericName[bs]=WWW Preglednik
GenericName[ca]=Fullejador web
GenericName[cs]=WWW prohlížeč
GenericName[cy]=Porydd Gwe
GenericName[da]=Browser
GenericName[de]=Web-Browser
GenericName[el]=Περιηγητής Ιστού
GenericName[eo]=TTT-legilo
GenericName[es]=Navegador web
GenericName[et]=Veebilehitseja
GenericName[eu]=Web arakatzailea
GenericName[fa]=مرورگر وب
GenericName[fi]=WWW-selain
GenericName[fo]=Alnótsfar
GenericName[fr]=Navigateur web
GenericName[gl]=Navegador Web
GenericName[he]=דפדפן אינטרנט
GenericName[hi]=
GenericName[hr]=Web preglednik
GenericName[hu]=Webböngésző
GenericName[is]=Vafri
GenericName[it]=Browser Web
GenericName[ja]=
GenericName[ko]=
GenericName[lo]=
GenericName[lt]=Žiniatinklio naršyklė
GenericName[lv]=Web Pārlūks
GenericName[mk]=Прелистувач на Интернет
GenericName[mn]=Веб-Хөтөч
GenericName[nb]=Nettleser
GenericName[nds]=Nettkieker
GenericName[nl]=Webbrowser
GenericName[nn]=Nettlesar
GenericName[nso]=Seinyakisi sa Web
GenericName[pa]=
GenericName[pl]=Przeglądarka WWW
GenericName[pt]=Navegador Web
GenericName[pt_BR]=Navegador Web
GenericName[ro]=Navigator de web
GenericName[ru]=Веб-браузер
GenericName[se]=Fierpmádatlogan
GenericName[sk]=Webový prehliadač
GenericName[sl]=Spletni brskalnik
GenericName[sr]=Веб претраживач
GenericName[sr@Latn]=Veb pretraživač
GenericName[ss]=Ibrawuza yeWeb
GenericName[sv]=Webbläsare
GenericName[ta]= ி
GenericName[tg]=Тафсиргари вэб
GenericName[th]=
GenericName[tr]=Web Tarayıcı
GenericName[uk]=Навігатор Тенет
GenericName[uz]=Веб-браузер
GenericName[ven]=Buronza ya Webu
GenericName[vi]=Trình duyt Web
GenericName[wa]=Betchteu waibe
GenericName[xh]=Umkhangeli zincwadi we Web
GenericName[zh_CN]=
GenericName[zh_TW]=
GenericName[zu]=Umcingi we-Web
Exec=firefox %u
Icon=firefox.png
Terminal=false
Type=Application
MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
StartupNotify=false
Categories=Network;WebBrowser;
Comment=Firefox web-browser bundle, including all language packs and flash plugin

View File

@ -0,0 +1,12 @@
post_install() {
update-desktop-database -q
}
post_upgrade() {
post_install $1
}
post_remove() {
update-desktop-database -q
}

BIN
firefox-kde/firefox.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@ -0,0 +1,8 @@
#!/bin/sh
export GTK_PATH=${PWD}/usr/lib/gtk-2.0/
${PWD}/usr/bin/gtk-query-immodules-2.0 > /tmp/firefox.gtk.immodules
export GTK_IM_MODULE_FILE=/tmp/firefox.gtk.immodules
exec ${PWD}/opt/firefox/firefox "$@"

1
firefox-kde/kde.js Normal file
View File

@ -0,0 +1 @@
pref("browser.preferences.instantApply", false);

42
firefox-kde/mozconfig Normal file
View File

@ -0,0 +1,42 @@
. $topsrcdir/browser/config/mozconfig
# System libraries
ac_add_options --without-system-nspr
ac_add_options --without-system-nss
ac_add_options --without-system-jpeg
ac_add_options --without-system-zlib
ac_add_options --without-system-bz2
ac_add_options --without-system-png
ac_add_options --without-system-libevent
ac_add_options --without-system-libvpx
#ac_add_options --enable-system-hunspell
#ac_add_options --enable-system-sqlite
#ac_add_options --enable-system-ffi
#ac_add_options --enable-system-pixman
ac_add_options --enable-gstreamer
ac_add_options --disable-libproxy
ac_add_options --with-pthreads
# Features
ac_add_options --enable-official-branding
ac_add_options --enable-safe-browsing
ac_add_options --enable-startup-notification
ac_add_options --disable-gio
ac_add_options --disable-gconf
ac_add_options --disable-gnomevfs
ac_add_options --disable-crashreporter
ac_add_options --disable-updater
ac_add_options --disable-tests
ac_add_options --disable-mochitest
ac_add_options --disable-installer
# Optimization
ac_add_options --enable-optimize
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-ff
export BUILD_OFFICIAL=1
export MOZILLA_OFFICIAL=1
mk_add_options BUILD_OFFICIAL=1
mk_add_options MOZILLA_OFFICIAL=1

View File

@ -0,0 +1,542 @@
# HG changeset patch
# Parent 9fe99f8a584f2369a88bfb5281fd6bc95eb2593c
Bug 760140 - Query the GstRegistry for the required demuxers/decoders from canPlayType
diff --git a/content/media/DecoderTraits.cpp b/content/media/DecoderTraits.cpp
--- a/content/media/DecoderTraits.cpp
+++ b/content/media/DecoderTraits.cpp
@@ -7,16 +7,18 @@
#include "DecoderTraits.h"
#include "MediaDecoder.h"
#include "nsCharSeparatedTokenizer.h"
#ifdef MOZ_MEDIA_PLUGINS
#include "MediaPluginHost.h"
#endif
#ifdef MOZ_GSTREAMER
#include "mozilla/Preferences.h"
+#include "GStreamerDecoder.h"
+#include "nsXPCOMStrings.h"
#endif
#ifdef MOZ_WMF
#include "WMFDecoder.h"
#endif
namespace mozilla
{
@@ -137,48 +139,35 @@
return false;
}
return CodecListContains(gWebMTypes, aType);
}
#endif
#ifdef MOZ_GSTREAMER
-static const char* const gH264Types[4] = {
- "video/mp4",
- "video/3gpp",
- "video/quicktime",
- nullptr
-};
-
bool
DecoderTraits::IsGStreamerSupportedType(const nsACString& aMimeType)
{
if (!MediaDecoder::IsGStreamerEnabled())
return false;
- if (IsH264Type(aMimeType))
+ if (GStreamerDecoder::CanHandleMediaType(aMimeType, nullptr))
return true;
if (!Preferences::GetBool("media.prefer-gstreamer", false))
return false;
#ifdef MOZ_WEBM
if (IsWebMType(aMimeType))
return true;
#endif
#ifdef MOZ_OGG
if (IsOggType(aMimeType))
return true;
#endif
return false;
}
-
-bool
-DecoderTraits::IsH264Type(const nsACString& aType)
-{
- return CodecListContains(gH264Types, aType);
-}
#endif
#ifdef MOZ_WIDGET_GONK
static const char* const gOmxTypes[6] = {
"audio/mpeg",
"audio/mp4",
"video/mp4",
"video/3gpp",
@@ -190,19 +179,17 @@
DecoderTraits::IsOmxSupportedType(const nsACString& aType)
{
if (!MediaDecoder::IsOmxEnabled()) {
return false;
}
return CodecListContains(gOmxTypes, aType);
}
-#endif
-#if defined(MOZ_GSTREAMER) || defined(MOZ_WIDGET_GONK)
static char const *const gH264Codecs[9] = {
"avc1.42E01E", // H.264 Constrained Baseline Profile Level 3.0
"avc1.42001E", // H.264 Baseline Profile Level 3.0
"avc1.58A01E", // H.264 Extended Profile Level 3.0
"avc1.4D401E", // H.264 Main Profile Level 3.0
"avc1.64001E", // H.264 High Profile Level 3.0
"avc1.64001F", // H.264 High Profile Level 3.1
"mp4v.20.3", // 3GPP
@@ -303,19 +290,19 @@
#ifdef MOZ_DASH
if (IsDASHMPDType(nsDependentCString(aMIMEType))) {
// DASH manifest uses WebM codecs only.
codecList = gWebMCodecs;
result = CANPLAY_YES;
}
#endif
#ifdef MOZ_GSTREAMER
- if (IsH264Type(nsDependentCString(aMIMEType))) {
- codecList = gH264Codecs;
- result = CANPLAY_MAYBE;
+ if (GStreamerDecoder::CanHandleMediaType(nsDependentCString(aMIMEType),
+ aHaveRequestedCodecs ? &aRequestedCodecs : nullptr)) {
+ return CANPLAY_YES;
}
#endif
#ifdef MOZ_WIDGET_GONK
if (IsOmxSupportedType(nsDependentCString(aMIMEType))) {
codecList = gH264Codecs;
result = CANPLAY_MAYBE;
}
#endif
@@ -324,17 +311,17 @@
result = CANPLAY_MAYBE;
}
#endif
#ifdef MOZ_MEDIA_PLUGINS
if (MediaDecoder::IsMediaPluginsEnabled() &&
GetMediaPluginHost()->FindDecoder(nsDependentCString(aMIMEType), &codecList))
result = CANPLAY_MAYBE;
#endif
- if (result == CANPLAY_NO || !aHaveRequestedCodecs) {
+ if (result == CANPLAY_NO || !aHaveRequestedCodecs || !codecList) {
return result;
}
// See http://www.rfc-editor.org/rfc/rfc4281.txt for the description
// of the 'codecs' parameter
nsCharSeparatedTokenizer tokenizer(aRequestedCodecs, ',');
bool expectMoreTokens = false;
while (tokenizer.hasMoreTokens()) {
diff --git a/content/media/DecoderTraits.h b/content/media/DecoderTraits.h
--- a/content/media/DecoderTraits.h
+++ b/content/media/DecoderTraits.h
@@ -49,17 +49,16 @@
#endif
#ifdef MOZ_WEBM
static bool IsWebMType(const nsACString& aType);
#endif
#ifdef MOZ_GSTREAMER
static bool IsGStreamerSupportedType(const nsACString& aType);
- static bool IsH264Type(const nsACString& aType);
#endif
#ifdef MOZ_WIDGET_GONK
static bool IsOmxSupportedType(const nsACString& aType);
#endif
#ifdef MOZ_MEDIA_PLUGINS
static bool IsMediaPluginsType(const nsACString& aType);
diff --git a/content/media/gstreamer/GStreamerDecoder.cpp b/content/media/gstreamer/GStreamerDecoder.cpp
--- a/content/media/gstreamer/GStreamerDecoder.cpp
+++ b/content/media/gstreamer/GStreamerDecoder.cpp
@@ -2,18 +2,26 @@
/* vim:set ts=2 sw=2 sts=2 et cindent: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "MediaDecoderStateMachine.h"
#include "GStreamerReader.h"
#include "GStreamerDecoder.h"
+#include "GStreamerFormatHelper.h"
namespace mozilla {
MediaDecoderStateMachine* GStreamerDecoder::CreateStateMachine()
{
return new MediaDecoderStateMachine(this, new GStreamerReader(this));
}
+bool
+GStreamerDecoder::CanHandleMediaType(const nsACString& aMIMEType,
+ const nsAString* aCodecs)
+{
+ return GStreamerFormatHelper::Instance()->CanHandleMediaType(aMIMEType, aCodecs);
+}
+
} // namespace mozilla
diff --git a/content/media/gstreamer/GStreamerDecoder.h b/content/media/gstreamer/GStreamerDecoder.h
--- a/content/media/gstreamer/GStreamerDecoder.h
+++ b/content/media/gstreamer/GStreamerDecoder.h
@@ -3,21 +3,23 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#if !defined(GStreamerDecoder_h_)
#define GStreamerDecoder_h_
#include "MediaDecoder.h"
+#include "nsXPCOMStrings.h"
namespace mozilla {
class GStreamerDecoder : public MediaDecoder
{
public:
virtual MediaDecoder* Clone() { return new GStreamerDecoder(); }
virtual MediaDecoderStateMachine* CreateStateMachine();
+ static bool CanHandleMediaType(const nsACString& aMIMEType, const nsAString* aCodecs);
};
} // namespace mozilla
#endif
diff --git a/content/media/gstreamer/GStreamerFormatHelper.cpp b/content/media/gstreamer/GStreamerFormatHelper.cpp
new file mode 100644
--- /dev/null
+++ b/content/media/gstreamer/GStreamerFormatHelper.cpp
@@ -0,0 +1,159 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim:set ts=2 sw=2 sts=2 et cindent: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "GStreamerFormatHelper.h"
+#include "nsCharSeparatedTokenizer.h"
+#include "nsXPCOMStrings.h"
+
+#define ENTRY_FORMAT(entry) entry[0]
+#define ENTRY_CAPS(entry) entry[1]
+
+GStreamerFormatHelper* GStreamerFormatHelper::gInstance = nullptr;
+
+GStreamerFormatHelper* GStreamerFormatHelper::Instance() {
+ if (!gInstance) {
+ gst_init(nullptr, nullptr);
+ gInstance = new GStreamerFormatHelper();
+ }
+
+ return gInstance;
+}
+
+void GStreamerFormatHelper::Shutdown() {
+ if (gInstance) {
+ delete gInstance;
+ gInstance = nullptr;
+ }
+}
+
+char const *const GStreamerFormatHelper::mContainers[4][2] = {
+ {"video/mp4", "video/quicktime"},
+ {"video/quicktime", "video/quicktime"},
+ {"audio/mp4", "audio/mpeg, mpegversion=(int)4"},
+ {"audio/mpeg", "audio/mpeg, mpegversion=(int)1"},
+};
+
+char const *const GStreamerFormatHelper::mCodecs[8][2] = {
+ {"avc1.42E01E", "video/x-h264"},
+ {"avc1.42001E", "video/x-h264"},
+ {"avc1.58A01E", "video/x-h264"},
+ {"avc1.4D401E", "video/x-h264"},
+ {"avc1.64001E", "video/x-h264"},
+ {"avc1.64001F", "video/x-h264"},
+ {"mp4v.20.3", "video/3gpp"},
+ {"mp4a.40.2", "audio/mpeg, mpegversion=(int)4"},
+};
+
+GStreamerFormatHelper::GStreamerFormatHelper()
+ : mFactories(nullptr),
+ mCookie(static_cast<uint32_t>(-1))
+{
+}
+
+GStreamerFormatHelper::~GStreamerFormatHelper() {
+ if (mFactories)
+ g_list_free(mFactories);
+}
+
+bool GStreamerFormatHelper::CanHandleMediaType(const nsACString& aMIMEType,
+ const nsAString* aCodecs) {
+ const char *type;
+ NS_CStringGetData(aMIMEType, &type, NULL);
+
+ GstCaps* caps = ConvertFormatsToCaps(type, aCodecs);
+ if (!caps) {
+ return false;
+ }
+
+ bool ret = HaveElementsToProcessCaps(caps);
+ gst_caps_unref(caps);
+
+ return ret;
+}
+
+GstCaps* GStreamerFormatHelper::ConvertFormatsToCaps(const char* aMIMEType,
+ const nsAString* aCodecs) {
+ unsigned int i;
+
+ /* convert aMIMEType to gst container caps */
+ const char* capsString = nullptr;
+ for (i = 0; i < G_N_ELEMENTS(mContainers); i++) {
+ if (!strcmp(ENTRY_FORMAT(mContainers[i]), aMIMEType)) {
+ capsString = ENTRY_CAPS(mContainers[i]);
+ break;
+ }
+ }
+
+ if (!capsString) {
+ /* we couldn't find any matching caps */
+ return nullptr;
+ }
+
+ GstCaps* caps = gst_caps_from_string(capsString);
+ /* container only */
+ if (!aCodecs) {
+ return caps;
+ }
+
+ nsCharSeparatedTokenizer tokenizer(*aCodecs, ',');
+ while (tokenizer.hasMoreTokens()) {
+ const nsSubstring& codec = tokenizer.nextToken();
+ capsString = nullptr;
+
+ for (i = 0; i < G_N_ELEMENTS(mCodecs); i++) {
+ if (codec.EqualsASCII(ENTRY_FORMAT(mCodecs[i]))) {
+ capsString = ENTRY_CAPS(mCodecs[i]);
+ break;
+ }
+ }
+
+ if (!capsString) {
+ gst_caps_unref(caps);
+ return nullptr;
+ }
+
+ GstCaps* tmp = gst_caps_from_string(capsString);
+ /* appends and frees tmp */
+ gst_caps_append(caps, tmp);
+ }
+
+ return caps;
+}
+
+bool GStreamerFormatHelper::HaveElementsToProcessCaps(GstCaps* aCaps) {
+
+ GList* factories = GetFactories();
+
+ GList* list;
+ /* here aCaps contains [containerCaps, [codecCaps1, [codecCaps2, ...]]] so process
+ * caps structures individually as we want one element for _each_
+ * structure */
+ for (unsigned int i = 0; i < gst_caps_get_size(aCaps); i++) {
+ GstStructure* s = gst_caps_get_structure(aCaps, i);
+ GstCaps* caps = gst_caps_new_full(gst_structure_copy(s), nullptr);
+ list = gst_element_factory_list_filter (factories, caps, GST_PAD_SINK, FALSE);
+ gst_caps_unref(caps);
+ if (!list) {
+ return false;
+ }
+ g_list_free(list);
+ }
+
+ return true;
+}
+
+GList* GStreamerFormatHelper::GetFactories() {
+ uint32_t cookie = gst_default_registry_get_feature_list_cookie ();
+ if (cookie != mCookie) {
+ g_list_free(mFactories);
+ mFactories = gst_element_factory_list_get_elements
+ (GST_ELEMENT_FACTORY_TYPE_DEMUXER | GST_ELEMENT_FACTORY_TYPE_DECODER,
+ GST_RANK_MARGINAL);
+ mCookie = cookie;
+ }
+
+ return mFactories;
+}
diff --git a/content/media/gstreamer/GStreamerFormatHelper.h b/content/media/gstreamer/GStreamerFormatHelper.h
new file mode 100644
--- /dev/null
+++ b/content/media/gstreamer/GStreamerFormatHelper.h
@@ -0,0 +1,60 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim:set ts=2 sw=2 sts=2 et cindent: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#if !defined(GStreamerFormatHelper_h_)
+#define GStreamerFormatHelper_h_
+
+#include <gst/gst.h>
+#include <mozilla/Types.h>
+#include "nsXPCOMStrings.h"
+
+class GStreamerFormatHelper {
+ /* This class can be used to query the GStreamer registry for the required
+ * demuxers/decoders from nsHTMLMediaElement::CanPlayType.
+ * It implements looking at the GstRegistry to check if elements to
+ * demux/decode the formats passed to CanPlayType() are actually installed.
+ */
+ public:
+ static GStreamerFormatHelper* Instance();
+ ~GStreamerFormatHelper();
+
+ bool CanHandleMediaType(const nsACString& aMIMEType,
+ const nsAString* aCodecs);
+
+ static void Shutdown();
+
+ private:
+ GStreamerFormatHelper();
+ GstCaps* ConvertFormatsToCaps(const char* aMIMEType,
+ const nsAString* aCodecs);
+ char* const *CodecListFromCaps(GstCaps* aCaps);
+ bool HaveElementsToProcessCaps(GstCaps* aCaps);
+ GList* GetFactories();
+
+ static GStreamerFormatHelper* gInstance;
+
+ /* table to convert from container MIME types to GStreamer elements */
+ static char const *const mContainers[4][2];
+
+ /* table to convert from codec MIME types to GStreamer elements */
+ static char const *const mCodecs[8][2];
+
+ /* list of GStreamer element factories
+ * Element factories are the basic types retrieved from the GStreamer
+ * registry, they describe all plugins and elements that GStreamer can
+ * create.
+ * This means that element factories are useful for automated element
+ * instancing, such as what autopluggers do,
+ * and for creating lists of available elements. */
+ GList* mFactories;
+
+ /* Storage for the default registrys feature list cookie.
+ * It changes every time a feature is added to or removed from the
+ * GStreamer registry. */
+ uint32_t mCookie;
+};
+
+#endif
diff --git a/content/media/gstreamer/Makefile.in b/content/media/gstreamer/Makefile.in
--- a/content/media/gstreamer/Makefile.in
+++ b/content/media/gstreamer/Makefile.in
@@ -13,21 +13,23 @@
MODULE = content
LIBRARY_NAME = gkcongstreamer_s
LIBXUL_LIBRARY = 1
EXPORTS += \
GStreamerDecoder.h \
GStreamerReader.h \
+ GStreamerFormatHelper.h \
$(NULL)
CPPSRCS = \
GStreamerReader.cpp \
GStreamerDecoder.cpp \
+ GStreamerFormatHelper.cpp \
$(NULL)
FORCE_STATIC_LIB = 1
include $(topsrcdir)/config/rules.mk
CFLAGS += $(GSTREAMER_CFLAGS)
CXXFLAGS += $(GSTREAMER_CFLAGS)
diff --git a/layout/build/Makefile.in b/layout/build/Makefile.in
--- a/layout/build/Makefile.in
+++ b/layout/build/Makefile.in
@@ -316,16 +316,20 @@
-I$(topsrcdir)/js/xpconnect/loader \
-I$(topsrcdir)/caps/include \
-I$(topsrcdir)/netwerk/base/src \
-I$(topsrcdir)/content/svg/content/src \
-I$(topsrcdir)/extensions/cookie \
-I$(topsrcdir)/netwerk/cookie \
$(NULL)
+ifdef MOZ_GSTREAMER
+LOCAL_INCLUDES += $(GSTREAMER_CFLAGS)
+endif
+
ifdef MOZ_B2G_RIL #{
LOCAL_INCLUDES += -I$(topsrcdir)/dom/system/gonk
endif #}
ifdef MOZ_B2G_FM #{
LOCAL_INCLUDES += -I$(topsrcdir)/dom/fm
endif #}
diff --git a/layout/build/nsLayoutStatics.cpp b/layout/build/nsLayoutStatics.cpp
--- a/layout/build/nsLayoutStatics.cpp
+++ b/layout/build/nsLayoutStatics.cpp
@@ -78,16 +78,20 @@
#ifdef MOZ_MEDIA_PLUGINS
#include "MediaPluginHost.h"
#endif
#ifdef MOZ_WMF
#include "WMFDecoder.h"
#endif
+#ifdef MOZ_GSTREAMER
+#include "GStreamerFormatHelper.h"
+#endif
+
#ifdef MOZ_SYDNEYAUDIO
#include "AudioStream.h"
#endif
#include "nsError.h"
#include "nsCycleCollector.h"
#include "nsJSEnvironment.h"
@@ -336,16 +340,20 @@
nsXBLService::Shutdown();
nsAutoCopyListener::Shutdown();
FrameLayerBuilder::Shutdown();
#ifdef MOZ_MEDIA_PLUGINS
MediaPluginHost::Shutdown();
#endif
+#ifdef MOZ_GSTREAMER
+ GStreamerFormatHelper::Shutdown();
+#endif
+
#ifdef MOZ_SYDNEYAUDIO
AudioStream::ShutdownLibrary();
#endif
#ifdef MOZ_WMF
WMFDecoder::UnloadDLLs();
#endif

View File

@ -0,0 +1,293 @@
# HG changeset patch
# Parent 09328afa274e7cf6354f446ae37735218b796e7f
# User Wolfgang Rosenauer <wr@rosenauer.org>
Bug 803287 - Don't use GStreamer (when enabled) for Ogg/WebM if builtin backends present. (TM: 19)
diff --git a/content/base/src/nsContentUtils.cpp b/content/base/src/nsContentUtils.cpp
--- a/content/base/src/nsContentUtils.cpp
+++ b/content/base/src/nsContentUtils.cpp
@@ -6676,71 +6676,55 @@ nsContentUtils::FindInternalContentViewe
else
*aLoaderType = TYPE_UNKNOWN;
}
return docFactory.forget();
}
#ifdef MOZ_MEDIA
#ifdef MOZ_OGG
- if (nsHTMLMediaElement::IsOggEnabled()) {
- for (unsigned int i = 0; i < ArrayLength(nsHTMLMediaElement::gOggTypes); ++i) {
- const char* type = nsHTMLMediaElement::gOggTypes[i];
- if (!strcmp(aType, type)) {
- docFactory = do_GetService("@mozilla.org/content/document-loader-factory;1");
- if (docFactory && aLoaderType) {
- *aLoaderType = TYPE_CONTENT;
- }
- return docFactory.forget();
- }
+ if (nsHTMLMediaElement::IsOggType(nsDependentCString(aType))) {
+ docFactory = do_GetService("@mozilla.org/content/document-loader-factory;1");
+ if (docFactory && aLoaderType) {
+ *aLoaderType = TYPE_CONTENT;
}
+ return docFactory.forget();
}
#endif
#ifdef MOZ_WEBM
- if (nsHTMLMediaElement::IsWebMEnabled()) {
- for (unsigned int i = 0; i < ArrayLength(nsHTMLMediaElement::gWebMTypes); ++i) {
- const char* type = nsHTMLMediaElement::gWebMTypes[i];
- if (!strcmp(aType, type)) {
- docFactory = do_GetService("@mozilla.org/content/document-loader-factory;1");
- if (docFactory && aLoaderType) {
- *aLoaderType = TYPE_CONTENT;
- }
- return docFactory.forget();
- }
+ if (nsHTMLMediaElement::IsWebMType(nsDependentCString(aType))) {
+ docFactory = do_GetService("@mozilla.org/content/document-loader-factory;1");
+ if (docFactory && aLoaderType) {
+ *aLoaderType = TYPE_CONTENT;
}
+ return docFactory.forget();
}
#endif
#ifdef MOZ_GSTREAMER
- if (nsHTMLMediaElement::IsH264Enabled()) {
- for (unsigned int i = 0; i < ArrayLength(nsHTMLMediaElement::gH264Types); ++i) {
- const char* type = nsHTMLMediaElement::gH264Types[i];
- if (!strcmp(aType, type)) {
- docFactory = do_GetService("@mozilla.org/content/document-loader-factory;1");
- if (docFactory && aLoaderType) {
- *aLoaderType = TYPE_CONTENT;
- }
- return docFactory.forget();
- }
+ if (nsHTMLMediaElement::IsGStreamerSupportedType(nsDependentCString(aType))) {
+ docFactory = do_GetService("@mozilla.org/content/document-loader-factory;1");
+ if (docFactory && aLoaderType) {
+ *aLoaderType = TYPE_CONTENT;
}
+ return docFactory.forget();
}
#endif
#ifdef MOZ_MEDIA_PLUGINS
if (nsHTMLMediaElement::IsMediaPluginsEnabled() &&
nsHTMLMediaElement::IsMediaPluginsType(nsDependentCString(aType))) {
docFactory = do_GetService("@mozilla.org/content/document-loader-factory;1");
if (docFactory && aLoaderType) {
*aLoaderType = TYPE_CONTENT;
}
return docFactory.forget();
}
#endif // MOZ_MEDIA_PLUGINS
-
#endif // MOZ_MEDIA
return NULL;
}
// static
bool
nsContentUtils::IsPatternMatching(nsAString& aValue, nsAString& aPattern,
diff --git a/content/html/content/public/nsHTMLMediaElement.h b/content/html/content/public/nsHTMLMediaElement.h
--- a/content/html/content/public/nsHTMLMediaElement.h
+++ b/content/html/content/public/nsHTMLMediaElement.h
@@ -303,17 +303,18 @@ public:
#ifdef MOZ_WEBM
static bool IsWebMEnabled();
static bool IsWebMType(const nsACString& aType);
static const char gWebMTypes[2][11];
static char const *const gWebMCodecs[4];
#endif
#ifdef MOZ_GSTREAMER
- static bool IsH264Enabled();
+ static bool IsGStreamerEnabled();
+ static bool IsGStreamerSupportedType(const nsACString& aType);
static bool IsH264Type(const nsACString& aType);
static const char gH264Types[3][16];
static char const *const gH264Codecs[7];
#endif
#ifdef MOZ_WIDGET_GONK
static bool IsOmxEnabled();
static bool IsOmxSupportedType(const nsACString& aType);
diff --git a/content/html/content/src/nsHTMLMediaElement.cpp b/content/html/content/src/nsHTMLMediaElement.cpp
--- a/content/html/content/src/nsHTMLMediaElement.cpp
+++ b/content/html/content/src/nsHTMLMediaElement.cpp
@@ -2148,34 +2148,29 @@ char const *const nsHTMLMediaElement::gH
#ifdef MOZ_GSTREAMER
const char nsHTMLMediaElement::gH264Types[3][16] = {
"video/mp4",
"video/3gpp",
"video/quicktime",
};
bool
-nsHTMLMediaElement::IsH264Enabled()
+nsHTMLMediaElement::IsGStreamerEnabled()
{
- return Preferences::GetBool("media.h264.enabled");
+ return Preferences::GetBool("media.gstreamer.enabled");
}
bool
nsHTMLMediaElement::IsH264Type(const nsACString& aType)
{
- if (!IsH264Enabled()) {
- return false;
- }
-
for (uint32_t i = 0; i < ArrayLength(gH264Types); ++i) {
if (aType.EqualsASCII(gH264Types[i])) {
return true;
}
}
-
return false;
}
#endif
#ifdef MOZ_WIDGET_GONK
const char nsHTMLMediaElement::gOmxTypes[5][16] = {
"audio/mpeg",
"audio/mp4",
@@ -2424,34 +2419,63 @@ nsHTMLMediaElement::CanPlayType(const ns
default:
case CANPLAY_MAYBE:
aResult.AssignLiteral("maybe");
break;
}
return NS_OK;
}
+#ifdef MOZ_GSTREAMER
+bool
+nsHTMLMediaElement::IsGStreamerSupportedType(const nsACString& aMimeType)
+{
+ if (!IsGStreamerEnabled())
+ return false;
+ if (IsH264Type(aMimeType))
+ return true;
+ if (!Preferences::GetBool("media.prefer-gstreamer", false))
+ return false;
+#ifdef MOZ_WEBM
+ if (IsWebMType(aMimeType))
+ return true;
+#endif
+#ifdef MOZ_OGG
+ if (IsOggType(aMimeType))
+ return true;
+#endif
+ return false;
+}
+#endif
+
already_AddRefed<nsMediaDecoder>
nsHTMLMediaElement::CreateDecoder(const nsACString& aType)
{
+#ifdef MOZ_GSTREAMER
+ // When enabled, use GStreamer for H.264, but not for codecs handled by our
+ // bundled decoders, unless the "media.prefer-gstreamer" pref is set.
+ if (IsGStreamerSupportedType(aType)) {
+ nsRefPtr<nsGStreamerDecoder> decoder = new nsGStreamerDecoder();
+ if (decoder->Init(this)) {
+ return decoder.forget();
+ }
+ }
+#endif
+
#ifdef MOZ_RAW
if (IsRawType(aType)) {
nsRefPtr<nsRawDecoder> decoder = new nsRawDecoder();
if (decoder->Init(this)) {
return decoder.forget();
}
}
#endif
#ifdef MOZ_OGG
if (IsOggType(aType)) {
-#ifdef MOZ_GSTREAMER
- nsRefPtr<nsGStreamerDecoder> decoder = new nsGStreamerDecoder();
-#else
nsRefPtr<nsOggDecoder> decoder = new nsOggDecoder();
-#endif
if (decoder->Init(this)) {
return decoder.forget();
}
}
#endif
#ifdef MOZ_WAVE
if (IsWaveType(aType)) {
nsRefPtr<nsWaveDecoder> decoder = new nsWaveDecoder();
@@ -2473,44 +2497,32 @@ nsHTMLMediaElement::CreateDecoder(const
nsRefPtr<nsMediaPluginDecoder> decoder = new nsMediaPluginDecoder(aType);
if (decoder->Init(this)) {
return decoder.forget();
}
}
#endif
#ifdef MOZ_WEBM
if (IsWebMType(aType)) {
-#ifdef MOZ_GSTREAMER
- nsRefPtr<nsGStreamerDecoder> decoder = new nsGStreamerDecoder();
-#else
nsRefPtr<nsWebMDecoder> decoder = new nsWebMDecoder();
-#endif
if (decoder->Init(this)) {
return decoder.forget();
}
}
#endif
#ifdef MOZ_DASH
if (IsDASHMPDType(aType)) {
nsRefPtr<nsDASHDecoder> decoder = new nsDASHDecoder();
if (decoder->Init(this)) {
return decoder.forget();
}
}
#endif
-#ifdef MOZ_GSTREAMER
- if (IsH264Type(aType)) {
- nsRefPtr<nsGStreamerDecoder> decoder = new nsGStreamerDecoder();
- if (decoder->Init(this)) {
- return decoder.forget();
- }
- }
-#endif
return nullptr;
}
nsresult nsHTMLMediaElement::InitializeDecoderAsClone(nsMediaDecoder* aOriginal)
{
NS_ASSERTION(mLoadingSrc, "mLoadingSrc must already be set");
NS_ASSERTION(mDecoder == nullptr, "Shouldn't have a decoder");
diff --git a/modules/libpref/src/init/all.js b/modules/libpref/src/init/all.js
--- a/modules/libpref/src/init/all.js
+++ b/modules/libpref/src/init/all.js
@@ -164,17 +164,17 @@ pref("media.wave.enabled", true);
#endif
#ifdef MOZ_WEBM
pref("media.webm.enabled", true);
#endif
#ifdef MOZ_DASH
pref("media.dash.enabled", true);
#endif
#ifdef MOZ_GSTREAMER
-pref("media.h264.enabled", true);
+pref("media.gstreamer.enabled", true);
#endif
#ifdef MOZ_WEBRTC
pref("media.navigator.enabled", false);
pref("media.peerconnection.enabled", false);
pref("media.navigator.permission.disabled", false);
#else
#ifdef ANDROID
pref("media.navigator.enabled", true);

View File

@ -0,0 +1,52 @@
# HG changeset patch
# Parent e4b87e710b1a5f0bb7db058911bc163b4bf30227
# User Wolfgang Rosenauer <wr@rosenauer.org>
No Bug - use GStreamer _only_ for MP4 (not WebM/OGG)
diff --git a/content/html/content/src/nsHTMLMediaElement.cpp b/content/html/content/src/nsHTMLMediaElement.cpp
--- a/content/html/content/src/nsHTMLMediaElement.cpp
+++ b/content/html/content/src/nsHTMLMediaElement.cpp
@@ -2277,21 +2277,17 @@ nsHTMLMediaElement::CreateDecoder(const
nsRefPtr<nsRawDecoder> decoder = new nsRawDecoder();
if (decoder->Init(this)) {
return decoder.forget();
}
}
#endif
#ifdef MOZ_OGG
if (IsOggType(aType)) {
-#ifdef MOZ_GSTREAMER
- nsRefPtr<nsGStreamerDecoder> decoder = new nsGStreamerDecoder();
-#else
nsRefPtr<nsOggDecoder> decoder = new nsOggDecoder();
-#endif
if (decoder->Init(this)) {
return decoder.forget();
}
}
#endif
#ifdef MOZ_WAVE
if (IsWaveType(aType)) {
nsRefPtr<nsWaveDecoder> decoder = new nsWaveDecoder();
@@ -2305,21 +2301,17 @@ nsHTMLMediaElement::CreateDecoder(const
nsRefPtr<nsMediaPluginDecoder> decoder = new nsMediaPluginDecoder(aType);
if (decoder->Init(this)) {
return decoder.forget();
}
}
#endif
#ifdef MOZ_WEBM
if (IsWebMType(aType)) {
-#ifdef MOZ_GSTREAMER
- nsRefPtr<nsGStreamerDecoder> decoder = new nsGStreamerDecoder();
-#else
nsRefPtr<nsWebMDecoder> decoder = new nsWebMDecoder();
-#endif
if (decoder->Init(this)) {
return decoder.forget();
}
}
#endif
#ifdef MOZ_GSTREAMER
if (IsH264Type(aType)) {

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,46 @@
From: Wolfgang Rosenauer
Subject: Do not use gconf for proxy settings if not running within Gnome
Index: toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
===================================================================
RCS file: /cvsroot/mozilla/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp,v
retrieving revision 1.1
diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
--- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
+++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
@@ -50,22 +50,28 @@ nsUnixSystemProxySettings::GetMainThread
// dbus prevents us from being threadsafe, but this routine should not block anyhow
*aMainThreadOnly = true;
return NS_OK;
}
nsresult
nsUnixSystemProxySettings::Init()
{
- mSchemeProxySettings.Init(5);
- mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
- mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
- if (mGSettings) {
- mGSettings->GetCollectionForSchema(NS_LITERAL_CSTRING("org.gnome.system.proxy"),
- getter_AddRefs(mProxySettings));
+ // If this is a GNOME session, load gconf and try to use its preferences.
+ // If gconf is not available (which would be stupid) we'll proceed as if
+ // this was not a GNOME session, using *_PROXY environment variables.
+ const char* sessionType = PR_GetEnv("DESKTOP_SESSION");
+ if (sessionType && !strcmp(sessionType, "gnome")) {
+ mSchemeProxySettings.Init(5);
+ mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
+ mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
+ if (mGSettings) {
+ mGSettings->GetCollectionForSchema(NS_LITERAL_CSTRING("org.gnome.system.proxy"),
+ getter_AddRefs(mProxySettings));
+ }
}
return NS_OK;
}
bool
nsUnixSystemProxySettings::IsProxyMode(const char* aMode)
{

40
firefox-kde/package Normal file
View File

@ -0,0 +1,40 @@
alsa-lib
atk
cairo
dbus-core
dbus-glib
expat
fontconfig
freetype2
gcc-libs
gdk-pixbuf2
glib2
gstreamer0.10
gstreamer0.10-base
gtk2
libffi
libice
libpng
libsm
libx11
libxau
libxcb
libxcomposite
libxcursor
libxdamage
libxdmcp
libxext
libxfixes
libxi
libxinerama
libxml2
libxrandr
libxrender
libxt
orc
pango
pixman
startup-notification
util-linux
xcb-util
zlib

10
firefox-kde/vendor.js Normal file
View File

@ -0,0 +1,10 @@
// Use LANG environment variable to choose locale
pref("intl.locale.matchOS", true);
// Disable default browser checking.
pref("browser.shell.checkDefaultBrowser", true);
pref("browser.search.defaultenginename", "DuckDuckGo");
// Don't disable our bundled extensions in the application directory
pref("extensions.autoDisableScopes", 11);
pref("extensions.shownSelectionUI", true);