summaryrefslogtreecommitdiff
path: root/libre-testing
diff options
context:
space:
mode:
Diffstat (limited to 'libre-testing')
-rw-r--r--libre-testing/icecat/PKGBUILD229
-rw-r--r--libre-testing/icecat/fixing_nullptr_31.7.0.patch174
-rw-r--r--libre-testing/icecat/freetype26.patch30
-rw-r--r--libre-testing/icecat/gnu_headshadow.pngbin6785 -> 0 bytes
-rw-r--r--libre-testing/icecat/icecat-fixed-loading-icon.pngbin12184 -> 0 bytes
-rw-r--r--libre-testing/icecat/icecat-install-dir.patch12
-rw-r--r--libre-testing/icecat/icecat.desktop352
-rw-r--r--libre-testing/icecat/icecat.install13
-rw-r--r--libre-testing/icecat/libre.patch852
-rw-r--r--libre-testing/icecat/mozconfig36
-rw-r--r--libre-testing/icecat/mozconfig.pgo3
-rw-r--r--libre-testing/icecat/rhbz-966424.patch14
-rw-r--r--libre-testing/icecat/vendor.js28
13 files changed, 0 insertions, 1743 deletions
diff --git a/libre-testing/icecat/PKGBUILD b/libre-testing/icecat/PKGBUILD
deleted file mode 100644
index 05e6cc5c3..000000000
--- a/libre-testing/icecat/PKGBUILD
+++ /dev/null
@@ -1,229 +0,0 @@
-# Maintainer: André Silva <emulatorman@parabola.nu>
-# Contributor: Márcio Silva <coadde@parabola.nu>
-# Contributor (ConnochaetOS): Henry Jensen <hjensen@connochaetos.org>
-# Contributor: Luke Shumaker <lukeshu@sbcglobal.net>
-# Contributor: fauno <fauno@kiwwwi.com.ar>
-# Contributor: vando <facundo@esdebian.org>
-# Contributor (Arch): Jakub Schmidtke <sjakub@gmail.com>
-# Contributor: Figue <ffigue at gmail>
-# Thank you very much to the older contributors:
-# Contributor: evr <evanroman at gmail>
-# Contributor: Muhammad 'MJ' Jassim <UnbreakableMJ@gmail.com>
-
-_pgo=true
-
-pkgname=icecat
-_pkgver=31.8.0-gnu1
-pkgver=${_pkgver//-/_}
-pkgrel=4
-
-pkgdesc="GNU IceCat, the standalone web browser based on Mozilla Firefox."
-arch=(i686 x86_64 mips64el)
-license=(MPL GPL LGPL)
-depends=(alsa-lib dbus-glib desktop-file-utils gtk2 hicolor-icon-theme hunspell icu=55.1 libevent libvpx=1.4.0 libxt mime-types mozilla-common mozilla-searchplugins nss sqlite startup-notification)
-makedepends=(diffutils gst-plugins-base-libs imake inetutils libpulse mesa python2 unzip yasm zip)
-options=(!emptydirs !makeflags debug)
-if $_pgo; then
- makedepends+=(xorg-server-xvfb)
- options+=(!ccache)
-fi
-optdepends=('networkmanager: Location detection via available WiFi networks'
- 'gst-plugins-good: h.264 video'
- 'gst-libav: h.264 video')
-url="http://www.gnu.org/software/gnuzilla/"
-install=$pkgname.install
-source=(http://ftp.gnu.org/gnu/gnuzilla/${_pkgver%-*}/$pkgname-$_pkgver.tar.bz2{,.sig}
- mozconfig
- mozconfig.pgo
- libre.patch
- gnu_headshadow.png
- $pkgname.desktop
- $pkgname-install-dir.patch
- freetype26.patch
- vendor.js
- rhbz-966424.patch
- $pkgname-fixed-loading-icon.png
- fixing_nullptr_31.7.0.patch)
-sha256sums=('370087d0adadf8b1c1e6a9920e26488a8902b9dc461d305f258fddb26a129d87'
- 'SKIP'
- 'c36d18a8ffc99ea4dab8e8564d92bc5c9b1bb2c7680323f48483695522cefd1d'
- '92d7ea9feb8d2814d1abaf5cf4012983a2fb9cc56b26a5d7c7c3898aedf06fb4'
- '8082a8a5adf21c50fa77650c74adcd6fedbf7bedcdb6b8ae29529ca96adeb05d'
- '93e3001ce152e1d142619e215a9ef07dd429943b99d21726c25da9ceb31e31cd'
- '52df9ffeb52166ed4abd9a132ee4a9017b9c4980f0725ba383610ccfb06d4745'
- '5bdab2de5520fb4d3dbc453d9f73d20e0e077bf652bc780fc17184ba6c718a47'
- 'b9c440406644fde5097da8717f0b5e5e973d11ec4dd6d4a0570ca7094d96dc85'
- '977aa49b940f1da049cefa2878a63ac6669a78e63e9d55bb11db7b8f8fb64c33'
- 'd25c6e95d20ec622a51346897d986fdd97074023d6a02bee0533773a195f8233'
- '68e3a5b47c6d175cc95b98b069a15205f027cab83af9e075818d38610feb6213'
- 'd57d0e4d5bc66323388e8f3c9999ed443abfd304a28a1696cc6f4518ed0d0f2a')
-validpgpkeys=('A57369A8BABC2542B5A0368C3C76EED7D7E04784') # Ruben Rodriguez
-
-prepare() {
- export GNU_BUILD="gnuzilla-release"
-
- mv $pkgname-${pkgver%_*} "$srcdir/$GNU_BUILD"
- cd "$srcdir/$GNU_BUILD"
-
- # Put gnu_headshadow.png on the source code
- install -m644 "$srcdir/gnu_headshadow.png" \
- browser/base/content/abouthome
-
- # Install to /usr/lib/$pkgname
- patch -Np1 -i "$srcdir/$pkgname-install-dir.patch"
-
- # https://bugzilla.mozilla.org/show_bug.cgi?id=1143411
- patch -Np1 -i "$srcdir/freetype26.patch"
-
- # https://bugs.archlinux.org/task/41689
- patch -Np1 -i "$srcdir/rhbz-966424.patch"
-
- # Patch for GCC 5.1
- patch -Np1 -i "$srcdir/fixing_nullptr_31.7.0.patch"
-
- # Patch and remove anything that's left
- patch -Np1 -i "$srcdir/libre.patch"
- sed -i '\|return| s|Flash|SWF Player|g;
- ' browser/base/content/pageinfo/permissions.js \
- browser/base/content/browser-plugins.js
- sed -i '\|["]displayName["][:] ["]Flash["]| s|Flash|SWF Player|
- \|["]displayName["][:] ["]Shockwave["]| s|Shockwave|DCR Player|
- \|["]displayName["][:] ["]QuickTime["]| s|QuickTime|MOV Player|
- \|installLinux| s|true|false|
- ' browser/base/content/browser-plugins.js
- rm -v browser/base/content/abouthome/snippet*.png || true
- sed -i '\|abouthome/snippet|d
- ' browser/base/jar.mn
-
- # Replace common URLs
- sed -i '\|extensions[.]getAddons[.]get[.]url| s|https://services[.]addons[.]mozilla[.]org.\+["][)][;]|https://trisquel.info/en/browser");|g;
- \|extensions[.]getAddons[.]search[.]browseURL| s|https://addons[.]mozilla[.]org.\+["][)][;]|https://trisquel.info/en/browser");|g;
- \|extensions[.]getAddons[.]search[.]url| s|https://services[.]addons[.]mozilla[.]org.\+["][)][;]|https://trisquel.info/en/browser");|g;
- \|extensions[.]getAddons[.]search[.]url| s|https://directory[.]fsf[.]org.\+["][)][;]|https://trisquel.info/en/browser");|g;
- \|extensions[.]webservice[.]discoverURL| s|https://services[.]addons[.]mozilla[.]org.\+["][)][;]|https://trisquel.info/en/browser");|g;
- \|extensions[.]webservice[.]discoverURL| s|https://directory[.]fsf[.]org.\+["][)][;]|https://trisquel.info/en/browser");|g;
- \|browser[.]search[.]searchEnginesURL| s|https://addons[.]mozilla[.]org.\+["][)][;]|https://trisquel.info/en/browser");|g;
- \|browser[.]search[.]searchEnginesURL| s|https://mycroft[.]mozdev[.]org.\+["][)][;]|https://trisquel.info/en/browser");|g;
- \|plugins[.]update[.]url| s|https://www[.]mozilla[.]org/[%]LOCALE[%]/plugincheck/["][)][;]|https://trisquel.info/en/browser");|g;
- \|plugins[.]update[.]url| s|https://www[.]gnu[.]org/software/gnuzilla/["][)][;]|https://trisquel.info/en/browser");|g;
- ' browser/app/profile/icecat.js
-
- # Load our build config, disable SafeSearch
- cp "$srcdir/mozconfig" .mozconfig
-
- if $_pgo; then
- cat "$srcdir/mozconfig.pgo" >> .mozconfig
- fi
-
- # From js on abslibre-mips64el.git
- if [ "$CARCH" = "mips64el" ]; then
- msg "Force disabling JIT."
- sed -ri 's/#define ENABLE_(JIT|ASSEMBLER) 1/#define ENABLE_\1 0/' \
- js/src/assembler/wtf/Platform.h
- sed -ri 's/ENABLE_(JIT|ASSEMBLER)=1/ENABLE_\1=0/' js/src/Makefile.{in,ref}
-
- echo "ac_add_options --disable-methodjit" >> .mozconfig
- echo "ac_add_options --disable-tracejit" >> .mozconfig
- fi
-
- # This is a bug, we should fix it
- if [ "$CARCH" = "mips64el" ]; then
- # Fix MIPS N32 support.
- sed -i 's/defined(_ABIO32)/(defined(_ABIO32) || defined(_ABIN32))/' \
- js/src/assembler/wtf/Platform.h
- # Disable JIT.
- sed -ri 's/#define ENABLE_(JIT|ASSEMBLER) 1/#define ENABLE_\1 0/' \
- js/src/assembler/wtf/Platform.h
- sed -ri 's/ENABLE_(JIT|ASSEMBLER)=1/ENABLE_\1=0/' js/src/Makefile.in
- echo 'ac_add_options --disable-methodjit' >> .mozconfig
- echo 'ac_add_options --disable-tracejit' >> .mozconfig
- echo 'ac_add_options --disable-jemalloc' >> .mozconfig
- fi
-
- # Fixing for libvpx >= 1.4.0
- sed -i 's|IMG_FMT_I420|VPX_IMG_FMT_I420|;
- s|PLANE_U|VPX_PLANE_U|;
- s|PLANE_V|VPX_PLANE_V|;
- s|PLANE_Y|VPX_PLANE_Y|;
- s|VPX_VPX_PLANE_|VPX_PLANE_|;
- ' content/media/encoder/VP8TrackEncoder.cpp \
- media/webrtc/trunk/webrtc/modules/video_coding/codecs/vp8/vp8_impl.cc
-
- mkdir "$srcdir/path"
-
- # WebRTC build tries to execute "python" and expects Python 2
- ln -s /usr/bin/python2 "$srcdir/path/python"
-
- # configure script misdetects the preprocessor without an optimization level
- # https://bugs.archlinux.org/task/34644
- sed -i '/ac_cpp=/s/$CPPFLAGS/& -O2/' configure
-
- # Fix tab loading icon (flickers with libpng 1.6)
- # https://bugzilla.mozilla.org/show_bug.cgi?id=841734
- # TODO: Remove this; IceCat 36 might use CSS animations for the loading icon
- # https://bugzilla.mozilla.org/show_bug.cgi?id=759252
- cp "$srcdir/$pkgname-fixed-loading-icon.png" \
- browser/themes/linux/tabbrowser/loading.png
-
- # Remove non-existent file on Makefile.in
- sed -i '\|build/pgo/blueprint/valid.png|d' build/Makefile.in
-}
-
-build() {
- export GNU_BUILD="gnuzilla-release"
-
- cd "$srcdir/$GNU_BUILD"
-
- export PATH="$srcdir/path:$PATH"
- export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/lib/$pkgname"
- export PYTHON="/usr/bin/python2"
-
- if $_pgo; then
- # Do PGO
- xvfb-run -a -s "-extension GLX -screen 0 1280x1024x24" \
- make -f client.mk build MOZ_PGO=1
- else
- make -f client.mk build
- fi
-}
-
-package() {
- export GNU_BUILD="gnuzilla-release"
-
- cd "$srcdir/$GNU_BUILD"
- make -f client.mk DESTDIR="$pkgdir" INSTALL_SDK= install
-
- install -Dm644 ../vendor.js "$pkgdir/usr/lib/$pkgname/browser/defaults/preferences/vendor.js"
-
-
- brandingdir=browser/branding/official
- icondir="$pkgdir/usr/share/icons/hicolor"
- for i in 16x16 32x32 48x48; do
- install -Dm644 "$brandingdir/default${i/x*/}.png" "$icondir/$i/apps/$pkgname.png"
- done
- install -Dm644 "$brandingdir/content/icon64.png" \
- "$icondir/64x64/apps/$pkgname.png"
- install -Dm644 "$brandingdir/mozicon128.png" \
- "$icondir/128x128/apps/$pkgname.png"
- install -Dm644 "$brandingdir/content/about-logo.png" \
- "$icondir/192x192/apps/$pkgname.png"
- install -Dm644 "$brandingdir/content/about-logo@2x.png" \
- "$icondir/384x384/apps/$pkgname.png"
-
- install -d "$pkgdir/usr/share/applications"
- install -m644 "$srcdir/$pkgname.desktop" \
- "$pkgdir/usr/share/applications"
-
- # Use system-provided dictionaries
- rm -rf "$pkgdir/usr/lib/$pkgname/"{dictionaries,hyphenation}
- ln -s /usr/share/hunspell "$pkgdir/usr/lib/$pkgname/dictionaries"
- ln -s /usr/share/hyphen "$pkgdir/usr/lib/$pkgname/hyphenation"
-
- rm -rf "$pkgdir/usr/lib/$pkgname/browser/"{searchplugins,plugins}
- ln -sf /usr/lib/mozilla/plugins "$pkgdir/usr/lib/$pkgname/browser/plugins"
- ln -sf /usr/lib/mozilla/searchplugins "$pkgdir/usr/lib/$pkgname/browser/searchplugins"
-
- # Workaround for now:
- #https://bugzilla.mozilla.org/show_bug.cgi?id=658850
- ln -sf $pkgname "$pkgdir/usr/lib/$pkgname/$pkgname-bin"
-}
diff --git a/libre-testing/icecat/fixing_nullptr_31.7.0.patch b/libre-testing/icecat/fixing_nullptr_31.7.0.patch
deleted file mode 100644
index ecfca4138..000000000
--- a/libre-testing/icecat/fixing_nullptr_31.7.0.patch
+++ /dev/null
@@ -1,174 +0,0 @@
---- a/js/src/builtin/TypedObject.cpp 2015-06-03 22:48:47.000000000 +0200
-+++ b/js/src/builtin/TypedObject.cpp 2015-06-08 16:45:30.918154529 +0200
-@@ -710,12 +710,12 @@
- contents.append(")");
- RootedAtom stringRepr(cx, contents.finishAtom());
- if (!stringRepr)
-- return nullptr;
-+ return false;
-
- // Extract ArrayType.prototype
- RootedObject arrayTypePrototype(cx, GetPrototype(cx, arrayTypeGlobal));
- if (!arrayTypePrototype)
-- return nullptr;
-+ return false;
-
- // Create the instance of ArrayType
- Rooted<UnsizedArrayTypeDescr*> obj(cx);
-@@ -728,7 +728,7 @@
- if (!JSObject::defineProperty(cx, obj, cx->names().length,
- UndefinedHandleValue, nullptr, nullptr,
- JSPROP_READONLY | JSPROP_PERMANENT))
-- return nullptr;
-+ return false;
-
- args.rval().setObject(*obj);
- return true;
-@@ -762,7 +762,7 @@
- if (!size.isValid()) {
- JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr,
- JSMSG_TYPEDOBJECT_TOO_BIG);
-- return nullptr;
-+ return false;
- }
-
- // Construct a canonical string `new ArrayType(<elementType>).dimension(N)`:
-@@ -775,7 +775,7 @@
- contents.append(")");
- RootedAtom stringRepr(cx, contents.finishAtom());
- if (!stringRepr)
-- return nullptr;
-+ return false;
-
- // Create the sized type object.
- Rooted<SizedArrayTypeDescr*> obj(cx);
-@@ -793,7 +793,7 @@
- if (!JSObject::defineProperty(cx, obj, cx->names().length,
- lengthVal, nullptr, nullptr,
- JSPROP_READONLY | JSPROP_PERMANENT))
-- return nullptr;
-+ return false;
-
- // Add `unsized` property, which is a link from the sized
- // array to the unsized array.
-@@ -801,7 +801,7 @@
- if (!JSObject::defineProperty(cx, obj, cx->names().unsized,
- unsizedTypeDescrValue, nullptr, nullptr,
- JSPROP_READONLY | JSPROP_PERMANENT))
-- return nullptr;
-+ return false;
-
- args.rval().setObject(*obj);
- return true;
-@@ -1253,7 +1253,7 @@
- Rooted<TypedProto*> proto(cx);
- proto = NewObjectWithProto<TypedProto>(cx, objProto, nullptr, TenuredObject);
- if (!proto)
-- return nullptr;
-+ return false;
- proto->initTypeDescrSlot(*descr);
- descr->initReservedSlot(JS_DESCR_SLOT_TYPROTO, ObjectValue(*proto));
-
-@@ -1358,14 +1358,14 @@
- #define BINARYDATA_SCALAR_DEFINE(constant_, type_, name_) \
- if (!DefineSimpleTypeDescr<ScalarTypeDescr>(cx, global, module, constant_, \
- cx->names().name_)) \
-- return nullptr;
-+ return false;
- JS_FOR_EACH_SCALAR_TYPE_REPR(BINARYDATA_SCALAR_DEFINE)
- #undef BINARYDATA_SCALAR_DEFINE
-
- #define BINARYDATA_REFERENCE_DEFINE(constant_, type_, name_) \
- if (!DefineSimpleTypeDescr<ReferenceTypeDescr>(cx, global, module, constant_, \
- cx->names().name_)) \
-- return nullptr;
-+ return false;
- JS_FOR_EACH_REFERENCE_TYPE_REPR(BINARYDATA_REFERENCE_DEFINE)
- #undef BINARYDATA_REFERENCE_DEFINE
-
-@@ -1375,14 +1375,14 @@
- arrayType = DefineMetaTypeDescr<ArrayMetaTypeDescr>(
- cx, global, module, TypedObjectModuleObject::ArrayTypePrototype);
- if (!arrayType)
-- return nullptr;
-+ return false;
-
- RootedValue arrayTypeValue(cx, ObjectValue(*arrayType));
- if (!JSObject::defineProperty(cx, module, cx->names().ArrayType,
- arrayTypeValue,
- nullptr, nullptr,
- JSPROP_READONLY | JSPROP_PERMANENT))
-- return nullptr;
-+ return false;
-
- // StructType.
-
-@@ -1390,14 +1390,14 @@
- structType = DefineMetaTypeDescr<StructMetaTypeDescr>(
- cx, global, module, TypedObjectModuleObject::StructTypePrototype);
- if (!structType)
-- return nullptr;
-+ return false;
-
- RootedValue structTypeValue(cx, ObjectValue(*structType));
- if (!JSObject::defineProperty(cx, module, cx->names().StructType,
- structTypeValue,
- nullptr, nullptr,
- JSPROP_READONLY | JSPROP_PERMANENT))
-- return nullptr;
-+ return false;
-
- // Everything is setup, install module on the global object:
- RootedValue moduleValue(cx, ObjectValue(*module));
-@@ -1407,7 +1407,7 @@
- nullptr, nullptr,
- 0))
- {
-- return nullptr;
-+ return false;
- }
-
- return module;
-@@ -2466,7 +2466,7 @@
- if (length < 0) {
- JS_ReportErrorNumber(cx, js_GetErrorMessage,
- nullptr, JSMSG_TYPEDOBJECT_BAD_ARGS);
-- return nullptr;
-+ return false;
- }
- Rooted<TypedObject*> obj(cx, createZeroed(cx, callee, length));
- if (!obj)
-
---- a/js/src/frontend/BytecodeCompiler.cpp 2015-06-03 22:48:48.000000000 +0200
-+++ b/js/src/frontend/BytecodeCompiler.cpp 2015-06-08 01:15:08.080302638 +0200
-@@ -544,7 +544,7 @@
-
- RootedScriptSource sourceObject(cx, CreateScriptSourceObject(cx, options));
- if (!sourceObject)
-- return nullptr;
-+ return false;
- ScriptSource* ss = sourceObject->source();
-
- SourceCompressionTask sct(cx);
---- a/js/xpconnect/wrappers/XrayWrapper.cpp 2015-06-03 22:48:45.000000000 +0200
-+++ b/js/xpconnect/wrappers/XrayWrapper.cpp 2015-06-08 01:15:35.672193557 +0200
-@@ -351,7 +351,7 @@
- {
- JSAutoCompartment ac(cx, target);
- if (!JS_GetClassPrototype(cx, key, protop))
-- return nullptr;
-+ return false;
- }
- return JS_WrapObject(cx, protop);
- }
---- a/netwerk/ipc/NeckoParent.cpp 2015-06-03 22:46:41.000000000 +0200
-+++ b/netwerk/ipc/NeckoParent.cpp 2015-06-08 01:16:10.200055747 +0200
-@@ -359,7 +359,7 @@
- RtspChannelParent* p = static_cast<RtspChannelParent*>(aActor);
- return p->Init(aConnectArgs);
- #else
-- return nullptr;
-+ return false;
- #endif
- }
-
diff --git a/libre-testing/icecat/freetype26.patch b/libre-testing/icecat/freetype26.patch
deleted file mode 100644
index c1eb49497..000000000
--- a/libre-testing/icecat/freetype26.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-
-# HG changeset patch
-# User NiLuJe <ninuje@gmail.com>
-# Date 1426721573 14400
-# Node ID afd840d66e6a775dc2ed35dd3add01ff07f950fe
-# Parent 35515400af363bfc141353acd474814567c43c54
-Bug 1143411 - Fix build against latest freetype code. r=glandium
-
-diff --git a/config/system-headers b/config/system-headers
---- a/config/system-headers
-+++ b/config/system-headers
-@@ -465,16 +465,17 @@ freetype/tttables.h
- freetype/t1tables.h
- freetype/ftlcdfil.h
- freetype/ftsizes.h
- freetype/ftadvanc.h
- freetype/ftbitmap.h
- freetype/ftxf86.h
- freetype.h
- ftcache.h
-+ftfntfmt.h
- ftglyph.h
- ftsynth.h
- ftoutln.h
- ttnameid.h
- tttables.h
- t1tables.h
- ftlcdfil.h
- ftsizes.h
-
diff --git a/libre-testing/icecat/gnu_headshadow.png b/libre-testing/icecat/gnu_headshadow.png
deleted file mode 100644
index e0f73a3bf..000000000
--- a/libre-testing/icecat/gnu_headshadow.png
+++ /dev/null
Binary files differ
diff --git a/libre-testing/icecat/icecat-fixed-loading-icon.png b/libre-testing/icecat/icecat-fixed-loading-icon.png
deleted file mode 100644
index 55f25e591..000000000
--- a/libre-testing/icecat/icecat-fixed-loading-icon.png
+++ /dev/null
Binary files differ
diff --git a/libre-testing/icecat/icecat-install-dir.patch b/libre-testing/icecat/icecat-install-dir.patch
deleted file mode 100644
index e15bf0b68..000000000
--- a/libre-testing/icecat/icecat-install-dir.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nur a/config/baseconfig.mk c/config/baseconfig.mk
---- a/config/baseconfig.mk 2014-10-09 12:52:39.000000000 -0200
-+++ b/config/baseconfig.mk 2014-10-21 18:34:35.803894661 -0200
-@@ -4,7 +4,7 @@
- # whether a normal build is happening or whether the check is running.
- 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)
-+installdir = $(libdir)/$(MOZ_APP_NAME)
- sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION)
- ifndef TOP_DIST
- TOP_DIST = dist
diff --git a/libre-testing/icecat/icecat.desktop b/libre-testing/icecat/icecat.desktop
deleted file mode 100644
index d2c0ccb03..000000000
--- a/libre-testing/icecat/icecat.desktop
+++ /dev/null
@@ -1,352 +0,0 @@
-[Desktop Entry]
-Name=GNU IceCat
-GenericName=Web Browser
-GenericName[ar]=متصفح ويب
-GenericName[ast]=Restolador Web
-GenericName[bn]=ওয়েব ব্রাউজার
-GenericName[ca]=Navegador web
-GenericName[cs]=Webový prohlížeč
-GenericName[da]=Webbrowser
-GenericName[el]=Περιηγητής διαδικτύου
-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[tr]=Web Tarayıcı
-GenericName[ug]=توركۆرگۈ
-GenericName[uk]=Веб-браузер
-GenericName[vi]=Trình duyệt Web
-GenericName[zh_CN]=网络浏览器
-GenericName[zh_TW]=網路瀏覽器
-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[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web)
-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[tr]=İnternet'te Gezinin
-Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ
-Comment[uk]=Перегляд сторінок Інтернету
-Comment[vi]=Để duyệt các trang web
-Comment[zh_CN]=浏览互联网
-Comment[zh_TW]=瀏覽網際網路
-Exec=icecat %u
-Terminal=false
-Type=Application
-Icon=icecat
-Categories=Network;WebBrowser;
-MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;
-StartupNotify=true
-Actions=NewTab;NewWindow;NewPrivateWindow;
-
-[Desktop Action NewTab]
-Name=Open new tab
-Name[ach]=Yab dirica matidi manyen
-Name[af]=Open nuwe oortjie
-Name[an]=Ubrir una pestanya nueva
-Name[ar]=افتح لسانًا جديدًا
-Name[as]=নতুন টেব খোলক
-Name[ast]=Abrir llingüeta nueva
-Name[az]=Yeni vərəq aç
-Name[be]=Адкрыць новую ўстаўку
-Name[bg]=Отваряне на нов подпрозорец
-Name[bn_BD]=নতুন ট্যাব খুলুন
-Name[bn_IN]=নতুন ট্যাব খুলুন
-Name[br]=Digeriñ un ivinell nevez
-Name[bs]=Otvori novi tab
-Name[ca]=Obre una pestanya nova
-Name[cs]=Otevřít nový panel
-Name[cy]=Agor tab newydd
-Name[da]=Åbn nyt faneblad
-Name[de]=Neuen Tab öffnen
-Name[dsb]=Nowy rejtark wócyniś
-Name[el]=Άνοιγμα νέας καρτέλας
-Name[eo]=Malfermi novan langeton
-Name[es_AR]=Abrir nueva pestaña
-Name[es_CL]=Abrir nueva pestaña
-Name[es_ES]=Abrir pestaña nueva
-Name[es_MX]=Abrir una pestaña nueva
-Name[et]=Ava uus kaart
-Name[eu]=Ireki fitxa berria
-Name[ff]=Uddit tabbere hesere
-Name[fi]=Avaa uusi välilehti
-Name[fr]=Ouvrir un nouvel onglet
-Name[fy_NL]=Iepenje nij ljepblêd
-Name[ga_IE]=Oscail i gcluaisín nua
-Name[gd]=Fosgail taba ùr
-Name[gl]=Abrir unha nova lapela
-Name[gu_IN]=નવી ટૅબને ખોલો
-Name[he]=פתיחת לשונית חדשה
-Name[hi_IN]=नया टैब खोलें
-Name[hr]=Otvori novu karticu
-Name[hsb]=Nowy rajtark wočinić
-Name[hu]=Új lap megnyitása
-Name[hy_AM]=Բացել նոր ներդիր
-Name[id]=Buka tab baru
-Name[is]=Opna nýjan flipa
-Name[it]=Apri nuova scheda
-Name[ja]=新しいタブ
-Name[kk]=Жаңа бетті ашу
-Name[kn]=ಹೊಸ ಹಾಳೆಯನ್ನು ತೆರೆ
-Name[ko]=새 탭 열기
-Name[lij]=Àrvi nêuvo féuggio
-Name[lt]=Atverti naują kortelę
-Name[mai]=नव टैब खोलू
-Name[mk]=Отвори ново јазиче
-Name[ml]=പുതിയ റ്റാബ് തുറക്കുക
-Name[mr]=नवीन टॅब उघडा
-Name[ms]=Buka tab baru
-Name[nb_NO]=Åpne ny fane
-Name[nl]=Nieuw tabblad openen
-Name[nn_NO]=Opna ny fane
-Name[or]=ନୂତନ ଟ୍ୟାବ ଖୋଲନ୍ତୁ
-Name[pa_IN]=ਨਵੀਂ ਟੈਬ ਖੋਲ੍ਹੋ
-Name[pl]=Otwórz nową kartę
-Name[pt_BR]=Nova aba
-Name[pt_PT]=Abrir novo separador
-Name[rm]=Avrir in nov tab
-Name[ro]=Deschide o filă nouă
-Name[ru]=Открыть новую вкладку
-Name[si]=නව ටැබය විවෘත කරන්න
-Name[sk]=Otvoriť novú kartu
-Name[sl]=Odpri nov zavihek
-Name[son]=Nor loku taaga feeri
-Name[sq]=Hap skedë të re
-Name[sr]=Отвори нови језичак
-Name[sv_SE]=Öppna ny flik
-Name[ta]=புதிய கீற்றைத் திற
-Name[te]=కొత్త టాబ్ తెరువుము
-Name[th]=เปิดแท็บใหม่
-Name[tr]=Yeni sekme aç
-Name[uk]=Відкрити нову вкладку
-Name[uz]=Yangi ichki oyna ochish
-Name[vi]=Mở thẻ mới
-Name[xh]=Vula ithebhu entsha
-Name[zh_CN]=打开新标签页
-Name[zh_TW]=開啟新分頁
-Exec=icecat -new-tab about:newtab
-
-[Desktop Action NewWindow]
-Name=Open new window
-Name[ach]=Yab dirica manyen
-Name[af]=Open nuwe venster
-Name[an]=Ubrir una nueva finestra
-Name[ar]=افتح نافذة جديدة
-Name[as]=নতুন উইন্ডো খোলক
-Name[ast]=Abrir ventana nueva
-Name[az]=Yeni pəncərə aç
-Name[be]=Адкрыць новае акно
-Name[bg]=Отваряне на нов прозорец
-Name[bn_BD]=নতুন উইন্ডো খুলুন
-Name[bn_IN]=নতুন উইন্ডো খুলুন
-Name[br]=Digeriñ ur prenestr nevez
-Name[bs]=Otvori novi prozor
-Name[ca]=Obre una finestra nova
-Name[cs]=Otevřít nové okno
-Name[cy]=Agor ffenestr newydd
-Name[da]=Åbn nyt vindue
-Name[de]=Neues Fenster öffnen
-Name[dsb]=Nowe wokno wócyniś
-Name[el]=Άνοιγμα νέου παραθύρου
-Name[eo]=Malfermi novan fenestron
-Name[es_AR]=Abrir nueva ventana
-Name[es_CL]=Abrir nueva ventana
-Name[es_ES]=Abrir nueva ventana
-Name[es_MX]=Abrir nueva ventana
-Name[et]=Ava uus aken
-Name[eu]=Ireki leiho berria
-Name[ff]=Uddit henorde hesere
-Name[fi]=Avaa uusi ikkuna
-Name[fr]=Ouvrir une nouvelle fenêtre
-Name[fy_NL]=Iepenje nij finster
-Name[ga_IE]=Oscail fuinneog nua
-Name[gd]=Fosgail uinneag ùr
-Name[gl]=Abrir unha nova xanela
-Name[gu_IN]=નવી વિન્ડોને ખોલો
-Name[he]=פתח חלון חדש
-Name[hi_IN]=नई विंडो खोलें
-Name[hr]=Otvori novi prozor
-Name[hsb]=Nowe wokno wočinić
-Name[hu]=Új ablak megnyitása
-Name[hy_AM]=Բացել նոր պատուհան
-Name[id]=Buka jendela baru
-Name[is]=Opna nýjan glugga
-Name[it]=Apri nuova finestra
-Name[ja]=新しいウィンドウ
-Name[kk]=Жаңа терезені ашу
-Name[kn]=ಹೊಸ ವಿಂಡೊವನ್ನು ತೆರೆ
-Name[ko]=새 창 열기
-Name[lij]=Àrvi nêuvo barcón
-Name[lt]=Atverti naują langą
-Name[mai]=नई विंडो खोलू
-Name[mk]=Отвори нов прозорец
-Name[ml]=പുതിയ ജാലകം തുറക്കുക
-Name[mr]=नवीन पटल उघडा
-Name[ms]=Buka tetingkap baru
-Name[nb_NO]=Åpne nytt vindu
-Name[nl]=Een nieuw venster openen
-Name[nn_NO]=Opna nytt vindauge
-Name[or]=ନୂତନ ୱିଣ୍ଡୋ ଖୋଲନ୍ତୁ
-Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ ਖੋਲ੍ਹੋ
-Name[pl]=Otwórz nowe okno
-Name[pt_BR]=Nova janela
-Name[pt_PT]=Abrir nova janela
-Name[rm]=Avrir ina nova fanestra
-Name[ro]=Deschide o nouă fereastră
-Name[ru]=Открыть новое окно
-Name[si]=නව කවුළුවක් විවෘත කරන්න
-Name[sk]=Otvoriť nové okno
-Name[sl]=Odpri novo okno
-Name[son]=Zanfun taaga feeri
-Name[sq]=Hap dritare të re
-Name[sr]=Отвори нови прозор
-Name[sv_SE]=Öppna nytt fönster
-Name[ta]=புதிய சாளரத்தை திற
-Name[te]=కొత్త విండో తెరువుము
-Name[th]=เปิดหน้าต่างใหม่
-Name[tr]=Yeni pencere aç
-Name[uk]=Відкрити нове вікно
-Name[uz]=Yangi oyna ochish
-Name[vi]=Mở cửa sổ mới
-Name[xh]=Vula iwindow entsha
-Name[zh_CN]=打开新窗口
-Name[zh_TW]=開啟新視窗
-Exec=icecat -new-window
-
-[Desktop Action NewPrivateWindow]
-Name=New private window
-Name[ach]=Dirica manyen me mung
-Name[af]=Nuwe privaatvenster
-Name[an]=Nueva finestra de navegación privada
-Name[ar]=نافذة خاصة جديدة
-Name[as]=নতুন ব্যক্তিগত উইন্ডো
-Name[ast]=Ventana privada nueva
-Name[az]=Yeni məxfi pəncərə
-Name[be]=Новае акно адасаблення
-Name[bg]=Нов прозорец за поверително сърфиране
-Name[bn_BD]=নতুন ব্যক্তিগত উইন্ডো
-Name[bn_IN]=নতুন ব্যাক্তিগত উইন্ডো
-Name[br]=Prenestr merdeiñ prevez nevez
-Name[bs]=Novi privatni prozor
-Name[ca]=Finestra privada nova
-Name[cs]=Nové anonymní okno
-Name[cy]=Ffenestr breifat newydd
-Name[da]=Nyt privat vindue
-Name[de]=Neues privates Fenster öffnen
-Name[dsb]=Nowe priwatne wokno
-Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης
-Name[eo]=Nova privata fenestro
-Name[es_AR]=Nueva ventana privada
-Name[es_CL]=Nueva ventana privada
-Name[es_ES]=Nueva ventana privada
-Name[es_MX]=Nueva ventana privada
-Name[et]=Uus privaatne aken
-Name[eu]=Leiho pribatu berria
-Name[ff]=Henorde suturo hesere
-Name[fi]=Uusi yksityinen ikkuna
-Name[fr]=Nouvelle fenêtre de navigation privée
-Name[fy_NL]=Nij priveefinster
-Name[ga_IE]=Fuinneog nua phríobháideach
-Name[gd]=Uinneag phrìobhaideach ùr
-Name[gl]=Nova xanela privada
-Name[gu_IN]=નવી ખાનગી વિન્ડો
-Name[he]=חלון פרטי חדש
-Name[hi_IN]=नया निजी विंडो
-Name[hr]=Novi privatni prozor
-Name[hsb]=Nowe priwatne wokno
-Name[hu]=Új privát ablak
-Name[hy_AM]=Գաղտնի դիտարկում
-Name[id]=Jendela mode pribadi baru
-Name[is]=Nýr einkagluggi
-Name[it]=Nuova finestra anonima
-Name[ja]=新しいプライベートウィンドウ
-Name[kk]=Жаңа жекелік терезе
-Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ
-Name[ko]=새 사생활 보호 창
-Name[lij]=Nêuvo barcón privòu
-Name[lt]=Atverti privačiojo naršymo langą
-Name[mai]=नव निज विंडो
-Name[mk]=Нов прозорец за приватно сурфање
-Name[ml]=പുതിയ സ്വകാര്യ ജാലകം
-Name[mr]=नवीन वैयक्तिक पटल
-Name[ms]=Tetingkap peribadi baharu
-Name[nb_NO]=Nytt privat vindu
-Name[nl]=Nieuw privévenster
-Name[nn_NO]=Nytt privat vindauge
-Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ
-Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ
-Name[pl]=Nowe okno w trybie prywatnym
-Name[pt_BR]=Nova janela privativa
-Name[pt_PT]=Nova janela privada
-Name[rm]=Nova fanestra privata
-Name[ro]=Fereastră fără urme nouă
-Name[ru]=Новое приватное окно
-Name[si]=නව පුද්ගලික කවුළුව
-Name[sk]=Nové okno v režime Súkromné prehliadanie
-Name[sl]=Novo zasebno okno
-Name[son]=Sutura zanfun taaga
-Name[sq]=Dritare e re private
-Name[sr]=Нови приватни прозор
-Name[sv_SE]=Nytt privat fönster
-Name[ta]=புதிய தனிப்பட்ட சாளரம்
-Name[te]=కొత్త ఆంతరంగిక విండో
-Name[th]=หน้าต่างท่องเว็บแบบส่วนตัวใหม่
-Name[tr]=Yeni gizli pencere
-Name[uk]=Нове приватне вікно
-Name[uz]=Yangi shaxsiy oyna
-Name[vi]=Cửa sổ riêng tư mới
-Name[xh]=Ifestile yangasese entsha
-Name[zh_CN]=新建隐私浏览窗口
-Name[zh_TW]=新增隱私視窗
-Exec=icecat -private-window
diff --git a/libre-testing/icecat/icecat.install b/libre-testing/icecat/icecat.install
deleted file mode 100644
index 1a1f4b16b..000000000
--- a/libre-testing/icecat/icecat.install
+++ /dev/null
@@ -1,13 +0,0 @@
-post_install() {
- update-desktop-database -q
- gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
-}
-
-post_upgrade() {
- post_install
-}
-
-post_remove() {
- post_install
-}
-
diff --git a/libre-testing/icecat/libre.patch b/libre-testing/icecat/libre.patch
deleted file mode 100644
index 16f77f72e..000000000
--- a/libre-testing/icecat/libre.patch
+++ /dev/null
@@ -1,852 +0,0 @@
-diff -Nur a/browser/app/profile/icecat.js b/browser/app/profile/icecat.js
---- a/browser/app/profile/icecat.js 2014-10-09 12:56:31.000000000 -0200
-+++ b/browser/app/profile/icecat.js 2014-10-21 14:05:40.131766712 -0200
-@@ -281,11 +281,6 @@
- pref("browser.slowStartup.timeThreshold", 50000);
- pref("browser.slowStartup.maxSamples", 5);
-
--// This url, if changed, MUST continue to point to an https url. Pulling arbitrary content to inject into
--// this page over http opens us up to a man-in-the-middle attack that we'd rather not face. If you are a downstream
--// repackager of this code using an alternate snippet url, please keep your users safe
--pref("browser.aboutHomeSnippets.updateUrl", "https://snippets.mozilla.com/%STARTPAGE_VERSION%/%NAME%/%VERSION%/%APPBUILDID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/");
--
- pref("browser.enable_automatic_image_resizing", true);
- pref("browser.chrome.site_icons", true);
- pref("browser.chrome.favicons", true);
-diff -Nur a/browser/base/content/abouthome/aboutHome.css b/browser/base/content/abouthome/aboutHome.css
---- a/browser/base/content/abouthome/aboutHome.css 2014-10-09 12:53:31.000000000 -0200
-+++ b/browser/base/content/abouthome/aboutHome.css 2014-10-21 14:11:09.936570764 -0200
-@@ -49,11 +49,6 @@
- background-repeat: no-repeat;
- }
-
--#searchForm,
--#snippets {
-- width: 470px;
--}
--
- #searchForm {
- display: -moz-box;
- }
-@@ -72,8 +67,7 @@
- #searchEngineLogo {
- display: inline-block;
- height: 28px;
-- width: 70px;
-- min-width: 70px;
-+ width: 47px;
- }
-
- #searchText {
-@@ -145,48 +139,6 @@
- transition-duration: 0ms;
- }
-
--#defaultSnippet1,
--#defaultSnippet2,
--#rightsSnippet {
-- display: block;
-- min-height: 38px;
-- background: 30px center no-repeat;
-- padding: 6px 0;
-- -moz-padding-start: 79px;
--}
--
--#rightsSnippet[hidden] {
-- display: none;
--}
--
--#defaultSnippet1:-moz-dir(rtl),
--#defaultSnippet2:-moz-dir(rtl),
--#rightsSnippet:-moz-dir(rtl) {
-- background-position: right 30px center;
--}
--
--#defaultSnippet1 {
-- background-image: url("chrome://browser/content/abouthome/snippet1.png");
--}
--
--#defaultSnippet2 {
-- background-image: url("chrome://browser/content/abouthome/snippet2.png");
--}
--
--#snippets {
-- display: inline-block;
-- text-align: start;
-- margin: 12px 0;
-- color: #3c3c3c;
-- font-size: 75%;
-- /* 12px is the computed font size, 15px the computed line height of the snippets
-- with Segoe UI on a default Windows 7 setup. The 15/12 multiplier approximately
-- converts em from units of font-size to units of line-height. The goal is to
-- preset the height of a three-line snippet to avoid visual moving/flickering as
-- the snippets load. */
-- min-height: calc(15/12 * 3em);
--}
--
- #launcher {
- display: -moz-box;
- -moz-box-align: center;
-@@ -335,26 +287,25 @@
- width: 32px;
- }
-
--#aboutMozilla {
-+#aboutGNU {
- display: block;
-- position: relative; /* pin wordmark to edge of document, not of viewport */
- -moz-box-ordinal-group: 0;
- opacity: .5;
- transition: opacity 150ms;
- }
-
--#aboutMozilla:hover {
-+#aboutGNU:hover {
- opacity: 1;
- }
-
--#aboutMozilla::before {
-- content: url("chrome://browser/content/abouthome/mozilla.png");
-+#aboutGNU::before {
-+ content: url("chrome://browser/content/abouthome/gnu_headshadow.png");
- display: block;
- position: absolute;
- top: 12px;
- right: 12px;
-- width: 69px;
-- height: 19px;
-+ width: 200px;
-+ height: 110px;
- }
-
- /* [HiDPI]
-@@ -366,26 +317,6 @@
- background-image: url("chrome://branding/content/about-logo@2x.png");
- }
-
-- #defaultSnippet1,
-- #defaultSnippet2,
-- #rightsSnippet {
-- background-size: 40px;
-- }
--
-- #defaultSnippet1 {
-- background-image: url("chrome://browser/content/abouthome/snippet1@2x.png");
-- }
--
-- #defaultSnippet2 {
-- background-image: url("chrome://browser/content/abouthome/snippet2@2x.png");
-- }
--
-- .launchButton::before,
-- #aboutMozilla::before {
-- transform: scale(.5);
-- transform-origin: 0 0;
-- }
--
- #downloads::before {
- content: url("chrome://browser/content/abouthome/downloads@2x.png");
- }
-@@ -421,9 +352,5 @@
- body[narrow] #restorePreviousSession::before {
- content: url("chrome://browser/content/abouthome/restore@2x.png");
- }
--
-- #aboutMozilla::before {
-- content: url("chrome://browser/content/abouthome/mozilla@2x.png");
-- }
- }
-
-diff -Nur a/browser/base/content/abouthome/aboutHome.js b/browser/base/content/abouthome/aboutHome.js
---- a/browser/base/content/abouthome/aboutHome.js 2014-10-09 12:53:31.000000000 -0200
-+++ b/browser/base/content/abouthome/aboutHome.js 2014-10-21 14:21:10.012011384 -0200
-@@ -3,149 +3,44 @@
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
- const SEARCH_ENGINES = {
-- "Google": {
-- // This is the "2x" image designed for OS X retina resolution, Windows at 192dpi, etc.;
-- // it will be scaled down as necessary on lower-dpi displays.
-- image: "data:image/png;base64," +
-- "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"
-+ "DuckDuckGo HTML": {
-+ image: "data:image/png;base64," +
-+ "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"
- }
- };
-
--// The process of adding a new default snippet involves:
--// * add a new entity to aboutHome.dtd
--// * add a <span/> for it in aboutHome.xhtml
--// * add an entry here in the proper ordering (based on spans)
--// The <a/> part of the snippet will be linked to the corresponding url.
--const DEFAULT_SNIPPETS_URLS = [ "" ];
--
--const SNIPPETS_UPDATE_INTERVAL_MS = 86400000; // 1 Day.
--
--// IndexedDB storage constants.
--const DATABASE_NAME = "abouthome";
--const DATABASE_VERSION = 1;
--const SNIPPETS_OBJECTSTORE_NAME = "snippets";
--
- // This global tracks if the page has been set up before, to prevent double inits
- let gInitialized = false;
- let gObserver = new MutationObserver(function (mutations) {
-@@ -153,7 +48,6 @@
- if (mutation.attributeName == "searchEngineName") {
- setupSearchEngine();
- if (!gInitialized) {
--// ensureSnippetsMapThen(loadSnippets);
- gInitialized = true;
- }
- return;
-@@ -178,118 +72,6 @@
- window.removeEventListener("resize", fitToWidth);
- });
-
--// This object has the same interface as Map and is used to store and retrieve
--// the snippets data. It is lazily initialized by ensureSnippetsMapThen(), so
--// be sure its callback returned before trying to use it.
--let gSnippetsMap;
--let gSnippetsMapCallbacks = [];
--
--/**
-- * Ensure the snippets map is properly initialized.
-- *
-- * @param aCallback
-- * Invoked once the map has been initialized, gets the map as argument.
-- * @note Snippets should never directly manage the underlying storage, since
-- * it may change inadvertently.
-- */
--function ensureSnippetsMapThen(aCallback)
--{
--return;
-- if (gSnippetsMap) {
-- aCallback(gSnippetsMap);
-- return;
-- }
--
-- // Handle multiple requests during the async initialization.
-- gSnippetsMapCallbacks.push(aCallback);
-- if (gSnippetsMapCallbacks.length > 1) {
-- // We are already updating, the callbacks will be invoked when done.
-- return;
-- }
--
-- let invokeCallbacks = function () {
-- if (!gSnippetsMap) {
-- gSnippetsMap = Object.freeze(new Map());
-- }
--
-- for (let callback of gSnippetsMapCallbacks) {
-- callback(gSnippetsMap);
-- }
-- gSnippetsMapCallbacks.length = 0;
-- }
--
-- let openRequest = indexedDB.open(DATABASE_NAME, DATABASE_VERSION);
--
-- openRequest.onerror = function (event) {
-- // Try to delete the old database so that we can start this process over
-- // next time.
-- indexedDB.deleteDatabase(DATABASE_NAME);
-- invokeCallbacks();
-- };
--
-- openRequest.onupgradeneeded = function (event) {
-- let db = event.target.result;
-- if (!db.objectStoreNames.contains(SNIPPETS_OBJECTSTORE_NAME)) {
-- db.createObjectStore(SNIPPETS_OBJECTSTORE_NAME);
-- }
-- }
--
-- openRequest.onsuccess = function (event) {
-- let db = event.target.result;
--
-- db.onerror = function (event) {
-- invokeCallbacks();
-- }
--
-- db.onversionchange = function (event) {
-- event.target.close();
-- invokeCallbacks();
-- }
--
-- let cache = new Map();
-- let cursorRequest = db.transaction(SNIPPETS_OBJECTSTORE_NAME)
-- .objectStore(SNIPPETS_OBJECTSTORE_NAME).openCursor();
-- cursorRequest.onerror = function (event) {
-- invokeCallbacks();
-- }
--
-- cursorRequest.onsuccess = function(event) {
-- let cursor = event.target.result;
--
-- // Populate the cache from the persistent storage.
-- if (cursor) {
-- cache.set(cursor.key, cursor.value);
-- cursor.continue();
-- return;
-- }
--
-- // The cache has been filled up, create the snippets map.
-- gSnippetsMap = Object.freeze({
-- get: function (aKey) cache.get(aKey),
-- set: function (aKey, aValue) {
-- db.transaction(SNIPPETS_OBJECTSTORE_NAME, "readwrite")
-- .objectStore(SNIPPETS_OBJECTSTORE_NAME).put(aValue, aKey);
-- return cache.set(aKey, aValue);
-- },
-- has: function (aKey) cache.has(aKey),
-- delete: function (aKey) {
-- db.transaction(SNIPPETS_OBJECTSTORE_NAME, "readwrite")
-- .objectStore(SNIPPETS_OBJECTSTORE_NAME).delete(aKey);
-- return cache.delete(aKey);
-- },
-- clear: function () {
-- db.transaction(SNIPPETS_OBJECTSTORE_NAME, "readwrite")
-- .objectStore(SNIPPETS_OBJECTSTORE_NAME).clear();
-- return cache.clear();
-- },
-- get size() cache.size
-- });
--
-- setTimeout(invokeCallbacks, 0);
-- }
-- }
--}
--
- function onSearchSubmit(aEvent)
- {
- let searchTerms = document.getElementById("searchText").value;
-@@ -339,159 +121,6 @@
-
- }
-
--/**
-- * Inform the test harness that we're done loading the page.
-- */
--function loadSucceeded()
--{
-- var event = new CustomEvent("AboutHomeLoadSnippetsSucceeded", {bubbles:true});
-- document.dispatchEvent(event);
--}
--
--/**
-- * Update the local snippets from the remote storage, then show them through
-- * showSnippets.
-- */
--function loadSnippets()
--{
--return;
-- if (!gSnippetsMap)
-- throw new Error("Snippets map has not properly been initialized");
--
-- // Allow tests to modify the snippets map before using it.
-- var event = new CustomEvent("AboutHomeLoadSnippets", {bubbles:true});
-- document.dispatchEvent(event);
--
-- // Check cached snippets version.
-- let cachedVersion = gSnippetsMap.get("snippets-cached-version") || 0;
-- let currentVersion = document.documentElement.getAttribute("snippetsVersion");
-- if (cachedVersion < currentVersion) {
-- // The cached snippets are old and unsupported, restart from scratch.
-- gSnippetsMap.clear();
-- }
--
-- // Check last snippets update.
-- let lastUpdate = gSnippetsMap.get("snippets-last-update");
-- let updateURL = document.documentElement.getAttribute("snippetsURL");
-- let shouldUpdate = !lastUpdate ||
-- Date.now() - lastUpdate > SNIPPETS_UPDATE_INTERVAL_MS;
-- if (updateURL && shouldUpdate) {
-- // Try to update from network.
-- let xhr = new XMLHttpRequest();
-- try {
-- xhr.open("GET", updateURL, true);
-- } catch (ex) {
-- showSnippets();
-- loadSucceeded();
-- return;
-- }
-- // Even if fetching should fail we don't want to spam the server, thus
-- // set the last update time regardless its results. Will retry tomorrow.
-- gSnippetsMap.set("snippets-last-update", Date.now());
-- xhr.onerror = function (event) {
-- showSnippets();
-- };
-- xhr.onload = function (event)
-- {
-- if (xhr.status == 200) {
-- gSnippetsMap.set("snippets", xhr.responseText);
-- gSnippetsMap.set("snippets-cached-version", currentVersion);
-- }
-- showSnippets();
-- loadSucceeded();
-- };
-- xhr.send(null);
-- } else {
-- showSnippets();
-- loadSucceeded();
-- }
--}
--
--/**
-- * Shows locally cached remote snippets, or default ones when not available.
-- *
-- * @note: snippets should never invoke showSnippets(), or they may cause
-- * a "too much recursion" exception.
-- */
--let _snippetsShown = false;
--function showSnippets()
--{
--return;
-- let snippetsElt = document.getElementById("snippets");
--
-- // Show about:rights notification, if needed.
-- let showRights = document.documentElement.getAttribute("showKnowYourRights");
-- if (showRights) {
-- let rightsElt = document.getElementById("rightsSnippet");
-- let anchor = rightsElt.getElementsByTagName("a")[0];
-- anchor.href = "about:rights";
-- snippetsElt.appendChild(rightsElt);
-- rightsElt.removeAttribute("hidden");
-- return;
-- }
--
-- if (!gSnippetsMap)
-- throw new Error("Snippets map has not properly been initialized");
-- if (_snippetsShown) {
-- // There's something wrong with the remote snippets, just in case fall back
-- // to the default snippets.
-- showDefaultSnippets();
-- throw new Error("showSnippets should never be invoked multiple times");
-- }
-- _snippetsShown = true;
--
-- let snippets = gSnippetsMap.get("snippets");
-- // If there are remotely fetched snippets, try to to show them.
-- if (snippets) {
-- // Injecting snippets can throw if they're invalid XML.
-- try {
-- snippetsElt.innerHTML = snippets;
-- // Scripts injected by innerHTML are inactive, so we have to relocate them
-- // through DOM manipulation to activate their contents.
-- Array.forEach(snippetsElt.getElementsByTagName("script"), function(elt) {
-- let relocatedScript = document.createElement("script");
-- relocatedScript.type = "text/javascript;version=1.8";
-- relocatedScript.text = elt.text;
-- elt.parentNode.replaceChild(relocatedScript, elt);
-- });
-- return;
-- } catch (ex) {
-- // Bad content, continue to show default snippets.
-- }
-- }
--
-- showDefaultSnippets();
--}
--
--/**
-- * Clear snippets element contents and show default snippets.
-- */
--function showDefaultSnippets()
--{
--return;
-- // Clear eventual contents...
-- let snippetsElt = document.getElementById("snippets");
-- snippetsElt.innerHTML = "";
--
-- // ...then show default snippets.
-- let defaultSnippetsElt = document.getElementById("defaultSnippets");
-- let entries = defaultSnippetsElt.querySelectorAll("span");
-- // Choose a random snippet. Assume there is always at least one.
-- let randIndex = Math.floor(Math.random() * entries.length);
-- let entry = entries[randIndex];
-- // Inject url in the eventual link.
-- if (DEFAULT_SNIPPETS_URLS[randIndex]) {
-- let links = entry.getElementsByTagName("a");
-- // Default snippets can have only one link, otherwise something is messed
-- // up in the translation.
-- if (links.length == 1) {
-- links[0].href = DEFAULT_SNIPPETS_URLS[randIndex];
-- }
-- }
-- // Move the default snippet to the snippets element.
-- snippetsElt.appendChild(entry);
--}
--
- function fitToWidth() {
- if (window.scrollMaxX) {
- document.body.setAttribute("narrow", "true");
-diff -Nur a/browser/base/content/abouthome/aboutHome.xhtml b/browser/base/content/abouthome/aboutHome.xhtml
---- a/browser/base/content/abouthome/aboutHome.xhtml 2014-10-09 12:53:31.000000000 -0200
-+++ b/browser/base/content/abouthome/aboutHome.xhtml 2014-10-21 14:23:10.525956357 -0200
-@@ -101,6 +101,7 @@
-
- <div class="spacer"/>
-
-+ <a id="aboutGNU" href="http://gnu.org"></a>
- </body>
- </html>
-
-diff -Nur a/browser/base/jar.mn b/browser/base/jar.mn
---- a/browser/base/jar.mn 2014-10-09 12:53:30.000000000 -0200
-+++ b/browser/base/jar.mn 2014-10-21 14:24:18.198691296 -0200
-@@ -32,6 +32,7 @@
- content/browser/abouthome/settings.png (content/abouthome/settings.png)
- content/browser/abouthome/restore.png (content/abouthome/restore.png)
- content/browser/abouthome/restore-large.png (content/abouthome/restore-large.png)
-+ content/browser/abouthome/gnu_headshadow.png (content/abouthome/gnu_headshadow.png)
- content/browser/abouthome/snippet1@2x.png (content/abouthome/snippet1@2x.png)
- content/browser/abouthome/snippet2@2x.png (content/abouthome/snippet2@2x.png)
- content/browser/abouthome/downloads@2x.png (content/abouthome/downloads@2x.png)
-diff -Nur a/browser/locales/en-US/chrome/browser/aboutHome.dtd b/browser/locales/en-US/chrome/browser/aboutHome.dtd
---- a/browser/locales/en-US/chrome/browser/aboutHome.dtd 2015-01-27 16:19:19.000000000 -0200
-+++ b/browser/locales/en-US/chrome/browser/aboutHome.dtd 2015-01-29 12:19:21.741429014 -0200
-@@ -13,17 +13,6 @@
-
- <!ENTITY abouthome.searchEngineButton.label "Search">
-
--<!-- LOCALIZATION NOTE (abouthome.defaultSnippet1.v1):
-- text in <a/> will be linked to the IceCat features page on mozilla.com
---->
--<!ENTITY abouthome.defaultSnippet1.v1 "Thanks for choosing IceCat! To get the most out of your browser, learn more about the <a>latest features</a>.">
--<!-- LOCALIZATION NOTE (abouthome.defaultSnippet2.v1):
-- text in <a/> will be linked to the featured add-ons on addons.mozilla.org
---->
--<!ENTITY abouthome.defaultSnippet2.v1 "It's easy to customize your IceCat exactly the way you want it. <a>Choose from thousands of add-ons</a>.">
--<!-- LOCALIZATION NOTE (abouthome.rightsSnippet): text in <a/> will be linked to about:rights -->
--<!ENTITY abouthome.rightsSnippet "&brandFullName; is Free Software from the non-profit Mozilla Foundation. <a>Know your rights…</a>">
--
- <!ENTITY abouthome.bookmarksButton.label "Bookmarks">
- <!ENTITY abouthome.historyButton.label "History">
- <!ENTITY abouthome.settingsButton.label "Settings">
-diff -Nur a/browser/locales/en-US/chrome/browser-region/region.properties b/browser/locales/en-US/chrome/browser-region/region.properties
---- a/browser/locales/en-US/chrome/browser-region/region.properties 2015-01-27 16:20:32.000000000 -0200
-+++ b/browser/locales/en-US/chrome/browser-region/region.properties 2015-01-29 12:21:13.202346944 -0200
-@@ -3,17 +3,12 @@
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
- # Default search engine
--browser.search.defaultenginename=Google
-+browser.search.defaultenginename=DuckDuckGo HTML
-
- # Search engine order (order displayed in the search bar dropdown)s
--browser.search.order.1=Google
--browser.search.order.2=Yahoo
--browser.search.order.3=Bing
--
--# This is the default set of web based feed handlers shown in the reader
--# selection UI
--browser.contentHandlers.types.0.title=My Yahoo!
--browser.contentHandlers.types.0.uri=https://add.my.yahoo.com/rss?url=%s
-+browser.search.order.1=DuckDuckGo HTML
-+browser.search.order.2=DuckDuckGo Lite
-+browser.search.order.3=searx
-
- # increment this number when anything gets changed in the list below. This will
- # cause IceCat to re-read these prefs and inject any new handlers into the
-@@ -22,20 +17,10 @@
- # don't make any spelling errors here.
- gecko.handlerService.defaultHandlersVersion=4
-
--# The default set of protocol handlers for webcal:
--gecko.handlerService.schemes.webcal.0.name=30 Boxes
--gecko.handlerService.schemes.webcal.0.uriTemplate=https://30boxes.com/external/widget?refer=ff&url=%s
--
--# The default set of protocol handlers for mailto:
--gecko.handlerService.schemes.mailto.0.name=Yahoo! Mail
--gecko.handlerService.schemes.mailto.0.uriTemplate=https://compose.mail.yahoo.com/?To=%s
--gecko.handlerService.schemes.mailto.1.name=Gmail
--gecko.handlerService.schemes.mailto.1.uriTemplate=https://mail.google.com/mail/?extsrc=mailto&url=%s
--
- # The default set of protocol handlers for irc:
--gecko.handlerService.schemes.irc.0.name=Mibbit
--gecko.handlerService.schemes.irc.0.uriTemplate=
-+gecko.handlerService.schemes.irc.0.name=Freenode Web IRC
-+gecko.handlerService.schemes.irc.0.uriTemplate=https://webchat.freenode.net
-
- # The default set of protocol handlers for ircs:
--gecko.handlerService.schemes.ircs.0.name=Mibbit
--gecko.handlerService.schemes.ircs.0.uriTemplate=
-+gecko.handlerService.schemes.ircs.0.name=Freenode Web IRC
-+gecko.handlerService.schemes.ircs.0.uriTemplate=https://webchat.freenode.net
-diff -Nur a/browser/locales/generic/profile/bookmarks.html.in b/browser/locales/generic/profile/bookmarks.html.in
---- a/browser/locales/generic/profile/bookmarks.html.in 2015-06-03 17:49:30.000000000 -0300
-+++ b/browser/locales/generic/profile/bookmarks.html.in 2015-06-10 17:58:30.817963272 -0300
-@@ -11,8 +11,20 @@
- <DD>Add bookmarks to this folder to see them displayed on the Bookmarks Toolbar
- <DL><p>
- <HR>
-- <DT><A HREF="http://www.gnu.org/" ADD_DATE="1245542746" LAST_MODIFIED="1245542763" ICON_URI="http://www.gnu.org/graphics/gnu-head-mini.png" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAGFBMVEVFRUV+fn6mpqa/v7/Ozs7Y2Njg4OD8/Pwuhn+TAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9MBDhQ6Gd8s57cAAAEkSURBVHicXdFNc4JADAbgoP0Bi4d6dcGBMzp2z2rrnjulcsavnKuQ9+83K37vDAN5yIZsILws0uv3i7ugLTnAwpjBOsTLOE4VmmKQTFYBioGNKkI5drcCReRItmNAyinSCjianJo6A/aGRtRjtPadpB5CRkQRUaYPGbXW4UgKMfXQxDnJPIeJ0qyOrclrLXoqou8+5p7HM9EkT/JtyEsqB2QYnRv7sT2ArRPLf0kWOp1sA3hYPq3Oh/t0EAjjVIG703II9awr3l3BhxAf5foMLaaasPEZqm5A+0RzGCmuIKJbWi284csIJbzykBQ3aIADsL2CFtBWpovhA1Td7Q6NzqZ/B+38APG3HxU+sYO4B9Akt+AnqGbp/gmwTN6eAWt+gcv6B4rivVin0bWbAAAAAElFTkSuQmCC">GNU&#39;s not UNIX!</A>
-- <DT><A FEEDURL="http://planet.gnu.org/atom.xml" HREF="http://planet.gnu.org/">GNU Planet</A>
-- <DT><A HREF="http://www.fsf.org/" ADD_DATE="1245542771" LAST_MODIFIED="1245542780" ICON_URI="http://www.fsf.org/favicon.ico" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAAsTAAALEwEAmpwYAAADG0lEQVQoFQEQA+/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQECAAAAAAAAAAAAAAAAAAAA2qOp7tTXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAP///wAAAAAAAOCyt7pUXQcSEgcQDwAAAP///wAAAAAAAAD//x9NSDqNhQEBAQQAAAAAAAAAAAAAAAAQJiQGDQ0aPToZPjoAAQEAAAAAAAAAAAABAQEpZV4AAAAAAAAAAAAA////////////////pSIv05KZ////////////////////////////////AAAAAQAAAP///6krNwAAAAAAAPHc3ggSEQcSEQAAAAAAAAAAABY3NEGelQAAAAAAAAEBAQEAAAD///+YARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDg1g690CBgYAAAABAQEEAAAAAAAAS7etAAAAAAAAwGVtHklFIlJOAAAAAAAAAAAAAAAA+/X2BwYGAAAAAAAABAAAAAAAAB1IQwAAAAAAAAYNDBAmJB1IQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAgL//v4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAQEB//7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAECAv/+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////////////cqK3qzM////////////////////////////////8AAAABAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGuLjDf9F8oBAAAAAElFTkSuQmCC">Free Software Foundation</A>
-+ <DT><A HREF="https://www.parabola.nu/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABL0lEQVQ4jWNgoCcoq16VU1GzygnEBtEVDWuV8GooKFuhWVG3uiM3d5UokG4qr1szAaa5vGbVt4ralacwNDU0rGIrr10VBVG0+lxhwyqVsqqVtRW1q6eD5IvL19oB2V+B+D9QzQu4xtDQVZylVavygRKHqurWOlbUrknKK12qWlCwWLK8elUFA8N/xvLy5VYVtas+gzWDDVi9E2QjT1XdcufymjWpQJt1cXmnvHwVP1DzR7hmIC6vW+kOtpnYQKysW30arrlm9RVi9cFBRfXKJTADympWJZNsQFnN6rUQA1adAQU2SZqBXmUGBtozUDiU1qxQJtl2oCY3kO2l1avCSdYMAsBAWwyM2plkaS4p6eYGOv1YQ0MDB1kGlFWuDChuWKZBlmYQqK5eJU22ZkIAAEIlnQZQkzITAAAAAElFTkSuQmCC">Parabola GNU/Linux-libre</A>
-+ </DL><p>
-+ <DT><H3 ID="rdf:#$YvPhC3">Parabola GNU/Linux-libre</H3>
-+ <DL><p>
-+ <DT><A HREF="https://www.parabola.nu/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABL0lEQVQ4jWNgoCcoq16VU1GzygnEBtEVDWuV8GooKFuhWVG3uiM3d5UokG4qr1szAaa5vGbVt4ralacwNDU0rGIrr10VBVG0+lxhwyqVsqqVtRW1q6eD5IvL19oB2V+B+D9QzQu4xtDQVZylVavygRKHqurWOlbUrknKK12qWlCwWLK8elUFA8N/xvLy5VYVtas+gzWDDVi9E2QjT1XdcufymjWpQJt1cXmnvHwVP1DzR7hmIC6vW+kOtpnYQKysW30arrlm9RVi9cFBRfXKJTADympWJZNsQFnN6rUQA1adAQU2SZqBXmUGBtozUDiU1qxQJtl2oCY3kO2l1avCSdYMAsBAWwyM2plkaS4p6eYGOv1YQ0MDB1kGlFWuDChuWKZBlmYQqK5eJU22ZkIAAEIlnQZQkzITAAAAAElFTkSuQmCC">Parabola GNU/Linux-libre</A>
-+ <DT><A HREF="https://www.parabola.nu/packages/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABL0lEQVQ4jWNgoCcoq16VU1GzygnEBtEVDWuV8GooKFuhWVG3uiM3d5UokG4qr1szAaa5vGbVt4ralacwNDU0rGIrr10VBVG0+lxhwyqVsqqVtRW1q6eD5IvL19oB2V+B+D9QzQu4xtDQVZylVavygRKHqurWOlbUrknKK12qWlCwWLK8elUFA8N/xvLy5VYVtas+gzWDDVi9E2QjT1XdcufymjWpQJt1cXmnvHwVP1DzR7hmIC6vW+kOtpnYQKysW30arrlm9RVi9cFBRfXKJTADympWJZNsQFnN6rUQA1adAQU2SZqBXmUGBtozUDiU1qxQJtl2oCY3kO2l1avCSdYMAsBAWwyM2plkaS4p6eYGOv1YQ0MDB1kGlFWuDChuWKZBlmYQqK5eJU22ZkIAAEIlnQZQkzITAAAAAElFTkSuQmCC">Parabola GNU/Linux-libre Packages</A>
-+ <DT><A HREF="https://wiki.parabola.nu/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABL0lEQVQ4jWNgoCcoq16VU1GzygnEBtEVDWuV8GooKFuhWVG3uiM3d5UokG4qr1szAaa5vGbVt4ralacwNDU0rGIrr10VBVG0+lxhwyqVsqqVtRW1q6eD5IvL19oB2V+B+D9QzQu4xtDQVZylVavygRKHqurWOlbUrknKK12qWlCwWLK8elUFA8N/xvLy5VYVtas+gzWDDVi9E2QjT1XdcufymjWpQJt1cXmnvHwVP1DzR7hmIC6vW+kOtpnYQKysW30arrlm9RVi9cFBRfXKJTADympWJZNsQFnN6rUQA1adAQU2SZqBXmUGBtozUDiU1qxQJtl2oCY3kO2l1avCSdYMAsBAWwyM2plkaS4p6eYGOv1YQ0MDB1kGlFWuDChuWKZBlmYQqK5eJU22ZkIAAEIlnQZQkzITAAAAAElFTkSuQmCC">Parabola GNU/Linux-libre Wiki</A>
-+ <DT><A HREF="https://labs.parabola.nu/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABL0lEQVQ4jWNgoCcoq16VU1GzygnEBtEVDWuV8GooKFuhWVG3uiM3d5UokG4qr1szAaa5vGbVt4ralacwNDU0rGIrr10VBVG0+lxhwyqVsqqVtRW1q6eD5IvL19oB2V+B+D9QzQu4xtDQVZylVavygRKHqurWOlbUrknKK12qWlCwWLK8elUFA8N/xvLy5VYVtas+gzWDDVi9E2QjT1XdcufymjWpQJt1cXmnvHwVP1DzR7hmIC6vW+kOtpnYQKysW30arrlm9RVi9cFBRfXKJTADympWJZNsQFnN6rUQA1adAQU2SZqBXmUGBtozUDiU1qxQJtl2oCY3kO2l1avCSdYMAsBAWwyM2plkaS4p6eYGOv1YQ0MDB1kGlFWuDChuWKZBlmYQqK5eJU22ZkIAAEIlnQZQkzITAAAAAElFTkSuQmCC">Parabola GNU/Linux-libre Labs</A>
-+ </DL><p>
-+ <DT><H3 ID="rdf:#$ZvPhC3">Free Software Foundation</H3>
-+ <DL><p>
-+ <DT><A HREF="https://www.fsf.org/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAAsTAAALEwEAmpwYAAADG0lEQVQoFQEQA+/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQECAAAAAAAAAAAAAAAAAAAA2qOp7tTXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAP///wAAAAAAAOCyt7pUXQcSEgcQDwAAAP///wAAAAAAAAD//x9NSDqNhQEBAQQAAAAAAAAAAAAAAAAQJiQGDQ0aPToZPjoAAQEAAAAAAAAAAAABAQEpZV4AAAAAAAAAAAAA////////////////pSIv05KZ////////////////////////////////AAAAAQAAAP///6krNwAAAAAAAPHc3ggSEQcSEQAAAAAAAAAAABY3NEGelQAAAAAAAAEBAQEAAAD///+YARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDg1g690CBgYAAAABAQEEAAAAAAAAS7etAAAAAAAAwGVtHklFIlJOAAAAAAAAAAAAAAAA+/X2BwYGAAAAAAAABAAAAAAAAB1IQwAAAAAAAAYNDBAmJB1IQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAgL//v4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAQEB//7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAECAv/+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////////////cqK3qzM////////////////////////////////8AAAABAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGuLjDf9F8oBAAAAAElFTkSuQmCC">Free Software Foundation</A>
-+ <DT><A HREF="https://www.gnu.org/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAGFBMVEVFRUV+fn6mpqa/v7/Ozs7Y2Njg4OD8/Pwuhn+TAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9MBDhQ6Gd8s57cAAAEVSURBVBgZBcGxVtpgGADQL9gHSBzqSognzMixmcWWzB6pmRHhnyvku6/fewMAIPD3TwHmQxHs6vr+A16bphNum/vV0x429201hcPjAGBTDZGnR/Kw1U181+u4HXvOdSxjUcztz8jjg1xGVBG9XPYxt4PviKiaWLg168iXtbrq+mPT1utjNcR1U73deRnL43M2sRgj3+oYs8uL3rLphPd2QWmHbMu/VS/cnk6UdtSW657g9yBlcZ0UAkUWzPvyRaAYmfd+HT4IZtvC59ibEJxXiqJjQpBpNEufBYE0McoOAunGhRMEFIPc7h4goJigQEBxk8u7AgEpL3IEAUZfcgAByGFXQACm5+4MAuB19QMEgI8CAgDgP4rivVgoKP6ZAAAAAElFTkSuQmCC">The GNU Operating System and the Free Software Movement</A>
-+ <DT><A HREF="https://libreplanet.org/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACfElEQVQ4jZXTS0hUcRTH8f+9M3fGd0gRRq1a2bZdBAotWtS6TQtB6IHgKzRy0UKqjRaRCAq+R21MDMsUR83JR5fJxhmaK2lzsWAWw+ToEHJxgnFm7reFIgza66z/58P/dzhHcESZpsluIsFPwyCVSmGa5lHPEEIIkdGYTqPPvqUlP4fK8nJ2DINYNEq71YJ3fv4QlAGkUynaj+VRdfUK7580M52rEN/ZYWNjg2GrjEMSPFXsmOn0YcA0TZ4V5tNZUkJTTTWfJiZIJhJ8U1VczwcZs0o4JUHzufM0ZGcf/OQASCaTxGIxDMNA00P8iEbpuXyJ8Tw77+wWJhWZQYuVbiHoFIKwpmUC4XCYzc1NDMMgHo9z8+IFvl6/xsf7D9ArbjOpyAxLEt1C0CUErfvJDwBd14lEImxvb/N9fR1fgY3egmyWsq0sO/poUyw4pb3mLiFolyRM09wDEokEfr+fUChEJBJh4HgBS7kKn92zLIy9ZriqklFZwiEEHfsRRp1O0un0HpDa3cU9M8PKygp3Tp5AzbKgZlmYt1uYtkn02q0MyYKmnBxWNI27Nhtut5tkMrkHmKZJbWkpqqryQpFxKTJTisyEVeaVRWJIlqgpLuZRWRkejwe/34/P58ucwZvWVhYXF5l2uejIzeHGqbM4ZYmB/dy1hUV8mJpibm4On8/H1tbW4T1YXV3F6/WysLDA5Pg4nfsDe5yfz8OiIjweD5qmEQwGf7/KwWCQtbU1NE2jRZbpEoI2SWKqr49lVUXX9T/fAkAgEKC/e5SW6mo6hKD+zGn6e0bw+/x/PyaA9S/rvOwfobGukfpbddyraMDR7iCwHPg34H9KCCF+Abts3KCj/p6aAAAAAElFTkSuQmCC">LibrePlanet</A>
-+ <DT><A HREF="https://www.h-node.org/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABgElEQVQ4jaXRz2uSARzHcb0vlRGEzTVWISU1BVkFYTIyjNK1pKcxHA+yhWMWIamHYikFgpoLIi9jwegi3QbL9SzdLmMbM9J+DkJBgm5RDvEPeHeQHOyQz0OH9+V7ePGBr0pqpPmfVPsP8a0AR4MnMEwf48x9K0s/E8oAY9iEMOvD+8yP2qVjrhhRBnSN61n5sIpULqC+pGHh8wNlgEY8jPQXcGh4VXukDND5evYAl46odIuXtYdKAANSudAChO52/XeMZMohecCbcoGdH99Y+7LO72adT9+/4nh8nYOjBl7/SsoB8gBkpHk8T0S2K++pN3fRin3cfnFDHvCuWkI9rEMvHGEo5gbAHnXhnLF1BpZLeRaLOVT2A8Q3A5wMngXgWtKLxX9KPqC+rCWQvYkpeK4NWKcGOgO50ts2MJJ0cPreeQDciTHMchZYIhcwh2wcuqjn+ccwGm9v6wsTxxn0dVgQXZ7Ek3Agpq6QrcaQGmmebtxFSDkRU1fJVmL/BpT2ByV/3eDMhinRAAAAAElFTkSuQmCC">h-node</A>
- </DL><p>
- </DL><p>
-diff -Nur a/browser/modules/AboutHome.jsm b/browser/modules/AboutHome.jsm
---- a/browser/modules/AboutHome.jsm 2014-10-09 12:53:30.000000000 -0200
-+++ b/browser/modules/AboutHome.jsm 2014-10-21 14:54:12.086062616 -0200
-@@ -8,7 +8,7 @@
- let Ci = Components.interfaces;
- let Cu = Components.utils;
-
--this.EXPORTED_SYMBOLS = [ "AboutHomeUtils", "AboutHome" ];
-+this.EXPORTED_SYMBOLS = [ "AboutHome" ];
-
- Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
- Components.utils.import("resource://gre/modules/Services.jsm");
-@@ -18,66 +18,6 @@
- XPCOMUtils.defineLazyModuleGetter(this, "fxAccounts",
- "resource://gre/modules/FxAccounts.jsm");
-
--// Url to fetch snippets, in the urlFormatter service format.
--const SNIPPETS_URL_PREF = "browser.aboutHomeSnippets.updateUrl";
--
--// Should be bumped up if the snippets content format changes.
--const STARTPAGE_VERSION = 4;
--
--this.AboutHomeUtils = {
-- get snippetsVersion() STARTPAGE_VERSION,
--
-- /*
-- * showKnowYourRights - Determines if the user should be shown the
-- * about:rights notification. The notification should *not* be shown if
-- * we've already shown the current version, or if the override pref says to
-- * never show it. The notification *should* be shown if it's never been seen
-- * before, if a newer version is available, or if the override pref says to
-- * always show it.
-- */
-- get showKnowYourRights() {
-- // Look for an unconditional override pref. If set, do what it says.
-- // (true --> never show, false --> always show)
-- try {
-- return !Services.prefs.getBoolPref("browser.rights.override");
-- } catch (e) { }
-- // Ditto, for the legacy EULA pref.
-- try {
-- return !Services.prefs.getBoolPref("browser.EULA.override");
-- } catch (e) { }
--
--#ifndef MOZILLA_OFFICIAL
-- // Non-official builds shouldn't show the notification.
-- return false;
--#endif
--
-- // Look to see if the user has seen the current version or not.
-- var currentVersion = Services.prefs.getIntPref("browser.rights.version");
-- try {
-- return !Services.prefs.getBoolPref("browser.rights." + currentVersion + ".shown");
-- } catch (e) { }
--
-- // Legacy: If the user accepted a EULA, we won't annoy them with the
-- // equivalent about:rights page until the version changes.
-- try {
-- return !Services.prefs.getBoolPref("browser.EULA." + currentVersion + ".accepted");
-- } catch (e) { }
--
-- // We haven't shown the notification before, so do so now.
-- return true;
-- }
--};
--
--/**
-- * Returns the URL to fetch snippets from, in the urlFormatter service format.
-- */
--XPCOMUtils.defineLazyGetter(AboutHomeUtils, "snippetsURL", function() {
-- let updateURL = Services.prefs
-- .getCharPref(SNIPPETS_URL_PREF)
-- .replace("%STARTPAGE_VERSION%", STARTPAGE_VERSION);
-- return Services.urlFormatter.formatURL(updateURL);
--});
--
- /**
- * This code provides services to the about:home page. Whenever
- * about:home needs to do something chrome-privileged, it sends a
-@@ -202,18 +142,9 @@
- ss.promiseInitialized.then(function() {
- let data = {
- showRestoreLastSession: ss.canRestoreLastSession,
-- snippetsURL: AboutHomeUtils.snippetsURL,
-- showKnowYourRights: AboutHomeUtils.showKnowYourRights,
-- snippetsVersion: AboutHomeUtils.snippetsVersion,
- defaultEngineName: Services.search.defaultEngine.name
- };
-
-- if (AboutHomeUtils.showKnowYourRights) {
-- // Set pref to indicate we've shown the notification.
-- let currentVersion = Services.prefs.getIntPref("browser.rights.version");
-- Services.prefs.setBoolPref("browser.rights." + currentVersion + ".shown", true);
-- }
--
- if (target) {
- target.messageManager.sendAsyncMessage("AboutHome:Update", data);
- } else {
diff --git a/libre-testing/icecat/mozconfig b/libre-testing/icecat/mozconfig
deleted file mode 100644
index 4f8fc3aea..000000000
--- a/libre-testing/icecat/mozconfig
+++ /dev/null
@@ -1,36 +0,0 @@
-. $topsrcdir/browser/config/mozconfig
-
-ac_add_options --prefix=/usr
-ac_add_options --libdir=/usr/lib
-ac_add_options --enable-pie
-
-ac_add_options --enable-official-branding
-
-# System libraries
-ac_add_options --with-system-nspr
-ac_add_options --with-system-nss
-ac_add_options --with-system-jpeg
-ac_add_options --with-system-zlib
-ac_add_options --with-system-bz2
-ac_add_options --with-system-png
-ac_add_options --with-system-libevent
-#ac_add_options --with-system-libvpx
-ac_add_options --with-system-icu
-ac_add_options --enable-system-hunspell
-ac_add_options --enable-system-sqlite
-ac_add_options --enable-system-ffi
-#ac_add_options --enable-system-cairo
-ac_add_options --enable-system-pixman
-
-# Features
-ac_add_options --enable-startup-notification
-ac_add_options --enable-pulseaudio
-ac_add_options --enable-gstreamer=1.0
-
-ac_add_options --disable-crashreporter
-ac_add_options --disable-updater
-ac_add_options --disable-installer
-ac_add_options --disable-debug-symbols
-
-# Parabola features
-ac_add_options --disable-safe-browsing
diff --git a/libre-testing/icecat/mozconfig.pgo b/libre-testing/icecat/mozconfig.pgo
deleted file mode 100644
index 71ba205a4..000000000
--- a/libre-testing/icecat/mozconfig.pgo
+++ /dev/null
@@ -1,3 +0,0 @@
-
-# PGO
-mk_add_options PROFILE_GEN_SCRIPT='EXTRA_TEST_ARGS=10 $(MAKE) -C $(MOZ_OBJDIR) pgo-profile-run'
diff --git a/libre-testing/icecat/rhbz-966424.patch b/libre-testing/icecat/rhbz-966424.patch
deleted file mode 100644
index 9a1c9e2b4..000000000
--- a/libre-testing/icecat/rhbz-966424.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -Nur mozilla-release.orig/toolkit/modules/CertUtils.jsm mozilla-release/toolkit/modules/CertUtils.jsm
---- mozilla-release.orig/toolkit/modules/CertUtils.jsm 2014-10-11 07:06:48.000000000 -0200
-+++ mozilla-release/toolkit/modules/CertUtils.jsm 2014-10-16 03:44:30.226448002 -0200
-@@ -174,7 +174,9 @@
- }
-
- function isBuiltinToken(tokenName) {
-- return tokenName == "Builtin Object Token";
-+ return tokenName == "Builtin Object Token" ||
-+ tokenName == "Default Trust" ||
-+ tokenName == "System Trust";
- }
-
- /**
diff --git a/libre-testing/icecat/vendor.js b/libre-testing/icecat/vendor.js
deleted file mode 100644
index 32fddb8db..000000000
--- a/libre-testing/icecat/vendor.js
+++ /dev/null
@@ -1,28 +0,0 @@
-// Use LANG environment variable to choose locale
-pref("intl.locale.matchOS", true);
-
-// Disable default browser checking.
-pref("browser.shell.checkDefaultBrowser", false);
-
-// Don't disable our bundled extensions in the application directory
-pref("extensions.autoDisableScopes", 11);
-pref("extensions.shownSelectionUI", true);
-
-// Disable "alt" as a shortcut key to open full menu bar. Conflicts with "alt" as a modifier
-pref("ui.key.menuAccessKeyFocuses", false);
-
-// Make sure that Firefox Social stuff are empty
-pref("social.whitelist", "");
-pref("social.directories", "");
-
-// Disable the GeoLocation API for content
-pref("geo.enabled", false);
-
-// Make sure that the request URL of the GeoLocation backend is empty
-pref("geo.wifi.uri", "");
-
-// Disable the least secure encryption protocols
-pref("security.ssl3.ecdhe_ecdsa_rc4_128_sha", false);
-pref("security.ssl3.ecdhe_rsa_rc4_128_sha", false);
-pref("security.ssl3.rsa_rc4_128_md5", false);
-pref("security.ssl3.rsa_rc4_128_sha", false);