diff options
-rw-r--r-- | libre-testing/icecat/PKGBUILD | 170 | ||||
-rw-r--r-- | libre-testing/icecat/disable-crypto-hardening-settings.patch | 74 | ||||
-rw-r--r-- | libre-testing/icecat/gnu_headshadow.png | bin | 0 -> 6785 bytes | |||
-rw-r--r-- | libre-testing/icecat/icecat-fixed-loading-icon.png | bin | 0 -> 12184 bytes | |||
-rw-r--r-- | libre-testing/icecat/icecat-install-dir.patch | 12 | ||||
-rw-r--r-- | libre-testing/icecat/icecat.desktop | 352 | ||||
-rw-r--r-- | libre-testing/icecat/icecat.install | 13 | ||||
-rw-r--r-- | libre-testing/icecat/libre.patch | 890 | ||||
-rw-r--r-- | libre-testing/icecat/mozconfig | 38 | ||||
-rw-r--r-- | libre-testing/icecat/no-neon.patch | 123 | ||||
-rw-r--r-- | libre-testing/icecat/remove-google-play-services-support.patch | 64 | ||||
-rw-r--r-- | libre-testing/icecat/vendor.js | 28 |
12 files changed, 1764 insertions, 0 deletions
diff --git a/libre-testing/icecat/PKGBUILD b/libre-testing/icecat/PKGBUILD new file mode 100644 index 000000000..ac4ee44ea --- /dev/null +++ b/libre-testing/icecat/PKGBUILD @@ -0,0 +1,170 @@ +# Maintainer: André Silva <emulatorman@parabola.nu> +# Contributor: Márcio Silva <coadde@parabola.nu> +# Contributor (ConnochaetOS): Henry Jensen <hjensen@connochaetos.org> +# Contributor: Luke Shumaker <lukeshu@sbcglobal.net> +# Contributor: fauno <fauno@kiwwwi.com.ar> +# Contributor: vando <facundo@esdebian.org> +# Contributor (Arch): Jakub Schmidtke <sjakub@gmail.com> +# Contributor: Figue <ffigue at gmail> +# Thank you very much to the older contributors: +# Contributor: evr <evanroman at gmail> +# Contributor: Muhammad 'MJ' Jassim <UnbreakableMJ@gmail.com> +# Contributor: Isaac David <isacdaavid at isacdaavid.info> + +_pgo=true + +pkgname=icecat +_pkgver=38.5.2-gnu1 +pkgver=${_pkgver//-/_} +pkgrel=2 + +pkgdesc="GNU IceCat, the standalone web browser based on Mozilla Firefox." +arch=(i686 x86_64 armv7h) +license=(MPL GPL LGPL) +depends=(alsa-lib dbus-glib desktop-file-utils gtk2 hicolor-icon-theme hunspell icu=56.1 libevent libvpx=1.5.0 libxt mime-types mozilla-common mozilla-searchplugins nss sqlite startup-notification ttf-font) +makedepends=(diffutils gst-plugins-base-libs imake inetutils libpulse mesa python2 unzip yasm zip) +options=(!emptydirs !makeflags debug) +if $_pgo; then + makedepends+=(xorg-server-xvfb) + options+=(!ccache) +fi +optdepends=('networkmanager: Location detection via available WiFi networks' + 'gst-plugins-good: h.264 video' + 'gst-libav: h.264 video') +url="http://www.gnu.org/software/gnuzilla/" +install=$pkgname.install +#source=(http://ftp.gnu.org/gnu/gnuzilla/${_pkgver%-*}/$pkgname-$_pkgver.tar.bz2{,.sig} +source=(http://jenkins.trisquel.info/$pkgname/binaries/$pkgname-$_pkgver.tar.bz2{,.sig} + mozconfig + libre.patch + gnu_headshadow.png + $pkgname.desktop + $pkgname-install-dir.patch + vendor.js + $pkgname-fixed-loading-icon.png + remove-google-play-services-support.patch + disable-crypto-hardening-settings.patch + no-neon.patch) +sha256sums=('8f99b9cb966404665085f87f1d532a22f3b0d422bfb49eb8f202b40c96ef2854' + 'SKIP' + '33a8cf07373c63a0bea70ec2c3983d2cca990752c0f946cb5dbd91f1e2b6410f' + 'dd173c9283babb8a04bf55274de05e823161f7d13adb8c5e21dd5a9c0dc549a2' + '93e3001ce152e1d142619e215a9ef07dd429943b99d21726c25da9ceb31e31cd' + '52df9ffeb52166ed4abd9a132ee4a9017b9c4980f0725ba383610ccfb06d4745' + '5bdab2de5520fb4d3dbc453d9f73d20e0e077bf652bc780fc17184ba6c718a47' + '977aa49b940f1da049cefa2878a63ac6669a78e63e9d55bb11db7b8f8fb64c33' + '68e3a5b47c6d175cc95b98b069a15205f027cab83af9e075818d38610feb6213' + '9e651b0f7e7d9d663e8b24077d52bad15f011871747743aff60d6e2d7a45ae5b' + 'bcd351d97e99f9a71ff5f44e29037f5451617378527801e32de514ff30583476' + '6d0c1c9ca28b20d206ce24ca84f4d4e3f5d062a2e9cb7445fcb6c2cfea959b4a') +validpgpkeys=('A57369A8BABC2542B5A0368C3C76EED7D7E04784') # Ruben Rodriguez + +prepare() { + export GNU_BUILD="gnuzilla-release" + + mv $pkgname-${pkgver%_*} "$srcdir/$GNU_BUILD" + cd "$srcdir/$GNU_BUILD" + + # Put gnu_headshadow.png on the source code + install -m644 "$srcdir/gnu_headshadow.png" \ + browser/base/content/abouthome + + # Install to /usr/lib/$pkgname + patch -Np1 -i "$srcdir/$pkgname-install-dir.patch" + + # Patch and remove anything that's left + patch -Np1 -i "$srcdir/libre.patch" + patch -Np1 -i "$srcdir/remove-google-play-services-support.patch" + rm -v browser/base/content/abouthome/snippet*.png || true + sed -i '\|abouthome/snippet|d + ' browser/base/jar.mn + + # Load our build config, disable SafeSearch + cp "$srcdir/mozconfig" .mozconfig + # Disable gold linker and SIMD for ARM build + if [ "$CARCH" = "armv7h" ]; then + sed -i '/ac_add_options --enable-gold/d' .mozconfig + echo 'ac_add_options --disable-neon' >> .mozconfig + fi + + mkdir "$srcdir/path" + + # WebRTC build tries to execute "python" and expects Python 2 + ln -s /usr/bin/python2 "$srcdir/path/python" + + # Configure script misdetects the preprocessor without an optimization level + # https://bugs.archlinux.org/task/34644 + sed -i '/ac_cpp=/s/$CPPFLAGS/& -O2/' configure + + # Fix tab loading icon (doesn't work with libpng 1.6) + # https://bugzilla.mozilla.org/show_bug.cgi?id=841734 + cp "$srcdir/$pkgname-fixed-loading-icon.png" \ + browser/themes/linux/tabbrowser/loading.png + + # Fix SIMD options in configure script during ARM build + [ "$CARCH" = "armv7h" ] && patch -Np0 -i ../no-neon.patch + + # Disable crypto hardening settings for now + # https://lists.parabola.nu/pipermail/assist/2015-October/000534.html + # https://labs.parabola.nu/issues/842 + patch -Np1 -i "$srcdir/disable-crypto-hardening-settings.patch" +} + +build() { + export GNU_BUILD="gnuzilla-release" + + cd "$srcdir/$GNU_BUILD" + + export PATH="$srcdir/path:$PATH" + export PYTHON="/usr/bin/python2" + + if $_pgo; then + # Do PGO + xvfb-run -a -s "-extension GLX -screen 0 1280x1024x24" \ + make -f client.mk build MOZ_PGO=1 + else + make -f client.mk build + fi +} + +package() { + export GNU_BUILD="gnuzilla-release" + + cd "$srcdir/$GNU_BUILD" + make -f client.mk DESTDIR="$pkgdir" INSTALL_SDK= install + + install -Dm644 ../vendor.js "$pkgdir/usr/lib/$pkgname/browser/defaults/preferences/vendor.js" + + + brandingdir=browser/branding/official + icondir="$pkgdir/usr/share/icons/hicolor" + for i in 16 22 24 32 48 256; do + install -Dm644 "$brandingdir/default$i.png" \ + "$icondir/${i}x${i}/apps/$pkgname.png" + done + install -Dm644 "$brandingdir/content/icon64.png" \ + "$icondir/64x64/apps/$pkgname.png" + install -Dm644 "$brandingdir/mozicon128.png" \ + "$icondir/128x128/apps/$pkgname.png" + install -Dm644 "$brandingdir/content/about-logo.png" \ + "$icondir/192x192/apps/$pkgname.png" + install -Dm644 "$brandingdir/content/about-logo@2x.png" \ + "$icondir/384x384/apps/$pkgname.png" + + install -d "$pkgdir/usr/share/applications" + install -m644 "$srcdir/$pkgname.desktop" \ + "$pkgdir/usr/share/applications" + + # Use system-provided dictionaries + rm -rf "$pkgdir/usr/lib/$pkgname/"{dictionaries,hyphenation} + ln -s /usr/share/hunspell "$pkgdir/usr/lib/$pkgname/dictionaries" + ln -s /usr/share/hyphen "$pkgdir/usr/lib/$pkgname/hyphenation" + + rm -rf "$pkgdir/usr/lib/$pkgname/browser/"{searchplugins,plugins} + ln -sf /usr/lib/mozilla/plugins "$pkgdir/usr/lib/$pkgname/browser/plugins" + ln -sf /usr/lib/mozilla/searchplugins "$pkgdir/usr/lib/$pkgname/browser/searchplugins" + + # Workaround for now: + # https://bugzilla.mozilla.org/show_bug.cgi?id=658850 + ln -sf $pkgname "$pkgdir/usr/lib/$pkgname/$pkgname-bin" +} diff --git a/libre-testing/icecat/disable-crypto-hardening-settings.patch b/libre-testing/icecat/disable-crypto-hardening-settings.patch new file mode 100644 index 000000000..77517c6d0 --- /dev/null +++ b/libre-testing/icecat/disable-crypto-hardening-settings.patch @@ -0,0 +1,74 @@ +diff -Nur icecat-38.5.2.orig/browser/app/profile/icecat.js icecat-38.5.2/browser/app/profile/icecat.js +--- icecat-38.5.2.orig/browser/app/profile/icecat.js 2015-12-24 18:24:09.000000000 -0300 ++++ icecat-38.5.2/browser/app/profile/icecat.js 2015-12-28 16:06:00.046009585 -0300 +@@ -2047,20 +2047,20 @@ + // Crypto hardening + // https://gist.github.com/haasn/69e19fc2fe0e25f3cff5 + //General settings +-pref("security.tls.unrestricted_rc4_fallback", false); +-pref("security.tls.insecure_fallback_hosts.use_static_list", false); +-pref("security.tls.version.min", 1); +-pref("security.ssl.require_safe_negotiation", true); +-pref("security.ssl.treat_unsafe_negotiation_as_broken", true); +-pref("security.ssl3.rsa_seed_sha", true); +-pref("security.OCSP.enabled", 1); +-pref("security.OCSP.require", true); ++//pref("security.tls.unrestricted_rc4_fallback", false); ++//pref("security.tls.insecure_fallback_hosts.use_static_list", false); ++//pref("security.tls.version.min", 1); ++//pref("security.ssl.require_safe_negotiation", true); ++//pref("security.ssl.treat_unsafe_negotiation_as_broken", true); ++//pref("security.ssl3.rsa_seed_sha", true); ++//pref("security.OCSP.enabled", 1); ++//pref("security.OCSP.require", true); + //Disable unnecessary protocols +-pref("security.ssl3.rsa_rc4_128_sha", false); +-pref("security.ssl3.rsa_rc4_128_md5", false); +-pref("security.ssl3.rsa_des_ede3_sha", false); +-pref("security.ssl3.ecdhe_ecdsa_rc4_128_sha", false); +-pref("security.ssl3.ecdhe_rsa_rc4_128_sha", false); ++//pref("security.ssl3.rsa_rc4_128_sha", false); ++//pref("security.ssl3.rsa_rc4_128_md5", false); ++//pref("security.ssl3.rsa_des_ede3_sha", false); ++//pref("security.ssl3.ecdhe_ecdsa_rc4_128_sha", false); ++//pref("security.ssl3.ecdhe_rsa_rc4_128_sha", false); + // https://directory.fsf.org/wiki/Disable_DHE + // Avoid logjam attack + pref("security.ssl3.dhe_rsa_aes_128_sha", false); +diff -Nur icecat-38.5.2.orig/mobile/android/app/mobile.js icecat-38.5.2/mobile/android/app/mobile.js +--- icecat-38.5.2.orig/mobile/android/app/mobile.js 2015-12-24 18:24:09.000000000 -0300 ++++ icecat-38.5.2/mobile/android/app/mobile.js 2015-12-28 16:06:32.144427580 -0300 +@@ -1009,20 +1009,20 @@ + // Crypto hardening + // https://gist.github.com/haasn/69e19fc2fe0e25f3cff5 + //General settings +-pref("security.tls.unrestricted_rc4_fallback", false); +-pref("security.tls.insecure_fallback_hosts.use_static_list", false); +-pref("security.tls.version.min", 1); +-pref("security.ssl.require_safe_negotiation", true); +-pref("security.ssl.treat_unsafe_negotiation_as_broken", true); +-pref("security.ssl3.rsa_seed_sha", true); +-pref("security.OCSP.enabled", 1); +-pref("security.OCSP.require", true); ++//pref("security.tls.unrestricted_rc4_fallback", false); ++//pref("security.tls.insecure_fallback_hosts.use_static_list", false); ++//pref("security.tls.version.min", 1); ++//pref("security.ssl.require_safe_negotiation", true); ++//pref("security.ssl.treat_unsafe_negotiation_as_broken", true); ++//pref("security.ssl3.rsa_seed_sha", true); ++//pref("security.OCSP.enabled", 1); ++//pref("security.OCSP.require", true); + //Disable unnecessary protocols +-pref("security.ssl3.rsa_rc4_128_sha", false); +-pref("security.ssl3.rsa_rc4_128_md5", false); +-pref("security.ssl3.rsa_des_ede3_sha", false); +-pref("security.ssl3.ecdhe_ecdsa_rc4_128_sha", false); +-pref("security.ssl3.ecdhe_rsa_rc4_128_sha", false); ++//pref("security.ssl3.rsa_rc4_128_sha", false); ++//pref("security.ssl3.rsa_rc4_128_md5", false); ++//pref("security.ssl3.rsa_des_ede3_sha", false); ++//pref("security.ssl3.ecdhe_ecdsa_rc4_128_sha", false); ++//pref("security.ssl3.ecdhe_rsa_rc4_128_sha", false); + // https://directory.fsf.org/wiki/Disable_DHE + // Avoid logjam attack + pref("security.ssl3.dhe_rsa_aes_128_sha", false); diff --git a/libre-testing/icecat/gnu_headshadow.png b/libre-testing/icecat/gnu_headshadow.png Binary files differnew file mode 100644 index 000000000..e0f73a3bf --- /dev/null +++ b/libre-testing/icecat/gnu_headshadow.png diff --git a/libre-testing/icecat/icecat-fixed-loading-icon.png b/libre-testing/icecat/icecat-fixed-loading-icon.png Binary files differnew file mode 100644 index 000000000..55f25e591 --- /dev/null +++ b/libre-testing/icecat/icecat-fixed-loading-icon.png diff --git a/libre-testing/icecat/icecat-install-dir.patch b/libre-testing/icecat/icecat-install-dir.patch new file mode 100644 index 000000000..e15bf0b68 --- /dev/null +++ b/libre-testing/icecat/icecat-install-dir.patch @@ -0,0 +1,12 @@ +diff -Nur a/config/baseconfig.mk c/config/baseconfig.mk +--- a/config/baseconfig.mk 2014-10-09 12:52:39.000000000 -0200 ++++ b/config/baseconfig.mk 2014-10-21 18:34:35.803894661 -0200 +@@ -4,7 +4,7 @@ + # whether a normal build is happening or whether the check is running. + includedir := $(includedir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) + idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) +-installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) ++installdir = $(libdir)/$(MOZ_APP_NAME) + sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION) + ifndef TOP_DIST + TOP_DIST = dist diff --git a/libre-testing/icecat/icecat.desktop b/libre-testing/icecat/icecat.desktop new file mode 100644 index 000000000..d2c0ccb03 --- /dev/null +++ b/libre-testing/icecat/icecat.desktop @@ -0,0 +1,352 @@ +[Desktop Entry] +Name=GNU IceCat +GenericName=Web Browser +GenericName[ar]=متصفح ويب +GenericName[ast]=Restolador Web +GenericName[bn]=ওয়েব ব্রাউজার +GenericName[ca]=Navegador web +GenericName[cs]=Webový prohlížeč +GenericName[da]=Webbrowser +GenericName[el]=Περιηγητής διαδικτύου +GenericName[es]=Navegador web +GenericName[et]=Veebibrauser +GenericName[fa]=مرورگر اینترنتی +GenericName[fi]=WWW-selain +GenericName[fr]=Navigateur Web +GenericName[gl]=Navegador Web +GenericName[he]=דפדפן אינטרנט +GenericName[hr]=Web preglednik +GenericName[hu]=Webböngésző +GenericName[it]=Browser web +GenericName[ja]=ウェブ・ブラウザ +GenericName[ko]=웹 브라우저 +GenericName[ku]=Geroka torê +GenericName[lt]=Interneto naršyklė +GenericName[nb]=Nettleser +GenericName[nl]=Webbrowser +GenericName[nn]=Nettlesar +GenericName[no]=Nettleser +GenericName[pl]=Przeglądarka WWW +GenericName[pt]=Navegador Web +GenericName[pt_BR]=Navegador Web +GenericName[ro]=Navigator Internet +GenericName[ru]=Веб-браузер +GenericName[sk]=Internetový prehliadač +GenericName[sl]=Spletni brskalnik +GenericName[sv]=Webbläsare +GenericName[tr]=Web Tarayıcı +GenericName[ug]=توركۆرگۈ +GenericName[uk]=Веб-браузер +GenericName[vi]=Trình duyệt Web +GenericName[zh_CN]=网络浏览器 +GenericName[zh_TW]=網路瀏覽器 +Comment=Browse the World Wide Web +Comment[ar]=تصفح الشبكة العنكبوتية العالمية +Comment[ast]=Restola pela Rede +Comment[bn]=ইন্টারনেট ব্রাউজ করুন +Comment[ca]=Navegueu per la web +Comment[cs]=Prohlížení stránek World Wide Webu +Comment[da]=Surf på internettet +Comment[de]=Im Internet surfen +Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web) +Comment[es]=Navegue por la web +Comment[et]=Lehitse veebi +Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید +Comment[fi]=Selaa Internetin WWW-sivuja +Comment[fr]=Naviguer sur le Web +Comment[gl]=Navegar pola rede +Comment[he]=גלישה ברחבי האינטרנט +Comment[hr]=Pretražite web +Comment[hu]=A világháló böngészése +Comment[it]=Esplora il web +Comment[ja]=ウェブを閲覧します +Comment[ko]=웹을 돌아 다닙니다 +Comment[ku]=Li torê bigere +Comment[lt]=Naršykite internete +Comment[nb]=Surf på nettet +Comment[nl]=Verken het internet +Comment[nn]=Surf på nettet +Comment[no]=Surf på nettet +Comment[pl]=Przeglądanie stron WWW +Comment[pt]=Navegue na Internet +Comment[pt_BR]=Navegue na Internet +Comment[ro]=Navigați pe Internet +Comment[ru]=Доступ в Интернет +Comment[sk]=Prehliadanie internetu +Comment[sl]=Brskajte po spletu +Comment[sv]=Surfa på webben +Comment[tr]=İnternet'te Gezinin +Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ +Comment[uk]=Перегляд сторінок Інтернету +Comment[vi]=Để duyệt các trang web +Comment[zh_CN]=浏览互联网 +Comment[zh_TW]=瀏覽網際網路 +Exec=icecat %u +Terminal=false +Type=Application +Icon=icecat +Categories=Network;WebBrowser; +MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp; +StartupNotify=true +Actions=NewTab;NewWindow;NewPrivateWindow; + +[Desktop Action NewTab] +Name=Open new tab +Name[ach]=Yab dirica matidi manyen +Name[af]=Open nuwe oortjie +Name[an]=Ubrir una pestanya nueva +Name[ar]=افتح لسانًا جديدًا +Name[as]=নতুন টেব খোলক +Name[ast]=Abrir llingüeta nueva +Name[az]=Yeni vərəq aç +Name[be]=Адкрыць новую ўстаўку +Name[bg]=Отваряне на нов подпрозорец +Name[bn_BD]=নতুন ট্যাব খুলুন +Name[bn_IN]=নতুন ট্যাব খুলুন +Name[br]=Digeriñ un ivinell nevez +Name[bs]=Otvori novi tab +Name[ca]=Obre una pestanya nova +Name[cs]=Otevřít nový panel +Name[cy]=Agor tab newydd +Name[da]=Åbn nyt faneblad +Name[de]=Neuen Tab öffnen +Name[dsb]=Nowy rejtark wócyniś +Name[el]=Άνοιγμα νέας καρτέλας +Name[eo]=Malfermi novan langeton +Name[es_AR]=Abrir nueva pestaña +Name[es_CL]=Abrir nueva pestaña +Name[es_ES]=Abrir pestaña nueva +Name[es_MX]=Abrir una pestaña nueva +Name[et]=Ava uus kaart +Name[eu]=Ireki fitxa berria +Name[ff]=Uddit tabbere hesere +Name[fi]=Avaa uusi välilehti +Name[fr]=Ouvrir un nouvel onglet +Name[fy_NL]=Iepenje nij ljepblêd +Name[ga_IE]=Oscail i gcluaisín nua +Name[gd]=Fosgail taba ùr +Name[gl]=Abrir unha nova lapela +Name[gu_IN]=નવી ટૅબને ખોલો +Name[he]=פתיחת לשונית חדשה +Name[hi_IN]=नया टैब खोलें +Name[hr]=Otvori novu karticu +Name[hsb]=Nowy rajtark wočinić +Name[hu]=Új lap megnyitása +Name[hy_AM]=Բացել նոր ներդիր +Name[id]=Buka tab baru +Name[is]=Opna nýjan flipa +Name[it]=Apri nuova scheda +Name[ja]=新しいタブ +Name[kk]=Жаңа бетті ашу +Name[kn]=ಹೊಸ ಹಾಳೆಯನ್ನು ತೆರೆ +Name[ko]=새 탭 열기 +Name[lij]=Àrvi nêuvo féuggio +Name[lt]=Atverti naują kortelę +Name[mai]=नव टैब खोलू +Name[mk]=Отвори ново јазиче +Name[ml]=പുതിയ റ്റാബ് തുറക്കുക +Name[mr]=नवीन टॅब उघडा +Name[ms]=Buka tab baru +Name[nb_NO]=Åpne ny fane +Name[nl]=Nieuw tabblad openen +Name[nn_NO]=Opna ny fane +Name[or]=ନୂତନ ଟ୍ୟାବ ଖୋଲନ୍ତୁ +Name[pa_IN]=ਨਵੀਂ ਟੈਬ ਖੋਲ੍ਹੋ +Name[pl]=Otwórz nową kartę +Name[pt_BR]=Nova aba +Name[pt_PT]=Abrir novo separador +Name[rm]=Avrir in nov tab +Name[ro]=Deschide o filă nouă +Name[ru]=Открыть новую вкладку +Name[si]=නව ටැබය විවෘත කරන්න +Name[sk]=Otvoriť novú kartu +Name[sl]=Odpri nov zavihek +Name[son]=Nor loku taaga feeri +Name[sq]=Hap skedë të re +Name[sr]=Отвори нови језичак +Name[sv_SE]=Öppna ny flik +Name[ta]=புதிய கீற்றைத் திற +Name[te]=కొత్త టాబ్ తెరువుము +Name[th]=เปิดแท็บใหม่ +Name[tr]=Yeni sekme aç +Name[uk]=Відкрити нову вкладку +Name[uz]=Yangi ichki oyna ochish +Name[vi]=Mở thẻ mới +Name[xh]=Vula ithebhu entsha +Name[zh_CN]=打开新标签页 +Name[zh_TW]=開啟新分頁 +Exec=icecat -new-tab about:newtab + +[Desktop Action NewWindow] +Name=Open new window +Name[ach]=Yab dirica manyen +Name[af]=Open nuwe venster +Name[an]=Ubrir una nueva finestra +Name[ar]=افتح نافذة جديدة +Name[as]=নতুন উইন্ডো খোলক +Name[ast]=Abrir ventana nueva +Name[az]=Yeni pəncərə aç +Name[be]=Адкрыць новае акно +Name[bg]=Отваряне на нов прозорец +Name[bn_BD]=নতুন উইন্ডো খুলুন +Name[bn_IN]=নতুন উইন্ডো খুলুন +Name[br]=Digeriñ ur prenestr nevez +Name[bs]=Otvori novi prozor +Name[ca]=Obre una finestra nova +Name[cs]=Otevřít nové okno +Name[cy]=Agor ffenestr newydd +Name[da]=Åbn nyt vindue +Name[de]=Neues Fenster öffnen +Name[dsb]=Nowe wokno wócyniś +Name[el]=Άνοιγμα νέου παραθύρου +Name[eo]=Malfermi novan fenestron +Name[es_AR]=Abrir nueva ventana +Name[es_CL]=Abrir nueva ventana +Name[es_ES]=Abrir nueva ventana +Name[es_MX]=Abrir nueva ventana +Name[et]=Ava uus aken +Name[eu]=Ireki leiho berria +Name[ff]=Uddit henorde hesere +Name[fi]=Avaa uusi ikkuna +Name[fr]=Ouvrir une nouvelle fenêtre +Name[fy_NL]=Iepenje nij finster +Name[ga_IE]=Oscail fuinneog nua +Name[gd]=Fosgail uinneag ùr +Name[gl]=Abrir unha nova xanela +Name[gu_IN]=નવી વિન્ડોને ખોલો +Name[he]=פתח חלון חדש +Name[hi_IN]=नई विंडो खोलें +Name[hr]=Otvori novi prozor +Name[hsb]=Nowe wokno wočinić +Name[hu]=Új ablak megnyitása +Name[hy_AM]=Բացել նոր պատուհան +Name[id]=Buka jendela baru +Name[is]=Opna nýjan glugga +Name[it]=Apri nuova finestra +Name[ja]=新しいウィンドウ +Name[kk]=Жаңа терезені ашу +Name[kn]=ಹೊಸ ವಿಂಡೊವನ್ನು ತೆರೆ +Name[ko]=새 창 열기 +Name[lij]=Àrvi nêuvo barcón +Name[lt]=Atverti naują langą +Name[mai]=नई विंडो खोलू +Name[mk]=Отвори нов прозорец +Name[ml]=പുതിയ ജാലകം തുറക്കുക +Name[mr]=नवीन पटल उघडा +Name[ms]=Buka tetingkap baru +Name[nb_NO]=Åpne nytt vindu +Name[nl]=Een nieuw venster openen +Name[nn_NO]=Opna nytt vindauge +Name[or]=ନୂତନ ୱିଣ୍ଡୋ ଖୋଲନ୍ତୁ +Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ ਖੋਲ੍ਹੋ +Name[pl]=Otwórz nowe okno +Name[pt_BR]=Nova janela +Name[pt_PT]=Abrir nova janela +Name[rm]=Avrir ina nova fanestra +Name[ro]=Deschide o nouă fereastră +Name[ru]=Открыть новое окно +Name[si]=නව කවුළුවක් විවෘත කරන්න +Name[sk]=Otvoriť nové okno +Name[sl]=Odpri novo okno +Name[son]=Zanfun taaga feeri +Name[sq]=Hap dritare të re +Name[sr]=Отвори нови прозор +Name[sv_SE]=Öppna nytt fönster +Name[ta]=புதிய சாளரத்தை திற +Name[te]=కొత్త విండో తెరువుము +Name[th]=เปิดหน้าต่างใหม่ +Name[tr]=Yeni pencere aç +Name[uk]=Відкрити нове вікно +Name[uz]=Yangi oyna ochish +Name[vi]=Mở cửa sổ mới +Name[xh]=Vula iwindow entsha +Name[zh_CN]=打开新窗口 +Name[zh_TW]=開啟新視窗 +Exec=icecat -new-window + +[Desktop Action NewPrivateWindow] +Name=New private window +Name[ach]=Dirica manyen me mung +Name[af]=Nuwe privaatvenster +Name[an]=Nueva finestra de navegación privada +Name[ar]=نافذة خاصة جديدة +Name[as]=নতুন ব্যক্তিগত উইন্ডো +Name[ast]=Ventana privada nueva +Name[az]=Yeni məxfi pəncərə +Name[be]=Новае акно адасаблення +Name[bg]=Нов прозорец за поверително сърфиране +Name[bn_BD]=নতুন ব্যক্তিগত উইন্ডো +Name[bn_IN]=নতুন ব্যাক্তিগত উইন্ডো +Name[br]=Prenestr merdeiñ prevez nevez +Name[bs]=Novi privatni prozor +Name[ca]=Finestra privada nova +Name[cs]=Nové anonymní okno +Name[cy]=Ffenestr breifat newydd +Name[da]=Nyt privat vindue +Name[de]=Neues privates Fenster öffnen +Name[dsb]=Nowe priwatne wokno +Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης +Name[eo]=Nova privata fenestro +Name[es_AR]=Nueva ventana privada +Name[es_CL]=Nueva ventana privada +Name[es_ES]=Nueva ventana privada +Name[es_MX]=Nueva ventana privada +Name[et]=Uus privaatne aken +Name[eu]=Leiho pribatu berria +Name[ff]=Henorde suturo hesere +Name[fi]=Uusi yksityinen ikkuna +Name[fr]=Nouvelle fenêtre de navigation privée +Name[fy_NL]=Nij priveefinster +Name[ga_IE]=Fuinneog nua phríobháideach +Name[gd]=Uinneag phrìobhaideach ùr +Name[gl]=Nova xanela privada +Name[gu_IN]=નવી ખાનગી વિન્ડો +Name[he]=חלון פרטי חדש +Name[hi_IN]=नया निजी विंडो +Name[hr]=Novi privatni prozor +Name[hsb]=Nowe priwatne wokno +Name[hu]=Új privát ablak +Name[hy_AM]=Գաղտնի դիտարկում +Name[id]=Jendela mode pribadi baru +Name[is]=Nýr einkagluggi +Name[it]=Nuova finestra anonima +Name[ja]=新しいプライベートウィンドウ +Name[kk]=Жаңа жекелік терезе +Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ +Name[ko]=새 사생활 보호 창 +Name[lij]=Nêuvo barcón privòu +Name[lt]=Atverti privačiojo naršymo langą +Name[mai]=नव निज विंडो +Name[mk]=Нов прозорец за приватно сурфање +Name[ml]=പുതിയ സ്വകാര്യ ജാലകം +Name[mr]=नवीन वैयक्तिक पटल +Name[ms]=Tetingkap peribadi baharu +Name[nb_NO]=Nytt privat vindu +Name[nl]=Nieuw privévenster +Name[nn_NO]=Nytt privat vindauge +Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ +Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ +Name[pl]=Nowe okno w trybie prywatnym +Name[pt_BR]=Nova janela privativa +Name[pt_PT]=Nova janela privada +Name[rm]=Nova fanestra privata +Name[ro]=Fereastră fără urme nouă +Name[ru]=Новое приватное окно +Name[si]=නව පුද්ගලික කවුළුව +Name[sk]=Nové okno v režime Súkromné prehliadanie +Name[sl]=Novo zasebno okno +Name[son]=Sutura zanfun taaga +Name[sq]=Dritare e re private +Name[sr]=Нови приватни прозор +Name[sv_SE]=Nytt privat fönster +Name[ta]=புதிய தனிப்பட்ட சாளரம் +Name[te]=కొత్త ఆంతరంగిక విండో +Name[th]=หน้าต่างท่องเว็บแบบส่วนตัวใหม่ +Name[tr]=Yeni gizli pencere +Name[uk]=Нове приватне вікно +Name[uz]=Yangi shaxsiy oyna +Name[vi]=Cửa sổ riêng tư mới +Name[xh]=Ifestile yangasese entsha +Name[zh_CN]=新建隐私浏览窗口 +Name[zh_TW]=新增隱私視窗 +Exec=icecat -private-window diff --git a/libre-testing/icecat/icecat.install b/libre-testing/icecat/icecat.install new file mode 100644 index 000000000..1a1f4b16b --- /dev/null +++ b/libre-testing/icecat/icecat.install @@ -0,0 +1,13 @@ +post_install() { + update-desktop-database -q + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} + diff --git a/libre-testing/icecat/libre.patch b/libre-testing/icecat/libre.patch new file mode 100644 index 000000000..4a4407e4f --- /dev/null +++ b/libre-testing/icecat/libre.patch @@ -0,0 +1,890 @@ +diff -Nur a/browser/app/profile/icecat.js b/browser/app/profile/icecat.js +--- a/browser/app/profile/icecat.js 2015-10-12 20:42:13.000000000 -0300 ++++ b/browser/app/profile/icecat.js 2015-10-16 03:07:38.541169352 -0300 +@@ -279,11 +279,6 @@ + pref("browser.slowStartup.timeThreshold", 40000); + 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.cdn.mozilla.net/%STARTPAGE_VERSION%/%NAME%/%VERSION%/%APPBUILDID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/"); +- + pref("browser.enable_automatic_image_resizing", true); + pref("browser.casting.enabled", false); + pref("browser.chrome.site_icons", true); +@@ -2114,12 +2109,6 @@ + pref("pfs.datasource.url", "http://gnuzilla.gnu.org/plugins/PluginFinderService.php?mimetype=%PLUGIN_MIMETYPE%"); + pref("pfs.filehint.url", "http://gnuzilla.gnu.org/plugins/PluginFinderService.php?mimetype=%PLUGIN_MIMETYPE%"); + +-// I'm feeling Ducky. +-pref("keyword.URL", "https://duckduckgo.com/html?t=gnu&q=!+"); +-pref("browser.search.defaultenginename", "DuckDuckGo"); +-pref("browser.search.order.extra.duckduckgo", "DuckDuckGo"); +-pref("browser.search.showOneOffButtons", false); +- + // Disable Gecko media plugins: https://wiki.mozilla.org/GeckoMediaPlugins + pref("media.gmp-manager.url", "http://127.0.0.1/"); + pref("media.gmp-manager.url.override", "data:text/plain,"); +diff -Nur a/browser/base/content/abouthome/aboutHome.css b/browser/base/content/abouthome/aboutHome.css +--- a/browser/base/content/abouthome/aboutHome.css 2015-07-13 19:10:24.000000000 -0300 ++++ b/browser/base/content/abouthome/aboutHome.css 2015-08-18 02:37:30.095295232 -0300 +@@ -49,11 +49,6 @@ + background-repeat: no-repeat; + } + +-#searchForm, +-#snippets { +- width: 470px; +-} +- + #searchForm { + display: -moz-box; + } +@@ -72,8 +67,7 @@ + #searchEngineLogo { + display: inline-block; + height: 28px; +- width: 70px; +- min-width: 70px; ++ width: 28px; + } + + #searchText { +@@ -145,48 +139,6 @@ + transition-duration: 0ms; + } + +-#defaultSnippet1, +-#defaultSnippet2, +-#rightsSnippet { +- display: block; +- min-height: 38px; +- background: 30px center no-repeat; +- padding: 6px 0; +- -moz-padding-start: 79px; +-} +- +-#rightsSnippet[hidden] { +- display: none; +-} +- +-#defaultSnippet1:-moz-dir(rtl), +-#defaultSnippet2:-moz-dir(rtl), +-#rightsSnippet:-moz-dir(rtl) { +- background-position: right 30px center; +-} +- +-#defaultSnippet1 { +- background-image: url("chrome://browser/content/abouthome/snippet1.png"); +-} +- +-#defaultSnippet2 { +- background-image: url("chrome://browser/content/abouthome/snippet2.png"); +-} +- +-#snippets { +- display: inline-block; +- text-align: start; +- margin: 12px 0; +- color: #3c3c3c; +- font-size: 75%; +- /* 12px is the computed font size, 15px the computed line height of the snippets +- with Segoe UI on a default Windows 7 setup. The 15/12 multiplier approximately +- converts em from units of font-size to units of line-height. The goal is to +- preset the height of a three-line snippet to avoid visual moving/flickering as +- the snippets load. */ +- min-height: calc(15/12 * 3em); +-} +- + #launcher { + display: -moz-box; + -moz-box-align: center; +@@ -335,26 +287,25 @@ + width: 32px; + } + +-#aboutMozilla { ++#aboutGNU { + display: block; +- position: relative; /* pin wordmark to edge of document, not of viewport */ + -moz-box-ordinal-group: 0; + opacity: .5; + transition: opacity 150ms; + } + +-#aboutMozilla:hover { ++#aboutGNU:hover { + opacity: 1; + } + +-#aboutMozilla::before { +- content: url("chrome://browser/content/abouthome/mozilla.png"); ++#aboutGNU::before { ++ content: url("chrome://browser/content/abouthome/gnu_headshadow.png"); + display: block; + position: absolute; + top: 12px; + right: 12px; +- width: 69px; +- height: 19px; ++ width: 200px; ++ height: 110px; + } + + /* [HiDPI] +@@ -366,26 +317,6 @@ + background-image: url("chrome://branding/content/about-logo@2x.png"); + } + +- #defaultSnippet1, +- #defaultSnippet2, +- #rightsSnippet { +- background-size: 40px; +- } +- +- #defaultSnippet1 { +- background-image: url("chrome://browser/content/abouthome/snippet1@2x.png"); +- } +- +- #defaultSnippet2 { +- background-image: url("chrome://browser/content/abouthome/snippet2@2x.png"); +- } +- +- .launchButton::before, +- #aboutMozilla::before { +- transform: scale(.5); +- transform-origin: 0 0; +- } +- + #downloads::before { + content: url("chrome://browser/content/abouthome/downloads@2x.png"); + } +@@ -421,9 +352,5 @@ + body[narrow] #restorePreviousSession::before { + content: url("chrome://browser/content/abouthome/restore@2x.png"); + } +- +- #aboutMozilla::before { +- content: url("chrome://browser/content/abouthome/mozilla@2x.png"); +- } + } + +diff -Nur a/browser/base/content/abouthome/aboutHome.js b/browser/base/content/abouthome/aboutHome.js +--- a/browser/base/content/abouthome/aboutHome.js 2015-07-13 19:10:24.000000000 -0300 ++++ b/browser/base/content/abouthome/aboutHome.js 2015-08-18 02:40:01.024730697 -0300 +@@ -3,149 +3,54 @@ + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + + const SEARCH_ENGINES = { +- "Google": { +- // This is the "2x" image designed for OS X retina resolution, Windows at 192dpi, etc.; +- // it will be scaled down as necessary on lower-dpi displays. +- image: "data:image/png;base64," + +- "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" ++ "searx": { ++ image: "data:image/png;base64,\ ++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" + } + }; + +-// The process of adding a new default snippet involves: +-// * add a new entity to aboutHome.dtd +-// * add a <span/> for it in aboutHome.xhtml +-// * add an entry here in the proper ordering (based on spans) +-// The <a/> part of the snippet will be linked to the corresponding url. +-const DEFAULT_SNIPPETS_URLS = [ "" ]; +- +-const SNIPPETS_UPDATE_INTERVAL_MS = 86400000; // 1 Day. +- +-// IndexedDB storage constants. +-const DATABASE_NAME = "abouthome"; +-const DATABASE_VERSION = 1; +-const SNIPPETS_OBJECTSTORE_NAME = "snippets"; +- + // This global tracks if the page has been set up before, to prevent double inits + let gInitialized = false; + let gObserver = new MutationObserver(function (mutations) { +@@ -153,7 +58,6 @@ + if (mutation.attributeName == "searchEngineName") { + setupSearchEngine(); + if (!gInitialized) { +-// ensureSnippetsMapThen(loadSnippets); + gInitialized = true; + } + return; +@@ -178,118 +82,6 @@ + window.removeEventListener("resize", fitToWidth); + }); + +-// This object has the same interface as Map and is used to store and retrieve +-// the snippets data. It is lazily initialized by ensureSnippetsMapThen(), so +-// be sure its callback returned before trying to use it. +-let gSnippetsMap; +-let gSnippetsMapCallbacks = []; +- +-/** +- * Ensure the snippets map is properly initialized. +- * +- * @param aCallback +- * Invoked once the map has been initialized, gets the map as argument. +- * @note Snippets should never directly manage the underlying storage, since +- * it may change inadvertently. +- */ +-function ensureSnippetsMapThen(aCallback) +-{ +-return; +- if (gSnippetsMap) { +- aCallback(gSnippetsMap); +- return; +- } +- +- // Handle multiple requests during the async initialization. +- gSnippetsMapCallbacks.push(aCallback); +- if (gSnippetsMapCallbacks.length > 1) { +- // We are already updating, the callbacks will be invoked when done. +- return; +- } +- +- let invokeCallbacks = function () { +- if (!gSnippetsMap) { +- gSnippetsMap = Object.freeze(new Map()); +- } +- +- for (let callback of gSnippetsMapCallbacks) { +- callback(gSnippetsMap); +- } +- gSnippetsMapCallbacks.length = 0; +- } +- +- let openRequest = indexedDB.open(DATABASE_NAME, DATABASE_VERSION); +- +- openRequest.onerror = function (event) { +- // Try to delete the old database so that we can start this process over +- // next time. +- indexedDB.deleteDatabase(DATABASE_NAME); +- invokeCallbacks(); +- }; +- +- openRequest.onupgradeneeded = function (event) { +- let db = event.target.result; +- if (!db.objectStoreNames.contains(SNIPPETS_OBJECTSTORE_NAME)) { +- db.createObjectStore(SNIPPETS_OBJECTSTORE_NAME); +- } +- } +- +- openRequest.onsuccess = function (event) { +- let db = event.target.result; +- +- db.onerror = function (event) { +- invokeCallbacks(); +- } +- +- db.onversionchange = function (event) { +- event.target.close(); +- invokeCallbacks(); +- } +- +- let cache = new Map(); +- let cursorRequest = db.transaction(SNIPPETS_OBJECTSTORE_NAME) +- .objectStore(SNIPPETS_OBJECTSTORE_NAME).openCursor(); +- cursorRequest.onerror = function (event) { +- invokeCallbacks(); +- } +- +- cursorRequest.onsuccess = function(event) { +- let cursor = event.target.result; +- +- // Populate the cache from the persistent storage. +- if (cursor) { +- cache.set(cursor.key, cursor.value); +- cursor.continue(); +- return; +- } +- +- // The cache has been filled up, create the snippets map. +- gSnippetsMap = Object.freeze({ +- get: function (aKey) cache.get(aKey), +- set: function (aKey, aValue) { +- db.transaction(SNIPPETS_OBJECTSTORE_NAME, "readwrite") +- .objectStore(SNIPPETS_OBJECTSTORE_NAME).put(aValue, aKey); +- return cache.set(aKey, aValue); +- }, +- has: function (aKey) cache.has(aKey), +- delete: function (aKey) { +- db.transaction(SNIPPETS_OBJECTSTORE_NAME, "readwrite") +- .objectStore(SNIPPETS_OBJECTSTORE_NAME).delete(aKey); +- return cache.delete(aKey); +- }, +- clear: function () { +- db.transaction(SNIPPETS_OBJECTSTORE_NAME, "readwrite") +- .objectStore(SNIPPETS_OBJECTSTORE_NAME).clear(); +- return cache.clear(); +- }, +- get size() cache.size +- }); +- +- setTimeout(invokeCallbacks, 0); +- } +- } +-} +- + function onSearchSubmit(aEvent) + { + let searchTerms = document.getElementById("searchText").value; +@@ -339,159 +131,6 @@ + + } + +-/** +- * Inform the test harness that we're done loading the page. +- */ +-function loadSucceeded() +-{ +- var event = new CustomEvent("AboutHomeLoadSnippetsSucceeded", {bubbles:true}); +- document.dispatchEvent(event); +-} +- +-/** +- * Update the local snippets from the remote storage, then show them through +- * showSnippets. +- */ +-function loadSnippets() +-{ +-return; +- if (!gSnippetsMap) +- throw new Error("Snippets map has not properly been initialized"); +- +- // Allow tests to modify the snippets map before using it. +- var event = new CustomEvent("AboutHomeLoadSnippets", {bubbles:true}); +- document.dispatchEvent(event); +- +- // Check cached snippets version. +- let cachedVersion = gSnippetsMap.get("snippets-cached-version") || 0; +- let currentVersion = document.documentElement.getAttribute("snippetsVersion"); +- if (cachedVersion < currentVersion) { +- // The cached snippets are old and unsupported, restart from scratch. +- gSnippetsMap.clear(); +- } +- +- // Check last snippets update. +- let lastUpdate = gSnippetsMap.get("snippets-last-update"); +- let updateURL = document.documentElement.getAttribute("snippetsURL"); +- let shouldUpdate = !lastUpdate || +- Date.now() - lastUpdate > SNIPPETS_UPDATE_INTERVAL_MS; +- if (updateURL && shouldUpdate) { +- // Try to update from network. +- let xhr = new XMLHttpRequest(); +- try { +- xhr.open("GET", updateURL, true); +- } catch (ex) { +- showSnippets(); +- loadSucceeded(); +- return; +- } +- // Even if fetching should fail we don't want to spam the server, thus +- // set the last update time regardless its results. Will retry tomorrow. +- gSnippetsMap.set("snippets-last-update", Date.now()); +- xhr.onerror = function (event) { +- showSnippets(); +- }; +- xhr.onload = function (event) +- { +- if (xhr.status == 200) { +- gSnippetsMap.set("snippets", xhr.responseText); +- gSnippetsMap.set("snippets-cached-version", currentVersion); +- } +- showSnippets(); +- loadSucceeded(); +- }; +- xhr.send(null); +- } else { +- showSnippets(); +- loadSucceeded(); +- } +-} +- +-/** +- * Shows locally cached remote snippets, or default ones when not available. +- * +- * @note: snippets should never invoke showSnippets(), or they may cause +- * a "too much recursion" exception. +- */ +-let _snippetsShown = false; +-function showSnippets() +-{ +-return; +- let snippetsElt = document.getElementById("snippets"); +- +- // Show about:rights notification, if needed. +- let showRights = document.documentElement.getAttribute("showKnowYourRights"); +- if (showRights) { +- let rightsElt = document.getElementById("rightsSnippet"); +- let anchor = rightsElt.getElementsByTagName("a")[0]; +- anchor.href = "about:rights"; +- snippetsElt.appendChild(rightsElt); +- rightsElt.removeAttribute("hidden"); +- return; +- } +- +- if (!gSnippetsMap) +- throw new Error("Snippets map has not properly been initialized"); +- if (_snippetsShown) { +- // There's something wrong with the remote snippets, just in case fall back +- // to the default snippets. +- showDefaultSnippets(); +- throw new Error("showSnippets should never be invoked multiple times"); +- } +- _snippetsShown = true; +- +- let snippets = gSnippetsMap.get("snippets"); +- // If there are remotely fetched snippets, try to to show them. +- if (snippets) { +- // Injecting snippets can throw if they're invalid XML. +- try { +- snippetsElt.innerHTML = snippets; +- // Scripts injected by innerHTML are inactive, so we have to relocate them +- // through DOM manipulation to activate their contents. +- Array.forEach(snippetsElt.getElementsByTagName("script"), function(elt) { +- let relocatedScript = document.createElement("script"); +- relocatedScript.type = "text/javascript;version=1.8"; +- relocatedScript.text = elt.text; +- elt.parentNode.replaceChild(relocatedScript, elt); +- }); +- return; +- } catch (ex) { +- // Bad content, continue to show default snippets. +- } +- } +- +- showDefaultSnippets(); +-} +- +-/** +- * Clear snippets element contents and show default snippets. +- */ +-function showDefaultSnippets() +-{ +-return; +- // Clear eventual contents... +- let snippetsElt = document.getElementById("snippets"); +- snippetsElt.innerHTML = ""; +- +- // ...then show default snippets. +- let defaultSnippetsElt = document.getElementById("defaultSnippets"); +- let entries = defaultSnippetsElt.querySelectorAll("span"); +- // Choose a random snippet. Assume there is always at least one. +- let randIndex = Math.floor(Math.random() * entries.length); +- let entry = entries[randIndex]; +- // Inject url in the eventual link. +- if (DEFAULT_SNIPPETS_URLS[randIndex]) { +- let links = entry.getElementsByTagName("a"); +- // Default snippets can have only one link, otherwise something is messed +- // up in the translation. +- if (links.length == 1) { +- links[0].href = DEFAULT_SNIPPETS_URLS[randIndex]; +- } +- } +- // Move the default snippet to the snippets element. +- snippetsElt.appendChild(entry); +-} +- + function fitToWidth() { + if (window.scrollMaxX) { + document.body.setAttribute("narrow", "true"); +diff -Nur a/browser/base/content/abouthome/aboutHome.xhtml b/browser/base/content/abouthome/aboutHome.xhtml +--- a/browser/base/content/abouthome/aboutHome.xhtml 2015-07-13 19:10:24.000000000 -0300 ++++ b/browser/base/content/abouthome/aboutHome.xhtml 2015-08-18 02:41:35.756857459 -0300 +@@ -90,10 +90,10 @@ + <img src="chrome://branding/content/about-logo.png"/> + + <div id="searchContainer"> +- <form name="searchForm" id="searchForm" action="https://duckduckgo.com/html/"> ++ <form name="searchForm" id="searchForm" action="https://searx.laquadrature.net/"> + <input type="text" name="q" value="" id="searchText" maxlength="256" + autofocus="autofocus"/> +- <input id="searchSubmit" type="submit" value="&abouthome.searchEngineButton.label; DuckDuckGO"/> ++ <input id="searchSubmit" type="submit" value="&abouthome.searchEngineButton.label; searx"/> + </form> + </div> + +@@ -101,6 +101,7 @@ + + <div class="spacer"/> + ++ <a id="aboutGNU" href="http://gnu.org"></a> + </body> + </html> + +diff -Nur a/browser/base/jar.mn b/browser/base/jar.mn +--- a/browser/base/jar.mn 2014-10-09 12:53:30.000000000 -0200 ++++ b/browser/base/jar.mn 2014-10-21 14:24:18.198691296 -0200 +@@ -32,6 +32,7 @@ + content/browser/abouthome/settings.png (content/abouthome/settings.png) + content/browser/abouthome/restore.png (content/abouthome/restore.png) + content/browser/abouthome/restore-large.png (content/abouthome/restore-large.png) ++ content/browser/abouthome/gnu_headshadow.png (content/abouthome/gnu_headshadow.png) + content/browser/abouthome/snippet1@2x.png (content/abouthome/snippet1@2x.png) + content/browser/abouthome/snippet2@2x.png (content/abouthome/snippet2@2x.png) + content/browser/abouthome/downloads@2x.png (content/abouthome/downloads@2x.png) +diff -Nur a/browser/locales/en-US/chrome/browser/aboutHome.dtd b/browser/locales/en-US/chrome/browser/aboutHome.dtd +--- a/browser/locales/en-US/chrome/browser/aboutHome.dtd 2015-08-23 17:05:01.000000000 -0300 ++++ b/browser/locales/en-US/chrome/browser/aboutHome.dtd 2015-08-25 04:47:50.321608830 -0300 +@@ -13,17 +13,6 @@ + + <!ENTITY abouthome.searchEngineButton.label "Search"> + +-<!-- LOCALIZATION NOTE (abouthome.defaultSnippet1.v1): +- text in <a/> will be linked to the IceCat features page on mozilla.com +---> +-<!ENTITY abouthome.defaultSnippet1.v1 "Thanks for choosing IceCat! To get the most out of your browser, learn more about the <a>latest features</a>."> +-<!-- LOCALIZATION NOTE (abouthome.defaultSnippet2.v1): +- text in <a/> will be linked to the featured add-ons on addons.mozilla.org +---> +-<!ENTITY abouthome.defaultSnippet2.v1 "It's easy to customize your IceCat exactly the way you want it. <a>Choose from thousands of add-ons</a>."> +-<!-- LOCALIZATION NOTE (abouthome.rightsSnippet): text in <a/> will be linked to about:rights --> +-<!ENTITY abouthome.rightsSnippet "&brandFullName; is Free Software from the non-profit Mozilla Foundation. <a>Know your rights…</a>"> +- + <!ENTITY abouthome.bookmarksButton.label "Bookmarks"> + <!ENTITY abouthome.historyButton.label "History"> + <!-- LOCALIZATION NOTE (abouthome.preferencesButtonWin.label): The label for the +diff -Nur a/browser/locales/en-US/chrome/browser-region/region.properties b/browser/locales/en-US/chrome/browser-region/region.properties +--- a/browser/locales/en-US/chrome/browser-region/region.properties 2015-07-13 19:14:26.000000000 -0300 ++++ b/browser/locales/en-US/chrome/browser-region/region.properties 2015-08-18 02:43:13.382178053 -0300 +@@ -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=searx + + # Search engine order (order displayed in the search bar dropdown)s +-browser.search.order.1=Google +-browser.search.order.2=Yahoo +-browser.search.order.3=Bing +- +-# This is the default set of web based feed handlers shown in the reader +-# selection UI +-browser.contentHandlers.types.0.title=My Yahoo! +-browser.contentHandlers.types.0.uri=https://add.my.yahoo.com/rss?url=%s ++browser.search.order.1=searx ++browser.search.order.2=DuckDuckGo HTML ++browser.search.order.3=DuckDuckGo Lite + + # increment this number when anything gets changed in the list below. This will + # cause IceCat to re-read these prefs and inject any new handlers into the +@@ -22,20 +17,10 @@ + # don't make any spelling errors here. + gecko.handlerService.defaultHandlersVersion=4 + +-# The default set of protocol handlers for webcal: +-gecko.handlerService.schemes.webcal.0.name=30 Boxes +-gecko.handlerService.schemes.webcal.0.uriTemplate=https://30boxes.com/external/widget?refer=ff&url=%s +- +-# The default set of protocol handlers for mailto: +-gecko.handlerService.schemes.mailto.0.name=Yahoo! Mail +-gecko.handlerService.schemes.mailto.0.uriTemplate=https://compose.mail.yahoo.com/?To=%s +-gecko.handlerService.schemes.mailto.1.name=Gmail +-gecko.handlerService.schemes.mailto.1.uriTemplate=https://mail.google.com/mail/?extsrc=mailto&url=%s +- + # The default set of protocol handlers for irc: +-gecko.handlerService.schemes.irc.0.name=Mibbit +-gecko.handlerService.schemes.irc.0.uriTemplate= ++gecko.handlerService.schemes.irc.0.name=Freenode Web IRC ++gecko.handlerService.schemes.irc.0.uriTemplate=https://webchat.freenode.net + + # The default set of protocol handlers for ircs: +-gecko.handlerService.schemes.ircs.0.name=Mibbit +-gecko.handlerService.schemes.ircs.0.uriTemplate= ++gecko.handlerService.schemes.ircs.0.name=Freenode Web IRC ++gecko.handlerService.schemes.ircs.0.uriTemplate=https://webchat.freenode.net +diff -Nur a/browser/locales/generic/profile/bookmarks.html.in b/browser/locales/generic/profile/bookmarks.html.in +--- a/browser/locales/generic/profile/bookmarks.html.in 2015-06-03 17:49:30.000000000 -0300 ++++ b/browser/locales/generic/profile/bookmarks.html.in 2015-06-10 17:58:30.817963272 -0300 +@@ -11,8 +11,20 @@ + <DD>Add bookmarks to this folder to see them displayed on the Bookmarks Toolbar + <DL><p> + <HR> +- <DT><A HREF="http://www.gnu.org/" ADD_DATE="1245542746" LAST_MODIFIED="1245542763" ICON_URI="http://www.gnu.org/graphics/gnu-head-mini.png" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAGFBMVEVFRUV+fn6mpqa/v7/Ozs7Y2Njg4OD8/Pwuhn+TAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9MBDhQ6Gd8s57cAAAEkSURBVHicXdFNc4JADAbgoP0Bi4d6dcGBMzp2z2rrnjulcsavnKuQ9+83K37vDAN5yIZsILws0uv3i7ugLTnAwpjBOsTLOE4VmmKQTFYBioGNKkI5drcCReRItmNAyinSCjianJo6A/aGRtRjtPadpB5CRkQRUaYPGbXW4UgKMfXQxDnJPIeJ0qyOrclrLXoqou8+5p7HM9EkT/JtyEsqB2QYnRv7sT2ArRPLf0kWOp1sA3hYPq3Oh/t0EAjjVIG703II9awr3l3BhxAf5foMLaaasPEZqm5A+0RzGCmuIKJbWi284csIJbzykBQ3aIADsL2CFtBWpovhA1Td7Q6NzqZ/B+38APG3HxU+sYO4B9Akt+AnqGbp/gmwTN6eAWt+gcv6B4rivVin0bWbAAAAAElFTkSuQmCC">GNU's not UNIX!</A> +- <DT><A FEEDURL="http://planet.gnu.org/atom.xml" HREF="http://planet.gnu.org/">GNU Planet</A> +- <DT><A HREF="http://www.fsf.org/" ADD_DATE="1245542771" LAST_MODIFIED="1245542780" ICON_URI="http://www.fsf.org/favicon.ico" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAAsTAAALEwEAmpwYAAADG0lEQVQoFQEQA+/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQECAAAAAAAAAAAAAAAAAAAA2qOp7tTXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAP///wAAAAAAAOCyt7pUXQcSEgcQDwAAAP///wAAAAAAAAD//x9NSDqNhQEBAQQAAAAAAAAAAAAAAAAQJiQGDQ0aPToZPjoAAQEAAAAAAAAAAAABAQEpZV4AAAAAAAAAAAAA////////////////pSIv05KZ////////////////////////////////AAAAAQAAAP///6krNwAAAAAAAPHc3ggSEQcSEQAAAAAAAAAAABY3NEGelQAAAAAAAAEBAQEAAAD///+YARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDg1g690CBgYAAAABAQEEAAAAAAAAS7etAAAAAAAAwGVtHklFIlJOAAAAAAAAAAAAAAAA+/X2BwYGAAAAAAAABAAAAAAAAB1IQwAAAAAAAAYNDBAmJB1IQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAgL//v4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAQEB//7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAECAv/+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////////////cqK3qzM////////////////////////////////8AAAABAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGuLjDf9F8oBAAAAAElFTkSuQmCC">Free Software Foundation</A> ++ <DT><A HREF="https://www.parabola.nu/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABL0lEQVQ4jWNgoCcoq16VU1GzygnEBtEVDWuV8GooKFuhWVG3uiM3d5UokG4qr1szAaa5vGbVt4ralacwNDU0rGIrr10VBVG0+lxhwyqVsqqVtRW1q6eD5IvL19oB2V+B+D9QzQu4xtDQVZylVavygRKHqurWOlbUrknKK12qWlCwWLK8elUFA8N/xvLy5VYVtas+gzWDDVi9E2QjT1XdcufymjWpQJt1cXmnvHwVP1DzR7hmIC6vW+kOtpnYQKysW30arrlm9RVi9cFBRfXKJTADympWJZNsQFnN6rUQA1adAQU2SZqBXmUGBtozUDiU1qxQJtl2oCY3kO2l1avCSdYMAsBAWwyM2plkaS4p6eYGOv1YQ0MDB1kGlFWuDChuWKZBlmYQqK5eJU22ZkIAAEIlnQZQkzITAAAAAElFTkSuQmCC">Parabola GNU/Linux-libre</A> ++ </DL><p> ++ <DT><H3 ID="rdf:#$YvPhC3">Parabola GNU/Linux-libre</H3> ++ <DL><p> ++ <DT><A HREF="https://www.parabola.nu/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABL0lEQVQ4jWNgoCcoq16VU1GzygnEBtEVDWuV8GooKFuhWVG3uiM3d5UokG4qr1szAaa5vGbVt4ralacwNDU0rGIrr10VBVG0+lxhwyqVsqqVtRW1q6eD5IvL19oB2V+B+D9QzQu4xtDQVZylVavygRKHqurWOlbUrknKK12qWlCwWLK8elUFA8N/xvLy5VYVtas+gzWDDVi9E2QjT1XdcufymjWpQJt1cXmnvHwVP1DzR7hmIC6vW+kOtpnYQKysW30arrlm9RVi9cFBRfXKJTADympWJZNsQFnN6rUQA1adAQU2SZqBXmUGBtozUDiU1qxQJtl2oCY3kO2l1avCSdYMAsBAWwyM2plkaS4p6eYGOv1YQ0MDB1kGlFWuDChuWKZBlmYQqK5eJU22ZkIAAEIlnQZQkzITAAAAAElFTkSuQmCC">Parabola GNU/Linux-libre</A> ++ <DT><A HREF="https://www.parabola.nu/packages/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABL0lEQVQ4jWNgoCcoq16VU1GzygnEBtEVDWuV8GooKFuhWVG3uiM3d5UokG4qr1szAaa5vGbVt4ralacwNDU0rGIrr10VBVG0+lxhwyqVsqqVtRW1q6eD5IvL19oB2V+B+D9QzQu4xtDQVZylVavygRKHqurWOlbUrknKK12qWlCwWLK8elUFA8N/xvLy5VYVtas+gzWDDVi9E2QjT1XdcufymjWpQJt1cXmnvHwVP1DzR7hmIC6vW+kOtpnYQKysW30arrlm9RVi9cFBRfXKJTADympWJZNsQFnN6rUQA1adAQU2SZqBXmUGBtozUDiU1qxQJtl2oCY3kO2l1avCSdYMAsBAWwyM2plkaS4p6eYGOv1YQ0MDB1kGlFWuDChuWKZBlmYQqK5eJU22ZkIAAEIlnQZQkzITAAAAAElFTkSuQmCC">Parabola GNU/Linux-libre Packages</A> ++ <DT><A HREF="https://wiki.parabola.nu/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABL0lEQVQ4jWNgoCcoq16VU1GzygnEBtEVDWuV8GooKFuhWVG3uiM3d5UokG4qr1szAaa5vGbVt4ralacwNDU0rGIrr10VBVG0+lxhwyqVsqqVtRW1q6eD5IvL19oB2V+B+D9QzQu4xtDQVZylVavygRKHqurWOlbUrknKK12qWlCwWLK8elUFA8N/xvLy5VYVtas+gzWDDVi9E2QjT1XdcufymjWpQJt1cXmnvHwVP1DzR7hmIC6vW+kOtpnYQKysW30arrlm9RVi9cFBRfXKJTADympWJZNsQFnN6rUQA1adAQU2SZqBXmUGBtozUDiU1qxQJtl2oCY3kO2l1avCSdYMAsBAWwyM2plkaS4p6eYGOv1YQ0MDB1kGlFWuDChuWKZBlmYQqK5eJU22ZkIAAEIlnQZQkzITAAAAAElFTkSuQmCC">Parabola GNU/Linux-libre Wiki</A> ++ <DT><A HREF="https://labs.parabola.nu/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABL0lEQVQ4jWNgoCcoq16VU1GzygnEBtEVDWuV8GooKFuhWVG3uiM3d5UokG4qr1szAaa5vGbVt4ralacwNDU0rGIrr10VBVG0+lxhwyqVsqqVtRW1q6eD5IvL19oB2V+B+D9QzQu4xtDQVZylVavygRKHqurWOlbUrknKK12qWlCwWLK8elUFA8N/xvLy5VYVtas+gzWDDVi9E2QjT1XdcufymjWpQJt1cXmnvHwVP1DzR7hmIC6vW+kOtpnYQKysW30arrlm9RVi9cFBRfXKJTADympWJZNsQFnN6rUQA1adAQU2SZqBXmUGBtozUDiU1qxQJtl2oCY3kO2l1avCSdYMAsBAWwyM2plkaS4p6eYGOv1YQ0MDB1kGlFWuDChuWKZBlmYQqK5eJU22ZkIAAEIlnQZQkzITAAAAAElFTkSuQmCC">Parabola GNU/Linux-libre Labs</A> ++ </DL><p> ++ <DT><H3 ID="rdf:#$ZvPhC3">Free Software Foundation</H3> ++ <DL><p> ++ <DT><A HREF="https://www.fsf.org/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAAsTAAALEwEAmpwYAAADG0lEQVQoFQEQA+/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQECAAAAAAAAAAAAAAAAAAAA2qOp7tTXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAP///wAAAAAAAOCyt7pUXQcSEgcQDwAAAP///wAAAAAAAAD//x9NSDqNhQEBAQQAAAAAAAAAAAAAAAAQJiQGDQ0aPToZPjoAAQEAAAAAAAAAAAABAQEpZV4AAAAAAAAAAAAA////////////////pSIv05KZ////////////////////////////////AAAAAQAAAP///6krNwAAAAAAAPHc3ggSEQcSEQAAAAAAAAAAABY3NEGelQAAAAAAAAEBAQEAAAD///+YARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDg1g690CBgYAAAABAQEEAAAAAAAAS7etAAAAAAAAwGVtHklFIlJOAAAAAAAAAAAAAAAA+/X2BwYGAAAAAAAABAAAAAAAAB1IQwAAAAAAAAYNDBAmJB1IQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAgL//v4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAQEB//7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAECAv/+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////////////cqK3qzM////////////////////////////////8AAAABAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGuLjDf9F8oBAAAAAElFTkSuQmCC">Free Software Foundation</A> ++ <DT><A HREF="https://www.gnu.org/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAGFBMVEVFRUV+fn6mpqa/v7/Ozs7Y2Njg4OD8/Pwuhn+TAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9MBDhQ6Gd8s57cAAAEVSURBVBgZBcGxVtpgGADQL9gHSBzqSognzMixmcWWzB6pmRHhnyvku6/fewMAIPD3TwHmQxHs6vr+A16bphNum/vV0x429201hcPjAGBTDZGnR/Kw1U181+u4HXvOdSxjUcztz8jjg1xGVBG9XPYxt4PviKiaWLg168iXtbrq+mPT1utjNcR1U73deRnL43M2sRgj3+oYs8uL3rLphPd2QWmHbMu/VS/cnk6UdtSW657g9yBlcZ0UAkUWzPvyRaAYmfd+HT4IZtvC59ibEJxXiqJjQpBpNEufBYE0McoOAunGhRMEFIPc7h4goJigQEBxk8u7AgEpL3IEAUZfcgAByGFXQACm5+4MAuB19QMEgI8CAgDgP4rivVgoKP6ZAAAAAElFTkSuQmCC">The GNU Operating System and the Free Software Movement</A> ++ <DT><A HREF="https://libreplanet.org/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACfElEQVQ4jZXTS0hUcRTH8f+9M3fGd0gRRq1a2bZdBAotWtS6TQtB6IHgKzRy0UKqjRaRCAq+R21MDMsUR83JR5fJxhmaK2lzsWAWw+ToEHJxgnFm7reFIgza66z/58P/dzhHcESZpsluIsFPwyCVSmGa5lHPEEIIkdGYTqPPvqUlP4fK8nJ2DINYNEq71YJ3fv4QlAGkUynaj+VRdfUK7580M52rEN/ZYWNjg2GrjEMSPFXsmOn0YcA0TZ4V5tNZUkJTTTWfJiZIJhJ8U1VczwcZs0o4JUHzufM0ZGcf/OQASCaTxGIxDMNA00P8iEbpuXyJ8Tw77+wWJhWZQYuVbiHoFIKwpmUC4XCYzc1NDMMgHo9z8+IFvl6/xsf7D9ArbjOpyAxLEt1C0CUErfvJDwBd14lEImxvb/N9fR1fgY3egmyWsq0sO/poUyw4pb3mLiFolyRM09wDEokEfr+fUChEJBJh4HgBS7kKn92zLIy9ZriqklFZwiEEHfsRRp1O0un0HpDa3cU9M8PKygp3Tp5AzbKgZlmYt1uYtkn02q0MyYKmnBxWNI27Nhtut5tkMrkHmKZJbWkpqqryQpFxKTJTisyEVeaVRWJIlqgpLuZRWRkejwe/34/P58ucwZvWVhYXF5l2uejIzeHGqbM4ZYmB/dy1hUV8mJpibm4On8/H1tbW4T1YXV3F6/WysLDA5Pg4nfsDe5yfz8OiIjweD5qmEQwGf7/KwWCQtbU1NE2jRZbpEoI2SWKqr49lVUXX9T/fAkAgEKC/e5SW6mo6hKD+zGn6e0bw+/x/PyaA9S/rvOwfobGukfpbddyraMDR7iCwHPg34H9KCCF+Abts3KCj/p6aAAAAAElFTkSuQmCC">LibrePlanet</A> ++ <DT><A HREF="https://www.h-node.org/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABgElEQVQ4jaXRz2uSARzHcb0vlRGEzTVWISU1BVkFYTIyjNK1pKcxHA+yhWMWIamHYikFgpoLIi9jwegi3QbL9SzdLmMbM9J+DkJBgm5RDvEPeHeQHOyQz0OH9+V7ePGBr0pqpPmfVPsP8a0AR4MnMEwf48x9K0s/E8oAY9iEMOvD+8yP2qVjrhhRBnSN61n5sIpULqC+pGHh8wNlgEY8jPQXcGh4VXukDND5evYAl46odIuXtYdKAANSudAChO52/XeMZMohecCbcoGdH99Y+7LO72adT9+/4nh8nYOjBl7/SsoB8gBkpHk8T0S2K++pN3fRin3cfnFDHvCuWkI9rEMvHGEo5gbAHnXhnLF1BpZLeRaLOVT2A8Q3A5wMngXgWtKLxX9KPqC+rCWQvYkpeK4NWKcGOgO50ts2MJJ0cPreeQDciTHMchZYIhcwh2wcuqjn+ccwGm9v6wsTxxn0dVgQXZ7Ek3Agpq6QrcaQGmmebtxFSDkRU1fJVmL/BpT2ByV/3eDMhinRAAAAAElFTkSuQmCC">h-node</A> + </DL><p> + </DL><p> +diff -Nur a/browser/modules/AboutHome.jsm b/browser/modules/AboutHome.jsm +--- a/browser/modules/AboutHome.jsm 2015-08-23 17:04:41.000000000 -0300 ++++ b/browser/modules/AboutHome.jsm 2015-08-25 04:52:43.993422621 -0300 +@@ -8,7 +8,7 @@ + let Ci = Components.interfaces; + let Cu = Components.utils; + +-this.EXPORTED_SYMBOLS = [ "AboutHomeUtils", "AboutHome" ]; ++this.EXPORTED_SYMBOLS = [ "AboutHome" ]; + + Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); + Components.utils.import("resource://gre/modules/Services.jsm"); +@@ -20,68 +20,6 @@ + XPCOMUtils.defineLazyModuleGetter(this, "Promise", + "resource://gre/modules/Promise.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() { +- return 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 +@@ -246,18 +184,9 @@ + }).then(function(engineName) { + let data = { + showRestoreLastSession: ss.canRestoreLastSession, +- snippetsURL: AboutHomeUtils.snippetsURL, +- showKnowYourRights: AboutHomeUtils.showKnowYourRights, +- snippetsVersion: AboutHomeUtils.snippetsVersion, + defaultEngineName: engineName + }; + +- 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) { + target.messageManager.sendAsyncMessage("AboutHome:Update", data); + } else { diff --git a/libre-testing/icecat/mozconfig b/libre-testing/icecat/mozconfig new file mode 100644 index 000000000..d85989194 --- /dev/null +++ b/libre-testing/icecat/mozconfig @@ -0,0 +1,38 @@ +. $topsrcdir/browser/config/mozconfig + +ac_add_options --prefix=/usr +ac_add_options --libdir=/usr/lib +ac_add_options --enable-pie + +ac_add_options --enable-official-branding + +# System libraries +ac_add_options --with-system-nspr +ac_add_options --with-system-nss +ac_add_options --with-system-jpeg +ac_add_options --with-system-zlib +ac_add_options --with-system-bz2 +ac_add_options --with-system-png +ac_add_options --with-system-libevent +ac_add_options --with-system-libvpx +ac_add_options --with-system-icu +ac_add_options --enable-system-hunspell +ac_add_options --enable-system-sqlite +ac_add_options --enable-system-ffi +#ac_add_options --enable-system-cairo +ac_add_options --enable-system-pixman + +# Features +ac_add_options --enable-startup-notification +ac_add_options --enable-pulseaudio +ac_add_options --enable-gstreamer=1.0 + +ac_add_options --disable-crashreporter +ac_add_options --disable-updater +ac_add_options --disable-installer +ac_add_options --disable-debug-symbols + +# Parabola features +ac_add_options --disable-safe-browsing +ac_add_options --disable-url-classifier +ac_add_options --disable-eme diff --git a/libre-testing/icecat/no-neon.patch b/libre-testing/icecat/no-neon.patch new file mode 100644 index 000000000..12b0e64c1 --- /dev/null +++ b/libre-testing/icecat/no-neon.patch @@ -0,0 +1,123 @@ +--- configure.orig 2015-08-07 06:32:41.988366320 -0600 ++++ configure 2015-08-08 18:23:31.316475879 -0600 +@@ -7137,14 +7137,7 @@ + rm -f conftest* + echo "$ac_t"""$result"" 1>&6 + if test "$result" = "yes"; then +- cat >> confdefs.pytmp <<\EOF +- (''' HAVE_ARM_SIMD ''', ' 1 ') +-EOF +-cat >> confdefs.h <<\EOF +-#define HAVE_ARM_SIMD 1 +-EOF +- +- HAVE_ARM_SIMD=1 ++ HAVE_ARM_SIMD= + fi + + echo $ac_n "checking ARM version support in compiler""... $ac_c" 1>&6 +@@ -7176,27 +7169,13 @@ + rm -f conftest* + echo "$ac_t"""$result"" 1>&6 + if test "$result" = "yes"; then +- cat >> confdefs.pytmp <<\EOF +- (''' HAVE_ARM_NEON ''', ' 1 ') +-EOF +-cat >> confdefs.h <<\EOF +-#define HAVE_ARM_NEON 1 +-EOF ++ HAVE_ARM_NEON= + +- HAVE_ARM_NEON=1 +- +- if test -n "$ARM_ARCH"; then ++ if test -n "$ARM_ARCH"; then + if test "$ARM_ARCH" -lt 7; then + BUILD_ARM_NEON= + else +- cat >> confdefs.pytmp <<\EOF +- (''' BUILD_ARM_NEON ''', ' 1 ') +-EOF +-cat >> confdefs.h <<\EOF +-#define BUILD_ARM_NEON 1 +-EOF +- +- BUILD_ARM_NEON=1 ++ BUILD_ARM_NEON= + fi + fi + fi +--- js/src/configure.orig 2015-08-07 06:33:02.108365042 -0600 ++++ js/src/configure 2015-08-08 18:24:00.676479200 -0600 +@@ -6267,14 +6267,7 @@ + rm -f conftest* + echo "$ac_t"""$result"" 1>&6 + if test "$result" = "yes"; then +- cat >> confdefs.pytmp <<\EOF +- (''' HAVE_ARM_SIMD ''', ' 1 ') +-EOF +-cat >> confdefs.h <<\EOF +-#define HAVE_ARM_SIMD 1 +-EOF +- +- HAVE_ARM_SIMD=1 ++ HAVE_ARM_SIMD= + fi + + echo $ac_n "checking ARM version support in compiler""... $ac_c" 1>&6 +@@ -6306,27 +6299,13 @@ + rm -f conftest* + echo "$ac_t"""$result"" 1>&6 + if test "$result" = "yes"; then +- cat >> confdefs.pytmp <<\EOF +- (''' HAVE_ARM_NEON ''', ' 1 ') +-EOF +-cat >> confdefs.h <<\EOF +-#define HAVE_ARM_NEON 1 +-EOF +- +- HAVE_ARM_NEON=1 ++ HAVE_ARM_NEON= + + if test -n "$ARM_ARCH"; then + if test "$ARM_ARCH" -lt 7; then + BUILD_ARM_NEON= + else +- cat >> confdefs.pytmp <<\EOF +- (''' BUILD_ARM_NEON ''', ' 1 ') +-EOF +-cat >> confdefs.h <<\EOF +-#define BUILD_ARM_NEON 1 +-EOF +- +- BUILD_ARM_NEON=1 ++ BUILD_ARM_NEON= + fi + fi + fi +--- mozglue/build/arm.h.orig 2015-08-08 18:21:03.686458059 -0600 ++++ mozglue/build/arm.h 2015-08-08 18:21:16.781459724 -0600 +@@ -69,12 +69,6 @@ + # endif + # endif + +- // When using -mfpu=neon, gcc generates neon instructions. +- +-# if defined(__ARM_NEON__) +-# define MOZILLA_PRESUME_NEON 1 +-# endif +- + // Currently we only have CPU detection for Linux via /proc/cpuinfo + # if defined(__linux__) || defined(ANDROID) + # define MOZILLA_ARM_HAVE_CPUID_DETECTION 1 +--- build/gyp.mozbuild.orig 2015-08-08 20:00:38.026946903 -0600 ++++ build/gyp.mozbuild 2015-08-08 20:00:45.321915167 -0600 +@@ -40,7 +40,7 @@ + + # turn off mandatory use of NEON and instead use NEON detection + 'arm_neon': 0, +- 'arm_neon_optional': 1, ++ 'arm_neon_optional': 0, + + 'moz_widget_toolkit_gonk': 0, + 'moz_webrtc_omx': 0, diff --git a/libre-testing/icecat/remove-google-play-services-support.patch b/libre-testing/icecat/remove-google-play-services-support.patch new file mode 100644 index 000000000..f184b15ad --- /dev/null +++ b/libre-testing/icecat/remove-google-play-services-support.patch @@ -0,0 +1,64 @@ +diff -Nur a/configure b/configure +--- a/configure 2015-08-23 17:05:16.000000000 -0300 ++++ b/configure 2015-08-25 17:13:48.155780403 -0300 +@@ -18883,46 +18883,6 @@ + + + +-if test -n "$MOZ_NATIVE_DEVICES" ; then +- +- +- echo $ac_n "checking for google play services""... $ac_c" 1>&6 +-echo "configure:18891: checking for google play services" >&5 +- GOOGLE_PLAY_SERVICES_LIB="${ANDROID_SDK_ROOT}/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar" +- GOOGLE_PLAY_SERVICES_RES="${ANDROID_SDK_ROOT}/extras/google/google_play_services/libproject/google-play-services_lib/res" +- +- +- if ! test -e $GOOGLE_PLAY_SERVICES_LIB ; then +- { echo "configure: error: You must download Google Play Services to build with native video casting support enabled. Run the Android SDK tool and install Google Play Services under Extras. See http://developer.android.com/google/play-services/setup.html for more info. (looked for $GOOGLE_PLAY_SERVICES_LIB) " 1>&2; echo "configure: error: You must download Google Play Services to build with native video casting support enabled. Run the Android SDK tool and install Google Play Services under Extras. See http://developer.android.com/google/play-services/setup.html for more info. (looked for $GOOGLE_PLAY_SERVICES_LIB) " 1>&5; exit 1; } +- fi +- echo "$ac_t""$GOOGLE_PLAY_SERVICES_LIB" 1>&6 +- +- ANDROID_APPCOMPAT_LIB="$ANDROID_COMPAT_DIR_BASE/v7/appcompat/libs/android-support-v7-appcompat.jar" +- ANDROID_APPCOMPAT_RES="$ANDROID_COMPAT_DIR_BASE/v7/appcompat/res" +- echo $ac_n "checking for v7 appcompat library""... $ac_c" 1>&6 +-echo "configure:18904: checking for v7 appcompat library" >&5 +- if ! test -e $ANDROID_APPCOMPAT_LIB ; then +- { echo "configure: error: You must download the v7 app compat Android support library when targeting Android with native video casting support enabled. Run the Android SDK tool and install Android Support Library under Extras. See https://developer.android.com/tools/extras/support-library.html for more info. (looked for $ANDROID_APPCOMPAT_LIB)" 1>&2; echo "configure: error: You must download the v7 app compat Android support library when targeting Android with native video casting support enabled. Run the Android SDK tool and install Android Support Library under Extras. See https://developer.android.com/tools/extras/support-library.html for more info. (looked for $ANDROID_APPCOMPAT_LIB)" 1>&5; exit 1; } +- fi +- echo "$ac_t""$ANDROID_APPCOMPAT_LIB" 1>&6 +- +- +- +- ANDROID_MEDIAROUTER_LIB="$ANDROID_COMPAT_DIR_BASE/v7/mediarouter/libs/android-support-v7-mediarouter.jar" +- ANDROID_MEDIAROUTER_RES="$ANDROID_COMPAT_DIR_BASE/v7/mediarouter/res" +- echo $ac_n "checking for v7 mediarouter library""... $ac_c" 1>&6 +-echo "configure:18915: checking for v7 mediarouter library" >&5 +- if ! test -e $ANDROID_MEDIAROUTER_LIB ; then +- { echo "configure: error: You must download the v7 media router Android support library when targeting Android with native video casting support enabled. Run the Android SDK tool and install Android Support Library under Extras. See https://developer.android.com/tools/extras/support-library.html for more info. (looked for $ANDROID_MEDIAROUTER_LIB)" 1>&2; echo "configure: error: You must download the v7 media router Android support library when targeting Android with native video casting support enabled. Run the Android SDK tool and install Android Support Library under Extras. See https://developer.android.com/tools/extras/support-library.html for more info. (looked for $ANDROID_MEDIAROUTER_LIB)" 1>&5; exit 1; } +- fi +- echo "$ac_t""$ANDROID_MEDIAROUTER_LIB" 1>&6 +- +- +-fi +- +- +- +- + if test "$MOZ_ENABLE_GTK" -o "$MOZ_ENABLE_QT" + then + succeeded=no +@@ -29180,13 +29140,6 @@ + (''' MOZ_OFFICIAL_BRANDING ''', r''' $MOZ_OFFICIAL_BRANDING ''') + (''' MOZ_BRANDING_DIRECTORY ''', r''' $MOZ_BRANDING_DIRECTORY ''') + (''' MOZ_DISTRIBUTION_ID ''', r''' $MOZ_DISTRIBUTION_ID ''') +- (''' MOZ_NATIVE_DEVICES ''', r''' $MOZ_NATIVE_DEVICES ''') +- (''' GOOGLE_PLAY_SERVICES_LIB ''', r''' $GOOGLE_PLAY_SERVICES_LIB ''') +- (''' GOOGLE_PLAY_SERVICES_RES ''', r''' $GOOGLE_PLAY_SERVICES_RES ''') +- (''' ANDROID_APPCOMPAT_LIB ''', r''' $ANDROID_APPCOMPAT_LIB ''') +- (''' ANDROID_APPCOMPAT_RES ''', r''' $ANDROID_APPCOMPAT_RES ''') +- (''' ANDROID_MEDIAROUTER_LIB ''', r''' $ANDROID_MEDIAROUTER_LIB ''') +- (''' ANDROID_MEDIAROUTER_RES ''', r''' $ANDROID_MEDIAROUTER_RES ''') + (''' _PANGOCHK_CFLAGS ''', list(r''' $_PANGOCHK_CFLAGS '''.split())) + (''' _PANGOCHK_LIBS ''', list(r''' $_PANGOCHK_LIBS '''.split())) + (''' MOZ_PANGO_CFLAGS ''', list(r''' $MOZ_PANGO_CFLAGS '''.split())) diff --git a/libre-testing/icecat/vendor.js b/libre-testing/icecat/vendor.js new file mode 100644 index 000000000..32fddb8db --- /dev/null +++ b/libre-testing/icecat/vendor.js @@ -0,0 +1,28 @@ +// Use LANG environment variable to choose locale +pref("intl.locale.matchOS", true); + +// Disable default browser checking. +pref("browser.shell.checkDefaultBrowser", false); + +// Don't disable our bundled extensions in the application directory +pref("extensions.autoDisableScopes", 11); +pref("extensions.shownSelectionUI", true); + +// Disable "alt" as a shortcut key to open full menu bar. Conflicts with "alt" as a modifier +pref("ui.key.menuAccessKeyFocuses", false); + +// Make sure that Firefox Social stuff are empty +pref("social.whitelist", ""); +pref("social.directories", ""); + +// Disable the GeoLocation API for content +pref("geo.enabled", false); + +// Make sure that the request URL of the GeoLocation backend is empty +pref("geo.wifi.uri", ""); + +// Disable the least secure encryption protocols +pref("security.ssl3.ecdhe_ecdsa_rc4_128_sha", false); +pref("security.ssl3.ecdhe_rsa_rc4_128_sha", false); +pref("security.ssl3.rsa_rc4_128_md5", false); +pref("security.ssl3.rsa_rc4_128_sha", false); |