diff options
Diffstat (limited to 'libre/iceweasel-libre')
-rw-r--r-- | libre/iceweasel-libre/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch | 4 | ||||
-rw-r--r-- | libre/iceweasel-libre/Fixup-Reset-Firefox-after-bad-merge.patch | 108 | ||||
-rw-r--r-- | libre/iceweasel-libre/PKGBUILD | 62 | ||||
-rw-r--r-- | libre/iceweasel-libre/gnu_headshadow.png | bin | 0 -> 6785 bytes | |||
-rw-r--r-- | libre/iceweasel-libre/iceweasel-install-dir.patch | 22 | ||||
-rw-r--r-- | libre/iceweasel-libre/iceweasel.install | 4 | ||||
-rw-r--r-- | libre/iceweasel-libre/libre.patch | 745 | ||||
-rw-r--r-- | libre/iceweasel-libre/libre.patch.goal | 935 | ||||
-rw-r--r-- | libre/iceweasel-libre/mozconfig | 1 | ||||
-rw-r--r-- | libre/iceweasel-libre/replace-urls.txt | 25 |
10 files changed, 1723 insertions, 183 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..043e68da8 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/&/&@'; } @@ -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' + '6df26fc131b88c9ec894757681e7f6a6' + '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 Binary files differnew file mode 100644 index 000000000..e0f73a3bf --- /dev/null +++ b/libre/iceweasel-libre/gnu_headshadow.png 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..ced25fcc5 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..d4ecde0 100644 +--- a/browser/base/content/abouthome/aboutHome.css ++++ b/browser/base/content/abouthome/aboutHome.css +@@ -49,15 +49,6 @@ a { background-repeat: no-repeat; } @@ -28,10 +40,14 @@ diff -Nur mozilla-release.orig/browser/base/content/abouthome/aboutHome.css mozi - width: 470px; -} - - #searchForm { +-#searchForm { +- display: -moz-box; +-} +- + #searchLogoContainer { display: -moz-box; - } -@@ -72,8 +67,7 @@ + -moz-box-align: center; +@@ -72,8 +63,7 @@ a { #searchEngineLogo { display: inline-block; height: 28px; @@ -41,7 +57,7 @@ diff -Nur mozilla-release.orig/browser/base/content/abouthome/aboutHome.css mozi } #searchText { -@@ -145,48 +139,6 @@ +@@ -145,48 +135,6 @@ a { transition-duration: 0ms; } @@ -90,7 +106,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 +283,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 +313,6 @@ body[narrow] #restorePreviousSession::before { background-image: url("chrome://branding/content/about-logo@2x.png"); } @@ -108,13 +157,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 +348,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 +356,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 +418,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 +435,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 +526,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 +609,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 +633,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 +649,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 +739,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 +762,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&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 +1068,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 +1093,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 +1114,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 +1124,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/libre.patch.goal b/libre/iceweasel-libre/libre.patch.goal new file mode 100644 index 000000000..5d4bca224 --- /dev/null +++ b/libre/iceweasel-libre/libre.patch.goal @@ -0,0 +1,935 @@ +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); + +-// Default social providers +-pref("social.manifest.facebook", "{\"origin\":\"https://www.facebook.com\",\"name\":\"Facebook Messenger\",\"workerURL\":\"https://www.facebook.com/desktop/fbdesktop2/socialfox/fbworker.js.php\",\"shareURL\":\"https://www.facebook.com/sharer/sharer.php?u=%{url}\",\"iconURL\":\"data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAAX0lEQVQ4jWP4%2F%2F8%2FAyUYTFhHzjgDxP9JxGeQDSBVMxgTbUBCxer%2Fr999%2BQ8DJBuArJksA9A10s8AXIBoA0B%2BR%2FY%2FjD%2BEwoBoA1yT5v3PbdmCE8MAshhID%2FUMoDgzUYIBj0Cgi7ar4coAAAAASUVORK5CYII%3D\",\"sidebarURL\":\"https://www.facebook.com/desktop/fbdesktop2/?socialfox=true\",\"icon32URL\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAADbklEQVRYCc1Xv08UQRj99tctexAuCEFjRE0kGBEtLDSGqIWNxkYKbTAxNlY2JhaGWltNtNFeKgsKKxITK43/gCYW+IsoRhA4D47bH7fn9+bcvdm5JR7sefolC3Ozu9978+bNN7PayUv3HN3umdY0Y6IWBtSJ0HSTarXqTOiuTep6Lj+tdxAcA8RAgSmwdd2aCDs0clldYALb/FvgYVhjmfliVA2XpjEgWo0Attn42Z6WH1RFor5ehwo9XQIUZMoVn4qlCoVMSo62EvD8Kh0b3U2Xz43R2PBO6mUCGDlAf65V6MadZzT/rUimoccc2kYA4BfPHqJb105RzjJigKhRq9kEJUBIjgYVuXeL7SAI6eD+Abp5dTwVHOmEHxT50d8WBYJqSOdPj5BjW8gZR8UNqFR2xagx/65XFYaMH+BGWwiYpi4UkBPPLxTp9v1Z+lHc4DWvCQXWmIy6EjITgKowVd5Jjv7N3Hd6y5esigoOwpkJIAmMpZpLJGdiaaC4F0UmAj6bD84GCEwmB/qxMmRilmnwb/mpjAocHh4UEoNAt5NLZB7oy9OJo0PxqkAtePdhiSqunyC1LQUwWMPQaOr6GRre258Ajn4cP7KHcEXhsxpXbj+lT19X2TMNGTLVAcjcalS8gDwsQ2UOMhH4k8FkcrEn5E5ub2sKohxLK2VR77Hl9RUcsrgeRIEiVOT6z+tDbIeLy+vk+kGTCbXxycet6xhl//3f6bJEkdHYhA+mLtDIvoH4ieev5+juoxdk5+pjhALYEdXIpEB5w+NlSKSzqVQ/+H7IO6BLtl3fngGMiqhGJgIwlM6qpyUGFjySdk8m0Zg0ubeD7X9OIDEFajltRQgUJaUKx69tdgaQa0FMADuahZPMFtcEwNPm2hA7ZI5sK4aoE2NvYI+o8hkCIe7CwTv68zS0q9Dk5vpbm/8FXxitSzmMFHpsGj0wyLUheTwD2Y9fVgh1Ae0EPUgD9241ZEnld+v5kgnVZ/8fE0brVh5BK+1oCqKKF72Dk7HwBsssB/pklU1dfChy3S659H5+uelgIb+8WRv1/uGTV9Sdb5wJFlfW6fPCalMhwhSU1j2xKwKbP838GcOwJja4TqO0bjdmXxYTy1EYjFdCWoCEYZhseH/GDL3yJPHnuW6YmT7P1SlIA4768Hke4vOcsX8BE346lLHhDUQAAAAASUVORK5CYII=\", \"icon64URL\":\"data:image/png;base64,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\", \"description\":\"Keep up with friends wherever you go on the web.\",\"author\":\"Facebook\",\"homepageURL\":\"https://www.facebook.com/about/messenger-for-firefox\",\"builtin\":\"true\"}"); +- +-pref("social.sidebar.open", true); +-pref("social.sidebar.unload_timeout_ms", 10000); ++// removed facebook sidebar with Iceweasel. + + pref("dom.identity.enabled", false); + +diff --git a/browser/base/content/abouthome/aboutHome.css b/browser/base/content/abouthome/aboutHome.css +index c270318..d4ecde0 100644 +--- a/browser/base/content/abouthome/aboutHome.css ++++ b/browser/base/content/abouthome/aboutHome.css +@@ -49,15 +49,6 @@ a { + background-repeat: no-repeat; + } + +-#searchForm, +-#snippets { +- width: 470px; +-} +- +-#searchForm { +- display: -moz-box; +-} +- + #searchLogoContainer { + display: -moz-box; + -moz-box-align: center; +@@ -72,8 +63,7 @@ a { + #searchEngineLogo { + display: inline-block; + height: 28px; +- width: 70px; +- min-width: 70px; ++ width: 47px; + } + + #searchText { +@@ -145,48 +135,6 @@ a { + 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 +283,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 +313,6 @@ body[narrow] #restorePreviousSession::before { + 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 +348,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..0d81017 100644 +--- a/browser/base/content/abouthome/aboutHome.js ++++ b/browser/base/content/abouthome/aboutHome.js +@@ -3,152 +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. ++ "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 = [ +- "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. +- +-// 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 @@ let gObserver = new MutationObserver(function (mutations) { + if (mutation.attributeName == "searchEngineName") { + setupSearchEngine(); + if (!gInitialized) { +- ensureSnippetsMapThen(loadSnippets); + gInitialized = true; + } + return; +@@ -170,10 +61,6 @@ window.addEventListener("pageshow", function () { + 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() { +@@ -181,117 +68,6 @@ window.addEventListener("pagehide", function() { + 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) +-{ +- 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; +@@ -341,156 +117,6 @@ function setupSearchEngine() + + } + +-/** +- * 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() +-{ +- 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() +-{ +- 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() +-{ +- // 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 --git a/browser/base/content/abouthome/aboutHome.xhtml b/browser/base/content/abouthome/aboutHome.xhtml +index 1d03d38..4f9b6b2 100644 +--- a/browser/base/content/abouthome/aboutHome.xhtml ++++ b/browser/base/content/abouthome/aboutHome.xhtml +@@ -43,15 +43,6 @@ + <input id="searchSubmit" type="submit" value="&abouthome.searchEngineButton.label;"/> + </form> + </div> +- +- <div id="snippetContainer"> +- <div id="defaultSnippets" hidden="true"> +- <span id="defaultSnippet1">&abouthome.defaultSnippet1.v1;</span> +- <span id="defaultSnippet2">&abouthome.defaultSnippet2.v1;</span> +- </div> +- <span id="rightsSnippet" hidden="true">&abouthome.rightsSnippet;</span> +- <div id="snippets"/> +- </div> + </div> + <div class="spacer"/> + +@@ -66,7 +57,6 @@ + <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&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..ba010f3 100644 +--- a/browser/base/content/content.js ++++ b/browser/base/content/content.js +@@ -80,14 +80,8 @@ let AboutHomeListener = { + if (aData.showRestoreLastSession && !PrivateBrowsingUtils.isWindowPrivate(content)) + doc.getElementById("launcher").setAttribute("session", "true"); + +- // Inject search engine and snippets URL. ++ // Inject search engine. + 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); + }, + +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/. + + # 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=http://add.my.yahoo.com/rss?url=%s ++browser.search.order.1=DuckDuckGo HTML ++browser.search.order.2=DuckDuckGo Lite ++browser.search.order.3=Seeks Search + + # 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 @@ browser.contentHandlers.types.0.uri=http://add.my.yahoo.com/rss?url=%s + # 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=https://www.mibbit.com/?url=%s ++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=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 --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@ + <DL><p> +- <DT><A HREF="https://www.mozilla.org/@AB_CD@/firefox/central/" ID="rdf:#$GvPhC3">@getting_started@</A> ++ <DT><A HREF="https://parabolagnulinux.org/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABL0lEQVQ4jWNgoCcoq16VU1GzygnEBtEVDWuV8GooKFuhWVG3uiM3d5UokG4qr1szAaa5vGbVt4ralacwNDU0rGIrr10VBVG0+lxhwyqVsqqVtRW1q6eD5IvL19oB2V+B+D9QzQu4xtDQVZylVavygRKHqurWOlbUrknKK12qWlCwWLK8elUFA8N/xvLy5VYVtas+gzWDDVi9E2QjT1XdcufymjWpQJt1cXmnvHwVP1DzR7hmIC6vW+kOtpnYQKysW30arrlm9RVi9cFBRfXKJTADympWJZNsQFnN6rUQA1adAQU2SZqBXmUGBtozUDiU1qxQJtl2oCY3kO2l1avCSdYMAsBAWwyM2plkaS4p6eYGOv1YQ0MDB1kGlFWuDChuWKZBlmYQqK5eJU22ZkIAAEIlnQZQkzITAAAAAElFTkSuQmCC">Parabola GNU/Linux-libre</A> + </DL><p> +- <DT><H3 ID="rdf:#$ZvPhC3">@firefox_heading@</H3> ++ <DT><H3 ID="rdf:#$YvPhC3">Parabola GNU/Linux-libre</H3> + <DL><p> +- <DT><A HREF="https://www.mozilla.org/@AB_CD@/firefox/help/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$22iCK1">@firefox_help@</A> +- <DT><A HREF="https://www.mozilla.org/@AB_CD@/firefox/customize/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$32iCK1">@firefox_customize@</A> +- <DT><A HREF="https://www.mozilla.org/@AB_CD@/contribute/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$42iCK1">@firefox_community@</A> +- <DT><A HREF="https://www.mozilla.org/@AB_CD@/about/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$52iCK1">@firefox_about@</A> ++ <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/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="http://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="http://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="http://www.gnu.org/software/gnuzilla/addons.html" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAGFBMVEVFRUV+fn6mpqa/v7/Ozs7Y2Njg4OD8/Pwuhn+TAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9MBDhQ6Gd8s57cAAAEVSURBVBgZBcGxVtpgGADQL9gHSBzqSognzMixmcWWzB6pmRHhnyvku6/fewMAIPD3TwHmQxHs6vr+A16bphNum/vV0x429201hcPjAGBTDZGnR/Kw1U181+u4HXvOdSxjUcztz8jjg1xGVBG9XPYxt4PviKiaWLg168iXtbrq+mPT1utjNcR1U73deRnL43M2sRgj3+oYs8uL3rLphPd2QWmHbMu/VS/cnk6UdtSW657g9yBlcZ0UAkUWzPvyRaAYmfd+HT4IZtvC59ibEJxXiqJjQpBpNEufBYE0McoOAunGhRMEFIPc7h4goJigQEBxk8u7AgEpL3IEAUZfcgAByGFXQACm5+4MAuB19QMEgI8CAgDgP4rivVgoKP6ZAAAAAElFTkSuQmCC">Free addons</A> ++ <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 --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 |