summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorw2018-07-26 10:42:23 +0200
committerw2018-07-26 10:42:23 +0200
commit4c4b4645c78488abd6692f782081f1a35fc46489 (patch)
tree6552e7ee2c4a628388c25539449a11d142d0991d
parentb62a0791338d117c8d0de52b418bc6f348c43e10 (diff)
downloadaur-4c4b4645c78488abd6692f782081f1a35fc46489.tar.gz
Update to version 60.1.0
-rw-r--r--.SRCINFO48
-rw-r--r--PKGBUILD90
-rw-r--r--firefox-60-disable-data-sharing-infobar.patch12
-rw-r--r--firefox-60-disable-first-run-privacy-policy.patch16
-rw-r--r--firefox-60-disable-location.services.mozilla.com.patch44
-rw-r--r--firefox-60-disable-newtab-page-remote.patch249
-rw-r--r--firefox-60-disable-pocket-leftovers.patch68
-rw-r--r--firefox-60-disable-reader.patch141
-rw-r--r--firefox-60-disable-telemetry.patch13
-rw-r--r--firefox-60-prefs.patch417
10 files changed, 1027 insertions, 71 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 950129d05f5..d766be34bac 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,8 +1,8 @@
# Generated by makepkg 5.0.0
-# Wed Nov 22 08:50:44 UTC 2017
+# Thu Jul 26 08:42:01 UTC 2018
pkgbase = firefox-esr-privacy
pkgdesc = Standalone web browser from mozilla.org
- pkgver = 52.5.0
+ pkgver = 60.1.0
pkgrel = 1
url = https://www.mozilla.org/firefox/
install = firefox.install
@@ -19,6 +19,9 @@ pkgbase = firefox-esr-privacy
makedepends = mesa
makedepends = xorg-server
makedepends = inetutils
+ makedepends = rust
+ makedepends = patchelf
+ makedepends = pulseaudio
depends = autoconf2.13
depends = gtk2
depends = libxt
@@ -33,34 +36,33 @@ pkgbase = firefox-esr-privacy
depends = nss
depends = hunspell
depends = sqlite
+ depends = apulse
provides = firefox
conflicts = firefox
options = !emptydirs
- source = https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/52.5.0esr/source/firefox-52.5.0esr.source.tar.xz
- source = firefox-install-dir.patch
- source = firefox-52-disable-location.services.mozilla.com.patch
- source = firefox-52-disable-pocket-leftovers.patch
- source = firefox-52-disable-sponsored-tiles.patch
- source = firefox-52-prefs.patch
- source = firefox-52-disable-telemetry.patch
- source = firefox-52-disable-data-sharing-infobar.patch
- source = firefox-52-disable-reader.patch
+ source = https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/60.1.0esr/source/firefox-60.1.0esr.source.tar.xz
+ source = firefox-60-disable-data-sharing-infobar.patch
+ source = firefox-60-disable-location.services.mozilla.com.patch
+ source = firefox-60-disable-pocket-leftovers.patch
+ source = firefox-60-disable-newtab-page-remote.patch
+ source = firefox-60-disable-reader.patch
+ source = firefox-60-disable-telemetry.patch
+ source = firefox-60-prefs.patch
+ source = firefox-60-disable-first-run-privacy-policy.patch
source = firefox.desktop
- source = firefox-fixed-loading-icon.png
source = mozconfig
validpgpkeys = 2B90598A745E992F315E22C58AB132963A06537A
- sha256sums = 0e583576f6bbdc9d863656c43b8c97a60f276725bca20459b7511e2afacac85f
- sha256sums = b7a9eb7f4c9f5c297978459338d389e5bc790e5c5d89805668f7d24ea1d485b2
- sha256sums = 8d9afa1f940a9dac689ead40a57990d1491f34a1787b2222f8f5b5e485d54103
- sha256sums = d6760634e4926ce5ad0df501d06139a5e693d7058e671a195c9e0b54197c1d96
- sha256sums = a72c657784dc5804509456d9ba39ccc8d5e5998c847f49abbcfeb2a547290815
- sha256sums = 80d6181d11c200aca2781f69ffeafb59ea23952304d161c2812a2f5a98b273b0
- sha256sums = b661dcaa00323119e58a3b9d5b6e732291a107fbd29d242fb1ddcd36ea50106e
- sha256sums = 52a94f48e562f98ba0b22b43b1684f6a813872b9c310d6f7567fe91aaab4944b
- sha256sums = 7f171b7d69866ac6d8945ab0867b2646964362c791875c6428b4c2c8e3f3fb5b
+ sha256sums = a4e7bb80e7ebab19769b2b8940966349136a99aabd497034662cffa54ea30e40
+ sha256sums = d8377a0f225df1e334bf82845ba082f499af561311c7033b61084b24c720924f
+ sha256sums = 05da47c8e2b5271f1979b7f5c15941b50645e68d31b556fcc8ab381699c979f5
+ sha256sums = 22f8a6e42617bc733e0627513dd58dbaa4a924a725db00ad7b2b666425d7edd2
+ sha256sums = f5f58edd11e004cbbd3504bcc531b6259ecd4a67b45e0656dda70f08ef290d7f
+ sha256sums = ce583b1e164f62d4869e97e46c724ea946f605733f0f2b1919162ca58b97883d
+ sha256sums = adc25bf1a8712ce1a3aa91afa7ddbb8df805671f462089f67ae16adc5c3390a5
+ sha256sums = 57ea308737c2d82fff6b8ad55ceeed445018c6fd482efd14b2026312e8485b6c
+ sha256sums = 3c8008f7d0d0a2fcafcdc24f9a838bc72306d452f1dce233a65fcf0eba3d4e0f
sha256sums = 0bcfe168964338ec9c6e781479f2f8d06aa44f2262d6405ff8fa42983be89630
- sha256sums = 68e3a5b47c6d175cc95b98b069a15205f027cab83af9e075818d38610feb6213
- sha256sums = c4329549076a3cce493a5053e4bd84d088b04713021c6ebbae0ab68a02de3d8c
+ sha256sums = c3d0a8c25d1122b20151fe085a8d5bc79234ae3dc05a606855eb68cfb7817d2c
pkgname = firefox-esr-privacy
diff --git a/PKGBUILD b/PKGBUILD
index 2b3498a53d0..c7e5c1330e2 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,96 +1,86 @@
# firefox-esr-privacy
pkgname=firefox-esr-privacy
-_basever=52
-pkgver=52.5.0
+_basever=60
+pkgver=60.1.0
pkgrel=1
pkgdesc="Standalone web browser from mozilla.org"
arch=('i686' 'x86_64')
license=('MPL' 'GPL' 'LGPL')
url="https://www.mozilla.org/firefox/"
depends=('autoconf2.13' 'gtk2' 'libxt' 'startup-notification' 'dbus-glib' 'alsa-lib' 'desktop-file-utils'
- 'hicolor-icon-theme' 'libvpx' 'icu' 'libevent' 'nss' 'hunspell' 'sqlite')
-makedepends=('unzip' 'zip' 'diffutils' 'python2' 'yasm' 'mesa' 'xorg-server' 'inetutils')
+ 'hicolor-icon-theme' 'libvpx' 'icu' 'libevent' 'nss' 'hunspell' 'sqlite' 'apulse')
+makedepends=('unzip' 'zip' 'diffutils' 'python2' 'yasm' 'mesa' 'xorg-server' 'inetutils' 'rust' 'patchelf' 'pulseaudio')
install=firefox.install
options=('!emptydirs')
conflicts=('firefox')
provides=('firefox')
source=(https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${pkgver}esr/source/firefox-${pkgver}esr.source.tar.xz
- firefox-install-dir.patch
+ firefox-${_basever}-disable-data-sharing-infobar.patch
firefox-${_basever}-disable-location.services.mozilla.com.patch
firefox-${_basever}-disable-pocket-leftovers.patch
- firefox-${_basever}-disable-sponsored-tiles.patch
- firefox-${_basever}-prefs.patch
- firefox-${_basever}-disable-telemetry.patch
- firefox-${_basever}-disable-data-sharing-infobar.patch
+ firefox-${_basever}-disable-newtab-page-remote.patch
firefox-${_basever}-disable-reader.patch
+ firefox-${_basever}-disable-telemetry.patch
+ firefox-${_basever}-prefs.patch
+ firefox-${_basever}-disable-first-run-privacy-policy.patch
firefox.desktop
- firefox-fixed-loading-icon.png
mozconfig)
-sha256sums=('0e583576f6bbdc9d863656c43b8c97a60f276725bca20459b7511e2afacac85f'
- 'b7a9eb7f4c9f5c297978459338d389e5bc790e5c5d89805668f7d24ea1d485b2'
- '8d9afa1f940a9dac689ead40a57990d1491f34a1787b2222f8f5b5e485d54103'
- 'd6760634e4926ce5ad0df501d06139a5e693d7058e671a195c9e0b54197c1d96'
- 'a72c657784dc5804509456d9ba39ccc8d5e5998c847f49abbcfeb2a547290815'
- '80d6181d11c200aca2781f69ffeafb59ea23952304d161c2812a2f5a98b273b0'
- 'b661dcaa00323119e58a3b9d5b6e732291a107fbd29d242fb1ddcd36ea50106e'
- '52a94f48e562f98ba0b22b43b1684f6a813872b9c310d6f7567fe91aaab4944b'
- '7f171b7d69866ac6d8945ab0867b2646964362c791875c6428b4c2c8e3f3fb5b'
+sha256sums=('a4e7bb80e7ebab19769b2b8940966349136a99aabd497034662cffa54ea30e40'
+ 'd8377a0f225df1e334bf82845ba082f499af561311c7033b61084b24c720924f'
+ '05da47c8e2b5271f1979b7f5c15941b50645e68d31b556fcc8ab381699c979f5'
+ '22f8a6e42617bc733e0627513dd58dbaa4a924a725db00ad7b2b666425d7edd2'
+ 'f5f58edd11e004cbbd3504bcc531b6259ecd4a67b45e0656dda70f08ef290d7f'
+ 'ce583b1e164f62d4869e97e46c724ea946f605733f0f2b1919162ca58b97883d'
+ 'adc25bf1a8712ce1a3aa91afa7ddbb8df805671f462089f67ae16adc5c3390a5'
+ '57ea308737c2d82fff6b8ad55ceeed445018c6fd482efd14b2026312e8485b6c'
+ '3c8008f7d0d0a2fcafcdc24f9a838bc72306d452f1dce233a65fcf0eba3d4e0f'
'0bcfe168964338ec9c6e781479f2f8d06aa44f2262d6405ff8fa42983be89630'
- '68e3a5b47c6d175cc95b98b069a15205f027cab83af9e075818d38610feb6213'
- 'c4329549076a3cce493a5053e4bd84d088b04713021c6ebbae0ab68a02de3d8c')
+ 'c3d0a8c25d1122b20151fe085a8d5bc79234ae3dc05a606855eb68cfb7817d2c')
validpgpkeys=('2B90598A745E992F315E22C58AB132963A06537A')
prepare() {
- cd firefox-${pkgver}esr
+ #cd firefox-${pkgver}esr
+ cd firefox-${pkgver}
cp "$srcdir"/mozconfig mozconfig
-
- # Disable sponsored tiles
- # This patch is not needed anymore, it also breaks the newtab page (nothing on it) and restore closed tabs does not work anymore
- # patch -Np1 -i "$srcdir"/firefox-${_basever}-disable-sponsored-tiles.patch
-
+
# Disable Pocket integration leftovers
patch -Np1 -i "$srcdir"/firefox-${_basever}-disable-pocket-leftovers.patch
# Remove pocket source directory
rm -fr browser/extensions/pocket
+ # Disable pocket on the new tab page and disable remote fetching of top sites
+ patch -Np1 -i "$srcdir"/firefox-${_basever}-disable-newtab-page-remote.patch
# Disable geo IP lookup on first run
patch -Np1 -i "$srcdir"/firefox-${_basever}-disable-location.services.mozilla.com.patch
-
+
# Set some sensible defaults
patch -Np1 -i "$srcdir"/firefox-${_basever}-prefs.patch
-
+
# Disable telemetry options
patch -Np1 -i "$srcdir"/firefox-${_basever}-disable-telemetry.patch
-
+
# Disable infobar "Firefox automatically sends some data to Mozilla..."
patch -Np1 -i "$srcdir"/firefox-${_basever}-disable-data-sharing-infobar.patch
-
+
# Disable reader view
patch -Np1 -i "$srcdir"/firefox-${_basever}-disable-reader.patch
-
- # Fix build with Fontconfig 2.6
- sed -i '/^ftcache.h/a ftfntfmt.h' config/system-headers
-
- # Fix tab loading icon not working with libpng 1.6
- cp "$srcdir"/firefox-fixed-loading-icon.png browser/themes/linux/tabbrowser/loading.png
-
- # Install in /usr/lib/firefox without version number
- patch -Np1 -i "$srcdir"/firefox-install-dir.patch
+
+ # Disable privacy policy new tab on first run
+ patch -Np1 -i "$srcdir"/firefox-${_basever}-disable-first-run-privacy-policy.patch
}
build() {
- cd firefox-${pkgver}esr
-
- # Fix configure: error: Your toolchain does not support C++0x/C++11 mode properly. Please upgrade your toolchain
- unset CPPFLAGS
-
- make -f client.mk
+ #cd firefox-${pkgver}esr
+ cd firefox-${pkgver}
+
+ ./mach build
}
package() {
- cd firefox-${pkgver}esr
- make -f client.mk DESTDIR="$pkgdir" INSTALL_SDK= install
+ #cd firefox-${pkgver}esr
+ cd firefox-${pkgver}
+ DESTDIR="$pkgdir" ./mach install
install -Dm644 "$srcdir"/firefox.desktop "$pkgdir/usr/share/applications/firefox.desktop"
@@ -98,4 +88,8 @@ package() {
rm -rf "$pkgdir"/usr/lib/firefox/{dictionaries,hyphenation}
ln -s /usr/share/hunspell "$pkgdir/usr/lib/firefox/dictionaries"
ln -s /usr/share/hyphen "$pkgdir/usr/lib/firefox/hyphenation"
+
+ # Firefox no longer support Alsa, it crashes frequently with Alsa on FF>=60
+ # Use apulse (PulseAudio emulation for Alsa) but don't require a user to run "apulse firefox" everytime by changing the rpath
+ patchelf --set-rpath /usr/lib/apulse "$pkgdir/usr/lib/firefox/libxul.so"
}
diff --git a/firefox-60-disable-data-sharing-infobar.patch b/firefox-60-disable-data-sharing-infobar.patch
new file mode 100644
index 00000000000..0954db070fa
--- /dev/null
+++ b/firefox-60-disable-data-sharing-infobar.patch
@@ -0,0 +1,12 @@
+--- firefox-60.0.bak/browser/base/content/browser.js
++++ firefox-60.0/browser/base/content/browser.js
+@@ -1530,9 +1530,6 @@
+ MenuTouchModeObserver.init();
+ }
+
+- if (AppConstants.MOZ_DATA_REPORTING)
+- gDataNotificationInfoBar.init();
+-
+ if (!AppConstants.MOZILLA_OFFICIAL)
+ DevelopmentHelpers.init();
+
diff --git a/firefox-60-disable-first-run-privacy-policy.patch b/firefox-60-disable-first-run-privacy-policy.patch
new file mode 100644
index 00000000000..5fdd49a94ef
--- /dev/null
+++ b/firefox-60-disable-first-run-privacy-policy.patch
@@ -0,0 +1,16 @@
+--- firefox-60.0.bak/toolkit/components/telemetry/datareporting-prefs.js 2018-05-16 09:31:04.390035410 +0200
++++ firefox-60.0/toolkit/components/telemetry/datareporting-prefs.js 2018-05-16 14:26:08.568343718 +0200
+@@ -4,11 +4,11 @@
+
+ /* global pref */
+
+-pref("datareporting.policy.dataSubmissionEnabled", true);
++pref("datareporting.policy.dataSubmissionEnabled", false);
+ pref("datareporting.policy.dataSubmissionPolicyNotifiedTime", "0");
+ pref("datareporting.policy.dataSubmissionPolicyAcceptedVersion", 0);
+ pref("datareporting.policy.dataSubmissionPolicyBypassNotification", false);
+ pref("datareporting.policy.currentPolicyVersion", 2);
+ pref("datareporting.policy.minimumPolicyVersion", 1);
+ pref("datareporting.policy.minimumPolicyVersion.channel-beta", 2);
+-pref("datareporting.policy.firstRunURL", "https://www.mozilla.org/privacy/firefox/");
++pref("datareporting.policy.firstRunURL", "");
diff --git a/firefox-60-disable-location.services.mozilla.com.patch b/firefox-60-disable-location.services.mozilla.com.patch
new file mode 100644
index 00000000000..ed19a9fcc06
--- /dev/null
+++ b/firefox-60-disable-location.services.mozilla.com.patch
@@ -0,0 +1,44 @@
+--- firefox-60.0.bak/toolkit/components/search/nsSearchService.js 2018-05-16 09:31:04.377035410 +0200
++++ firefox-60.0/toolkit/components/search/nsSearchService.js 2018-05-16 15:42:56.194423958 +0200
+@@ -399,6 +399,12 @@
+ return;
+ }
+
++ // Prevent Firefox from contacting location.services.mozilla.com on a new profile
++ Services.prefs.setCharPref("browser.search.region", "US");
++ return;
++ /*
++ Comment from here to prevent console warning: JavaScript warning: jar:file:///usr/lib/firefox/omni.ja!/components/nsSearchService.js, line 411: unreachable code after return statement
++
+ // If we have 'isUS' but no 'countryCode' then we are almost certainly
+ // a profile from Fx 34/35 that set 'isUS' based purely on a timezone
+ // check. If this said they were US, we force region to be US.
+@@ -422,6 +428,7 @@
+ } catch (ex) {
+ // no countryCode pref, nothing to do.
+ }
++ */
+ }
+
+ // A method to determine if we are in the United States (US) for the search
+@@ -482,6 +489,12 @@
+ // If we have a country-code already stored in our prefs we trust it.
+ let countryCode = Services.prefs.getCharPref("browser.search.countryCode", "");
+
++ // No countryCode set, use US as default, don't contact location.services.mozilla.com
++ Services.prefs.setCharPref("browser.search.countryCode", "US");
++ return;
++ /*
++ Comment from here to prevent console warning: JavaScript warning: jar:file:///usr/lib/firefox/omni.ja!/components/nsSearchService.js, line 493: unreachable code after return statement
++
+ if (!countryCode) {
+ // We don't have it cached, so fetch it. fetchCountryCode() will call
+ // storeCountryCode if it gets a result (even if that happens after the
+@@ -528,6 +541,7 @@
+ // If gInitialized is true then the search service was forced to perform
+ // a sync initialization during our XHRs - capture this via telemetry.
+ Services.telemetry.getHistogramById("SEARCH_SERVICE_COUNTRY_FETCH_CAUSED_SYNC_INIT").add(gInitialized);
++ */
+ };
+
+ // Store the result of the geoip request as well as any other values and
diff --git a/firefox-60-disable-newtab-page-remote.patch b/firefox-60-disable-newtab-page-remote.patch
new file mode 100644
index 00000000000..8cf9c308431
--- /dev/null
+++ b/firefox-60-disable-newtab-page-remote.patch
@@ -0,0 +1,249 @@
+diff -Naur firefox-60.0.bak/browser/extensions/activity-stream/common/PrerenderData.jsm firefox-60.0/browser/extensions/activity-stream/common/PrerenderData.jsm
+--- firefox-60.0.bak/browser/extensions/activity-stream/common/PrerenderData.jsm
++++ firefox-60.0/browser/extensions/activity-stream/common/PrerenderData.jsm
+@@ -54,11 +54,9 @@
+ "topSitesRows": 1,
+ "collapseTopSites": false,
+ "section.highlights.collapsed": false,
+- "section.topstories.collapsed": false,
+- "feeds.section.topstories": true,
+ "feeds.section.highlights": true,
+ "enableWideLayout": true,
+- "sectionOrder": "topsites,topstories,highlights"
++ "sectionOrder": "topsites,highlights"
+ },
+ // Prefs listed as invalidating will prevent the prerendered version
+ // of AS from being used if their value is something other than what is listed
+@@ -72,26 +70,14 @@
+ "topSitesRows",
+ "collapseTopSites",
+ "section.highlights.collapsed",
+- "section.topstories.collapsed",
+- "enableWideLayout",
+- "sectionOrder",
+- // This means if either of these are set to their default values,
+- // prerendering can be used.
+- {oneOf: ["feeds.section.topstories", "feeds.section.highlights"]}
++ "enableWideLayout"
+ ],
+ initialSections: [
+ {
+ enabled: true,
+- icon: "pocket",
+- id: "topstories",
+- order: 1,
+- title: {id: "header_recommended_by", values: {provider: "Pocket"}}
+- },
+- {
+- enabled: true,
+ id: "highlights",
+ icon: "highlights",
+- order: 2,
++ order: 1,
+ title: {id: "header_highlights"}
+ }
+ ]
+diff -Naur firefox-60.0.bak/browser/extensions/activity-stream/lib/SectionsManager.jsm firefox-60.0/browser/extensions/activity-stream/lib/SectionsManager.jsm
+--- firefox-60.0.bak/browser/extensions/activity-stream/lib/SectionsManager.jsm
++++ firefox-60.0/browser/extensions/activity-stream/lib/SectionsManager.jsm
+@@ -16,40 +16,6 @@
+ * `${feed_pref_name}.options`.
+ */
+ const BUILT_IN_SECTIONS = {
+- "feeds.section.topstories": options => ({
+- id: "topstories",
+- pref: {
+- titleString: {id: "header_recommended_by", values: {provider: options.provider_name}},
+- descString: {id: options.provider_description || "pocket_description"},
+- nestedPrefs: options.show_spocs ? [{
+- name: "showSponsored",
+- titleString: {id: "settings_pane_topstories_options_sponsored"},
+- icon: "icon-info"
+- }] : []
+- },
+- shouldHidePref: options.hidden,
+- eventSource: "TOP_STORIES",
+- icon: options.provider_icon,
+- title: {id: "header_recommended_by", values: {provider: options.provider_name}},
+- disclaimer: {
+- text: {id: options.disclaimer_text || "section_disclaimer_topstories"},
+- link: {
+- // The href fallback is temporary so users in existing Shield studies get this configuration as well
+- href: options.disclaimer_link || "https://getpocket.cdn.mozilla.net/firefox/new_tab_learn_more",
+- id: options.disclaimer_linktext || "section_disclaimer_topstories_linktext"
+- },
+- button: {id: options.disclaimer_buttontext || "section_disclaimer_topstories_buttontext"}
+- },
+- privacyNoticeURL: options.privacy_notice_link || "https://www.mozilla.org/privacy/firefox/#suggest-relevant-content",
+- maxRows: 1,
+- availableLinkMenuOptions: ["CheckBookmarkOrArchive", "CheckSavedToPocket", "Separator", "OpenInNewWindow", "OpenInPrivateWindow", "Separator", "BlockUrl"],
+- emptyState: {
+- message: {id: "topstories_empty_state", values: {provider: options.provider_name}},
+- icon: "check"
+- },
+- shouldSendImpressionStats: true,
+- dedupeFrom: ["highlights"]
+- }),
+ "feeds.section.highlights": options => ({
+ id: "highlights",
+ pref: {
+diff -Naur firefox-60.0.bak/browser/extensions/activity-stream/prerendered/static/activity-stream-initial-state.js firefox-60.0/browser/extensions/activity-stream/prerendered/static/activity-stream-initial-state.js
+--- firefox-60.0.bak/browser/extensions/activity-stream/prerendered/static/activity-stream-initial-state.js
++++ firefox-60.0/browser/extensions/activity-stream/prerendered/static/activity-stream-initial-state.js
+@@ -21,11 +21,9 @@
+ "topSitesRows": 1,
+ "collapseTopSites": false,
+ "section.highlights.collapsed": false,
+- "section.topstories.collapsed": false,
+- "feeds.section.topstories": true,
+ "feeds.section.highlights": true,
+ "enableWideLayout": true,
+- "sectionOrder": "topsites,topstories,highlights"
++ "sectionOrder": "topsites,highlights"
+ }
+ },
+ "Dialog": {
+@@ -35,27 +33,13 @@
+ "Sections": [
+ {
+ "title": {
+- "id": "header_recommended_by",
+- "values": {
+- "provider": "Pocket"
+- }
+- },
+- "rows": [],
+- "enabled": true,
+- "icon": "pocket",
+- "id": "topstories",
+- "order": 1,
+- "initialized": false
+- },
+- {
+- "title": {
+ "id": "header_highlights"
+ },
+ "rows": [],
+ "enabled": true,
+ "id": "highlights",
+ "icon": "highlights",
+- "order": 2,
++ "order": 1,
+ "initialized": false
+ }
+ ],
+--- firefox-60.0.bak/browser/extensions/activity-stream/lib/ActivityStream.jsm
++++ firefox-60.0/browser/extensions/activity-stream/lib/ActivityStream.jsm
+@@ -23,19 +23,12 @@
+ const {TelemetryFeed} = ChromeUtils.import("resource://activity-stream/lib/TelemetryFeed.jsm", {});
+ const {FaviconFeed} = ChromeUtils.import("resource://activity-stream/lib/FaviconFeed.jsm", {});
+ const {TopSitesFeed} = ChromeUtils.import("resource://activity-stream/lib/TopSitesFeed.jsm", {});
+-const {TopStoriesFeed} = ChromeUtils.import("resource://activity-stream/lib/TopStoriesFeed.jsm", {});
+ const {HighlightsFeed} = ChromeUtils.import("resource://activity-stream/lib/HighlightsFeed.jsm", {});
+
+ const DEFAULT_SITES = new Map([
+ // This first item is the global list fallback for any unexpected geos
+- ["", "https://www.youtube.com/,https://www.facebook.com/,https://www.wikipedia.org/,https://www.reddit.com/,https://www.amazon.com/,https://twitter.com/"],
+- ["US", "https://www.youtube.com/,https://www.facebook.com/,https://www.amazon.com/,https://www.reddit.com/,https://www.wikipedia.org/,https://twitter.com/"],
+- ["CA", "https://www.youtube.com/,https://www.facebook.com/,https://www.reddit.com/,https://www.wikipedia.org/,https://www.amazon.ca/,https://twitter.com/"],
+- ["DE", "https://www.youtube.com/,https://www.facebook.com/,https://www.amazon.de/,https://www.ebay.de/,https://www.wikipedia.org/,https://www.reddit.com/"],
+- ["PL", "https://www.youtube.com/,https://www.facebook.com/,https://allegro.pl/,https://www.wikipedia.org/,https://www.olx.pl/,https://www.wykop.pl/"],
+- ["RU", "https://vk.com/,https://www.youtube.com/,https://ok.ru/,https://www.avito.ru/,https://www.aliexpress.com/,https://www.wikipedia.org/"],
+- ["GB", "https://www.youtube.com/,https://www.facebook.com/,https://www.reddit.com/,https://www.amazon.co.uk/,https://www.bbc.co.uk/,https://www.ebay.co.uk/"],
+- ["FR", "https://www.youtube.com/,https://www.facebook.com/,https://www.wikipedia.org/,https://www.amazon.fr/,https://www.leboncoin.fr/,https://twitter.com/"]
++ ["", ""],
++ ["US", ""],
+ ]);
+ const GEO_PREF = "browser.search.region";
+ const REASON_ADDON_UNINSTALL = 6;
+@@ -53,30 +46,6 @@
+ title: "Comma-separated list of default top sites to fill in behind visited sites",
+ getValue: ({geo}) => DEFAULT_SITES.get(DEFAULT_SITES.has(geo) ? geo : "")
+ }],
+- ["feeds.section.topstories.options", {
+- title: "Configuration options for top stories feed",
+- // This is a dynamic pref as it depends on the feed being shown or not
+- getValue: args => JSON.stringify({
+- api_key_pref: "extensions.pocket.oAuthConsumerKey",
+- // Use the opposite value as what default value the feed would have used
+- hidden: !PREFS_CONFIG.get("feeds.section.topstories").getValue(args),
+- provider_description: "pocket_description",
+- provider_icon: "pocket",
+- provider_name: "Pocket",
+- read_more_endpoint: "https://getpocket.com/explore/trending?src=fx_new_tab",
+- stories_endpoint: `https://getpocket.cdn.mozilla.net/v3/firefox/global-recs?version=3&consumer_key=$apiKey&locale_lang=${args.locale}&feed_variant=${showSpocs(args) ? "default_spocs_on" : "default_spocs_off"}`,
+- stories_referrer: "https://getpocket.com/recommendations",
+- privacy_notice_link: "https://www.mozilla.org/privacy/firefox/#suggest-relevant-content",
+- disclaimer_link: "https://getpocket.com/firefox/new_tab_learn_more",
+- topics_endpoint: `https://getpocket.cdn.mozilla.net/v3/firefox/trending-topics?version=2&consumer_key=$apiKey&locale_lang=${args.locale}`,
+- show_spocs: showSpocs(args),
+- personalized: true
+- })
+- }],
+- ["showSponsored", {
+- title: "Show sponsored cards in spoc experiment (show_spocs in topstories.options has to be set to true as well)",
+- value: true
+- }],
+ ["filterAdult", {
+ title: "Remove adult pages from sites, highlights, etc.",
+ value: true
+@@ -135,18 +104,6 @@
+ title: "Collapse the Highlights section",
+ value: false
+ }],
+- ["section.highlights.includePocket", {
+- title: "Boolean flag that decides whether or not to show saved Pocket stories in highlights.",
+- value: true
+- }],
+- ["section.topstories.collapsed", {
+- title: "Collapse the Top Stories section",
+- value: false
+- }],
+- ["section.topstories.showDisclaimer", {
+- title: "Boolean flag that decides whether or not to show the topstories disclaimer.",
+- value: true
+- }],
+ ["tippyTop.service.endpoint", {
+ title: "Tippy Top service manifest url",
+ value: "https://activity-stream-icons.services.mozilla.com/v1/icons.json.br"
+@@ -157,7 +114,7 @@
+ }],
+ ["sectionOrder", {
+ title: "The rendering order for the sections",
+- value: "topsites,topstories,highlights"
++ value: "topsites,highlights"
+ }]
+ ]);
+
+@@ -200,20 +157,6 @@
+ value: true
+ },
+ {
+- name: "section.topstories",
+- factory: () => new TopStoriesFeed(),
+- title: "Fetches content recommendations from a configurable content provider",
+- // Dynamically determine if Pocket should be shown for a geo / locale
+- getValue: ({geo, locale}) => {
+- const locales = ({
+- "US": ["en-US", "en-GB", "en-ZA"],
+- "CA": ["en-US", "en-GB", "en-ZA"],
+- "DE": ["de", "de-DE", "de-AT", "de-CH"]
+- })[geo];
+- return !!locales && locales.includes(locale);
+- }
+- },
+- {
+ name: "snippets",
+ factory: () => new SnippetsFeed(),
+ title: "Gets snippets data",
+--- firefox-60.0.bak/browser/app/profile/firefox.js
++++ firefox-60.0/browser/app/profile/firefox.js
+@@ -269,7 +269,7 @@
+ // 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.cdn.mozilla.net/%STARTPAGE_VERSION%/%NAME%/%VERSION%/%APPBUILDID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/");
++pref("browser.aboutHomeSnippets.updateUrl", "");
+
+ pref("browser.enable_automatic_image_resizing", true);
+ pref("browser.chrome.site_icons", true);
diff --git a/firefox-60-disable-pocket-leftovers.patch b/firefox-60-disable-pocket-leftovers.patch
new file mode 100644
index 00000000000..764f58715e9
--- /dev/null
+++ b/firefox-60-disable-pocket-leftovers.patch
@@ -0,0 +1,68 @@
+diff -Naur firefox-60.0.bak/browser/app/profile/firefox.js firefox-60.0/browser/app/profile/firefox.js
+--- firefox-60.0.bak/browser/app/profile/firefox.js
++++ firefox-60.0/browser/app/profile/firefox.js
+@@ -198,7 +198,7 @@
+ pref("extensions.{972ce4c6-7e08-4474-a285-3208198ce6fd}.description", "chrome://browser/locale/browser.properties");
+
+ pref("extensions.webextensions.themes.enabled", true);
+-pref("extensions.webextensions.themes.icons.buttons", "back,forward,reload,stop,bookmark_star,bookmark_menu,downloads,home,app_menu,cut,copy,paste,new_window,new_private_window,save_page,print,history,full_screen,find,options,addons,developer,synced_tabs,open_file,sidebars,share_page,subscribe,text_encoding,email_link,forget,pocket");
++pref("extensions.webextensions.themes.icons.buttons", "back,forward,reload,stop,bookmark_star,bookmark_menu,downloads,home,app_menu,cut,copy,paste,new_window,new_private_window,save_page,print,history,full_screen,find,options,addons,developer,synced_tabs,open_file,sidebars,share_page,subscribe,text_encoding,email_link,forget");
+
+ pref("lightweightThemes.update.enabled", true);
+ pref("lightweightThemes.getMoreURL", "https://addons.mozilla.org/%LOCALE%/firefox/themes");
+@@ -1626,8 +1626,6 @@
+ // Enable browser frames for use on desktop. Only exposed to chrome callers.
+ pref("dom.mozBrowserFramesEnabled", true);
+
+-pref("extensions.pocket.enabled", true);
+-
+ pref("signon.schemeUpgrades", true);
+
+ // Enable the "Simplify Page" feature in Print Preview. This feature
+diff -Naur firefox-60.0.bak/browser/components/uitour/UITour.jsm firefox-60.0/browser/components/uitour/UITour.jsm
+--- firefox-60.0.bak/browser/components/uitour/UITour.jsm
++++ firefox-60.0/browser/components/uitour/UITour.jsm
+@@ -149,18 +149,6 @@
+ ["help", {query: "#appMenu-help-button"}],
+ ["home", {query: "#home-button"}],
+ ["library", {query: "#appMenu-library-button"}],
+- ["pocket", {
+- allowAdd: true,
+- query: (aDocument) => {
+- // The pocket's urlbar page action button is pre-defined in the DOM.
+- // It would be hidden if toggled off from the urlbar.
+- let node = aDocument.getElementById("pocket-button-box");
+- if (node && !node.hidden) {
+- return node;
+- }
+- return aDocument.getElementById("pageAction-panel-pocket");
+- },
+- }],
+ ["privateWindow", {query: "#appMenu-private-window-button"}],
+ ["quit", {query: "#appMenu-quit-button"}],
+ ["readerMode-urlBar", {query: "#reader-mode-button"}],
+@@ -1444,13 +1432,6 @@
+ popup.addEventListener("popupshown", aOpenCallback, { once: true });
+ }
+ aWindow.document.getElementById("identity-box").click();
+- } else if (aMenuName == "pocket") {
+- let pageAction = PageActions.actionForID("pocket");
+- if (!pageAction) {
+- log.error("Can't open the pocket menu without a page action");
+- return;
+- }
+- pageAction.doCommand(aWindow);
+ } else if (aMenuName == "urlbar") {
+ this.getTarget(aWindow, "urlbar").then(target => {
+ let urlbar = target.node;
+diff -Naur firefox-60.0.bak/browser/extensions/moz.build firefox-60.0/browser/extensions/moz.build
+--- firefox-60.0.bak/browser/extensions/moz.build
++++ firefox-60.0/browser/extensions/moz.build
+@@ -11,7 +11,6 @@
+ 'formautofill',
+ 'onboarding',
+ 'pdfjs',
+- 'pocket',
+ 'screenshots',
+ 'webcompat',
+ ]
diff --git a/firefox-60-disable-reader.patch b/firefox-60-disable-reader.patch
new file mode 100644
index 00000000000..0e7b25172de
--- /dev/null
+++ b/firefox-60-disable-reader.patch
@@ -0,0 +1,141 @@
+--- firefox-60.0.bak/browser/base/content/browser.js
++++ firefox-60.0/browser/base/content/browser.js
+@@ -46,7 +46,6 @@
+ ProcessHangMonitor: "resource:///modules/ProcessHangMonitor.jsm",
+ PromiseUtils: "resource://gre/modules/PromiseUtils.jsm",
+ ReaderMode: "resource://gre/modules/ReaderMode.jsm",
+- ReaderParent: "resource:///modules/ReaderParent.jsm",
+ RecentWindow: "resource:///modules/RecentWindow.jsm",
+ SafeBrowsing: "resource://gre/modules/SafeBrowsing.jsm",
+ Sanitizer: "resource:///modules/Sanitizer.jsm",
+@@ -4852,7 +4848,6 @@
+ }
+ }
+ UpdateBackForwardCommands(gBrowser.webNavigation);
+- ReaderParent.updateReaderButton(gBrowser.selectedBrowser);
+
+ if (!gMultiProcessBrowser) // Bug 1108553 - Cannot rotate images with e10s
+ gGestureSupport.restoreRotationState();
+--- firefox-60.0.bak/browser/base/content/browser-sets.inc
++++ firefox-60.0/browser/base/content/browser-sets.inc
+@@ -42,7 +42,6 @@
+ <command id="View:PageSource" oncommand="BrowserViewSource(window.gBrowser.selectedBrowser);" observes="canViewSource"/>
+ <command id="View:PageInfo" oncommand="BrowserPageInfo();"/>
+ <command id="View:FullScreen" oncommand="BrowserFullScreen();"/>
+- <command id="View:ReaderView" oncommand="ReaderParent.toggleReaderMode(event);"/>
+ <command id="cmd_find"
+ oncommand="gFindBar.onFindCommand();"
+ observes="isImage"/>
+@@ -290,11 +289,6 @@
+ <key id="key_fullScreen_old" key="&fullScreenCmd.macCommandKey;" command="View:FullScreen" modifiers="accel,shift"/>
+ <key keycode="VK_F11" command="View:FullScreen"/>
+ #endif
+-#ifndef XP_WIN
+- <key id="key_toggleReaderMode" key="&toggleReaderMode.key;" command="View:ReaderView" modifiers="accel,alt" disabled="true"/>
+-#else
+- <key id="key_toggleReaderMode" keycode="&toggleReaderMode.win.keycode;" command="View:ReaderView" disabled="true"/>
+-#endif
+ <key key="&reloadCmd.commandkey;" command="Browser:Reload" modifiers="accel" id="key_reload"/>
+ <key key="&reloadCmd.commandkey;" command="Browser:ReloadSkipCache" modifiers="accel,shift"/>
+ <key id="key_viewSource" key="&pageSourceCmd.commandkey;" command="View:PageSource" modifiers="accel"/>
+--- firefox-60.0.bak/browser/base/content/browser.xul
++++ firefox-60.0/browser/base/content/browser.xul
+@@ -888,12 +888,6 @@
+ <label id="userContext-label"/>
+ <image id="userContext-indicator"/>
+ </hbox>
+- <image id="reader-mode-button"
+- class="urlbar-icon urlbar-page-action"
+- tooltip="dynamic-shortcut-tooltip"
+- role="button"
+- hidden="true"
+- onclick="ReaderParent.buttonClick(event);"/>
+ <toolbarbutton id="urlbar-zoom-button"
+ onclick="FullZoom.reset();"
+ tooltip="dynamic-shortcut-tooltip"
+--- firefox-60.0.bak/browser/components/nsBrowserGlue.js
++++ firefox-60.0/browser/components/nsBrowserGlue.js
+@@ -123,7 +123,6 @@
+ PluralForm: "resource://gre/modules/PluralForm.jsm",
+ PrivateBrowsingUtils: "resource://gre/modules/PrivateBrowsingUtils.jsm",
+ ProcessHangMonitor: "resource:///modules/ProcessHangMonitor.jsm",
+- ReaderParent: "resource:///modules/ReaderParent.jsm",
+ RecentWindow: "resource:///modules/RecentWindow.jsm",
+ RemotePrompt: "resource:///modules/RemotePrompt.jsm",
+ SafeBrowsing: "resource://gre/modules/SafeBrowsing.jsm",
+@@ -214,8 +213,6 @@
+ "FormValidation:ShowPopup": ["FormValidationHandler"],
+ "FormValidation:HidePopup": ["FormValidationHandler"],
+ "Prompt:Open": ["RemotePrompt"],
+- "Reader:FaviconRequest": ["ReaderParent"],
+- "Reader:UpdateReaderButton": ["ReaderParent"],
+ // PLEASE KEEP THIS LIST IN SYNC WITH THE MOBILE LISTENERS IN BrowserCLH.js
+ "RemoteLogins:findLogins": ["LoginManagerParent"],
+ "RemoteLogins:findRecipes": ["LoginManagerParent"],
+--- firefox-60.0.bak/browser/components/uitour/UITour.jsm
++++ firefox-60.0/browser/components/uitour/UITour.jsm
+@@ -28,8 +28,6 @@
+ "resource://gre/modules/PrivateBrowsingUtils.jsm");
+ ChromeUtils.defineModuleGetter(this, "ProfileAge",
+ "resource://gre/modules/ProfileAge.jsm");
+-ChromeUtils.defineModuleGetter(this, "ReaderParent",
+- "resource:///modules/ReaderParent.jsm");
+ ChromeUtils.defineModuleGetter(this, "ResetProfile",
+ "resource://gre/modules/ResetProfile.jsm");
+ ChromeUtils.defineModuleGetter(this, "UITelemetry",
+@@ -42,7 +40,6 @@
+ const PREF_SEENPAGEIDS = "browser.uitour.seenPageIDs";
+
+ const BACKGROUND_PAGE_ACTIONS_ALLOWED = new Set([
+- "forceShowReaderIcon",
+ "getConfiguration",
+ "getTreatmentTag",
+ "hideHighlight",
+@@ -163,7 +160,6 @@
+ }],
+ ["privateWindow", {query: "#appMenu-private-window-button"}],
+ ["quit", {query: "#appMenu-quit-button"}],
+- ["readerMode-urlBar", {query: "#reader-mode-button"}],
+ ["search", {
+ infoPanelOffsetX: 18,
+ infoPanelPosition: "after_start",
+@@ -661,19 +657,6 @@
+ break;
+ }
+
+- case "forceShowReaderIcon": {
+- ReaderParent.forceShowReaderIcon(browser);
+- break;
+- }
+-
+- case "toggleReaderMode": {
+- let targetPromise = this.getTarget(window, "readerMode-urlBar");
+- targetPromise.then(target => {
+- ReaderParent.toggleReaderMode({target: target.node});
+- });
+- break;
+- }
+-
+ case "closeTab": {
+ // Find the <tabbrowser> element of the <browser> for which the event
+ // was generated originally. If the browser where the UI tour is loaded
+--- firefox-60.0.bak/browser/modules/moz.build
++++ firefox-60.0/browser/modules/moz.build
+@@ -76,9 +76,6 @@
+ with Files("ProcessHangMonitor.jsm"):
+ BUG_COMPONENT = ("Core", "DOM: Content Processes")
+
+-with Files("ReaderParent.jsm"):
+- BUG_COMPONENT = ("Toolkit", "Reader Mode")
+-
+ with Files("Sanitizer.jsm"):
+ BUG_COMPONENT = ("Firefox", "Preferences")
+
+@@ -150,7 +147,6 @@
+ 'PingCentre.jsm',
+ 'PluginContent.jsm',
+ 'ProcessHangMonitor.jsm',
+- 'ReaderParent.jsm',
+ 'RecentWindow.jsm',
+ 'RemotePrompt.jsm',
+ 'Sanitizer.jsm',
diff --git a/firefox-60-disable-telemetry.patch b/firefox-60-disable-telemetry.patch
new file mode 100644
index 00000000000..d565376ddce
--- /dev/null
+++ b/firefox-60-disable-telemetry.patch
@@ -0,0 +1,13 @@
+--- firefox-60.0.bak/browser/confvars.sh
++++ firefox-60.0/browser/confvars.sh
+@@ -62,3 +62,10 @@
+
+ # Include the DevTools client, not just the server (which is the default)
+ MOZ_DEVTOOLS=all
++
++# Reduce data sharing with Mozilla
++MOZ_DATA_REPORTING=0
++MOZ_TELEMETRY_REPORTING=0
++MOZ_CRASHREPORTER=0
++MOZ_SERVICES_HEALTHREPORT=0
++
diff --git a/firefox-60-prefs.patch b/firefox-60-prefs.patch
new file mode 100644
index 00000000000..5654d9121e6
--- /dev/null
+++ b/firefox-60-prefs.patch
@@ -0,0 +1,417 @@
+--- firefox-60.0.bak/browser/app/profile/firefox.js
++++ firefox-60.0/browser/app/profile/firefox.js
+@@ -129,7 +129,7 @@
+
+ // Whether or not app updates are enabled
+ #ifdef MOZ_UPDATER
+-pref("app.update.enabled", true);
++pref("app.update.enabled", false);
+ #else
+ pref("app.update.enabled", false);
+ #endif
+@@ -152,7 +152,7 @@
+ // If set to true, the Update Service will automatically download updates when
+ // app updates are enabled per the app.update.enabled preference and if the user
+ // can apply updates.
+-pref("app.update.auto", true);
++pref("app.update.auto", false);
+
+ // If set to true, the Update Service will present no UI for any event.
+ pref("app.update.silent", false);
+@@ -185,7 +185,7 @@
+ // extensions.{GUID}.update.url
+ // .. etc ..
+ //
+-pref("extensions.update.enabled", true);
++pref("extensions.update.enabled", false);
+ pref("extensions.update.url", "https://versioncheck.addons.mozilla.org/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=%APP_OS%&appABI=%APP_ABI%&locale=%APP_LOCALE%&currentAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%");
+ pref("extensions.update.background.url", "https://versioncheck-bg.addons.mozilla.org/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=%APP_OS%&appABI=%APP_ABI%&locale=%APP_LOCALE%&currentAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%");
+ pref("extensions.update.interval", 86400); // Check for updates to Extensions and
+@@ -200,7 +200,7 @@
+ pref("extensions.webextensions.themes.enabled", true);
+ pref("extensions.webextensions.themes.icons.buttons", "back,forward,reload,stop,bookmark_star,bookmark_menu,downloads,home,app_menu,cut,copy,paste,new_window,new_private_window,save_page,print,history,full_screen,find,options,addons,developer,synced_tabs,open_file,sidebars,share_page,subscribe,text_encoding,email_link,forget,pocket");
+
+-pref("lightweightThemes.update.enabled", true);
++pref("lightweightThemes.update.enabled", false);
+ pref("lightweightThemes.getMoreURL", "https://addons.mozilla.org/%LOCALE%/firefox/themes");
+ pref("lightweightThemes.recommendedThemes", "[{\"id\":\"recommended-1\",\"homepageURL\":\"https://addons.mozilla.org/firefox/addon/a-web-browser-renaissance/\",\"headerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/1.header.jpg\",\"textcolor\":\"#000000\",\"accentcolor\":\"#834d29\",\"iconURL\":\"resource:///chrome/browser/content/browser/defaultthemes/1.icon.jpg\",\"previewURL\":\"resource:///chrome/browser/content/browser/defaultthemes/1.preview.jpg\",\"author\":\"Sean.Martell\",\"version\":\"0\"},{\"id\":\"recommended-2\",\"homepageURL\":\"https://addons.mozilla.org/firefox/addon/space-fantasy/\",\"headerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/2.header.jpg\",\"textcolor\":\"#ffffff\",\"accentcolor\":\"#d9d9d9\",\"iconURL\":\"resource:///chrome/browser/content/browser/defaultthemes/2.icon.jpg\",\"previewURL\":\"resource:///chrome/browser/content/browser/defaultthemes/2.preview.jpg\",\"author\":\"fx5800p\",\"version\":\"1.0\"},{\"id\":\"recommended-4\",\"homepageURL\":\"https://addons.mozilla.org/firefox/addon/pastel-gradient/\",\"headerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/4.header.png\",\"textcolor\":\"#000000\",\"accentcolor\":\"#000000\",\"iconURL\":\"resource:///chrome/browser/content/browser/defaultthemes/4.icon.png\",\"previewURL\":\"resource:///chrome/browser/content/browser/defaultthemes/4.preview.png\",\"author\":\"darrinhenein\",\"version\":\"1.0\"}]");
+
+@@ -244,7 +244,7 @@
+ pref("browser.touchmode.auto", true);
+
+ // At startup, check if we're the default browser and prompt user if not.
+-pref("browser.shell.checkDefaultBrowser", true);
++pref("browser.shell.checkDefaultBrowser", false);
+ pref("browser.shell.shortcutFavicons",true);
+ pref("browser.shell.mostRecentDateSetAsDefault", "");
+ pref("browser.shell.skipDefaultBrowserCheckOnFirstRun", true);
+@@ -254,7 +254,7 @@
+
+ // 0 = blank, 1 = home (browser.startup.homepage), 2 = last visited page, 3 = resume previous browser session
+ // The behavior of option 3 is detailed at: http://wiki.mozilla.org/Session_Restore
+-pref("browser.startup.page", 1);
++pref("browser.startup.page", 0);
+ pref("browser.startup.homepage", "chrome://branding/locale/browserconfig.properties");
+ // Whether we should skip the homepage when opening the first-run page
+ pref("browser.startup.firstrunSkipsHomepage", true);
+@@ -323,7 +323,7 @@
+ pref("browser.urlbar.suggest.searches", true);
+
+ // Whether the user made a choice in the old search suggestions opt-in bar.
+-pref("browser.urlbar.userMadeSearchSuggestionsChoice", false);
++pref("browser.urlbar.userMadeSearchSuggestionsChoice", true);
+ // The suggestion opt-out hint will be hidden after being shown 4 times.
+ pref("browser.urlbar.timesBeforeHidingSuggestionsHint", 4);
+
+@@ -373,7 +373,7 @@
+ pref("browser.download.animateNotifications", true);
+
+ // This records whether or not the panel has been shown at least once.
+-pref("browser.download.panel.shown", false);
++pref("browser.download.panel.shown", true);
+
+ // This controls whether the button is automatically shown/hidden depending
+ // on whether there are downloads to show.
+@@ -399,9 +399,9 @@
+ pref("browser.search.geoSpecificDefaults.url", "https://search.services.mozilla.com/1/%APP%/%VERSION%/%CHANNEL%/%LOCALE%/%REGION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%");
+
+ // US specific default (used as a fallback if the geoSpecificDefaults request fails).
+-pref("browser.search.defaultenginename.US", "data:text/plain,browser.search.defaultenginename.US=Google");
+-pref("browser.search.order.US.1", "data:text/plain,browser.search.order.US.1=Google");
+-pref("browser.search.order.US.2", "data:text/plain,browser.search.order.US.2=Bing");
++pref("browser.search.defaultenginename.US", "data:text/plain,browser.search.defaultenginename.US=DuckDuckGo");
++pref("browser.search.order.US.1", "data:text/plain,browser.search.order.US.1=DuckDuckGo");
++pref("browser.search.order.US.2", "data:text/plain,browser.search.order.US.2=Google");
+
+ // search bar results always open in a new tab
+ pref("browser.search.openintab", false);
+@@ -460,7 +460,7 @@
+ // Tabbed browser
+ pref("browser.tabs.closeWindowWithLastTab", true);
+ pref("browser.tabs.insertRelatedAfterCurrent", true);
+-pref("browser.tabs.warnOnClose", true);
++pref("browser.tabs.warnOnClose", false);
+ pref("browser.tabs.warnOnCloseOtherTabs", true);
+ pref("browser.tabs.warnOnOpen", true);
+ pref("browser.tabs.maxOpenBeforeWarn", 15);
+@@ -663,7 +663,7 @@
+ pref("browser.xul.error_pages.show_safe_browsing_details_on_load", false);
+
+ // Enable captive portal detection.
+-pref("network.captive-portal-service.enabled", true);
++pref("network.captive-portal-service.enabled", false);
+
+ // If true, network link events will change the value of navigator.onLine
+ pref("network.manage-offline-status", true);
+@@ -1174,7 +1174,7 @@
+ pref("services.sync.prefs.sync.browser.safebrowsing.malware.enabled", true);
+ pref("services.sync.prefs.sync.browser.safebrowsing.downloads.enabled", true);
+ pref("services.sync.prefs.sync.browser.safebrowsing.passwords.enabled", true);
+-pref("services.sync.prefs.sync.browser.search.update", true);
++pref("services.sync.prefs.sync.browser.search.update", false);
+ pref("services.sync.prefs.sync.browser.sessionstore.restore_on_demand", true);
+ pref("services.sync.prefs.sync.browser.startup.homepage", true);
+ pref("services.sync.prefs.sync.browser.startup.page", true);
+@@ -1262,7 +1262,7 @@
+ pref("browser.newtabpage.enabled", true);
+
+ // Activity Stream prefs that control to which page to redirect
+-pref("browser.newtabpage.activity-stream.prerender", true);
++pref("browser.newtabpage.activity-stream.prerender", false);
+ #ifndef RELEASE_OR_BETA
+ #ifdef MOZILLA_OFFICIAL
+ pref("browser.newtabpage.activity-stream.debug", false);
+@@ -1271,7 +1271,7 @@
+ #endif
+ #endif
+
+-pref("browser.library.activity-stream.enabled", true);
++pref("browser.library.activity-stream.enabled", false);
+
+ // Enable the DOM fullscreen API.
+ pref("full-screen-api.enabled", true);
+@@ -1481,31 +1481,31 @@
+
+ // Telemetry settings.
+ // Determines if Telemetry pings can be archived locally.
+-pref("toolkit.telemetry.archive.enabled", true);
++pref("toolkit.telemetry.archive.enabled", false);
+ // Enables sending the shutdown ping when Firefox shuts down.
+-pref("toolkit.telemetry.shutdownPingSender.enabled", true);
++pref("toolkit.telemetry.shutdownPingSender.enabled", false);
+ // Enables sending the shutdown ping using the pingsender from the first session.
+ pref("toolkit.telemetry.shutdownPingSender.enabledFirstSession", false);
+ // Enables sending a duplicate of the first shutdown ping from the first session.
+-pref("toolkit.telemetry.firstShutdownPing.enabled", true);
++pref("toolkit.telemetry.firstShutdownPing.enabled", false);
+ // Enables sending the 'new-profile' ping on new profiles.
+-pref("toolkit.telemetry.newProfilePing.enabled", true);
++pref("toolkit.telemetry.newProfilePing.enabled", false);
+ // Enables sending 'update' pings on Firefox updates.
+-pref("toolkit.telemetry.updatePing.enabled", true);
++pref("toolkit.telemetry.updatePing.enabled", false);
+ // Enables sending 'bhr' pings when the browser hangs.
+-pref("toolkit.telemetry.bhrPing.enabled", true);
++pref("toolkit.telemetry.bhrPing.enabled", false);
+ // Enables using Hybrid Content Telemetry from Mozilla privileged pages.
+-pref("toolkit.telemetry.hybridContent.enabled", true);
++pref("toolkit.telemetry.hybridContent.enabled", false);
+
+ // Telemetry experiments settings.
+-pref("experiments.enabled", true);
++pref("experiments.enabled", false);
+ pref("experiments.manifest.fetchIntervalSeconds", 86400);
+ pref("experiments.manifest.uri", "https://telemetry-experiment.cdn.mozilla.net/manifest/v1/firefox/%VERSION%/%CHANNEL%");
+ // Whether experiments are supported by the current application profile.
+-pref("experiments.supported", true);
++pref("experiments.supported", false);
+
+ // Ping Centre Telemetry settings.
+-pref("browser.ping-centre.telemetry", true);
++pref("browser.ping-centre.telemetry", false);
+ pref("browser.ping-centre.log", false);
+ pref("browser.ping-centre.staging.endpoint", "https://onyx_tiles.stage.mozaws.net/v3/links/ping-centre");
+ pref("browser.ping-centre.production.endpoint", "https://tiles.services.mozilla.com/v3/links/ping-centre");
+@@ -1696,7 +1696,7 @@
+ pref("browser.suppress_first_window_animation", true);
+
+ // Preferences for Photon onboarding system extension
+-pref("browser.onboarding.enabled", true);
++pref("browser.onboarding.enabled", false);
+ // Mark this as an upgraded profile so we don't offer the initial new user onboarding tour.
+ pref("browser.onboarding.tourset-version", 2);
+ pref("browser.onboarding.state", "default");
+@@ -1737,13 +1737,13 @@
+ // Normandy client preferences
+ pref("app.normandy.api_url", "https://normandy.cdn.mozilla.net/api/v1");
+ pref("app.normandy.dev_mode", false);
+-pref("app.normandy.enabled", true);
+-pref("app.normandy.first_run", true);
++pref("app.normandy.enabled", false);
++pref("app.normandy.first_run", false);
+ pref("app.normandy.logging.level", 50); // Warn
+ pref("app.normandy.run_interval_seconds", 86400); // 24 hours
+ pref("app.normandy.shieldLearnMoreUrl", "https://support.mozilla.org/1/firefox/%VERSION%/%OS%/%LOCALE%/shield");
+ #ifdef MOZ_DATA_REPORTING
+-pref("app.shield.optoutstudies.enabled", true);
++pref("app.shield.optoutstudies.enabled", false);
+ #else
+ pref("app.shield.optoutstudies.enabled", false);
+ #endif
+diff -Naur firefox-60.0.bak/browser/branding/official/pref/firefox-branding.js firefox-60.0/browser/branding/official/pref/firefox-branding.js
+--- firefox-60.0.bak/browser/branding/official/pref/firefox-branding.js
++++ firefox-60.0/browser/branding/official/pref/firefox-branding.js
+@@ -3,8 +3,7 @@
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+ pref("startup.homepage_override_url", "");
+-pref("startup.homepage_welcome_url", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/firstrun/");
+-pref("startup.homepage_welcome_url.additional", "");
++pref("startup.homepage_welcome_url", "about:blank");
+ // Interval: Time between checks for a new version (in seconds)
+ pref("app.update.interval", 43200); // 12 hours
+ // The time interval between the downloading of mar file chunks in the
+diff -Naur firefox-60.0.bak/build/application.ini.in firefox-60.0/build/application.ini.in
+--- firefox-60.0.bak/build/application.ini.in
++++ firefox-60.0/build/application.ini.in
+@@ -41,7 +41,7 @@
+
+ [XRE]
+ #ifdef MOZ_PROFILE_MIGRATOR
+-EnableProfileMigrator=1
++EnableProfileMigrator=0
+ #endif
+
+ #if MOZ_CRASHREPORTER
+diff -Naur firefox-60.0.bak/modules/libpref/init/all.js firefox-60.0/modules/libpref/init/all.js
+--- firefox-60.0.bak/modules/libpref/init/all.js
++++ firefox-60.0/modules/libpref/init/all.js
+@@ -30,7 +30,7 @@
+
+ pref("general.config.obscure_value", 13); // for MCD .cfg files
+
+-pref("general.warnOnAboutConfig", true);
++pref("general.warnOnAboutConfig", false);
+
+ // maximum number of dated backups to keep at any time
+ pref("browser.bookmarks.max_backups", 5);
+@@ -1804,7 +1804,7 @@
+
+ // The maximum number of current global half open sockets allowable
+ // when starting a new speculative connection.
+-pref("network.http.speculative-parallel-limit", 6);
++pref("network.http.speculative-parallel-limit", 0);
+
+ // Whether or not to block requests for non head js/css items (e.g. media)
+ // while those elements load.
+@@ -2153,7 +2153,7 @@
+
+ // enables the prefetch service (i.e., prefetching of <link rel="next"> and
+ // <link rel="prefetch"> URLs).
+-pref("network.prefetch-next", true);
++pref("network.prefetch-next", false);
+ // enables the preloading (i.e., preloading of <link rel="preload"> URLs).
+ pref("network.preload", false);
+
+@@ -2681,7 +2681,7 @@
+ pref("services.settings.server", "https://firefox.settings.services.mozilla.com/v1");
+
+ // Blocklist preferences
+-pref("extensions.blocklist.enabled", true);
++pref("extensions.blocklist.enabled", false);
+ // OneCRL freshness checking depends on this value, so if you change it,
+ // please also update security.onecrl.maximum_staleness_in_seconds.
+ pref("extensions.blocklist.interval", 86400);
+@@ -4676,7 +4676,7 @@
+
+ // Satchel (Form Manager) prefs
+ pref("browser.formfill.debug", false);
+-pref("browser.formfill.enable", true);
++pref("browser.formfill.enable", false);
+ pref("browser.formfill.expire_days", 180);
+ pref("browser.formfill.agedWeight", 2);
+ pref("browser.formfill.bucketSize", 1);
+@@ -5507,18 +5507,18 @@
+ pref("dom.mapped_arraybuffer.enabled", true);
+
+ // The tables used for Safebrowsing phishing and malware checks
+-pref("urlclassifier.malwareTable", "goog-malware-proto,goog-unwanted-proto,test-harmful-simple,test-malware-simple,test-unwanted-simple");
++pref("urlclassifier.malwareTable", "");
+ #ifdef MOZILLA_OFFICIAL
+ // In official builds, we are allowed to use Google's private phishing
+ // list (see bug 1288840).
+-pref("urlclassifier.phishTable", "goog-phish-proto,test-phish-simple");
++pref("urlclassifier.phishTable", "");
+ #else
+-pref("urlclassifier.phishTable", "googpub-phish-proto,test-phish-simple");
++pref("urlclassifier.phishTable", "");
+ #endif
+
+ // Tables for application reputation
+-pref("urlclassifier.downloadAllowTable", "goog-downloadwhite-proto");
+-pref("urlclassifier.downloadBlockTable", "goog-badbinurl-proto");
++pref("urlclassifier.downloadAllowTable", "");
++pref("urlclassifier.downloadBlockTable", "");
+
+ // Tables for login reputation
+ pref("urlclassifier.passwordAllowTable", "goog-passwordwhite-proto");
+@@ -5544,8 +5544,8 @@
+ pref("urlclassifier.alternate_error_page", "blocked");
+
+ // Enable phishing & malware protection.
+-pref("browser.safebrowsing.phishing.enabled", true);
+-pref("browser.safebrowsing.malware.enabled", true);
++pref("browser.safebrowsing.phishing.enabled", false);
++pref("browser.safebrowsing.malware.enabled", false);
+ pref("browser.safebrowsing.debug", false);
+
+ // Allow users to ignore Safe Browsing warnings.
+@@ -5560,49 +5560,49 @@
+ #endif
+
+ // Download protection
+-pref("browser.safebrowsing.downloads.enabled", true);
+-pref("browser.safebrowsing.downloads.remote.enabled", true);
++pref("browser.safebrowsing.downloads.enabled", false);
++pref("browser.safebrowsing.downloads.remote.enabled", false);
+ pref("browser.safebrowsing.downloads.remote.timeout_ms", 10000);
+-pref("browser.safebrowsing.downloads.remote.url", "https://sb-ssl.google.com/safebrowsing/clientreport/download?key=%GOOGLE_API_KEY%");
+-pref("browser.safebrowsing.downloads.remote.block_dangerous", true);
+-pref("browser.safebrowsing.downloads.remote.block_dangerous_host", true);
+-pref("browser.safebrowsing.downloads.remote.block_potentially_unwanted", true);
+-pref("browser.safebrowsing.downloads.remote.block_uncommon", true);
++pref("browser.safebrowsing.downloads.remote.url", "");
++pref("browser.safebrowsing.downloads.remote.block_dangerous", false);
++pref("browser.safebrowsing.downloads.remote.block_dangerous_host", false);
++pref("browser.safebrowsing.downloads.remote.block_potentially_unwanted", false);
++pref("browser.safebrowsing.downloads.remote.block_uncommon", false);
+
+ // Password protection
+ pref("browser.safebrowsing.passwords.enabled", false);
+
+ // Google Safe Browsing provider (legacy)
+ pref("browser.safebrowsing.provider.google.pver", "2.2");
+-pref("browser.safebrowsing.provider.google.lists", "goog-badbinurl-shavar,goog-downloadwhite-digest256,goog-phish-shavar,googpub-phish-shavar,goog-malware-shavar,goog-unwanted-shavar");
+-pref("browser.safebrowsing.provider.google.updateURL", "https://safebrowsing.google.com/safebrowsing/downloads?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2&key=%GOOGLE_API_KEY%");
+-pref("browser.safebrowsing.provider.google.gethashURL", "https://safebrowsing.google.com/safebrowsing/gethash?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2");
+-pref("browser.safebrowsing.provider.google.reportURL", "https://safebrowsing.google.com/safebrowsing/diagnostic?client=%NAME%&hl=%LOCALE%&site=");
+-pref("browser.safebrowsing.provider.google.reportPhishMistakeURL", "https://%LOCALE%.phish-error.mozilla.com/?hl=%LOCALE%&url=");
+-pref("browser.safebrowsing.provider.google.reportMalwareMistakeURL", "https://%LOCALE%.malware-error.mozilla.com/?hl=%LOCALE%&url=");
+-pref("browser.safebrowsing.provider.google.advisoryURL", "https://developers.google.com/safe-browsing/v4/advisory");
+-pref("browser.safebrowsing.provider.google.advisoryName", "Google Safe Browsing");
++pref("browser.safebrowsing.provider.google.lists", "");
++pref("browser.safebrowsing.provider.google.updateURL", "");
++pref("browser.safebrowsing.provider.google.gethashURL", "");
++pref("browser.safebrowsing.provider.google.reportURL", "");
++pref("browser.safebrowsing.provider.google.reportPhishMistakeURL", "");
++pref("browser.safebrowsing.provider.google.reportMalwareMistakeURL", "");
++pref("browser.safebrowsing.provider.google.advisoryURL", "");
++pref("browser.safebrowsing.provider.google.advisoryName", "");
+
+ // Google Safe Browsing provider
+ pref("browser.safebrowsing.provider.google4.pver", "4");
+-pref("browser.safebrowsing.provider.google4.lists", "goog-badbinurl-proto,goog-downloadwhite-proto,goog-phish-proto,googpub-phish-proto,goog-malware-proto,goog-unwanted-proto,goog-harmful-proto,goog-passwordwhite-proto");
+-pref("browser.safebrowsing.provider.google4.updateURL", "https://safebrowsing.googleapis.com/v4/threatListUpdates:fetch?$ct=application/x-protobuf&key=%GOOGLE_API_KEY%&$httpMethod=POST");
+-pref("browser.safebrowsing.provider.google4.gethashURL", "https://safebrowsing.googleapis.com/v4/fullHashes:find?$ct=application/x-protobuf&key=%GOOGLE_API_KEY%&$httpMethod=POST");
+-pref("browser.safebrowsing.provider.google4.reportURL", "https://safebrowsing.google.com/safebrowsing/diagnostic?client=%NAME%&hl=%LOCALE%&site=");
+-pref("browser.safebrowsing.provider.google4.reportPhishMistakeURL", "https://%LOCALE%.phish-error.mozilla.com/?hl=%LOCALE%&url=");
+-pref("browser.safebrowsing.provider.google4.reportMalwareMistakeURL", "https://%LOCALE%.malware-error.mozilla.com/?hl=%LOCALE%&url=");
+-pref("browser.safebrowsing.provider.google4.advisoryURL", "https://developers.google.com/safe-browsing/v4/advisory");
+-pref("browser.safebrowsing.provider.google4.advisoryName", "Google Safe Browsing");
+-pref("browser.safebrowsing.provider.google4.dataSharingURL", "https://safebrowsing.googleapis.com/v4/threatHits?$ct=application/x-protobuf&key=%GOOGLE_API_KEY%&$httpMethod=POST");
++pref("browser.safebrowsing.provider.google4.lists", "");
++pref("browser.safebrowsing.provider.google4.updateURL", "");
++pref("browser.safebrowsing.provider.google4.gethashURL", "");
++pref("browser.safebrowsing.provider.google4.reportURL", "");
++pref("browser.safebrowsing.provider.google4.reportPhishMistakeURL", "");
++pref("browser.safebrowsing.provider.google4.reportMalwareMistakeURL", "");
++pref("browser.safebrowsing.provider.google4.advisoryURL", "");
++pref("browser.safebrowsing.provider.google4.advisoryName", "");
++pref("browser.safebrowsing.provider.google4.dataSharingURL", "");
+ pref("browser.safebrowsing.provider.google4.dataSharing.enabled", false);
+
+-pref("browser.safebrowsing.reportPhishURL", "https://%LOCALE%.phish-report.mozilla.com/?hl=%LOCALE%&url=");
++pref("browser.safebrowsing.reportPhishURL", "");
+
+ // Mozilla Safe Browsing provider (for tracking protection and plugin blocking)
+ pref("browser.safebrowsing.provider.mozilla.pver", "2.2");
+ pref("browser.safebrowsing.provider.mozilla.lists", "base-track-digest256,mozstd-trackwhite-digest256,content-track-digest256,mozplugin-block-digest256,mozplugin2-block-digest256,block-flash-digest256,except-flash-digest256,allow-flashallow-digest256,except-flashallow-digest256,block-flashsubdoc-digest256,except-flashsubdoc-digest256,except-flashinfobar-digest256,ads-track-digest256,social-track-digest256,analytics-track-digest256");
+-pref("browser.safebrowsing.provider.mozilla.updateURL", "https://shavar.services.mozilla.com/downloads?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2");
+-pref("browser.safebrowsing.provider.mozilla.gethashURL", "https://shavar.services.mozilla.com/gethash?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2");
++pref("browser.safebrowsing.provider.mozilla.updateURL", "");
++pref("browser.safebrowsing.provider.mozilla.gethashURL", "");
+ // Set to a date in the past to force immediate download in new profiles.
+ pref("browser.safebrowsing.provider.mozilla.nextupdatetime", "1");
+ // Block lists for tracking protection. The name values will be used as the keys
+@@ -5727,7 +5727,7 @@
+ pref("browser.search.update", true);
+ pref("browser.search.update.log", false);
+ pref("browser.search.update.interval", 21600);
+-pref("browser.search.suggest.enabled", true);
++pref("browser.search.suggest.enabled", false);
+ pref("browser.search.reset.enabled", false);
+ pref("browser.search.reset.whitelist", "");
+ pref("browser.search.geoSpecificDefaults", false);
+diff -Naur firefox-60.0.bak/toolkit/components/telemetry/healthreport-prefs.js firefox-60.0/toolkit/components/telemetry/healthreport-prefs.js
+--- firefox-60.0.bak/toolkit/components/telemetry/healthreport-prefs.js
++++ firefox-60.0/toolkit/components/telemetry/healthreport-prefs.js
+@@ -7,4 +7,4 @@
+ pref("datareporting.healthreport.infoURL", "https://www.mozilla.org/legal/privacy/firefox.html#health-report");
+
+ // Health Report is enabled by default on all channels.
+-pref("datareporting.healthreport.uploadEnabled", true);
++pref("datareporting.healthreport.uploadEnabled", false);
+diff -Naur firefox-60.0.bak/browser/locales/en-US/chrome/browser-region/region.properties firefox-60.0/browser/locales/en-US/chrome/browser-region/region.properties
+--- firefox-60.0.bak/browser/locales/en-US/chrome/browser-region/region.properties
++++ firefox-60.0/browser/locales/en-US/chrome/browser-region/region.properties
+@@ -6,8 +6,8 @@
+ browser.search.defaultenginename=Google
+
+ # Search engine order (order displayed in the search bar dropdown)s
+-browser.search.order.1=Google
+-browser.search.order.2=Bing
++browser.search.order.1=DuckDuckGo
++browser.search.order.2=Google
+
+ # This is the default set of web based feed handlers shown in the reader
+ # selection UI