summaryrefslogtreecommitdiff
path: root/libre/iceweasel-libre
diff options
context:
space:
mode:
Diffstat (limited to 'libre/iceweasel-libre')
-rw-r--r--libre/iceweasel-libre/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch4
-rw-r--r--libre/iceweasel-libre/Fixup-Reset-Firefox-after-bad-merge.patch108
-rw-r--r--libre/iceweasel-libre/PKGBUILD64
-rw-r--r--libre/iceweasel-libre/gnu_headshadow.pngbin0 -> 6785 bytes
-rw-r--r--libre/iceweasel-libre/iceweasel-install-dir.patch22
-rw-r--r--libre/iceweasel-libre/iceweasel.install4
-rw-r--r--libre/iceweasel-libre/libre.patch737
-rw-r--r--libre/iceweasel-libre/mozconfig1
-rw-r--r--libre/iceweasel-libre/replace-urls.txt25
9 files changed, 783 insertions, 182 deletions
diff --git a/libre/iceweasel-libre/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch b/libre/iceweasel-libre/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch
index d2716aed3..c9df18dc4 100644
--- a/libre/iceweasel-libre/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch
+++ b/libre/iceweasel-libre/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch
@@ -273,10 +273,10 @@ index f35c227..7062886 100644
%{C++
diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
-index 5f989ea..e7e21bd 100644
+index 42fbd15..6c3dbfe 100644
--- a/toolkit/xre/nsAppRunner.cpp
+++ b/toolkit/xre/nsAppRunner.cpp
-@@ -3733,7 +3733,7 @@ XREMain::XRE_mainRun()
+@@ -3737,7 +3737,7 @@ XREMain::XRE_mainRun()
if (gDoProfileReset) {
// Automatically migrate from the current application if we just
// reset the profile.
diff --git a/libre/iceweasel-libre/Fixup-Reset-Firefox-after-bad-merge.patch b/libre/iceweasel-libre/Fixup-Reset-Firefox-after-bad-merge.patch
new file mode 100644
index 000000000..c7c4c355b
--- /dev/null
+++ b/libre/iceweasel-libre/Fixup-Reset-Firefox-after-bad-merge.patch
@@ -0,0 +1,108 @@
+From: Mike Hommey <mh@glandium.org>
+Date: Sat, 16 Nov 2013 13:01:17 +0900
+Subject: Fixup "Reset Firefox" after bad merge
+
+---
+ toolkit/content/resetProfile.js | 52 ----------------------------------------
+ toolkit/modules/ResetProfile.jsm | 11 +++++----
+ 2 files changed, 6 insertions(+), 57 deletions(-)
+
+diff --git a/toolkit/content/resetProfile.js b/toolkit/content/resetProfile.js
+index 2253994..d46b43b 100644
+--- a/toolkit/content/resetProfile.js
++++ b/toolkit/content/resetProfile.js
+@@ -28,58 +28,6 @@ function onResetProfileLoad() {
+ populateResetPane("migratedItems");
+ }
+
+-<<<<<<< HEAD
+-=======
+-/**
+- * Check if reset is supported for the currently running profile.
+- *
+- * @return boolean whether reset is supported.
+- */
+-function resetSupported() {
+- let profileService = Cc["@mozilla.org/toolkit/profile-service;1"].
+- getService(Ci.nsIToolkitProfileService);
+- let currentProfileDir = Services.dirsvc.get("ProfD", Ci.nsIFile);
+-
+- // Reset is only supported for the default profile if the self-migrator used for reset exists.
+- try {
+- if (currentProfileDir.equals(profileService.selectedProfile.rootDir) &&
+- "@mozilla.org/toolkit/profile-migrator;1" in Cc) {
+- let pm = Cc["@mozilla.org/toolkit/profile-migrator;1"].createInstance(Ci.nsIProfileMigrator);
+- return ("canMigrate" in pm) && pm.canMigrate("self");
+- }
+- } catch (e) {
+- // Catch exception when there is no selected profile.
+- Cu.reportError(e);
+- }
+- return false;
+-}
+-
+-function getMigratedData() {
+- Components.utils.import("resource:///modules/MigrationUtils.jsm");
+-
+- // From migration.properties
+- const MIGRATED_TYPES = [
+- 4, // History and Bookmarks
+- 16, // Passwords
+- 8, // Form History
+- 2, // Cookies
+- ];
+-
+- // Loop over possible data to migrate to give the user a list of what will be preserved.
+- let dataTypes = [];
+- for (let itemID of MIGRATED_TYPES) {
+- try {
+- let typeName = MigrationUtils.getLocalizedString(itemID + "_self");
+- dataTypes.push(typeName);
+- } catch (x) {
+- // Catch exceptions when the string for a data type doesn't exist.
+- Components.utils.reportError(x);
+- }
+- }
+- return dataTypes;
+-}
+-
+->>>>>>> Bug 756390 - Make the "Reset Firefox" feature more generic
+ function onResetProfileAccepted() {
+ let retVals = window.arguments[0];
+ retVals.reset = true;
+diff --git a/toolkit/modules/ResetProfile.jsm b/toolkit/modules/ResetProfile.jsm
+index db57f2a..d618d08 100644
+--- a/toolkit/modules/ResetProfile.jsm
++++ b/toolkit/modules/ResetProfile.jsm
+@@ -7,8 +7,6 @@
+ this.EXPORTED_SYMBOLS = ["ResetProfile"];
+
+ const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
+-#expand const MOZ_APP_NAME = "__MOZ_APP_NAME__";
+-#expand const MOZ_BUILD_APP = "__MOZ_BUILD_APP__";
+
+ Cu.import("resource://gre/modules/Services.jsm");
+
+@@ -25,8 +23,11 @@ this.ResetProfile = {
+
+ // Reset is only supported for the default profile if the self-migrator used for reset exists.
+ try {
+- return currentProfileDir.equals(profileService.selectedProfile.rootDir) &&
+- ("@mozilla.org/profile/migrator;1?app=" + MOZ_BUILD_APP + "&type=" + MOZ_APP_NAME in Cc);
++ if (currentProfileDir.equals(profileService.selectedProfile.rootDir) &&
++ "@mozilla.org/toolkit/profile-migrator;1" in Cc) {
++ let pm = Cc["@mozilla.org/toolkit/profile-migrator;1"].createInstance(Ci.nsIProfileMigrator);
++ return ("canMigrate" in pm) && pm.canMigrate("self");
++ }
+ } catch (e) {
+ // Catch exception when there is no selected profile.
+ Cu.reportError(e);
+@@ -50,7 +51,7 @@ this.ResetProfile = {
+ let dataTypes = [];
+ for (let itemID of MIGRATED_TYPES) {
+ try {
+- let typeName = MigrationUtils.getLocalizedString(itemID + "_" + MOZ_APP_NAME);
++ let typeName = MigrationUtils.getLocalizedString(itemID + "_self");
+ dataTypes.push(typeName);
+ } catch (x) {
+ // Catch exceptions when the string for a data type doesn't exist.
diff --git a/libre/iceweasel-libre/PKGBUILD b/libre/iceweasel-libre/PKGBUILD
index 9285849c3..ad6233f39 100644
--- a/libre/iceweasel-libre/PKGBUILD
+++ b/libre/iceweasel-libre/PKGBUILD
@@ -14,7 +14,7 @@ _pgo=true
# We're getting this from Debian Experimental
_debname=iceweasel
-_debver=25.0
+_debver=26.0
_debrel=deb1
_debrepo=http://ftp.debian.org/debian/pool/main/
debfile() { echo $@|sed -r 's@(.).*@\1/&/&@'; }
@@ -23,7 +23,7 @@ _pkgname=iceweasel
pkgname=iceweasel-libre
epoch=1
pkgver=$_debver.$_debrel
-pkgrel=1
+pkgrel=2
pkgdesc="A libre version of Debian Iceweasel, the standalone web browser based on Mozilla Firefox."
arch=(i686 x86_64 mips64el)
@@ -38,9 +38,10 @@ if $_pgo; then
fi
optdepends=('networkmanager: Location detection via available WiFi networks'
'gstreamer0.10-base-plugins: vorbis decoding, ogg demuxing'
- 'gstreamer0.10-bad-libre-plugins: aac, vp8 and opus decoding'
'gstreamer0.10-good-plugins: webm and mp4 demuxing'
- 'gstreamer0.10-ugly-plugins: h.264 decoding'
+ 'gstreamer0.10-bad-libre-plugins: aac, vp8 and opus decoding'
+ 'gstreamer0.10-ugly-plugins: h.264 and mp3 decoding'
+ 'gstreamer0.10-ffmpeg: more decoders'
'libpulse: PulseAudio audio driver')
url="http://packages.debian.org/experimental/${_pkgname}"
install=iceweasel.install
@@ -52,21 +53,25 @@ source=("$_debrepo/`debfile $_debname`_$_debver.orig.tar.bz2"
mozconfig
mozconfig.pgo
libre.patch
+ gnu_headshadow.png
iceweasel.desktop
iceweasel-install-dir.patch
vendor.js
iceweasel-20.0.1-fixed-loading-icon.png
- Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch)
-md5sums=('dd1462b582747210cc6c2ac1d01c4c17'
- '4f4cde44b6e83cf78ff5d6e757d1913c'
- '350feec44d359c31679dbec3de6685df'
+ Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch
+ Fixup-Reset-Firefox-after-bad-merge.patch)
+md5sums=('219cf21e0642e8a364365286f23d0624'
+ '2001d0477bcefd0eeaab584402133691'
+ '023120a970670dc85cea19393f0b94b6'
'df08eaa1ac3bc6c2356be4fbf8ec8932'
- '8c11b80574b11e96c2ef44fa16f4b844'
+ 'fea121a94737ec8641b39e7120a048d3'
+ 'b03a979a78484503ba8dddad4f2c96d1'
'7b9e5996dd9fe0b186a43a297db1c6b5'
- 'abf5ecb74caa857abb42bcfbb3442d9c'
+ '6620e724ec9a1be74e65089d81d802f7'
'816013881cfc9a1f4f0ede72b014f8b3'
'6e335a517c68488941340ee1c23f97b0'
- 'ee3279c706c3a69e6f8eda415c4d35b0')
+ 'dbf1c021e5f7ac323197b219bf213c50'
+ '8e165ef85ddd72491f0b48f8954afca6')
prepare() {
export DEBIAN_BUILD="mozilla-release"
@@ -81,16 +86,29 @@ prepare() {
# Doesn't apply and seems unimportant
rm -v debian/patches/l10n/Place-google-and-gmail-before-yandex.patch || true
- # This patch doesn't works in some parts due that has patches for others locales languages, source code hasn't it
+ # Doesn't works in some parts due it has patches for others locales languages, source code hasn't it
rm -v debian/patches/debian-hacks/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch || true
+ # It needs to be patched after Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch
+ rm -v debian/patches/debian-hacks/Fixup-Reset-Firefox-after-bad-merge.patch || true
+
quilt push -av
+ install -m644 "$srcdir/gnu_headshadow.png" browser/base/content/abouthome # Put gnu_headshadow.png on the source code
+
patch -Np1 -i "$srcdir/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch" # Adding fixed Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch
+ patch -Np1 -i "$srcdir/Fixup-Reset-Firefox-after-bad-merge.patch"
patch -Np1 -i "$srcdir/iceweasel-install-dir.patch" # install to /usr/lib/$_pkgname
# Patch and remove anything that's left
patch -Np1 -i "$srcdir/libre.patch"
+ sed -i 's|Adobe Flash|SWF Player|g;
+ ' browser/base/content/pageinfo/permissions.js \
+ browser/base/content/browser-plugins.js
+ sed -i '\|URL of the GeoLocation backend|d;
+ \|geo[.]wifi[.]uri|d;
+ ' browser/app/profile/firefox.js \
+ browser/metro/profile/metro.js
rm -v browser/base/content/abouthome/snippet*.png || true
sed -i "\|abouthome/snippet|d" browser/base/jar.mn
@@ -170,20 +188,16 @@ build() {
fi
if $_pgo; then
- if [[ $CARCH != i686 ]]; then
- # Set up PGO
- export DISPLAY=:99
- Xvfb -nolisten tcp -extension GLX -screen 0 1280x1024x24 $DISPLAY &
-
- if ! make -f client.mk build MOZ_PGO=1; then
- kill $!
- return 1
- fi
-
- kill $! || true
- else
- make -f client.mk build
+ # Set up PGO
+ export DISPLAY=:99
+ Xvfb -nolisten tcp -extension GLX -screen 0 1280x1024x24 $DISPLAY &
+
+ if ! make -f client.mk build MOZ_PGO=1; then
+ kill $!
+ return 1
fi
+
+ kill $! || true
else
make -f client.mk build
fi
diff --git a/libre/iceweasel-libre/gnu_headshadow.png b/libre/iceweasel-libre/gnu_headshadow.png
new file mode 100644
index 000000000..e0f73a3bf
--- /dev/null
+++ b/libre/iceweasel-libre/gnu_headshadow.png
Binary files differ
diff --git a/libre/iceweasel-libre/iceweasel-install-dir.patch b/libre/iceweasel-libre/iceweasel-install-dir.patch
index a44aef496..3938c0b3e 100644
--- a/libre/iceweasel-libre/iceweasel-install-dir.patch
+++ b/libre/iceweasel-libre/iceweasel-install-dir.patch
@@ -1,9 +1,8 @@
-diff -Nur iceweasel-16.0.1.orig/config/baseconfig.mk iceweasel-16.0.1/config/baseconfig.mk
---- iceweasel-16.0.1.orig/config/baseconfig.mk 2012-10-10 19:42:45.000000000 -0200
-+++ iceweasel-16.0.1/config/baseconfig.mk 2012-10-12 05:40:32.346949927 -0200
-@@ -1,10 +1,10 @@
- INCLUDED_AUTOCONF_MK = 1
-
+diff --git a/config/baseconfig.mk b/config/baseconfig.mk
+index 9c70e24..eff0fd2 100644
+--- a/config/baseconfig.mk
++++ b/config/baseconfig.mk
+@@ -1,8 +1,8 @@
MOZ_APP_BASE_VERSION = $(firstword $(subst ., ,$(MOZ_APP_VERSION))).$(word 2,$(subst ., ,$(MOZ_APP_VERSION)))
-includedir := $(includedir)/$(MOZ_APP_NAME)-$(MOZ_APP_BASE_VERSION)
-idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_BASE_VERSION)
@@ -16,12 +15,11 @@ diff -Nur iceweasel-16.0.1.orig/config/baseconfig.mk iceweasel-16.0.1/config/bas
DIST = $(DEPTH)/dist
# We do magic with OBJ_SUFFIX in config.mk, the following ensures we don't
-diff -Nur iceweasel-16.0.1.orig/js/src/config/baseconfig.mk iceweasel-16.0.1/js/src/config/baseconfig.mk
---- iceweasel-16.0.1.orig/js/src/config/baseconfig.mk 2012-10-10 19:43:05.000000000 -0200
-+++ iceweasel-16.0.1/js/src/config/baseconfig.mk 2012-10-12 05:08:23.064066227 -0200
-@@ -1,7 +1,7 @@
- INCLUDED_AUTOCONF_MK = 1
-
+diff --git a/js/src/config/baseconfig.mk b/js/src/config/baseconfig.mk
+index 1ff076c..5386569 100644
+--- a/js/src/config/baseconfig.mk
++++ b/js/src/config/baseconfig.mk
+@@ -1,5 +1,5 @@
-installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
-sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION)
+installdir = $(libdir)/$(MOZ_APP_NAME)
diff --git a/libre/iceweasel-libre/iceweasel.install b/libre/iceweasel-libre/iceweasel.install
index c1fe8284a..1a1f4b16b 100644
--- a/libre/iceweasel-libre/iceweasel.install
+++ b/libre/iceweasel-libre/iceweasel.install
@@ -4,10 +4,10 @@ post_install() {
}
post_upgrade() {
- post_install $1
+ post_install
}
post_remove() {
- post_install $1
+ post_install
}
diff --git a/libre/iceweasel-libre/libre.patch b/libre/iceweasel-libre/libre.patch
index e5632c667..2384818b4 100644
--- a/libre/iceweasel-libre/libre.patch
+++ b/libre/iceweasel-libre/libre.patch
@@ -1,7 +1,20 @@
-diff -Nur mozilla-release.orig/browser/app/profile/firefox.js mozilla-release/browser/app/profile/firefox.js
---- mozilla-release.orig/browser/app/profile/firefox.js 2013-11-05 03:52:59.229583495 -0200
-+++ mozilla-release/browser/app/profile/firefox.js 2013-11-05 03:57:12.955661016 -0200
-@@ -1269,14 +1269,6 @@
+diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
+index 331edc8..226508d 100644
+--- a/browser/app/profile/firefox.js
++++ b/browser/app/profile/firefox.js
+@@ -242,11 +242,6 @@ pref("browser.slowStartup.notificationDisabled", false);
+ pref("browser.slowStartup.timeThreshold", 60000);
+ 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);
+@@ -1283,11 +1278,7 @@ pref("pdfjs.previousHandler.alwaysAskBeforeHandling", false);
// (This is intentionally on the high side; see bug 746055.)
pref("image.mem.max_decoded_image_kb", 256000);
@@ -10,16 +23,15 @@ diff -Nur mozilla-release.orig/browser/app/profile/firefox.js mozilla-release/br
-
-pref("social.sidebar.open", true);
-pref("social.sidebar.unload_timeout_ms", 10000);
--
--pref("dom.identity.enabled", false);
--
- // Turn on the CSP 1.0 parser for Content Security Policy headers
- pref("security.csp.speccompliant", true);
++// removed facebook sidebar with Iceweasel.
+
+ pref("dom.identity.enabled", false);
-diff -Nur mozilla-release.orig/browser/base/content/abouthome/aboutHome.css mozilla-release/browser/base/content/abouthome/aboutHome.css
---- mozilla-release.orig/browser/base/content/abouthome/aboutHome.css 2013-10-25 20:27:08.000000000 -0200
-+++ mozilla-release/browser/base/content/abouthome/aboutHome.css 2013-11-05 03:57:12.958994121 -0200
-@@ -49,11 +49,6 @@
+diff --git a/browser/base/content/abouthome/aboutHome.css b/browser/base/content/abouthome/aboutHome.css
+index c270318..049fe6e 100644
+--- a/browser/base/content/abouthome/aboutHome.css
++++ b/browser/base/content/abouthome/aboutHome.css
+@@ -49,11 +49,6 @@ a {
background-repeat: no-repeat;
}
@@ -31,7 +43,7 @@ diff -Nur mozilla-release.orig/browser/base/content/abouthome/aboutHome.css mozi
#searchForm {
display: -moz-box;
}
-@@ -72,8 +67,7 @@
+@@ -72,8 +67,7 @@ a {
#searchEngineLogo {
display: inline-block;
height: 28px;
@@ -41,7 +53,7 @@ diff -Nur mozilla-release.orig/browser/base/content/abouthome/aboutHome.css mozi
}
#searchText {
-@@ -145,48 +139,6 @@
+@@ -145,48 +139,6 @@ a {
transition-duration: 0ms;
}
@@ -90,7 +102,40 @@ diff -Nur mozilla-release.orig/browser/base/content/abouthome/aboutHome.css mozi
#launcher {
display: -moz-box;
-moz-box-align: center;
-@@ -366,20 +318,6 @@
+@@ -335,26 +287,25 @@ body[narrow] #restorePreviousSession::before {
+ 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 @@ body[narrow] #restorePreviousSession::before {
background-image: url("chrome://branding/content/about-logo@2x.png");
}
@@ -108,13 +153,30 @@ diff -Nur mozilla-release.orig/browser/base/content/abouthome/aboutHome.css mozi
- background-image: url("chrome://browser/content/abouthome/snippet2@2x.png");
- }
-
- .launchButton::before,
- #aboutMozilla::before {
- transform: scale(.5);
-diff -Nur mozilla-release.orig/browser/base/content/abouthome/aboutHome.js mozilla-release/browser/base/content/abouthome/aboutHome.js
---- mozilla-release.orig/browser/base/content/abouthome/aboutHome.js 2013-10-25 20:27:08.000000000 -0200
-+++ mozilla-release/browser/base/content/abouthome/aboutHome.js 2013-11-05 04:10:11.565757913 -0200
-@@ -3,152 +3,44 @@
+- .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 {
+ 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 --git a/browser/base/content/abouthome/aboutHome.js b/browser/base/content/abouthome/aboutHome.js
+index 432fcdc..8e85f1f 100644
+--- a/browser/base/content/abouthome/aboutHome.js
++++ b/browser/base/content/abouthome/aboutHome.js
+@@ -3,317 +3,99 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
const SEARCH_ENGINES = {
@@ -290,35 +352,59 @@ diff -Nur mozilla-release.orig/browser/base/content/abouthome/aboutHome.js mozil
- "https://www.mozilla.org/firefox/features/?utm_source=snippet&utm_medium=snippet&utm_campaign=default+feature+snippet"
-, "https://addons.mozilla.org/firefox/?utm_source=snippet&utm_medium=snippet&utm_campaign=addons"
-];
--
+
-const SNIPPETS_UPDATE_INTERVAL_MS = 86400000; // 1 Day.
--
++// Bug with dom.storage.enabled set as false
++// We are using DDG as a default in this case.
++let gSearchEngine = {"name": "DuckDuckGo HTML", "searchUrl": "https://duckduckgo.com/html/?t=iceweasel&q=_searchTerms_"};
+
-// 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) {
-@@ -156,7 +48,6 @@
- if (mutation.attributeName == "searchEngineURL") {
- setupSearchEngine();
- if (!gInitialized) {
+-// This global tracks if the page has been set up before, to prevent double inits
+-let gInitialized = false;
+-let gObserver = new MutationObserver(function (mutations) {
+- for (let mutation of mutations) {
+- if (mutation.attributeName == "searchEngineName") {
+- setupSearchEngine();
+- if (!gInitialized) {
- ensureSnippetsMapThen(loadSnippets);
- gInitialized = true;
- }
- return;
-@@ -177,117 +68,6 @@
- window.removeEventListener("resize", fitToWidth);
+- gInitialized = true;
+- }
+- return;
+- }
+- }
+-});
+-
+-window.addEventListener("pageshow", function () {
+- // Delay search engine setup, cause browser.js::BrowserOnAboutPageLoad runs
+- // later and may use asynchronous getters.
+- window.gObserver.observe(document.documentElement, { attributes: true });
+- fitToWidth();
+- window.addEventListener("resize", fitToWidth);
+-
+- // Ask chrome to update snippets.
+- var event = new CustomEvent("AboutHomeLoad", {bubbles:true});
+- document.dispatchEvent(event);
+-});
+-
+-window.addEventListener("pagehide", function() {
+- window.gObserver.disconnect();
+- window.removeEventListener("resize", fitToWidth);
++document.addEventListener("DOMContentLoaded", function init() {
++ setupSearchEngine();
});
++window.addEventListener("load", fitToWidth);
++window.addEventListener("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.
- *
@@ -328,7 +414,8 @@ diff -Nur mozilla-release.orig/browser/base/content/abouthome/aboutHome.js mozil
- * it may change inadvertently.
- */
-function ensureSnippetsMapThen(aCallback)
--{
++function onSearchSubmit(aEvent)
+ {
- if (gSnippetsMap) {
- aCallback(gSnippetsMap);
- return;
@@ -344,30 +431,44 @@ diff -Nur mozilla-release.orig/browser/base/content/abouthome/aboutHome.js mozil
- let invokeCallbacks = function () {
- if (!gSnippetsMap) {
- gSnippetsMap = Object.freeze(new Map());
-- }
++ let searchTerms = document.getElementById("searchText").value;
++ if (gSearchEngine && searchTerms.length > 0) {
++ const SEARCH_TOKENS = {
++ "_searchTerms_": encodeURIComponent(searchTerms)
+ }
-
- for (let callback of gSnippetsMapCallbacks) {
- callback(gSnippetsMap);
-- }
++ let url = gSearchEngine.searchUrl;
++ for (let key in SEARCH_TOKENS) {
++ url = url.replace(key, SEARCH_TOKENS[key]);
+ }
- gSnippetsMapCallbacks.length = 0;
-- }
--
++ window.location.href = url;
+ }
+
- let openRequest = indexedDB.open(DATABASE_NAME, DATABASE_VERSION);
--
++ aEvent.preventDefault();
++}
+
- 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);
- }
-- }
--
++function setupSearchEngine()
++{
++ if (localStorage && localStorage["search-engine"]) {
++ gSearchEngine = JSON.parse(localStorage["search-engine"]);
+ }
+
- openRequest.onsuccess = function (event) {
- let db = event.target.result;
-
@@ -421,16 +522,80 @@ diff -Nur mozilla-release.orig/browser/base/content/abouthome/aboutHome.js mozil
-
- setTimeout(invokeCallbacks, 0);
- }
-- }
++
++ // Look for extended information, like logo and links.
++ var searchEngineInfo = SEARCH_ENGINES[gSearchEngine.name];
++ if (searchEngineInfo) {
++ for (let prop in searchEngineInfo)
++ gSearchEngine[prop] = searchEngineInfo[prop];
+ }
-}
--
- function onSearchSubmit(aEvent)
- {
- let searchTerms = document.getElementById("searchText").value;
-@@ -372,140 +152,6 @@
- }
+-function onSearchSubmit(aEvent)
+-{
+- let searchTerms = document.getElementById("searchText").value;
+- let engineName = document.documentElement.getAttribute("searchEngineName");
++ // Enqueue additional params if required by the engine definition.
++ if (gSearchEngine.params)
++ gSearchEngine.searchUrl += "&" + gSearchEngine.params;
+
+- if (engineName && searchTerms.length > 0) {
+- // Send an event that will perform a search and Firefox Health Report will
+- // record that a search from about:home has occurred.
+- let eventData = JSON.stringify({
+- engineName: engineName,
+- searchTerms: searchTerms
+- });
+- let event = new CustomEvent("AboutHomeSearchEvent", {detail: eventData});
+- document.dispatchEvent(event);
++ // Add search engine logo.
++ if (gSearchEngine.image) {
++ let logoElt = document.getElementById("searchEngineLogo");
++ logoElt.src = gSearchEngine.image;
++ logoElt.alt = gSearchEngine.name;
+ }
+- aEvent.preventDefault();
+-}
+-
+-
+-function setupSearchEngine()
+-{
+ // The "autofocus" attribute doesn't focus the form element
+ // immediately when the element is first drawn, so the
+ // attribute is also used for styling when the page first loads.
+@@ -322,173 +104,6 @@ function setupSearchEngine()
+ searchText.removeEventListener("blur", searchText_onBlur);
+ searchText.removeAttribute("autofocus");
+ });
+-
+- let searchEngineName = document.documentElement.getAttribute("searchEngineName");
+- let searchEngineInfo = SEARCH_ENGINES[searchEngineName];
+- let logoElt = document.getElementById("searchEngineLogo");
+-
+- // Add search engine logo.
+- if (searchEngineInfo && searchEngineInfo.image) {
+- logoElt.parentNode.hidden = false;
+- logoElt.src = searchEngineInfo.image;
+- logoElt.alt = searchEngineName;
+- searchText.placeholder = "";
+- }
+- else {
+- logoElt.parentNode.hidden = true;
+- searchText.placeholder = searchEngineName;
+- }
+-
+-}
+-
+-/**
+- * 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.
@@ -440,6 +605,10 @@ diff -Nur mozilla-release.orig/browser/base/content/abouthome/aboutHome.js mozil
- 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");
@@ -460,6 +629,7 @@ diff -Nur mozilla-release.orig/browser/base/content/abouthome/aboutHome.js mozil
- xhr.open("GET", updateURL, true);
- } catch (ex) {
- showSnippets();
+- loadSucceeded();
- return;
- }
- // Even if fetching should fail we don't want to spam the server, thus
@@ -475,10 +645,12 @@ diff -Nur mozilla-release.orig/browser/base/content/abouthome/aboutHome.js mozil
- gSnippetsMap.set("snippets-cached-version", currentVersion);
- }
- showSnippets();
+- loadSucceeded();
- };
- xhr.send(null);
- } else {
- showSnippets();
+- loadSucceeded();
- }
-}
-
@@ -563,15 +735,14 @@ diff -Nur mozilla-release.orig/browser/base/content/abouthome/aboutHome.js mozil
- }
- // Move the default snippet to the snippets element.
- snippetsElt.appendChild(entry);
--}
--
+ }
+
function fitToWidth() {
- if (window.scrollMaxX) {
- document.body.setAttribute("narrow", "true");
-diff -Nur mozilla-release.orig/browser/base/content/abouthome/aboutHome.xhtml mozilla-release/browser/base/content/abouthome/aboutHome.xhtml
---- mozilla-release.orig/browser/base/content/abouthome/aboutHome.xhtml 2013-10-25 20:27:08.000000000 -0200
-+++ mozilla-release/browser/base/content/abouthome/aboutHome.xhtml 2013-11-05 03:57:12.962327229 -0200
-@@ -43,15 +43,6 @@
+diff --git a/browser/base/content/abouthome/aboutHome.xhtml b/browser/base/content/abouthome/aboutHome.xhtml
+index 1d03d38..fda3095 100644
+--- a/browser/base/content/abouthome/aboutHome.xhtml
++++ b/browser/base/content/abouthome/aboutHome.xhtml
+@@ -43,30 +43,9 @@
<input id="searchSubmit" type="submit" value="&abouthome.searchEngineButton.label;"/>
</form>
</div>
@@ -587,9 +758,290 @@ diff -Nur mozilla-release.orig/browser/base/content/abouthome/aboutHome.xhtml mo
</div>
<div class="spacer"/>
-diff -Nur mozilla-release.orig/browser/locales/en-US/chrome/browser-region/region.properties mozilla-release/browser/locales/en-US/chrome/browser-region/region.properties
---- mozilla-release.orig/browser/locales/en-US/chrome/browser-region/region.properties 2013-10-25 20:27:09.000000000 -0200
-+++ mozilla-release/browser/locales/en-US/chrome/browser-region/region.properties 2013-11-05 04:16:11.884325686 -0200
+- <div id="launcher">
+- <button class="launchButton" id="downloads">&abouthome.downloadsButton.label;</button>
+- <button class="launchButton" id="bookmarks">&abouthome.bookmarksButton.label;</button>
+- <button class="launchButton" id="history">&abouthome.historyButton.label;</button>
+- <button class="launchButton" id="apps" hidden="true">&abouthome.appsButton.label;</button>
+- <button class="launchButton" id="addons">&abouthome.addonsButton.label;</button>
+- <button class="launchButton" id="sync">&abouthome.syncButton.label;</button>
+- <button class="launchButton" id="settings">&abouthome.settingsButton.label;</button>
+- <div id="restorePreviousSessionSeparator"/>
+- <button class="launchButton" id="restorePreviousSession">&historyRestoreLastSession.label;</button>
+- </div>
+-
+- <a id="aboutMozilla" href="https://www.mozilla.org/about/?utm_source=about-home&amp;utm_medium=Referral"/>
++ <a id="aboutGNU" href="http://gnu.org"></a>
+ </body>
+ </html>
+diff --git a/browser/base/content/content.js b/browser/base/content/content.js
+index 9428613..fc3c00a 100644
+--- a/browser/base/content/content.js
++++ b/browser/base/content/content.js
+@@ -50,216 +50,3 @@ if (Services.prefs.getBoolPref("browser.tabs.remote")) {
+ LoginManagerContent.onUsernameInput(event);
+ });
+ }
+-
+-let AboutHomeListener = {
+- init: function(chromeGlobal) {
+- chromeGlobal.addEventListener('AboutHomeLoad', () => this.onPageLoad(), false, true);
+- },
+-
+- handleEvent: function(aEvent) {
+- switch (aEvent.type) {
+- case "AboutHomeLoad":
+- this.onPageLoad();
+- break;
+- }
+- },
+-
+- receiveMessage: function(aMessage) {
+- switch (aMessage.name) {
+- case "AboutHome:Update":
+- this.onUpdate(aMessage.data);
+- break;
+- }
+- },
+-
+- onUpdate: function(aData) {
+- let doc = content.document;
+- if (doc.documentURI.toLowerCase() != "about:home")
+- return;
+-
+- if (aData.showRestoreLastSession && !PrivateBrowsingUtils.isWindowPrivate(content))
+- doc.getElementById("launcher").setAttribute("session", "true");
+-
+- // Inject search engine and snippets URL.
+- let docElt = doc.documentElement;
+- // set the following attributes BEFORE searchEngineName, which triggers to
+- // show the snippets when it's set.
+- docElt.setAttribute("snippetsURL", aData.snippetsURL);
+- if (aData.showKnowYourRights)
+- docElt.setAttribute("showKnowYourRights", "true");
+- docElt.setAttribute("snippetsVersion", aData.snippetsVersion);
+- docElt.setAttribute("searchEngineName", Services.search.defaultEngine.name);
+- },
+-
+- onPageLoad: function() {
+- let doc = content.document;
+- if (doc.documentURI.toLowerCase() != "about:home" ||
+- doc.documentElement.hasAttribute("hasBrowserHandlers")) {
+- return;
+- }
+-
+- doc.documentElement.setAttribute("hasBrowserHandlers", "true");
+- let updateListener = this;
+- addMessageListener("AboutHome:Update", updateListener);
+- addEventListener("click", this.onClick, true);
+- addEventListener("pagehide", function onPageHide(event) {
+- if (event.target.defaultView.frameElement)
+- return;
+- removeMessageListener("AboutHome:Update", updateListener);
+- removeEventListener("click", this.onClick, true);
+- removeEventListener("pagehide", onPageHide, true);
+- if (event.target.documentElement)
+- event.target.documentElement.removeAttribute("hasBrowserHandlers");
+- }, true);
+-
+- // XXX bug 738646 - when Marketplace is launched, remove this statement and
+- // the hidden attribute set on the apps button in aboutHome.xhtml
+- if (Services.prefs.getPrefType("browser.aboutHome.apps") == Services.prefs.PREF_BOOL &&
+- Services.prefs.getBoolPref("browser.aboutHome.apps"))
+- doc.getElementById("apps").removeAttribute("hidden");
+-
+- sendAsyncMessage("AboutHome:RequestUpdate");
+-
+- doc.addEventListener("AboutHomeSearchEvent", function onSearch(e) {
+- sendAsyncMessage("AboutHome:Search", { searchData: e.detail });
+- }, true, true);
+- },
+-
+- onClick: function(aEvent) {
+- if (!aEvent.isTrusted || // Don't trust synthetic events
+- aEvent.button == 2 || aEvent.target.localName != "button") {
+- return;
+- }
+-
+- let originalTarget = aEvent.originalTarget;
+- let ownerDoc = originalTarget.ownerDocument;
+- let elmId = originalTarget.getAttribute("id");
+-
+- switch (elmId) {
+- case "restorePreviousSession":
+- sendAsyncMessage("AboutHome:RestorePreviousSession");
+- ownerDoc.getElementById("launcher").removeAttribute("session");
+- break;
+-
+- case "downloads":
+- sendAsyncMessage("AboutHome:Downloads");
+- break;
+-
+- case "bookmarks":
+- sendAsyncMessage("AboutHome:Bookmarks");
+- break;
+-
+- case "history":
+- sendAsyncMessage("AboutHome:History");
+- break;
+-
+- case "apps":
+- sendAsyncMessage("AboutHome:Apps");
+- break;
+-
+- case "addons":
+- sendAsyncMessage("AboutHome:Addons");
+- break;
+-
+- case "sync":
+- sendAsyncMessage("AboutHome:Sync");
+- break;
+-
+- case "settings":
+- sendAsyncMessage("AboutHome:Settings");
+- break;
+- }
+- },
+-};
+-AboutHomeListener.init(this);
+-
+-
+-var global = this;
+-
+-let ClickEventHandler = {
+- init: function init() {
+- Cc["@mozilla.org/eventlistenerservice;1"]
+- .getService(Ci.nsIEventListenerService)
+- .addSystemEventListener(global, "click", this, true);
+- },
+-
+- handleEvent: function(event) {
+- // Bug 903016: Most of this code is an unfortunate duplication from
+- // contentAreaClick in browser.js.
+- if (!event.isTrusted || event.defaultPrevented || event.button == 2)
+- return;
+-
+- let [href, node] = this._hrefAndLinkNodeForClickEvent(event);
+-
+- let json = { button: event.button, shiftKey: event.shiftKey,
+- ctrlKey: event.ctrlKey, metaKey: event.metaKey,
+- altKey: event.altKey, href: null, title: null,
+- bookmark: false };
+-
+- if (href) {
+- json.href = href;
+- if (node) {
+- json.title = node.getAttribute("title");
+-
+- if (event.button == 0 && !event.ctrlKey && !event.shiftKey &&
+- !event.altKey && !event.metaKey) {
+- json.bookmark = node.getAttribute("rel") == "sidebar";
+- if (json.bookmark)
+- event.preventDefault(); // Need to prevent the pageload.
+- }
+- }
+-
+- sendAsyncMessage("Content:Click", json);
+- return;
+- }
+-
+- // This might be middle mouse navigation.
+- if (event.button == 1)
+- sendAsyncMessage("Content:Click", json);
+- },
+-
+- /**
+- * Extracts linkNode and href for the current click target.
+- *
+- * @param event
+- * The click event.
+- * @return [href, linkNode].
+- *
+- * @note linkNode will be null if the click wasn't on an anchor
+- * element (or XLink).
+- */
+- _hrefAndLinkNodeForClickEvent: function(event) {
+- function isHTMLLink(aNode) {
+- // Be consistent with what nsContextMenu.js does.
+- return ((aNode instanceof content.HTMLAnchorElement && aNode.href) ||
+- (aNode instanceof content.HTMLAreaElement && aNode.href) ||
+- aNode instanceof content.HTMLLinkElement);
+- }
+-
+- let node = event.target;
+- while (node && !isHTMLLink(node)) {
+- node = node.parentNode;
+- }
+-
+- if (node)
+- return [node.href, node];
+-
+- // If there is no linkNode, try simple XLink.
+- let href, baseURI;
+- node = event.target;
+- while (node && !href) {
+- if (node.nodeType == content.Node.ELEMENT_NODE) {
+- href = node.getAttributeNS("http://www.w3.org/1999/xlink", "href");
+- if (href)
+- baseURI = node.ownerDocument.baseURIObject;
+- }
+- node = node.parentNode;
+- }
+-
+- // In case of XLink, we don't return the node we got href from since
+- // callers expect <a>-like elements.
+- // Note: makeURI() will throw if aUri is not a valid URI.
+- return [href ? makeURI(href, null, baseURI).spec : null, null];
+- }
+-};
+-ClickEventHandler.init();
+diff --git a/browser/base/jar.mn b/browser/base/jar.mn
+index f2a820c..9478039 100644
+--- a/browser/base/jar.mn
++++ b/browser/base/jar.mn
+@@ -33,7 +33,7 @@ browser.jar:
+ 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/mozilla.png (content/abouthome/mozilla.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)
+@@ -45,7 +45,6 @@ browser.jar:
+ content/browser/abouthome/settings@2x.png (content/abouthome/settings@2x.png)
+ content/browser/abouthome/restore@2x.png (content/abouthome/restore@2x.png)
+ content/browser/abouthome/restore-large@2x.png (content/abouthome/restore-large@2x.png)
+- content/browser/abouthome/mozilla@2x.png (content/abouthome/mozilla@2x.png)
+ #ifdef MOZ_SERVICES_HEALTHREPORT
+ content/browser/abouthealthreport/abouthealth.xhtml (content/abouthealthreport/abouthealth.xhtml)
+ content/browser/abouthealthreport/abouthealth.js (content/abouthealthreport/abouthealth.js)
+diff --git a/browser/locales/en-US/chrome/browser/aboutHome.dtd b/browser/locales/en-US/chrome/browser/aboutHome.dtd
+index e84341f..5476d32 100644
+--- a/browser/locales/en-US/chrome/browser/aboutHome.dtd
++++ b/browser/locales/en-US/chrome/browser/aboutHome.dtd
+@@ -13,17 +13,6 @@
+
+ <!ENTITY abouthome.searchEngineButton.label "Search">
+
+-<!-- LOCALIZATION NOTE (abouthome.defaultSnippet1.v1):
+- text in <a/> will be linked to the Firefox features page on mozilla.com
+--->
+-<!ENTITY abouthome.defaultSnippet1.v1 "Thanks for choosing Firefox! 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 Firefox 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 and open source 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 --git a/browser/locales/en-US/chrome/browser-region/region.properties b/browser/locales/en-US/chrome/browser-region/region.properties
+index 087cc50..5654eb9 100644
+--- a/browser/locales/en-US/chrome/browser-region/region.properties
++++ b/browser/locales/en-US/chrome/browser-region/region.properties
@@ -3,17 +3,12 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
@@ -612,7 +1064,7 @@ diff -Nur mozilla-release.orig/browser/locales/en-US/chrome/browser-region/regio
# increment this number when anything gets changed in the list below. This will
# cause Firefox to re-read these prefs and inject any new handlers into the
-@@ -22,20 +17,10 @@
+@@ -22,20 +17,10 @@ browser.contentHandlers.types.0.uri=http://add.my.yahoo.com/rss?url=%s
# don't make any spelling errors here.
gecko.handlerService.defaultHandlersVersion=4
@@ -637,9 +1089,10 @@ diff -Nur mozilla-release.orig/browser/locales/en-US/chrome/browser-region/regio
-gecko.handlerService.schemes.ircs.0.uriTemplate=https://www.mibbit.com/?url=%s
+gecko.handlerService.schemes.ircs.0.name=Freenode Web IRC
+gecko.handlerService.schemes.ircs.0.uriTemplate=https://webchat.freenode.net
-diff -Nur mozilla-release.orig/browser/locales/generic/profile/bookmarks.html.in mozilla-release/browser/locales/generic/profile/bookmarks.html.in
---- mozilla-release.orig/browser/locales/generic/profile/bookmarks.html.in 2013-10-25 20:27:09.000000000 -0200
-+++ mozilla-release/browser/locales/generic/profile/bookmarks.html.in 2013-11-05 03:57:12.972326552 -0200
+diff --git a/browser/locales/generic/profile/bookmarks.html.in b/browser/locales/generic/profile/bookmarks.html.in
+index e925c1e..5101035 100644
+--- a/browser/locales/generic/profile/bookmarks.html.in
++++ b/browser/locales/generic/profile/bookmarks.html.in
@@ -15,13 +15,20 @@
<DT><H3 PERSONAL_TOOLBAR_FOLDER="true" ID="rdf:#$FvPhC3">@bookmarks_toolbarfolder@</H3>
<DD>@bookmarks_toolbarfolder_description@
@@ -657,7 +1110,7 @@ diff -Nur mozilla-release.orig/browser/locales/generic/profile/bookmarks.html.in
+ <DT><A HREF="https://parabolagnulinux.org/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABL0lEQVQ4jWNgoCcoq16VU1GzygnEBtEVDWuV8GooKFuhWVG3uiM3d5UokG4qr1szAaa5vGbVt4ralacwNDU0rGIrr10VBVG0+lxhwyqVsqqVtRW1q6eD5IvL19oB2V+B+D9QzQu4xtDQVZylVavygRKHqurWOlbUrknKK12qWlCwWLK8elUFA8N/xvLy5VYVtas+gzWDDVi9E2QjT1XdcufymjWpQJt1cXmnvHwVP1DzR7hmIC6vW+kOtpnYQKysW30arrlm9RVi9cFBRfXKJTADympWJZNsQFnN6rUQA1adAQU2SZqBXmUGBtozUDiU1qxQJtl2oCY3kO2l1avCSdYMAsBAWwyM2plkaS4p6eYGOv1YQ0MDB1kGlFWuDChuWKZBlmYQqK5eJU22ZkIAAEIlnQZQkzITAAAAAElFTkSuQmCC">Parabola GNU/Linux-libre</A>
+ <DT><A HREF="https://parabolagnulinux.org/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.parabolagnulinux.org/" 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/9hAAAA/klEQVQ4jWP4TyFgGAYGLN25iDID+pd0UGbAxMUTUQT+fP36/9+/f2A2jMZrwKyNEC/8+P71/6/ijP9/fv/+/23Hzv+fly/9/7m7+//XkuL/7yvL/j+PCf3/qrn+/+ed2/7/evocZPr/b3fu/Ge4cuf6/2/fPv5PnaD9f720wP9lyir/F0kI/V8myv9/jbjA/w3i/P+XC/H8n8Uv8H+6kOj/JZIS/2eqaP2/umPP/88/fv5nADnz+cuX/x0S9f8n6Kv/jxGQ+R8vJPu/x9D+/2wrz//9hnb/mzVM/5fKav4vMbL835OZ+//ty9dw7zFcuPuYKL/iDAOydY4aAAcA33O6tzziloYAAAAASUVORK5CYII=">Parabola GNU/Linux-libre Labs</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>
@@ -667,49 +1120,101 @@ diff -Nur mozilla-release.orig/browser/locales/generic/profile/bookmarks.html.in
+ <DT><A HREF="http://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 mozilla-release.orig/dom/ipc/test.xul mozilla-release/dom/ipc/test.xul
---- mozilla-release.orig/dom/ipc/test.xul 2013-10-25 20:27:14.000000000 -0200
-+++ mozilla-release/dom/ipc/test.xul 2013-11-05 03:57:12.982325866 -0200
-@@ -302,6 +302,6 @@
- oncommand="document.getElementById('page').QueryInterface(Components.interfaces.nsIFrameLoaderOwner).frameLoader.delayRemoteDialogs = this.checked;"/>
- </toolbar>
-
-- <browser type="content" src="http://www.google.com/" flex="1" id="page" remote="true"/>
-+ <browser type="content" src="https://duckduckgo.com/html" flex="1" id="page" remote="true"/>
- <label id="messageLog" value="" crop="center"/>
- </window>
-diff -Nur mozilla-release.orig/layout/ipc/test-ipcbrowser.xul mozilla-release/layout/ipc/test-ipcbrowser.xul
---- mozilla-release.orig/layout/ipc/test-ipcbrowser.xul 2013-10-25 20:27:28.000000000 -0200
-+++ mozilla-release/layout/ipc/test-ipcbrowser.xul 2013-11-05 03:57:12.982325866 -0200
-@@ -73,6 +73,6 @@
- label="setViewportScale"/>
- </toolbar>
-
-- <browser type="content" src="http://www.google.com/" flex="1" id="content"
-+ <browser type="content" src="https://duckduckgo.com/html" flex="1" id="content"
- remote="true"/>
- </window>
-diff -Nur mozilla-release.orig/modules/libpref/src/init/all.js mozilla-release/modules/libpref/src/init/all.js
---- mozilla-release.orig/modules/libpref/src/init/all.js 2013-11-05 03:52:59.219584174 -0200
-+++ mozilla-release/modules/libpref/src/init/all.js 2013-11-05 03:57:12.985658973 -0200
-@@ -4255,20 +4255,6 @@
- // Disable freeing dirty pages when minimizing memory.
- pref("memory.free_dirty_pages", false);
-
--pref("social.enabled", false);
--// comma separated list of domain origins (e.g. https://domain.com) for
--// providers that can install from their own website without user warnings.
--// entries are
--pref("social.whitelist", "https://mozsocial.cliqz.com,https://now.msn.com,https://mixi.jp");
--// omma separated list of domain origins (e.g. https://domain.com) for directory
--// websites (e.g. AMO) that can install providers for other sites
--pref("social.directories", "https://addons.mozilla.org");
--// remote-install allows any website to activate a provider, with extended UI
--// notifying user of installation. we can later pref off remote install if
--// necessary. This does not affect whitelisted and directory installs.
--pref("social.remote-install.enabled", true);
--pref("social.toast-notifications.enabled", true);
--
- // Disable idle observer fuzz, because only privileged content can access idle
- // observers (bug 780507).
- pref("dom.idle-observers-api.fuzz_time.disabled", true);
+diff --git a/browser/modules/AboutHome.jsm b/browser/modules/AboutHome.jsm
+index 98c443d..0173762 100644
+--- a/browser/modules/AboutHome.jsm
++++ b/browser/modules/AboutHome.jsm
+@@ -8,7 +8,7 @@ let Cc = Components.classes;
+ 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");
+@@ -16,66 +16,6 @@ Components.utils.import("resource://gre/modules/Services.jsm");
+ XPCOMUtils.defineLazyModuleGetter(this, "PrivateBrowsingUtils",
+ "resource://gre/modules/PrivateBrowsingUtils.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
+@@ -185,17 +125,8 @@ let AboutHome = {
+ ss.promiseInitialized.then(function() {
+ let data = {
+ showRestoreLastSession: ss.canRestoreLastSession,
+- snippetsURL: AboutHomeUtils.snippetsURL,
+- showKnowYourRights: AboutHomeUtils.showKnowYourRights,
+- snippetsVersion: AboutHomeUtils.snippetsVersion
+ };
+
+- 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/iceweasel-libre/mozconfig b/libre/iceweasel-libre/mozconfig
index d2ea098d2..957ea0dbf 100644
--- a/libre/iceweasel-libre/mozconfig
+++ b/libre/iceweasel-libre/mozconfig
@@ -29,6 +29,7 @@ ac_add_options --enable-pulseaudio
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/iceweasel-libre/replace-urls.txt b/libre/iceweasel-libre/replace-urls.txt
deleted file mode 100644
index 278dd1a74..000000000
--- a/libre/iceweasel-libre/replace-urls.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-# These are replaced in order, so if one is a subset of another, the smaller one should be last
-# These are whitespace-separated EREs, comments are lines starting with '#'
-
-https?://addons\.mozilla\.org/((%LOCALE%|@AB_CD@|en-US|ru)/)?([a-zA-Z%-]+)/dictionaries/?(\?[^"']*)? https://parabolagnulinux.org/packages/\?repo=Extra\&q=hunspell-
-https?://addons\.mozilla\.org/((%LOCALE%|@AB_CD@|en-US|ru)/)?([a-zA-Z%-]+)/plugins/?(\?[^"']*)? http://directory.fsf.org/wiki/GNU_IceCat
-https?://addons\.mozilla\.org/((%LOCALE%|@AB_CD@|en-US|ru)/)?([a-zA-Z%-]+)/personas/?(\?[^"']*)? http://directory.fsf.org/wiki/GNU_IceCat
-https?://addons\.mozilla\.org/((%LOCALE%|@AB_CD@|en-US|ru)/)?([a-zA-Z%-]+)/recommended/?(\?[^"']*)? http://directory.fsf.org/wiki/GNU_IceCat
-https?://addons\.mozilla\.org/((%LOCALE%|@AB_CD@|en-US|ru)/)?([a-zA-Z%-]+)/search-engines/?(\?[^"']*)? http://directory.fsf.org/wiki/GNU_IceCat
-https?://addons\.mozilla\.org/((%LOCALE%|@AB_CD@|en-US|ru)/)?([a-zA-Z%-]+)/search/?(\?[^"']*)? http://directory.fsf.org/wiki/GNU_IceCat
-https?://addons\.mozilla\.org/((%LOCALE%|@AB_CD@|en-US|ru)/)?([a-zA-Z%-]+)/themes/?(\?[^"']*)? http://directory.fsf.org/wiki/GNU_IceCat
-https?://addons\.mozilla\.org/((%LOCALE%|@AB_CD@|en-US|ru)/)?([a-zA-Z%-]+)/?(\?[^"']*)?" http://directory.fsf.org/wiki/GNU_IceCat"
-https?://addons\.mozilla\.org/((%LOCALE%|@AB_CD@|en-US|ru)/)?([a-zA-Z%-]+)/?(\?[^"']*)?$ http://directory.fsf.org/wiki/GNU_IceCat
-
-https://addons.mozilla.org/firefox/collections/mozilla/webdeveloper/ http://directory.fsf.org/wiki/GNU_IceCat
-
-https?://services\.addons\.mozilla\.org/(%LOCALE%|@AB_CD@|en-US|ru)/([a-zA-Z%-]+)/ http://directory.fsf.org/wiki/GNU_IceCat.\2/
-
-https?://pfs\.mozilla\.org/plugins/PluginFinderService\.php http://directory.fsf.org/wiki/GNU_IceCat
-#https?://versioncheck\.addons\.mozilla\.org/update/VersionCheck\.php
-#https?://versioncheck-bg\.addons\.mozilla\.org/update/VersionCheck\.php
-
-"https?://addons\.mozilla\.org/" "http://directory.fsf.org/wiki/GNU_IceCat"
-
-# hack: these aren't URLs, per se
-(addonsBrowseAll\.description\s*=.*)addons\.mozilla\.org \1directory.fsf.org/wiki/GNU_IceCat