diff options
Diffstat (limited to 'data')
36 files changed, 110 insertions, 2809 deletions
diff --git a/data/branding/icecat/Makefile.in b/data/branding/icecat/Makefile.in index 9cc8935..3b5c4d5 100644 --- a/data/branding/icecat/Makefile.in +++ b/data/branding/icecat/Makefile.in @@ -4,8 +4,6 @@ include $(topsrcdir)/config/config.mk -PREF_JS_EXPORTS = $(srcdir)/pref/icecat-branding.js - # On Windows only do this step for browser, skip for metro. ifeq ($(MOZ_WIDGET_TOOLKIT) $(DIST_SUBDIR),windows browser) BRANDING_FILES := \ diff --git a/data/buildscripts/build-gnulinux.sh b/data/buildscripts/build-gnulinux.sh index a844af9..86e6199 100644 --- a/data/buildscripts/build-gnulinux.sh +++ b/data/buildscripts/build-gnulinux.sh @@ -1,7 +1,9 @@ #!/bin/bash set -e +set -x apt-get -q -y --force-yes build-dep firefox +apt-get -q -y --force-yes install libgstreamermm-0.10-dev cp ../../data/buildscripts/mozconfig-common .mozconfig cat ../../data/buildscripts/mozconfig-gnulinux >> .mozconfig @@ -14,7 +16,9 @@ rm -rf obj-gnulinux [ $(arch) = "x86_64" ] || exit 0 cd obj-gnulinux/browser/locales for locale in $(ls ../../../l10n/ -1); do - make langpack-$locale LOCALE_MERGEDIR=. + rm $PWD/mergedir -rf + make merge-$locale LOCALE_MERGEDIR=$PWD/mergedir + make langpack-$locale LOCALE_MERGEDIR=$PWD/mergedir done diff --git a/data/buildscripts/buildall.sh b/data/buildscripts/buildall.sh index bd91542..504a95f 100644 --- a/data/buildscripts/buildall.sh +++ b/data/buildscripts/buildall.sh @@ -26,18 +26,18 @@ EOF env -i TERM=screen eatmydata sudo HOME=/home/ruben BUILDDIST=$2 ARCH=$3 pbuilder execute $SRCDIR/run.sh } -buildpackage windows belenos amd64 |tee windows.log 2>&1 -buildpackage mac belenos amd64 |tee mac.log 2>&1 -buildpackage gnulinux toutatis i386 |tee gnulinux-i386.log 2>&1 -mv $SRCDIR/obj-gnulinux $SRCDIR/obj-gnulinux-i386 -buildpackage gnulinux toutatis amd64 |tee gnulinux-amd64.log 2>&1 -mv $SRCDIR/obj-gnulinux $SRCDIR/obj-gnulinux-amd64 -buildpackage android belenos i386 |tee android.log 2>&1 +#buildpackage windows belenos amd64 |tee windows.log 2>&1 +#buildpackage mac belenos amd64 |tee mac.log 2>&1 +#buildpackage gnulinux belenos i386 |tee gnulinux-i386.log 2>&1 +#mv $SRCDIR/obj-gnulinux $SRCDIR/obj-gnulinux-i386 +buildpackage gnulinux belenos amd64 |tee gnulinux-amd64.log 2>&1 +#mv $SRCDIR/obj-gnulinux $SRCDIR/obj-gnulinux-amd64 +#buildpackage android belenos i386 |tee android.log 2>&1 rm binaries -rf mkdir binaries/langpacks -p -cp $1/obj-windows/dist/icecat*.zip binaries -cp $1/obj-mac/dist/icecat/icecat*.dmg binaries +#cp $1/obj-windows/dist/icecat*.zip binaries +#cp $1/obj-mac/dist/icecat/icecat*.dmg binaries cp $1/obj-gnulinux*/dist/icecat*.bz2 binaries -cp $1/obj-android/dist/icecat*.apk binaries -cp $1/obj-gnulinux-amd64/dist/linux-x86_64/xpi/* binaries/langpacks +#cp $1/obj-android/dist/icecat*.apk binaries +#cp $1/obj-gnulinux-amd64/dist/linux-x86_64/xpi/* binaries/langpacks diff --git a/data/buildscripts/toolchain-android.sh b/data/buildscripts/toolchain-android.sh index f50cbc4..3583af8 100644 --- a/data/buildscripts/toolchain-android.sh +++ b/data/buildscripts/toolchain-android.sh @@ -22,6 +22,8 @@ while true; do echo y; sleep 1; done |./android-sdk-linux/tools/android update a echo export PATH=$PATH:$PWD/android-sdk-linux/tools:$PWD/android-sdk-linux/build-tools:$PWD/android-sdk-linux/platform-tools export PATH=$PATH:$PWD/android-sdk-linux/tools:$PWD/android-sdk-linux/build-tools:$PWD/android-sdk-linux/platform-tools +ln -s $PWD/android-sdk-linux/build_tools $PWD/android-sdk-linux/build-tools + pkill adb echo DONE diff --git a/data/extensions/spyblock@gnu.org/lib/utils.js b/data/extensions/spyblock@gnu.org/lib/utils.js index 13f4876..cd69bf9 100644 --- a/data/extensions/spyblock@gnu.org/lib/utils.js +++ b/data/extensions/spyblock@gnu.org/lib/utils.js @@ -54,6 +54,18 @@ let Utils = exports.Utils = get isFennec() { let {application} = require("info"); + let result = (application == "fennec" || application == "fennec2"); + Object.defineProperty(this, "isFennec", {value: result}); + return result; + }, + + /** + * Returns whether we are running in Fennec, for Fennec-specific hacks + * @type Boolean + */ + get isFennec() + { + let {application} = require("info"); let result = (application == "fennec" || application == "fennec2" || application == "icecatmobile"); Utils.__defineGetter__("isFennec", () => result); return result; diff --git a/data/patches/disable-cnnic-certs.patch b/data/patches/disable-cnnic-certs.patch deleted file mode 100644 index 4e95705..0000000 --- a/data/patches/disable-cnnic-certs.patch +++ /dev/null @@ -1,311 +0,0 @@ -diff -ru icecat-31.6.0.orig/security/certverifier/ExtendedValidation.cpp icecat-31.6.0/security/certverifier/ExtendedValidation.cpp ---- icecat-31.6.0.orig/security/certverifier/ExtendedValidation.cpp 2015-04-02 00:57:14.080068942 +0200 -+++ icecat-31.6.0/security/certverifier/ExtendedValidation.cpp 2015-04-02 22:02:39.738625417 +0200 -@@ -681,19 +681,6 @@ - nullptr - }, - { -- // CN=China Internet Network Information Center EV Certificates Root,O=China Internet Network Information Center,C=CN -- "1.3.6.1.4.1.29836.1.10", -- "CNNIC EV OID", -- SEC_OID_UNKNOWN, -- { 0x4F, 0x99, 0xAA, 0x93, 0xFB, 0x2B, 0xD1, 0x37, 0x26, 0xA1, -- 0x99, 0x4A, 0xCE, 0x7F, 0xF0, 0x05, 0xF2, 0x93, 0x5D, 0x1E }, -- "MIGKMQswCQYDVQQGEwJDTjEyMDAGA1UECgwpQ2hpbmEgSW50ZXJuZXQgTmV0d29y" -- "ayBJbmZvcm1hdGlvbiBDZW50ZXIxRzBFBgNVBAMMPkNoaW5hIEludGVybmV0IE5l" -- "dHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyIEVWIENlcnRpZmljYXRlcyBSb290", -- "SJ8AAQ==", -- nullptr -- }, -- { - // CN=TWCA Root Certification Authority,OU=Root CA,O=TAIWAN-CA,C=TW - "1.3.6.1.4.1.40869.1.1.22.3", - "TWCA EV OID", -diff -ru icecat-31.6.0.orig/security/nss/lib/ckfw/builtins/certdata.txt icecat-31.6.0/security/nss/lib/ckfw/builtins/certdata.txt ---- icecat-31.6.0.orig/security/nss/lib/ckfw/builtins/certdata.txt 2015-04-02 00:57:19.056068847 +0200 -+++ icecat-31.6.0/security/nss/lib/ckfw/builtins/certdata.txt 2015-04-02 22:02:01.058626152 +0200 -@@ -16222,129 +16222,6 @@ - CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - - # --# Certificate "CNNIC ROOT" --# --# Issuer: CN=CNNIC ROOT,O=CNNIC,C=CN --# Serial Number: 1228079105 (0x49330001) --# Subject: CN=CNNIC ROOT,O=CNNIC,C=CN --# Not Valid Before: Mon Apr 16 07:09:14 2007 --# Not Valid After : Fri Apr 16 07:09:14 2027 --# Fingerprint (MD5): 21:BC:82:AB:49:C4:13:3B:4B:B2:2B:5C:6B:90:9C:19 --# Fingerprint (SHA1): 8B:AF:4C:9B:1D:F0:2A:92:F7:DA:12:8E:B9:1B:AC:F4:98:60:4B:6F --CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE --CKA_TOKEN CK_BBOOL CK_TRUE --CKA_PRIVATE CK_BBOOL CK_FALSE --CKA_MODIFIABLE CK_BBOOL CK_FALSE --CKA_LABEL UTF8 "CNNIC ROOT" --CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 --CKA_SUBJECT MULTILINE_OCTAL --\060\062\061\013\060\011\006\003\125\004\006\023\002\103\116\061 --\016\060\014\006\003\125\004\012\023\005\103\116\116\111\103\061 --\023\060\021\006\003\125\004\003\023\012\103\116\116\111\103\040 --\122\117\117\124 --END --CKA_ID UTF8 "0" --CKA_ISSUER MULTILINE_OCTAL --\060\062\061\013\060\011\006\003\125\004\006\023\002\103\116\061 --\016\060\014\006\003\125\004\012\023\005\103\116\116\111\103\061 --\023\060\021\006\003\125\004\003\023\012\103\116\116\111\103\040 --\122\117\117\124 --END --CKA_SERIAL_NUMBER MULTILINE_OCTAL --\002\004\111\063\000\001 --END --CKA_VALUE MULTILINE_OCTAL --\060\202\003\125\060\202\002\075\240\003\002\001\002\002\004\111 --\063\000\001\060\015\006\011\052\206\110\206\367\015\001\001\005 --\005\000\060\062\061\013\060\011\006\003\125\004\006\023\002\103 --\116\061\016\060\014\006\003\125\004\012\023\005\103\116\116\111 --\103\061\023\060\021\006\003\125\004\003\023\012\103\116\116\111 --\103\040\122\117\117\124\060\036\027\015\060\067\060\064\061\066 --\060\067\060\071\061\064\132\027\015\062\067\060\064\061\066\060 --\067\060\071\061\064\132\060\062\061\013\060\011\006\003\125\004 --\006\023\002\103\116\061\016\060\014\006\003\125\004\012\023\005 --\103\116\116\111\103\061\023\060\021\006\003\125\004\003\023\012 --\103\116\116\111\103\040\122\117\117\124\060\202\001\042\060\015 --\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001 --\017\000\060\202\001\012\002\202\001\001\000\323\065\367\077\163 --\167\255\350\133\163\027\302\321\157\355\125\274\156\352\350\244 --\171\262\154\303\243\357\341\237\261\073\110\205\365\232\134\041 --\042\020\054\305\202\316\332\343\232\156\067\341\207\054\334\271 --\014\132\272\210\125\337\375\252\333\037\061\352\001\361\337\071 --\001\301\023\375\110\122\041\304\125\337\332\330\263\124\166\272 --\164\261\267\175\327\300\350\366\131\305\115\310\275\255\037\024 --\332\337\130\104\045\062\031\052\307\176\176\216\256\070\260\060 --\173\107\162\011\061\360\060\333\303\033\166\051\273\151\166\116 --\127\371\033\144\242\223\126\267\157\231\156\333\012\004\234\021 --\343\200\037\313\143\224\020\012\251\341\144\202\061\371\214\047 --\355\246\231\000\366\160\223\030\370\241\064\206\243\335\172\302 --\030\171\366\172\145\065\317\220\353\275\063\223\237\123\253\163 --\073\346\233\064\040\057\035\357\251\035\143\032\240\200\333\003 --\057\371\046\032\206\322\215\273\251\276\122\072\207\147\110\015 --\277\264\240\330\046\276\043\137\163\067\177\046\346\222\004\243 --\177\317\040\247\267\363\072\312\313\231\313\002\003\001\000\001 --\243\163\060\161\060\021\006\011\140\206\110\001\206\370\102\001 --\001\004\004\003\002\000\007\060\037\006\003\125\035\043\004\030 --\060\026\200\024\145\362\061\255\052\367\367\335\122\226\012\307 --\002\301\016\357\246\325\073\021\060\017\006\003\125\035\023\001 --\001\377\004\005\060\003\001\001\377\060\013\006\003\125\035\017 --\004\004\003\002\001\376\060\035\006\003\125\035\016\004\026\004 --\024\145\362\061\255\052\367\367\335\122\226\012\307\002\301\016 --\357\246\325\073\021\060\015\006\011\052\206\110\206\367\015\001 --\001\005\005\000\003\202\001\001\000\113\065\356\314\344\256\277 --\303\156\255\237\225\073\113\077\133\036\337\127\051\242\131\312 --\070\342\271\032\377\236\346\156\062\335\036\256\352\065\267\365 --\223\221\116\332\102\341\303\027\140\120\362\321\134\046\271\202 --\267\352\155\344\234\204\347\003\171\027\257\230\075\224\333\307 --\272\000\347\270\277\001\127\301\167\105\062\014\073\361\264\034 --\010\260\375\121\240\241\335\232\035\023\066\232\155\267\307\074 --\271\341\305\331\027\372\203\325\075\025\240\074\273\036\013\342 --\310\220\077\250\206\014\374\371\213\136\205\313\117\133\113\142 --\021\107\305\105\174\005\057\101\261\236\020\151\033\231\226\340 --\125\171\373\116\206\231\270\224\332\206\070\152\223\243\347\313 --\156\345\337\352\041\125\211\234\175\175\177\230\365\000\211\356 --\343\204\300\134\226\265\305\106\352\106\340\205\125\266\033\311 --\022\326\301\315\315\200\363\002\001\074\310\151\313\105\110\143 --\330\224\320\354\205\016\073\116\021\145\364\202\214\246\075\256 --\056\042\224\011\310\134\352\074\201\135\026\052\003\227\026\125 --\011\333\212\101\202\236\146\233\021 --END -- --# Trust for Certificate "CNNIC ROOT" --# Issuer: CN=CNNIC ROOT,O=CNNIC,C=CN --# Serial Number: 1228079105 (0x49330001) --# Subject: CN=CNNIC ROOT,O=CNNIC,C=CN --# Not Valid Before: Mon Apr 16 07:09:14 2007 --# Not Valid After : Fri Apr 16 07:09:14 2027 --# Fingerprint (MD5): 21:BC:82:AB:49:C4:13:3B:4B:B2:2B:5C:6B:90:9C:19 --# Fingerprint (SHA1): 8B:AF:4C:9B:1D:F0:2A:92:F7:DA:12:8E:B9:1B:AC:F4:98:60:4B:6F --CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST --CKA_TOKEN CK_BBOOL CK_TRUE --CKA_PRIVATE CK_BBOOL CK_FALSE --CKA_MODIFIABLE CK_BBOOL CK_FALSE --CKA_LABEL UTF8 "CNNIC ROOT" --CKA_CERT_SHA1_HASH MULTILINE_OCTAL --\213\257\114\233\035\360\052\222\367\332\022\216\271\033\254\364 --\230\140\113\157 --END --CKA_CERT_MD5_HASH MULTILINE_OCTAL --\041\274\202\253\111\304\023\073\113\262\053\134\153\220\234\031 --END --CKA_ISSUER MULTILINE_OCTAL --\060\062\061\013\060\011\006\003\125\004\006\023\002\103\116\061 --\016\060\014\006\003\125\004\012\023\005\103\116\116\111\103\061 --\023\060\021\006\003\125\004\003\023\012\103\116\116\111\103\040 --\122\117\117\124 --END --CKA_SERIAL_NUMBER MULTILINE_OCTAL --\002\004\111\063\000\001 --END --CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR --CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST --CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST --CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE -- --# - # Certificate "ApplicationCA - Japanese Government" - # - # Issuer: OU=ApplicationCA,O=Japanese Government,C=JP -@@ -27266,154 +27143,6 @@ - CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - - # --# Certificate "China Internet Network Information Center EV Certificates Root" --# --# Issuer: CN=China Internet Network Information Center EV Certificates Root,O=China Internet Network Information Center,C=CN --# Serial Number: 1218379777 (0x489f0001) --# Subject: CN=China Internet Network Information Center EV Certificates Root,O=China Internet Network Information Center,C=CN --# Not Valid Before: Tue Aug 31 07:11:25 2010 --# Not Valid After : Sat Aug 31 07:11:25 2030 --# Fingerprint (MD5): 55:5D:63:00:97:BD:6A:97:F5:67:AB:4B:FB:6E:63:15 --# Fingerprint (SHA1): 4F:99:AA:93:FB:2B:D1:37:26:A1:99:4A:CE:7F:F0:05:F2:93:5D:1E --CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE --CKA_TOKEN CK_BBOOL CK_TRUE --CKA_PRIVATE CK_BBOOL CK_FALSE --CKA_MODIFIABLE CK_BBOOL CK_FALSE --CKA_LABEL UTF8 "China Internet Network Information Center EV Certificates Root" --CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 --CKA_SUBJECT MULTILINE_OCTAL --\060\201\212\061\013\060\011\006\003\125\004\006\023\002\103\116 --\061\062\060\060\006\003\125\004\012\014\051\103\150\151\156\141 --\040\111\156\164\145\162\156\145\164\040\116\145\164\167\157\162 --\153\040\111\156\146\157\162\155\141\164\151\157\156\040\103\145 --\156\164\145\162\061\107\060\105\006\003\125\004\003\014\076\103 --\150\151\156\141\040\111\156\164\145\162\156\145\164\040\116\145 --\164\167\157\162\153\040\111\156\146\157\162\155\141\164\151\157 --\156\040\103\145\156\164\145\162\040\105\126\040\103\145\162\164 --\151\146\151\143\141\164\145\163\040\122\157\157\164 --END --CKA_ID UTF8 "0" --CKA_ISSUER MULTILINE_OCTAL --\060\201\212\061\013\060\011\006\003\125\004\006\023\002\103\116 --\061\062\060\060\006\003\125\004\012\014\051\103\150\151\156\141 --\040\111\156\164\145\162\156\145\164\040\116\145\164\167\157\162 --\153\040\111\156\146\157\162\155\141\164\151\157\156\040\103\145 --\156\164\145\162\061\107\060\105\006\003\125\004\003\014\076\103 --\150\151\156\141\040\111\156\164\145\162\156\145\164\040\116\145 --\164\167\157\162\153\040\111\156\146\157\162\155\141\164\151\157 --\156\040\103\145\156\164\145\162\040\105\126\040\103\145\162\164 --\151\146\151\143\141\164\145\163\040\122\157\157\164 --END --CKA_SERIAL_NUMBER MULTILINE_OCTAL --\002\004\110\237\000\001 --END --CKA_VALUE MULTILINE_OCTAL --\060\202\003\367\060\202\002\337\240\003\002\001\002\002\004\110 --\237\000\001\060\015\006\011\052\206\110\206\367\015\001\001\005 --\005\000\060\201\212\061\013\060\011\006\003\125\004\006\023\002 --\103\116\061\062\060\060\006\003\125\004\012\014\051\103\150\151 --\156\141\040\111\156\164\145\162\156\145\164\040\116\145\164\167 --\157\162\153\040\111\156\146\157\162\155\141\164\151\157\156\040 --\103\145\156\164\145\162\061\107\060\105\006\003\125\004\003\014 --\076\103\150\151\156\141\040\111\156\164\145\162\156\145\164\040 --\116\145\164\167\157\162\153\040\111\156\146\157\162\155\141\164 --\151\157\156\040\103\145\156\164\145\162\040\105\126\040\103\145 --\162\164\151\146\151\143\141\164\145\163\040\122\157\157\164\060 --\036\027\015\061\060\060\070\063\061\060\067\061\061\062\065\132 --\027\015\063\060\060\070\063\061\060\067\061\061\062\065\132\060 --\201\212\061\013\060\011\006\003\125\004\006\023\002\103\116\061 --\062\060\060\006\003\125\004\012\014\051\103\150\151\156\141\040 --\111\156\164\145\162\156\145\164\040\116\145\164\167\157\162\153 --\040\111\156\146\157\162\155\141\164\151\157\156\040\103\145\156 --\164\145\162\061\107\060\105\006\003\125\004\003\014\076\103\150 --\151\156\141\040\111\156\164\145\162\156\145\164\040\116\145\164 --\167\157\162\153\040\111\156\146\157\162\155\141\164\151\157\156 --\040\103\145\156\164\145\162\040\105\126\040\103\145\162\164\151 --\146\151\143\141\164\145\163\040\122\157\157\164\060\202\001\042 --\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003 --\202\001\017\000\060\202\001\012\002\202\001\001\000\233\176\163 --\356\275\073\170\252\144\103\101\365\120\337\224\362\056\262\215 --\112\216\106\124\322\041\022\310\071\062\102\006\351\203\325\237 --\122\355\345\147\003\073\124\301\214\231\231\314\351\300\017\377 --\015\331\204\021\262\270\321\313\133\334\036\371\150\061\144\341 --\233\372\164\353\150\271\040\225\367\306\017\215\107\254\132\006 --\335\141\253\342\354\330\237\027\055\234\312\074\065\227\125\161 --\315\103\205\261\107\026\365\054\123\200\166\317\323\000\144\275 --\100\231\335\314\330\333\304\237\326\023\137\101\203\213\371\015 --\207\222\126\064\154\032\020\013\027\325\132\034\227\130\204\074 --\204\032\056\134\221\064\156\031\137\177\027\151\305\145\357\153 --\041\306\325\120\072\277\141\271\005\215\357\157\064\072\262\157 --\024\143\277\026\073\233\251\052\375\267\053\070\146\006\305\054 --\342\252\147\036\105\247\215\004\146\102\366\217\053\357\210\040 --\151\217\062\214\024\163\332\053\206\221\143\042\232\362\247\333 --\316\211\213\253\135\307\024\301\133\060\152\037\261\267\236\056 --\201\001\002\355\317\226\136\143\333\250\346\070\267\002\003\001 --\000\001\243\143\060\141\060\037\006\003\125\035\043\004\030\060 --\026\200\024\174\162\113\071\307\300\333\142\245\117\233\252\030 --\064\222\242\312\203\202\131\060\017\006\003\125\035\023\001\001 --\377\004\005\060\003\001\001\377\060\016\006\003\125\035\017\001 --\001\377\004\004\003\002\001\006\060\035\006\003\125\035\016\004 --\026\004\024\174\162\113\071\307\300\333\142\245\117\233\252\030 --\064\222\242\312\203\202\131\060\015\006\011\052\206\110\206\367 --\015\001\001\005\005\000\003\202\001\001\000\052\303\307\103\067 --\217\335\255\244\262\014\356\334\024\155\217\050\244\230\111\313 --\014\200\352\363\355\043\146\165\175\305\323\041\147\171\321\163 --\305\265\003\267\130\254\014\124\057\306\126\023\017\061\332\006 --\347\145\073\035\157\066\333\310\035\371\375\200\006\312\243\075 --\146\026\250\235\114\026\175\300\225\106\265\121\344\342\037\327 --\352\006\115\143\215\226\214\357\347\063\127\102\072\353\214\301 --\171\310\115\166\175\336\366\261\267\201\340\240\371\241\170\106 --\027\032\126\230\360\116\075\253\034\355\354\071\334\007\110\367 --\143\376\006\256\302\244\134\152\133\062\210\305\307\063\205\254 --\146\102\107\302\130\044\231\341\345\076\345\165\054\216\103\326 --\135\074\170\036\250\225\202\051\120\321\321\026\272\357\301\276 --\172\331\264\330\314\036\114\106\341\167\261\061\253\275\052\310 --\316\217\156\241\135\177\003\165\064\344\255\211\105\124\136\276 --\256\050\245\273\077\170\171\353\163\263\012\015\375\276\311\367 --\126\254\366\267\355\057\233\041\051\307\070\266\225\304\004\362 --\303\055\375\024\052\220\231\271\007\314\237 --END -- --# Trust for "China Internet Network Information Center EV Certificates Root" --# Issuer: CN=China Internet Network Information Center EV Certificates Root,O=China Internet Network Information Center,C=CN --# Serial Number: 1218379777 (0x489f0001) --# Subject: CN=China Internet Network Information Center EV Certificates Root,O=China Internet Network Information Center,C=CN --# Not Valid Before: Tue Aug 31 07:11:25 2010 --# Not Valid After : Sat Aug 31 07:11:25 2030 --# Fingerprint (MD5): 55:5D:63:00:97:BD:6A:97:F5:67:AB:4B:FB:6E:63:15 --# Fingerprint (SHA1): 4F:99:AA:93:FB:2B:D1:37:26:A1:99:4A:CE:7F:F0:05:F2:93:5D:1E --CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST --CKA_TOKEN CK_BBOOL CK_TRUE --CKA_PRIVATE CK_BBOOL CK_FALSE --CKA_MODIFIABLE CK_BBOOL CK_FALSE --CKA_LABEL UTF8 "China Internet Network Information Center EV Certificates Root" --CKA_CERT_SHA1_HASH MULTILINE_OCTAL --\117\231\252\223\373\053\321\067\046\241\231\112\316\177\360\005 --\362\223\135\036 --END --CKA_CERT_MD5_HASH MULTILINE_OCTAL --\125\135\143\000\227\275\152\227\365\147\253\113\373\156\143\025 --END --CKA_ISSUER MULTILINE_OCTAL --\060\201\212\061\013\060\011\006\003\125\004\006\023\002\103\116 --\061\062\060\060\006\003\125\004\012\014\051\103\150\151\156\141 --\040\111\156\164\145\162\156\145\164\040\116\145\164\167\157\162 --\153\040\111\156\146\157\162\155\141\164\151\157\156\040\103\145 --\156\164\145\162\061\107\060\105\006\003\125\004\003\014\076\103 --\150\151\156\141\040\111\156\164\145\162\156\145\164\040\116\145 --\164\167\157\162\153\040\111\156\146\157\162\155\141\164\151\157 --\156\040\103\145\156\164\145\162\040\105\126\040\103\145\162\164 --\151\146\151\143\141\164\145\163\040\122\157\157\164 --END --CKA_SERIAL_NUMBER MULTILINE_OCTAL --\002\004\110\237\000\001 --END --CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR --CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST --CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST --CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE -- --# - # Certificate "Swisscom Root CA 2" - # - # Issuer: CN=Swisscom Root CA 2,OU=Digital Certificate Services,O=Swisscom,C=ch diff --git a/data/patches/enable-js-options.patch b/data/patches/enable-js-options.patch deleted file mode 100644 index 2ba6cb8..0000000 --- a/data/patches/enable-js-options.patch +++ /dev/null @@ -1,304 +0,0 @@ -# revert https://bug851702.bugzilla.mozilla.org/attachment.cgi?id=733785 - -# HG changeset patch -# User Gijs Kruitbosch <gijskruitbosch@gmail.com> -# Date 1365155574 -7200 -# Node ID 444b9baa31d6065d37edbd61a2dcb892c989e0e2 -# Parent 99121d529b47ec285d61f64988335e60ac120cf7 -Bug 851702 - Remove JS load and advanced preferences from the UI - ---- b/browser/components/preferences/content.xul -+++ a/browser/components/preferences/content.xul -@@ -17,18 +17,23 @@ - - <prefpane id="paneContent" - onpaneload="gContentPane.init();" - helpTopic="prefs-content"> - - <preferences id="contentPreferences"> - <!--XXX buttons prefs --> - -+ <!-- POPUPS, JAVASCRIPT --> -- <!-- POPUPS --> - <preference id="dom.disable_open_during_load" name="dom.disable_open_during_load" type="bool"/> -+ <preference id="javascript.enabled" name="javascript.enabled" type="bool"/> -+ -+ <preference id="pref.advanced.javascript.disable_button.advanced" -+ name="pref.advanced.javascript.disable_button.advanced" -+ type="bool"/> - - <!-- FONTS --> - <preference id="font.language.group" - name="font.language.group" - type="wstring" - onchange="gContentPane._rebuildFonts();"/> - </preferences> - -@@ -51,16 +56,30 @@ - label="&blockPopups.label;" accesskey="&blockPopups.accesskey;" - onsyncfrompreference="return gContentPane.updateButtons('popupPolicyButton', - 'dom.disable_open_during_load');"/> - </vbox> - <button id="popupPolicyButton" label="&popupExceptions.label;" - oncommand="gContentPane.showPopupExceptions();" - accesskey="&popupExceptions.accesskey;"/> - </row> -+ <row id="enableJavaScriptRow"> -+ <vbox align="start"> -+ <checkbox id="enableJavaScript" preference="javascript.enabled" -+ label="&enableJavaScript.label;" accesskey="&enableJavaScript.accesskey;" -+ onsyncfrompreference="return gContentPane.updateButtons('advancedJSButton', -+ 'javascript.enabled');"/> -+ </vbox> -+ <vbox> -+ <button id="advancedJSButton" label="&advancedJS.label;" -+ accesskey="&advancedJS.accesskey;" -+ oncommand="gContentPane.showAdvancedJS();" -+ preference="pref.advanced.javascript.disable_button.advanced"/> -+ </vbox> -+ </row> - </rows> - </grid> - </groupbox> - - <!-- Fonts and Colors --> - <groupbox id="fontsGroup"> - <caption label="&fontsAndColors.label;"/> - ---- b/browser/components/preferences/in-content/content.xul -+++ a/browser/components/preferences/in-content/content.xul -@@ -1,18 +1,24 @@ - <!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this file, - - You can obtain one at http://mozilla.org/MPL/2.0/. --> - - <preferences id="contentPreferences"> - -+ <!-- Popups and JavaScript --> -- <!-- Popups --> - <preference id="dom.disable_open_during_load" - name="dom.disable_open_during_load" - type="bool"/> -+ <preference id="javascript.enabled" -+ name="javascript.enabled" -+ type="bool"/> -+ <preference id="pref.advanced.javascript.disable_button.advanced" -+ name="pref.advanced.javascript.disable_button.advanced" -+ type="bool"/> - - <!-- Fonts --> - <preference id="font.language.group" - name="font.language.group" - type="wstring" - onchange="gContentPane._rebuildFonts();"/> - </preferences> - -@@ -39,16 +45,30 @@ - label="&blockPopups.label;" accesskey="&blockPopups.accesskey;" - onsyncfrompreference="return gContentPane.updateButtons('popupPolicyButton', - 'dom.disable_open_during_load');"/> - </vbox> - <button id="popupPolicyButton" label="&popupExceptions.label;" - oncommand="gContentPane.showPopupExceptions();" - accesskey="&popupExceptions.accesskey;"/> - </row> -+ <row id="enableJavaScriptRow"> -+ <vbox align="start"> -+ <checkbox id="enableJavaScript" preference="javascript.enabled" -+ label="&enableJavaScript.label;" accesskey="&enableJavaScript.accesskey;" -+ onsyncfrompreference="return gContentPane.updateButtons('advancedJSButton', -+ 'javascript.enabled');"/> -+ </vbox> -+ <vbox> -+ <button id="advancedJSButton" label="&advancedJS.label;" -+ accesskey="&advancedJS.accesskey;" -+ oncommand="gContentPane.showAdvancedJS();" -+ preference="pref.advanced.javascript.disable_button.advanced"/> -+ </vbox> -+ </row> - </rows> - </grid> - </groupbox> - - <!-- Fonts and Colors --> - <groupbox id="fontsGroup" data-category="paneContent" hidden="true"> - <caption label="&fontsAndColors.label;"/> - ---- b/browser/components/preferences/jar.mn -+++ a/browser/components/preferences/jar.mn -@@ -4,16 +4,17 @@ - - browser.jar: - content/browser/preferences/aboutPermissions.xul - content/browser/preferences/aboutPermissions.js - content/browser/preferences/aboutPermissions.css - content/browser/preferences/aboutPermissions.xml - * content/browser/preferences/advanced.xul - * content/browser/preferences/advanced.js -+ content/browser/preferences/advanced-scripts.xul - content/browser/preferences/applications.xul - * content/browser/preferences/applications.js - content/browser/preferences/applicationManager.xul - * content/browser/preferences/applicationManager.js - * content/browser/preferences/colors.xul - * content/browser/preferences/cookies.xul - content/browser/preferences/cookies.js - content/browser/preferences/content.xul ---- b/browser/locales/en-US/chrome/browser/preferences/content.dtd -+++ a/browser/locales/en-US/chrome/browser/preferences/content.dtd -@@ -2,16 +2,25 @@ - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - - <!ENTITY blockPopups.label "Block pop-up windows"> - <!ENTITY blockPopups.accesskey "B"> - <!ENTITY popupExceptions.label "Exceptions…"> - <!ENTITY popupExceptions.accesskey "E"> - -+<!ENTITY enableJavaScript.label "Enable JavaScript"> -+<!ENTITY enableJavaScript.accesskey "J"> -+<!ENTITY advancedJS.label "Advanced…"> -+<!ENTITY advancedJS.accesskey "v"> -+ -+<!ENTITY enableJava.label "Enable Java"> -+<!ENTITY enableJava.accesskey "n"> -+ -+ - <!ENTITY fontsAndColors.label "Fonts & Colors"> - - <!ENTITY defaultFont.label "Default font:"> - <!ENTITY defaultFont.accesskey "D"> - <!ENTITY defaultSize.label "Size:"> - <!ENTITY defaultSize.accesskey "S"> - - <!ENTITY advancedFonts.label "Advanced…"> ---- b/browser/locales/jar.mn -+++ a/browser/locales/jar.mn -@@ -81,16 +81,17 @@ - #endif - locale/browser/feeds/subscribe.dtd (%chrome/browser/feeds/subscribe.dtd) - locale/browser/feeds/subscribe.properties (%chrome/browser/feeds/subscribe.properties) - locale/browser/migration/migration.dtd (%chrome/browser/migration/migration.dtd) - locale/browser/migration/migration.properties (%chrome/browser/migration/migration.properties) - locale/browser/preferences/aboutPermissions.dtd (%chrome/browser/preferences/aboutPermissions.dtd) - locale/browser/preferences/aboutPermissions.properties (%chrome/browser/preferences/aboutPermissions.properties) - locale/browser/preferences/advanced.dtd (%chrome/browser/preferences/advanced.dtd) -+ locale/browser/preferences/advanced-scripts.dtd (%chrome/browser/preferences/advanced-scripts.dtd) - locale/browser/preferences/applicationManager.dtd (%chrome/browser/preferences/applicationManager.dtd) - locale/browser/preferences/applicationManager.properties (%chrome/browser/preferences/applicationManager.properties) - locale/browser/preferences/colors.dtd (%chrome/browser/preferences/colors.dtd) - locale/browser/preferences/cookies.dtd (%chrome/browser/preferences/cookies.dtd) - locale/browser/preferences/content.dtd (%chrome/browser/preferences/content.dtd) - locale/browser/preferences/connection.dtd (%chrome/browser/preferences/connection.dtd) - locale/browser/preferences/applications.dtd (%chrome/browser/preferences/applications.dtd) - locale/browser/preferences/fonts.dtd (%chrome/browser/preferences/fonts.dtd) ---- b/browser/components/preferences/content.js 2014-05-07 17:02:34.000000000 +0200 -+++ a/browser/components/preferences/content.js 2014-04-28 01:52:01.000000000 +0200 -@@ -57,7 +57,18 @@ - "chrome://browser/content/preferences/permissions.xul", - "", params); - }, -+ -+ // JAVASCRIPT - -+ /** -+ * Displays the advanced JavaScript preferences for enabling or disabling -+ * various annoying behaviors. -+ */ -+ showAdvancedJS: function () -+ { -+ openDialog("chrome://browser/content/preferences/advanced-scripts.xul", -+ "Browser:AdvancedScripts", null); -+ }, - - // FONTS - ---- b/browser/components/preferences/in-content/content.js 2014-04-28 01:52:01.000000000 +0200 -+++ a/browser/components/preferences/in-content/content.js 2014-05-07 17:01:48.000000000 +0200 -@@ -58,6 +58,18 @@ - "Browser:Permissions", "resizable=yes", params); - }, - -+ // JAVASCRIPT -+ -+ /** -+ * Displays the advanced JavaScript preferences for enabling or disabling -+ * various annoying behaviors. -+ */ -+ showAdvancedJS: function () -+ { -+ openDialog("chrome://browser/content/preferences/advanced-scripts.xul", -+ "Browser:AdvancedScripts", null); -+ }, -+ - // FONTS - - /** -diff --git a/browser/components/preferences/advanced-scripts.xul b/browser/components/preferences/advanced-scripts.xul ---- /dev/null -+++ a/browser/components/preferences/advanced-scripts.xul -@@ -0,0 +1,46 @@ -+<?xml version="1.0"?> -+ -+<!-- -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- --> -+<!-- This Source Code Form is subject to the terms of the Mozilla Public -+ - License, v. 2.0. If a copy of the MPL was not distributed with this -+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -+ -+<!DOCTYPE prefwindow SYSTEM "chrome://browser/locale/preferences/advanced-scripts.dtd"> -+ -+<?xml-stylesheet href="chrome://global/skin/"?> -+ -+<prefwindow id="AdvancedJSDialog" type="child" -+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" -+ title="&advancedJSDialog.title;" -+ dlgbuttons="accept,cancel,help" -+ ondialoghelp="openPrefsHelp()"> -+ -+ <script type="application/javascript" src="chrome://browser/content/utilityOverlay.js"/> -+ -+ <prefpane id="AdvancedJSDialogPane" -+ helpTopic="prefs-advanced-javascript"> -+ -+ <preferences> -+ <preference id="dom.event.contextmenu.enabled" name="dom.event.contextmenu.enabled" type="bool"/> -+ <preference id="dom.disable_window_move_resize" name="dom.disable_window_move_resize" type="bool" inverted="true"/> -+ <preference id="dom.disable_window_flip" name="dom.disable_window_flip" type="bool" inverted="true"/> -+ </preferences> -+ -+ <script type="application/javascript" src="chrome://browser/content/preferences/advanced-scripts.js"/> -+ -+ <stringbundle id="preferencesBundle" src="chrome://browser/locale/preferences/preferences.properties"/> -+ -+ <description value="&allowScripts.label;"/> -+ -+ <checkbox id="moveResizePopupWindows" label="&moveResizePopupWindows.label;" -+ accesskey="&moveResizePopupWindows.accesskey;" -+ preference="dom.disable_window_move_resize"/> -+ <checkbox id="raiseLowerWindows" label="&raiseLowerWindows.label;" -+ accesskey="&raiseLowerWindows.accesskey;" -+ preference="dom.disable_window_flip"/> -+ <checkbox id="disableContextMenus" label="&disableContextMenus.label;" -+ accesskey="&disableContextMenus.accesskey;" -+ preference="dom.event.contextmenu.enabled"/> -+ -+ </prefpane> -+</prefwindow> ---- /dev/null -+++ a/browser/locales/en-US/chrome/browser/preferences/advanced-scripts.dtd -@@ -0,0 +1,15 @@ -+<!-- This Source Code Form is subject to the terms of the Mozilla Public -+ - License, v. 2.0. If a copy of the MPL was not distributed with this -+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -+ -+<!ENTITY advancedJSDialog.title "Advanced JavaScript Settings"> -+<!ENTITY window.width "37em"> -+ -+<!ENTITY allowScripts.label "Allow scripts to:"> -+ -+<!ENTITY moveResizePopupWindows.label "Move or resize popup windows"> -+<!ENTITY moveResizePopupWindows.accesskey "M"> -+<!ENTITY raiseLowerWindows.label "Raise or lower windows"> -+<!ENTITY raiseLowerWindows.accesskey "R"> -+<!ENTITY disableContextMenus.label "Disable or replace context menus"> -+<!ENTITY disableContextMenus.accesskey "D"> diff --git a/data/patches/gnuzilla-bug-1002729.patch b/data/patches/gnuzilla-bug-1002729.patch deleted file mode 100644 index 9a35928..0000000 --- a/data/patches/gnuzilla-bug-1002729.patch +++ /dev/null @@ -1,50 +0,0 @@ -Link failure due to static const integers in WebRTC -https://bugzilla.mozilla.org/show_bug.cgi?id=1002729 - -# HG changeset patch -# User Blake Kaplan <mrbkap@gmail.com> - -Bug 1002729 - Avoid problems with ternary expressions and static const integers with no definition. r=jesup - -diff --git a/content/media/webrtc/MediaEngine.h b/content/media/webrtc/MediaEngine.h -index 91ae08a..c7500cd 100644 ---- a/content/media/webrtc/MediaEngine.h -+++ b/content/media/webrtc/MediaEngine.h -@@ -149,23 +149,33 @@ public: - - int32_t GetHeight(bool aHD = false) const { - return mHeight? mHeight : (mWidth? - (mWidth * GetDefHeight(aHD)) / GetDefWidth(aHD) : - GetDefHeight(aHD)); - } - private: - static int32_t GetDefWidth(bool aHD = false) { -- return aHD ? MediaEngine::DEFAULT_169_VIDEO_WIDTH : -- MediaEngine::DEFAULT_43_VIDEO_WIDTH; -+ // It'd be nice if we could use the ternary operator here, but we can't -+ // because of bug 1002729. -+ if (aHD) { -+ return MediaEngine::DEFAULT_169_VIDEO_WIDTH; -+ } -+ -+ return MediaEngine::DEFAULT_43_VIDEO_WIDTH; - } - - static int32_t GetDefHeight(bool aHD = false) { -- return aHD ? MediaEngine::DEFAULT_169_VIDEO_HEIGHT : -- MediaEngine::DEFAULT_43_VIDEO_HEIGHT; -+ // It'd be nice if we could use the ternary operator here, but we can't -+ // because of bug 1002729. -+ if (aHD) { -+ return MediaEngine::DEFAULT_169_VIDEO_HEIGHT; -+ } -+ -+ return MediaEngine::DEFAULT_43_VIDEO_HEIGHT; - } - }; - - class MediaEngineVideoSource : public MediaEngineSource - { - public: - virtual ~MediaEngineVideoSource() {} - diff --git a/data/patches/gnuzilla-bug-1010972.patch b/data/patches/gnuzilla-bug-1010972.patch deleted file mode 100644 index 94eaf2b..0000000 --- a/data/patches/gnuzilla-bug-1010972.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/media/libyuv/source/cpu_id.cc 2015-01-27 19:15:52.069520584 +0100 -+++ b/media/libyuv/source/cpu_id.cc 2015-01-30 00:50:10.425853894 +0100 -@@ -97,7 +97,7 @@ - uint32 xcr0 = 0u; - #if defined(_MSC_VER) && defined(_XCR_XFEATURE_ENABLED_MASK) - xcr0 = (uint32)(_xgetbv(_XCR_XFEATURE_ENABLED_MASK)); --#elif defined(_M_IX86) -+#elif defined(_MSC_VER) && defined(_M_IX86) - __asm { - xor ecx, ecx // xcr 0 - _asm _emit 0x0f _asm _emit 0x01 _asm _emit 0xd0 // For VS2010 and earlier. diff --git a/data/patches/gnuzilla-bug-1025689.patch b/data/patches/gnuzilla-bug-1025689.patch deleted file mode 100644 index 9364624..0000000 --- a/data/patches/gnuzilla-bug-1025689.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff -ru mozilla-esr31/media/libopus/moz.build icecat-31.4.0/media/libopus/moz.build ---- a/media/libopus/moz.build 2015-01-06 06:08:03.000000000 +0100 -+++ b/media/libopus/moz.build 2015-02-02 02:37:44.416803188 +0100 -@@ -23,10 +23,11 @@ - DEFINES['OPUS_ARM_ASM'] = True - DEFINES['OPUS_ARM_EXTERNAL_ASM'] = True - DEFINES['OPUS_ARM_INLINE_ASM'] = True -- DEFINES['OPUS_ARM_INLINE_EDSP'] = True -- DEFINES['OPUS_ARM_MAY_HAVE_EDSP'] = True -- DEFINES['OPUS_ARM_MAY_HAVE_MEDIA'] = True -- DEFINES['OPUS_ARM_MAY_HAVE_NEON'] = True -+ if int(CONFIG['ARM_ARCH']) >= 6: -+ DEFINES['OPUS_ARM_INLINE_EDSP'] = True -+ DEFINES['OPUS_ARM_MAY_HAVE_EDSP'] = True -+ DEFINES['OPUS_ARM_MAY_HAVE_MEDIA'] = True -+ DEFINES['OPUS_ARM_MAY_HAVE_NEON'] = True - - if CONFIG['MOZ_DEBUG']: - DEFINES['ENABLE_ASSERTIONS'] = True diff --git a/data/patches/gnuzilla-bug-1030899-1.patch b/data/patches/gnuzilla-bug-1030899-1.patch deleted file mode 100644 index 5f3d3ba..0000000 --- a/data/patches/gnuzilla-bug-1030899-1.patch +++ /dev/null @@ -1,60 +0,0 @@ ---- a/ipc/chromium/src/third_party/libevent-dont-use-issetugid-on-android.patch -+++ a/ipc/chromium/src/third_party/libevent-dont-use-issetugid-on-android.patch -@@ -0,0 +1,22 @@ -+diff --git a/ipc/chromium/src/third_party/libevent/android/event2/event-config.h b/ipc/chromium/src/third_party/libevent/android/event2/event-config.h -+--- a/ipc/chromium/src/third_party/libevent/android/event2/event-config.h -++++ b/ipc/chromium/src/third_party/libevent/android/event2/event-config.h -+@@ -119,17 +119,17 @@ -+ -+ /* Define to 1 if you have the `inet_pton' function. */ -+ #define _EVENT_HAVE_INET_PTON 1 -+ -+ /* Define to 1 if you have the <inttypes.h> header file. */ -+ #define _EVENT_HAVE_INTTYPES_H 1 -+ -+ /* Define to 1 if you have the `issetugid' function. */ -+-#define _EVENT_HAVE_ISSETUGID 1 -++/* #undef _EVENT_HAVE_ISSETUGID */ -+ -+ /* Define to 1 if you have the `kqueue' function. */ -+ /* #undef _EVENT_HAVE_KQUEUE */ -+ -+ /* Define if the system has zlib */ -+ #define _EVENT_HAVE_LIBZ 1 -+ -+ /* Define to 1 if you have the <memory.h> header file. */ ---- a/ipc/chromium/src/third_party/libevent/README.mozilla -+++ a/ipc/chromium/src/third_party/libevent/README.mozilla -@@ -10,8 +10,10 @@ These files are taken from libevent-2.0. - - 2. This is ugly, prepare yourself. OS X has a weird problem with how the "TAILQ_END(head)" is used, causing a linking error. Just replace all use of the "TAILQ_END(head)" macro with "NULL". - - 3. Apply "add mac-arc4random-buf.patch", which removes some bad OS X compatibility code. This will allow libevent to compile on all supported versions of OS X. - - 4. Apply "openbsd-no-arc4random_addrandom.patch", which fixes the build on OpenBSD (which doesnt provide arc4random_addrandom anymore, see #931354) - - 5. Apply "libevent-use-non-deprecated-syscalls.patch", which fixes the build on AArch64 architecture (which does not provide deprecated syscalls) -+ -+6. Apply "libevent-dont-use-issetugid-on-android.patch'. which fixes the build on Android L preview ---- a/ipc/chromium/src/third_party/libevent/android/event2/event-config.h -+++ a/ipc/chromium/src/third_party/libevent/android/event2/event-config.h -@@ -119,17 +119,17 @@ - - /* Define to 1 if you have the `inet_pton' function. */ - #define _EVENT_HAVE_INET_PTON 1 - - /* Define to 1 if you have the <inttypes.h> header file. */ - #define _EVENT_HAVE_INTTYPES_H 1 - - /* Define to 1 if you have the `issetugid' function. */ --#define _EVENT_HAVE_ISSETUGID 1 -+/* #undef _EVENT_HAVE_ISSETUGID */ - - /* Define to 1 if you have the `kqueue' function. */ - /* #undef _EVENT_HAVE_KQUEUE */ - - /* Define if the system has zlib */ - #define _EVENT_HAVE_LIBZ 1 - - /* Define to 1 if you have the <memory.h> header file. */ - diff --git a/data/patches/gnuzilla-bug-1030899-2.patch b/data/patches/gnuzilla-bug-1030899-2.patch deleted file mode 100644 index 55728ab..0000000 --- a/data/patches/gnuzilla-bug-1030899-2.patch +++ /dev/null @@ -1,59 +0,0 @@ ---- a/memory/mozjemalloc/jemalloc.c -+++ a/memory/mozjemalloc/jemalloc.c -@@ -220,17 +220,16 @@ - - #ifdef MALLOC_PAGEFILE - /* Write size when initializing a page file. */ - # define MALLOC_PAGEFILE_WRITE_SIZE 512 - #endif - - #if defined(MOZ_MEMORY_LINUX) && !defined(MOZ_MEMORY_ANDROID) - #define _GNU_SOURCE /* For mremap(2). */ --#define issetugid() 0 - #if 0 /* Enable in order to test decommit code on Linux. */ - # define MALLOC_DECOMMIT - #endif - #endif - - #include <sys/types.h> - - #include <errno.h> -@@ -261,17 +260,16 @@ - #define vsnprintf _vsnprintf - - #ifndef NO_TLS - static unsigned long tlsIndex = 0xffffffff; - #endif - - #define __thread - #define _pthread_self() __threadid() --#define issetugid() 0 - - /* use MSVC intrinsics */ - #pragma intrinsic(_BitScanForward) - static __forceinline int - ffs(int x) - { - unsigned long i; - -@@ -5675,18 +5673,17 @@ malloc_init_hard(void) - #endif - { - /* No configuration specified. */ - buf[0] = '\0'; - opts = buf; - } - break; - case 1: -- if (issetugid() == 0 && (opts = -- getenv("MALLOC_OPTIONS")) != NULL) { -+ if ((opts = getenv("MALLOC_OPTIONS")) != NULL) { - /* - * Do nothing; opts is already initialized to - * the value of the MALLOC_OPTIONS environment - * variable. - */ - } else { - /* No configuration specified. */ - buf[0] = '\0'; - diff --git a/data/patches/gnuzilla-bug-1032460.patch b/data/patches/gnuzilla-bug-1032460.patch deleted file mode 100644 index 08f37c3..0000000 --- a/data/patches/gnuzilla-bug-1032460.patch +++ /dev/null @@ -1,16 +0,0 @@ -https://bugzilla.mozilla.org/show_bug.cgi?id=1032460 - -diff -ru icecat-31.4.0.orig/widget/android/AndroidBridge.cpp icecat-31.4.0/widget/android/AndroidBridge.cpp ---- icecat-31.4.0.orig/widget/android/AndroidBridge.cpp 2015-02-22 19:11:11.834816575 +0100 -+++ icecat-31.4.0/widget/android/AndroidBridge.cpp 2015-02-22 19:16:16.226810788 +0100 -@@ -199,7 +199,9 @@ - - jclass eglClass = getClassGlobalRef("com/google/android/gles_jni/EGLSurfaceImpl"); - if (eglClass) { -- jEGLSurfacePointerField = getField("mEGLSurface", "I"); -+ // The pointer type moved to a 'long' in Android L, API version 20 -+ const char* jniType = mAPIVersion >= 20 ? "J" : "I"; -+ jEGLSurfacePointerField = getField("mEGLSurface", jniType); - } else { - jEGLSurfacePointerField = 0; - } diff --git a/data/patches/gnuzilla-bug-1034167-1.patch b/data/patches/gnuzilla-bug-1034167-1.patch deleted file mode 100644 index 410b2cf..0000000 --- a/data/patches/gnuzilla-bug-1034167-1.patch +++ /dev/null @@ -1,93 +0,0 @@ -# HG changeset patch -# User Lucas Rocha <lucasr@mozilla.com> - -Bug 1034167 - Part 2: Explicit set scrollbars in TabsTray (r=mfinkle) - -diff --git a/mobile/android/base/resources/values-land/styles.xml b/mobile/android/base/resources/values-land/styles.xml -index 774c48e..6769b1e 100644 ---- a/mobile/android/base/resources/values-land/styles.xml -+++ b/mobile/android/base/resources/values-land/styles.xml -@@ -2,16 +2,17 @@ - <!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - - <resources> - - <style name="TabsList" parent="TabsListBase"> - <item name="android:orientation">horizontal</item> -+ <item name="android:scrollbars">horizontal</item> - </style> - - <style name="TabsItem"> - <item name="android:nextFocusDown">@+id/close</item> - </style> - - <style name="TabsItemClose"> - <item name="android:nextFocusUp">@+id/info</item> -diff --git a/mobile/android/base/resources/values-large-land-v11/styles.xml b/mobile/android/base/resources/values-large-land-v11/styles.xml -index 557b659..1468914 100644 ---- a/mobile/android/base/resources/values-large-land-v11/styles.xml -+++ b/mobile/android/base/resources/values-large-land-v11/styles.xml -@@ -2,16 +2,17 @@ - <!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - - <resources> - - <style name="TabsList" parent="TabsListBase"> - <item name="android:orientation">vertical</item> -+ <item name="android:scrollbars">vertical</item> - </style> - - <style name="Widget.BookmarkFolderView" parent="Widget.TwoLinePageRow.Title"> - <item name="android:paddingLeft">60dip</item> - <item name="android:drawablePadding">10dip</item> - <item name="android:drawableLeft">@drawable/bookmark_folder</item> - </style> - -diff --git a/mobile/android/base/resources/values-large-v11/styles.xml b/mobile/android/base/resources/values-large-v11/styles.xml -index 7a22789..a6a6221 100644 ---- a/mobile/android/base/resources/values-large-v11/styles.xml -+++ b/mobile/android/base/resources/values-large-v11/styles.xml -@@ -25,16 +25,17 @@ - <item name="android:layout_marginTop">6dp</item> - <item name="android:layout_marginBottom">6dp</item> - <!-- Start with forward hidden --> - <item name="android:orientation">horizontal</item> - </style> - - <style name="TabsList" parent="TabsListBase"> - <item name="android:orientation">horizontal</item> -+ <item name="android:scrollbars">horizontal</item> - </style> - - <style name="TabsItem"> - <item name="android:nextFocusDown">@+id/close</item> - </style> - - <style name="TabsItemClose"> - <item name="android:nextFocusUp">@+id/info</item> -diff --git a/mobile/android/base/resources/values/styles.xml b/mobile/android/base/resources/values/styles.xml -index a15f72e..f479180 100644 ---- a/mobile/android/base/resources/values/styles.xml -+++ b/mobile/android/base/resources/values/styles.xml -@@ -430,16 +430,17 @@ - <!-- TabsTray List --> - <style name="TabsListBase"> - <item name="android:background">@android:color/transparent</item> - <item name="android:listSelector">@android:color/transparent</item> - </style> - - <style name="TabsList" parent="TabsListBase"> - <item name="android:orientation">vertical</item> -+ <item name="android:scrollbars">vertical</item> - </style> - - <style name="TabsItem"> - <item name="android:nextFocusRight">@+id/close</item> - </style> - - <style name="TabsItemClose"> - <item name="android:nextFocusLeft">@+id/info</item> diff --git a/data/patches/gnuzilla-bug-1034167-2.patch b/data/patches/gnuzilla-bug-1034167-2.patch deleted file mode 100644 index 3df67a0..0000000 --- a/data/patches/gnuzilla-bug-1034167-2.patch +++ /dev/null @@ -1,1205 +0,0 @@ -# HG changeset patch -# User Lucas Rocha <lucasr@mozilla.com> - -Bug 1034167 - Part 1: Update TwoWayView from upstream (r=mfinkle) - -diff --git a/mobile/android/base/resources/values/attrs.xml b/mobile/android/base/resources/values/attrs.xml -index 0c27b87..7140292 100644 ---- a/mobile/android/base/resources/values/attrs.xml -+++ b/mobile/android/base/resources/values/attrs.xml -@@ -117,91 +117,20 @@ - - <declare-styleable name="LightweightTheme"> - <attr name="state_light" format="boolean"/> - <attr name="state_dark" format="boolean"/> - <attr name="autoUpdateTheme" format="boolean"/> - </declare-styleable> - - <declare-styleable name="TwoWayView"> -- <!-- Imported from View --> -- <attr name="android:id"/> -- <attr name="android:tag"/> -- <attr name="android:scrollX"/> -- <attr name="android:scrollY"/> -- <attr name="android:background"/> -- <attr name="android:padding"/> -- <attr name="android:paddingLeft"/> -- <attr name="android:paddingTop"/> -- <attr name="android:paddingRight"/> -- <attr name="android:paddingBottom"/> -- <attr name="android:paddingStart"/> -- <attr name="android:paddingEnd"/> -- <attr name="android:focusable"/> -- <attr name="android:focusableInTouchMode"/> -- <attr name="android:visibility"/> -- <attr name="android:fitsSystemWindows"/> -- <attr name="android:scrollbars"/> -- <attr name="android:scrollbarStyle"/> -- <attr name="android:isScrollContainer"/> -- <attr name="android:fadeScrollbars"/> -- <attr name="android:scrollbarFadeDuration"/> -- <attr name="android:scrollbarDefaultDelayBeforeFade"/> -- <attr name="android:scrollbarSize"/> -- <attr name="android:scrollbarThumbHorizontal"/> -- <attr name="android:scrollbarThumbVertical"/> -- <attr name="android:scrollbarTrackHorizontal"/> -- <attr name="android:scrollbarTrackVertical"/> -- <attr name="android:scrollbarAlwaysDrawHorizontalTrack"/> -- <attr name="android:scrollbarAlwaysDrawVerticalTrack"/> -- <attr name="android:fadingEdge"/> -- <attr name="android:requiresFadingEdge"/> -- <attr name="android:fadingEdgeLength"/> -- <attr name="android:nextFocusLeft"/> -- <attr name="android:nextFocusRight"/> -- <attr name="android:nextFocusUp"/> -- <attr name="android:nextFocusDown"/> -- <attr name="android:nextFocusForward"/> -- <attr name="android:clickable"/> -- <attr name="android:longClickable"/> -- <attr name="android:saveEnabled"/> -- <attr name="android:filterTouchesWhenObscured"/> -- <attr name="android:drawingCacheQuality"/> -- <attr name="android:keepScreenOn"/> -- <attr name="android:duplicateParentState"/> -- <attr name="android:minHeight"/> -- <attr name="android:minWidth"/> -- <attr name="android:soundEffectsEnabled"/> -- <attr name="android:hapticFeedbackEnabled"/> -- <attr name="android:contentDescription"/> -- <attr name="android:onClick"/> -- <attr name="android:overScrollMode"/> -- <attr name="android:alpha"/> -- <attr name="android:translationX"/> -- <attr name="android:translationY"/> -- <attr name="android:transformPivotX"/> -- <attr name="android:transformPivotY"/> -- <attr name="android:rotation"/> -- <attr name="android:rotationX"/> -- <attr name="android:rotationY"/> -- <attr name="android:scaleX"/> -- <attr name="android:scaleY"/> -- <attr name="android:verticalScrollbarPosition"/> -- <attr name="android:layerType"/> -- <attr name="android:layoutDirection"/> -- <attr name="android:textDirection"/> -- <attr name="android:textAlignment"/> -- -- <!-- Imported from Android --> - <attr name="android:orientation"/> -- -- <!-- Imported from AbsListView --> - <attr name="android:choiceMode"/> -- <attr name="android:drawSelectorOnTop"/> - <attr name="android:listSelector"/> -+ <attr name="android:drawSelectorOnTop"/> - </declare-styleable> - - <declare-styleable name="HomeListView"> - <!-- Draws a divider on top of the list, if true. Defaults to false. --> - <attr name="topDivider" format="boolean"/> - </declare-styleable> - - <declare-styleable name="HomePagerTabStrip"> ---- a/mobile/android/base/widget/TwoWayView.java 2015-01-06 05:07:55.000000000 +0000 -+++ b/mobile/android/base/widget/TwoWayView.java 2015-02-23 19:46:01.737065730 +0000 -@@ -23,6 +23,9 @@ - - import org.mozilla.gecko.R; - -+import java.util.ArrayList; -+import java.util.List; -+ - import android.annotation.TargetApi; - import android.content.Context; - import android.content.res.TypedArray; -@@ -67,8 +70,7 @@ - import android.widget.ListAdapter; - import android.widget.Scroller; - --import java.util.ArrayList; --import java.util.List; -+import static android.os.Build.VERSION_CODES.HONEYCOMB; - - /* - * Implementation Notes: -@@ -136,8 +138,8 @@ - - public static enum Orientation { - HORIZONTAL, -- VERTICAL; -- }; -+ VERTICAL -+ } - - private ListAdapter mAdapter; - -@@ -266,7 +268,7 @@ - * Callback method to be invoked while the list view or grid view is being scrolled. If the - * view is being scrolled, this method will be called before the next frame of the scroll is - * rendered. In particular, it will be called before any calls to -- * {@link Adapter#getView(int, View, ViewGroup)}. -+ * {@link android.widget.Adapter#getView(int, View, ViewGroup)}. - * - * @param view The view whose scroll state is being reported - * -@@ -388,7 +390,6 @@ - ViewCompat.setOverScrollMode(this, ViewCompat.OVER_SCROLL_IF_CONTENT_SCROLLS); - - TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TwoWayView, defStyle, 0); -- initializeScrollbars(a); - - mDrawSelectorOnTop = a.getBoolean( - R.styleable.TwoWayView_android_drawSelectorOnTop, false); -@@ -409,19 +410,16 @@ - } - - a.recycle(); -- -- updateScrollbarsDirection(); - } - - public void setOrientation(Orientation orientation) { -- final boolean isVertical = (orientation.compareTo(Orientation.VERTICAL) == 0); -+ final boolean isVertical = (orientation == Orientation.VERTICAL); - if (mIsVertical == isVertical) { - return; - } - - mIsVertical = isVertical; - -- updateScrollbarsDirection(); - resetState(); - mRecycler.clear(); - -@@ -441,6 +439,7 @@ - requestLayout(); - } - -+ @SuppressWarnings("unused") - public int getItemMargin() { - return mItemMargin; - } -@@ -451,6 +450,7 @@ - * - * @param itemsCanFocus true if items can get focus, false otherwise - */ -+ @SuppressWarnings("unused") - public void setItemsCanFocus(boolean itemsCanFocus) { - mItemsCanFocus = itemsCanFocus; - if (!itemsCanFocus) { -@@ -462,6 +462,7 @@ - * @return Whether the views created by the ListAdapter can contain focusable - * items. - */ -+ @SuppressWarnings("unused") - public boolean getItemsCanFocus() { - return mItemsCanFocus; - } -@@ -481,7 +482,7 @@ - * the recycler for later reuse. This listener can be used to free resources - * associated to the View. - * -- * @param listener The recycler listener to be notified of views set aside -+ * @param l The recycler listener to be notified of views set aside - * in the recycler. - * - * @see TwoWayView.RecycleBin -@@ -495,11 +496,12 @@ - * Controls whether the selection highlight drawable should be drawn on top of the item or - * behind it. - * -- * @param onTop If true, the selector will be drawn on the item it is highlighting. The default -- * is false. -+ * @param drawSelectorOnTop If true, the selector will be drawn on the item it is highlighting. -+ * The default is false. - * - * @attr ref android.R.styleable#AbsListView_drawSelectorOnTop - */ -+ @SuppressWarnings("unused") - public void setDrawSelectorOnTop(boolean drawSelectorOnTop) { - mDrawSelectorOnTop = drawSelectorOnTop; - } -@@ -511,6 +513,7 @@ - * - * @attr ref android.R.styleable#AbsListView_listSelector - */ -+ @SuppressWarnings("unused") - public void setSelector(int resID) { - setSelector(getResources().getDrawable(resID)); - } -@@ -542,6 +545,7 @@ - * - * @return the drawable used to display the selector - */ -+ @SuppressWarnings("unused") - public Drawable getSelector() { - return mSelector; - } -@@ -564,7 +568,7 @@ - - /** - * Returns the number of items currently selected. This will only be valid -- * if the choice mode is not {@link #CHOICE_MODE_NONE} (default). -+ * if the choice mode is not {@link ChoiceMode#NONE} (default). - * - * <p>To determine the specific items that are currently selected, use one of - * the <code>getChecked*</code> methods. -@@ -575,23 +579,24 @@ - * @see #getCheckedItemPositions() - * @see #getCheckedItemIds() - */ -+ @SuppressWarnings("unused") - public int getCheckedItemCount() { - return mCheckedItemCount; - } - - /** - * Returns the checked state of the specified position. The result is only -- * valid if the choice mode has been set to {@link #CHOICE_MODE_SINGLE} -- * or {@link #CHOICE_MODE_MULTIPLE}. -+ * valid if the choice mode has been set to {@link ChoiceMode#SINGLE} -+ * or {@link ChoiceMode#MULTIPLE}. - * - * @param position The item whose checked state to return - * @return The item's checked state or <code>false</code> if choice mode - * is invalid - * -- * @see #setChoiceMode(int) -+ * @see #setChoiceMode(ChoiceMode) - */ - public boolean isItemChecked(int position) { -- if (mChoiceMode.compareTo(ChoiceMode.NONE) == 0 && mCheckStates != null) { -+ if (mChoiceMode == ChoiceMode.NONE && mCheckStates != null) { - return mCheckStates.get(position); - } - -@@ -600,16 +605,15 @@ - - /** - * Returns the currently checked item. The result is only valid if the choice -- * mode has been set to {@link #CHOICE_MODE_SINGLE}. -+ * mode has been set to {@link ChoiceMode#SINGLE}. - * - * @return The position of the currently checked item or - * {@link #INVALID_POSITION} if nothing is selected - * -- * @see #setChoiceMode(int) -+ * @see #setChoiceMode(ChoiceMode) - */ - public int getCheckedItemPosition() { -- if (mChoiceMode.compareTo(ChoiceMode.SINGLE) == 0 && -- mCheckStates != null && mCheckStates.size() == 1) { -+ if (mChoiceMode == ChoiceMode.SINGLE && mCheckStates != null && mCheckStates.size() == 1) { - return mCheckStates.keyAt(0); - } - -@@ -618,15 +622,15 @@ - - /** - * Returns the set of checked items in the list. The result is only valid if -- * the choice mode has not been set to {@link #CHOICE_MODE_NONE}. -+ * the choice mode has not been set to {@link ChoiceMode#NONE}. - * - * @return A SparseBooleanArray which will return true for each call to - * get(int position) where position is a position in the list, - * or <code>null</code> if the choice mode is set to -- * {@link #CHOICE_MODE_NONE}. -+ * {@link ChoiceMode#NONE}. - */ - public SparseBooleanArray getCheckedItemPositions() { -- if (mChoiceMode.compareTo(ChoiceMode.NONE) != 0) { -+ if (mChoiceMode != ChoiceMode.NONE) { - return mCheckStates; - } - -@@ -635,15 +639,14 @@ - - /** - * Returns the set of checked items ids. The result is only valid if the -- * choice mode has not been set to {@link #CHOICE_MODE_NONE} and the adapter -+ * choice mode has not been set to {@link ChoiceMode#NONE} and the adapter - * has stable IDs. ({@link ListAdapter#hasStableIds()} == {@code true}) - * - * @return A new array which contains the id of each checked item in the - * list. - */ - public long[] getCheckedItemIds() { -- if (mChoiceMode.compareTo(ChoiceMode.NONE) == 0 || -- mCheckedIdStates == null || mAdapter == null) { -+ if (mChoiceMode == ChoiceMode.NONE || mCheckedIdStates == null || mAdapter == null) { - return new long[0]; - } - -@@ -660,18 +663,19 @@ - - /** - * Sets the checked state of the specified position. The is only valid if -- * the choice mode has been set to {@link #CHOICE_MODE_SINGLE} or -- * {@link #CHOICE_MODE_MULTIPLE}. -+ * the choice mode has been set to {@link ChoiceMode#SINGLE} or -+ * {@link ChoiceMode#MULTIPLE}. - * - * @param position The item whose checked state is to be checked - * @param value The new checked state for the item - */ -+ @SuppressWarnings("unused") - public void setItemChecked(int position, boolean value) { -- if (mChoiceMode.compareTo(ChoiceMode.NONE) == 0) { -+ if (mChoiceMode == ChoiceMode.NONE) { - return; - } - -- if (mChoiceMode.compareTo(ChoiceMode.MULTIPLE) == 0) { -+ if (mChoiceMode == ChoiceMode.MULTIPLE) { - boolean oldValue = mCheckStates.get(position); - mCheckStates.put(position, value); - -@@ -729,6 +733,7 @@ - /** - * Clear any choices previously set - */ -+ @SuppressWarnings("unused") - public void clearChoices() { - if (mCheckStates != null) { - mCheckStates.clear(); -@@ -742,27 +747,28 @@ - } - - /** -- * @see #setChoiceMode(int) -+ * @see #setChoiceMode(ChoiceMode) - * - * @return The current choice mode - */ -+ @SuppressWarnings("unused") - public ChoiceMode getChoiceMode() { - return mChoiceMode; - } - - /** - * Defines the choice behavior for the List. By default, Lists do not have any choice behavior -- * ({@link #CHOICE_MODE_NONE}). By setting the choiceMode to {@link #CHOICE_MODE_SINGLE}, the -+ * ({@link ChoiceMode#NONE}). By setting the choiceMode to {@link ChoiceMode#SINGLE}, the - * List allows up to one item to be in a chosen state. By setting the choiceMode to -- * {@link #CHOICE_MODE_MULTIPLE}, the list allows any number of items to be chosen. -+ * {@link ChoiceMode#MULTIPLE}, the list allows any number of items to be chosen. - * -- * @param choiceMode One of {@link #CHOICE_MODE_NONE}, {@link #CHOICE_MODE_SINGLE}, or -- * {@link #CHOICE_MODE_MULTIPLE} -+ * @param choiceMode One of {@link ChoiceMode#NONE}, {@link ChoiceMode#SINGLE}, or -+ * {@link ChoiceMode#MULTIPLE} - */ - public void setChoiceMode(ChoiceMode choiceMode) { - mChoiceMode = choiceMode; - -- if (mChoiceMode.compareTo(ChoiceMode.NONE) != 0) { -+ if (mChoiceMode != ChoiceMode.NONE) { - if (mCheckStates == null) { - mCheckStates = new SparseBooleanArray(); - } -@@ -813,8 +819,7 @@ - mHasStableIds = adapter.hasStableIds(); - mAreAllItemsSelectable = adapter.areAllItemsEnabled(); - -- if (mChoiceMode.compareTo(ChoiceMode.NONE) != 0 && mHasStableIds && -- mCheckedIdStates == null) { -+ if (mChoiceMode != ChoiceMode.NONE && mHasStableIds && mCheckedIdStates == null) { - mCheckedIdStates = new LongSparseArray<Integer>(); - } - -@@ -1268,7 +1273,7 @@ - - @Override - public boolean onInterceptTouchEvent(MotionEvent ev) { -- if (!mIsAttached) { -+ if (!mIsAttached || mAdapter == null) { - return false; - } - -@@ -1354,7 +1359,7 @@ - return isClickable() || isLongClickable(); - } - -- if (!mIsAttached) { -+ if (!mIsAttached || mAdapter == null) { - return false; - } - -@@ -1477,7 +1482,7 @@ - final float x = ev.getX(); - final float y = ev.getY(); - -- boolean inList = false; -+ final boolean inList; - if (mIsVertical) { - inList = x > getPaddingLeft() && x < getWidth() - getPaddingRight(); - } else { -@@ -1731,7 +1736,7 @@ - } - - // TODO: Use some form of smooth scroll instead -- trackMotionScroll(viewportSize); -+ scrollListItemsBy(viewportSize); - return true; - } - return false; -@@ -1746,7 +1751,7 @@ - } - - // TODO: Use some form of smooth scroll instead -- trackMotionScroll(-viewportSize); -+ scrollListItemsBy(-viewportSize); - return true; - } - return false; -@@ -2077,7 +2082,7 @@ - newFocus = FocusFinder.getInstance().findNextFocus(this, oldFocus, direction); - } else { - if (direction == View.FOCUS_DOWN || direction == View.FOCUS_RIGHT) { -- final int start = (mIsVertical ? getPaddingTop() : getPaddingLeft()); -+ final int start = getStartEdge(); - - final int selectedStart; - if (selectedView != null) { -@@ -2088,12 +2093,11 @@ - - searchPoint = Math.max(selectedStart, start); - } else { -- final int end = (mIsVertical ? getHeight() - getPaddingBottom() : -- getWidth() - getPaddingRight()); -+ final int end = getEndEdge(); - - final int selectedEnd; - if (selectedView != null) { -- selectedEnd = (mIsVertical ? selectedView.getBottom() : selectedView.getRight()); -+ selectedEnd = getChildEndEdge(selectedView); - } else { - selectedEnd = end; - } -@@ -2242,7 +2246,7 @@ - } - - if (amountToScroll > 0) { -- trackMotionScroll(direction == View.FOCUS_UP || direction == View.FOCUS_LEFT ? -+ scrollListItemsBy(direction == View.FOCUS_UP || direction == View.FOCUS_LEFT ? - amountToScroll : -amountToScroll); - needToRedraw = true; - } -@@ -2304,8 +2308,7 @@ - final int numChildren = getChildCount(); - - if (direction == View.FOCUS_DOWN || direction == View.FOCUS_RIGHT) { -- final int end = (mIsVertical ? getHeight() - getPaddingBottom() : -- getWidth() - getPaddingRight()); -+ final int end = getEndEdge(); - - int indexToMakeVisible = numChildren - 1; - if (nextSelectedPosition != INVALID_POSITION) { -@@ -2320,10 +2323,8 @@ - goalEnd -= getArrowScrollPreviewLength(); - } - -- final int viewToMakeVisibleStart = -- (mIsVertical ? viewToMakeVisible.getTop() : viewToMakeVisible.getLeft()); -- final int viewToMakeVisibleEnd = -- (mIsVertical ? viewToMakeVisible.getBottom() : viewToMakeVisible.getRight()); -+ final int viewToMakeVisibleStart = getChildStartEdge(viewToMakeVisible); -+ final int viewToMakeVisibleEnd = getChildEndEdge(viewToMakeVisible); - - if (viewToMakeVisibleEnd <= goalEnd) { - // Target item is fully visible -@@ -2339,8 +2340,7 @@ - int amountToScroll = (viewToMakeVisibleEnd - goalEnd); - - if (mFirstPosition + numChildren == mItemCount) { -- final View lastChild = getChildAt(numChildren - 1); -- final int lastChildEnd = (mIsVertical ? lastChild.getBottom() : lastChild.getRight()); -+ final int lastChildEnd = getChildEndEdge(getChildAt(numChildren - 1)); - - // Last is last in list -> Make sure we don't scroll past it - final int max = lastChildEnd - end; -@@ -2349,7 +2349,7 @@ - - return Math.min(amountToScroll, getMaxScrollAmount()); - } else { -- final int start = (mIsVertical ? getPaddingTop() : getPaddingLeft()); -+ final int start = getStartEdge(); - - int indexToMakeVisible = 0; - if (nextSelectedPosition != INVALID_POSITION) { -@@ -2364,10 +2364,8 @@ - goalStart += getArrowScrollPreviewLength(); - } - -- final int viewToMakeVisibleStart = -- (mIsVertical ? viewToMakeVisible.getTop() : viewToMakeVisible.getLeft()); -- final int viewToMakeVisibleEnd = -- (mIsVertical ? viewToMakeVisible.getBottom() : viewToMakeVisible.getRight()); -+ final int viewToMakeVisibleStart = getChildStartEdge(viewToMakeVisible); -+ final int viewToMakeVisibleEnd = getChildEndEdge(viewToMakeVisible); - - if (viewToMakeVisibleStart >= goalStart) { - // Item is fully visible -@@ -2383,8 +2381,7 @@ - int amountToScroll = (goalStart - viewToMakeVisibleStart); - - if (mFirstPosition == 0) { -- final View firstChild = getChildAt(0); -- final int firstChildStart = (mIsVertical ? firstChild.getTop() : firstChild.getLeft()); -+ final int firstChildStart = getChildStartEdge(getChildAt(0)); - - // First is first in list -> make sure we don't scroll past it - final int max = start - firstChildStart; -@@ -2416,7 +2413,7 @@ - offsetDescendantRectToMyCoords(newFocus, mTempRect); - - if (direction == View.FOCUS_UP || direction == View.FOCUS_LEFT) { -- final int start = (mIsVertical ? getPaddingTop() : getPaddingLeft()); -+ final int start = getStartEdge(); - final int newFocusStart = (mIsVertical ? mTempRect.top : mTempRect.left); - - if (newFocusStart < start) { -@@ -2426,8 +2423,7 @@ - } - } - } else { -- final int end = (mIsVertical ? getHeight() - getPaddingBottom() : -- getWidth() - getPaddingRight()); -+ final int end = getEndEdge(); - final int newFocusEnd = (mIsVertical ? mTempRect.bottom : mTempRect.right); - - if (newFocusEnd > end) { -@@ -2452,9 +2448,8 @@ - descendant.getDrawingRect(mTempRect); - offsetDescendantRectToMyCoords(descendant, mTempRect); - -- final int start = (mIsVertical ? getPaddingTop() : getPaddingLeft()); -- final int end = (mIsVertical ? getHeight() - getPaddingBottom() : -- getWidth() - getPaddingRight()); -+ final int start = getStartEdge(); -+ final int end = getEndEdge(); - - final int viewStart = (mIsVertical ? mTempRect.top : mTempRect.left); - final int viewEnd = (mIsVertical ? mTempRect.bottom : mTempRect.right); -@@ -2741,7 +2736,7 @@ - motionViewPrevStart = (mIsVertical ? motionView.getTop() : motionView.getLeft()); - } - -- boolean atEdge = trackMotionScroll(delta); -+ boolean atEdge = scrollListItemsBy(delta); - - motionView = this.getChildAt(motionIndex); - if (motionView != null) { -@@ -2821,7 +2816,7 @@ - ViewCompat.postInvalidateOnAnimation(this); - } - -- trackMotionScroll(delta); -+ scrollListItemsBy(delta); - mTouchMode = TOUCH_MODE_DRAGGING; - - // We did not scroll the full amount. Treat this essentially like the -@@ -2901,10 +2896,8 @@ - } - - for (int i = 0; i < childCount; i++) { -- View v = getChildAt(i); -- -- if ((mIsVertical && motionPos <= v.getBottom()) || -- (!mIsVertical && motionPos <= v.getRight())) { -+ final View v = getChildAt(i); -+ if (motionPos <= getChildEndEdge(v)) { - return mFirstPosition + i; - } - } -@@ -2935,6 +2928,26 @@ - return vc.getScaledOverscrollDistance(); - } - -+ private int getStartEdge() { -+ return (mIsVertical ? getPaddingTop() : getPaddingLeft()); -+ } -+ -+ private int getEndEdge() { -+ if (mIsVertical) { -+ return (getHeight() - getPaddingBottom()); -+ } else { -+ return (getWidth() - getPaddingRight()); -+ } -+ } -+ -+ private int getChildStartEdge(View child) { -+ return (mIsVertical ? child.getTop() : child.getLeft()); -+ } -+ -+ private int getChildEndEdge(View child) { -+ return (mIsVertical ? child.getBottom() : child.getRight()); -+ } -+ - private boolean contentFits() { - final int childCount = getChildCount(); - if (childCount == 0) { -@@ -2948,18 +2961,8 @@ - View first = getChildAt(0); - View last = getChildAt(childCount - 1); - -- if (mIsVertical) { -- return first.getTop() >= getPaddingTop() && -- last.getBottom() <= getHeight() - getPaddingBottom(); -- } else { -- return first.getLeft() >= getPaddingLeft() && -- last.getRight() <= getWidth() - getPaddingRight(); -- } -- } -- -- private void updateScrollbarsDirection() { -- setHorizontalScrollBarEnabled(!mIsVertical); -- setVerticalScrollBarEnabled(mIsVertical); -+ return (getChildStartEdge(first) >= getStartEdge() && -+ getChildEndEdge(last) <= getEndEdge()); - } - - private void triggerCheckForTap() { -@@ -2997,17 +3000,14 @@ - removeCallbacks(mPendingCheckForLongPress); - } - -- boolean trackMotionScroll(int incrementalDelta) { -+ private boolean scrollListItemsBy(int incrementalDelta) { - final int childCount = getChildCount(); - if (childCount == 0) { - return true; - } - -- final View first = getChildAt(0); -- final int firstStart = (mIsVertical ? first.getTop() : first.getLeft()); -- -- final View last = getChildAt(childCount - 1); -- final int lastEnd = (mIsVertical ? last.getBottom() : last.getRight()); -+ final int firstStart = getChildStartEdge(getChildAt(0)); -+ final int lastEnd = getChildEndEdge(getChildAt(childCount - 1)); - - final int paddingTop = getPaddingTop(); - final int paddingBottom = getPaddingBottom(); -@@ -3017,8 +3017,7 @@ - final int paddingStart = (mIsVertical ? paddingTop : paddingLeft); - - final int spaceBefore = paddingStart - firstStart; -- final int end = (mIsVertical ? getHeight() - paddingBottom : -- getWidth() - paddingRight); -+ final int end = getEndEdge(); - final int spaceAfter = lastEnd - end; - - final int size; -@@ -3059,7 +3058,7 @@ - - for (int i = 0; i < childCount; i++) { - final View child = getChildAt(i); -- final int childEnd = (mIsVertical ? child.getBottom() : child.getRight()); -+ final int childEnd = getChildEndEdge(child); - - if (childEnd >= childrenStart) { - break; -@@ -3073,7 +3072,7 @@ - - for (int i = childCount - 1; i >= 0; i--) { - final View child = getChildAt(i); -- final int childStart = (mIsVertical ? child.getTop() : child.getLeft()); -+ final int childStart = getChildStartEdge(child); - - if (childStart <= childrenEnd) { - break; -@@ -3140,11 +3139,7 @@ - - @TargetApi(5) - private boolean awakenScrollbarsInternal() { -- if (Build.VERSION.SDK_INT >= 5) { -- return super.awakenScrollBars(); -- } else { -- return false; -- } -+ return (Build.VERSION.SDK_INT >= 5) && super.awakenScrollBars(); - } - - @Override -@@ -3163,7 +3158,7 @@ - final int diff = (int) (pos - mLastTouchPos); - mLastTouchPos = pos; - -- final boolean stopped = trackMotionScroll(diff); -+ final boolean stopped = scrollListItemsBy(diff); - - if (!stopped && !mScroller.isFinished()) { - ViewCompat.postInvalidateOnAnimation(this); -@@ -3210,7 +3205,7 @@ - } - - final int restoreCount = canvas.save(); -- final int height = getHeight() - getPaddingTop() - getPaddingBottom(); -+ final int height = getHeight(); - - canvas.translate(0, height); - canvas.rotate(270); -@@ -3226,8 +3221,8 @@ - } - - final int restoreCount = canvas.save(); -- final int width = getWidth() - getPaddingLeft() - getPaddingRight(); -- final int height = getHeight() - getPaddingTop() - getPaddingBottom(); -+ final int width = getWidth(); -+ final int height = getHeight(); - - if (mIsVertical) { - canvas.translate(-width, height); -@@ -3683,6 +3678,10 @@ - } - } - -+ public void scrollBy(int offset) { -+ scrollListItemsBy(offset); -+ } -+ - @Override - public boolean dispatchKeyEvent(KeyEvent event) { - // Dispatch in the normal way -@@ -3814,9 +3813,8 @@ - return; - } - -- final int start = (mIsVertical ? getPaddingTop() : getPaddingLeft()); -- final int end = -- (mIsVertical ? getHeight() - getPaddingBottom() : getWidth() - getPaddingRight()); -+ final int start = getStartEdge(); -+ final int end = getEndEdge(); - - int childCount = getChildCount(); - int index = 0; -@@ -4084,8 +4082,8 @@ - int end) { - final int selectedPosition = mSelectedPosition; - -- final int oldSelectedStart = (mIsVertical ? oldSelected.getTop() : oldSelected.getLeft()); -- final int oldSelectedEnd = (mIsVertical ? oldSelected.getBottom() : oldSelected.getRight()); -+ final int oldSelectedStart = getChildStartEdge(oldSelected); -+ final int oldSelectedEnd = getChildEndEdge(oldSelected); - - View selected = null; - -@@ -4118,8 +4116,8 @@ - // Now put the new selection (B) below that - selected = makeAndAddView(selectedPosition, oldSelectedEnd + itemMargin, true, true); - -- final int selectedStart = (mIsVertical ? selected.getTop() : selected.getLeft()); -- final int selectedEnd = (mIsVertical ? selected.getBottom() : selected.getRight()); -+ final int selectedStart = getChildStartEdge(selected); -+ final int selectedEnd = getChildEndEdge(selected); - - // Some of the newly selected item extends below the bottom of the list - if (selectedEnd > end) { -@@ -4178,8 +4176,8 @@ - selected = makeAndAddView(selectedPosition, oldSelectedStart, false, true); - } - -- final int selectedStart = (mIsVertical ? selected.getTop() : selected.getLeft()); -- final int selectedEnd = (mIsVertical ? selected.getBottom() : selected.getRight()); -+ final int selectedStart = getChildStartEdge(selected); -+ final int selectedEnd = getChildEndEdge(selected); - - // Some of the newly selected item extends above the top of the list - if (selectedStart < start) { -@@ -4210,8 +4208,8 @@ - - selected = makeAndAddView(selectedPosition, oldSelectedStart, true, true); - -- final int selectedStart = (mIsVertical ? selected.getTop() : selected.getLeft()); -- final int selectedEnd = (mIsVertical ? selected.getBottom() : selected.getRight()); -+ final int selectedStart = getChildStartEdge(selected); -+ final int selectedEnd = getChildEndEdge(selected); - - // We're staying still... - if (oldSelectedStart < start) { -@@ -4272,7 +4270,7 @@ - } - - private void handleDataChanged() { -- if (mChoiceMode.compareTo(ChoiceMode.NONE) != 0 && mAdapter != null && mAdapter.hasStableIds()) { -+ if (mChoiceMode != ChoiceMode.NONE && mAdapter != null && mAdapter.hasStableIds()) { - confirmCheckedPositionsById(); - } - -@@ -4406,9 +4404,8 @@ - int selectedStart = 0; - int selectedPosition; - -- final int start = (mIsVertical ? getPaddingTop() : getPaddingLeft()); -- final int end = -- (mIsVertical ? getHeight() - getPaddingBottom() : getWidth() - getPaddingRight()); -+ final int start = getStartEdge(); -+ final int end = getEndEdge(); - - final int firstPosition = mFirstPosition; - final int toPosition = mResurrectToPosition; -@@ -4445,8 +4442,8 @@ - - for (int i = childCount - 1; i >= 0; i--) { - final View child = getChildAt(i); -- final int childStart = (mIsVertical ? child.getTop() : child.getLeft()); -- final int childEnd = (mIsVertical ? child.getBottom() : child.getRight()); -+ final int childStart = getChildStartEdge(child); -+ final int childEnd = getChildEndEdge(child); - - if (i == childCount - 1) { - selectedStart = childStart; -@@ -4718,7 +4715,7 @@ - recycleBin.addScrapView(child, -1); - } - -- returnedWidth += child.getMeasuredHeight(); -+ returnedWidth += child.getMeasuredWidth(); - - if (returnedWidth >= maxWidth) { - // We went over, figure out which width to return. If returnedWidth > maxWidth, -@@ -4810,11 +4807,10 @@ - child.setPressed(isPressed); - } - -- if (mChoiceMode.compareTo(ChoiceMode.NONE) != 0 && mCheckStates != null) { -+ if (mChoiceMode != ChoiceMode.NONE && mCheckStates != null) { - if (child instanceof Checkable) { - ((Checkable) child).setChecked(mCheckStates.get(position)); -- } else if (getContext().getApplicationInfo().targetSdkVersion -- >= Build.VERSION_CODES.HONEYCOMB) { -+ } else if (Build.VERSION.SDK_INT >= HONEYCOMB) { - child.setActivated(mCheckStates.get(position)); - } - } -@@ -4847,26 +4843,17 @@ - - if (down) { - final int paddingStart = (mIsVertical ? getPaddingTop() : getPaddingLeft()); -- -- final int lastEnd; -- if (mIsVertical) { -- lastEnd = getChildAt(childCount - 1).getBottom(); -- } else { -- lastEnd = getChildAt(childCount - 1).getRight(); -- } -+ final int lastEnd = getChildEndEdge(getChildAt(childCount - 1)); - - final int offset = (childCount > 0 ? lastEnd + mItemMargin : paddingStart); - fillAfter(mFirstPosition + childCount, offset); - correctTooHigh(getChildCount()); - } else { -- final int end; -+ final int end = getEndEdge(); - final int firstStart; -- - if (mIsVertical) { -- end = getHeight() - getPaddingBottom(); - firstStart = getChildAt(0).getTop(); - } else { -- end = getWidth() - getPaddingRight(); - firstStart = getChildAt(0).getLeft(); - } - -@@ -4879,7 +4866,7 @@ - private View fillBefore(int pos, int nextOffset) { - View selectedView = null; - -- final int start = (mIsVertical ? getPaddingTop() : getPaddingLeft()); -+ final int start = getStartEdge(); - - while (nextOffset > start && pos >= 0) { - boolean isSelected = (pos == mSelectedPosition); -@@ -4906,19 +4893,13 @@ - private View fillAfter(int pos, int nextOffset) { - View selectedView = null; - -- final int end = -- (mIsVertical ? getHeight() - getPaddingBottom() : getWidth() - getPaddingRight()); -+ final int end = getEndEdge(); - - while (nextOffset < end && pos < mItemCount) { - boolean selected = (pos == mSelectedPosition); - - View child = makeAndAddView(pos, nextOffset, true, selected); -- -- if (mIsVertical) { -- nextOffset = child.getBottom() + mItemMargin; -- } else { -- nextOffset = child.getRight() + mItemMargin; -- } -+ nextOffset = getChildEndEdge(child) + mItemMargin; - - if (selected) { - selectedView = child; -@@ -4937,25 +4918,13 @@ - // Possibly changed again in fillBefore if we add rows above this one. - mFirstPosition = position; - -- final int itemMargin = mItemMargin; -- -- final int offsetBefore; -- if (mIsVertical) { -- offsetBefore = temp.getTop() - itemMargin; -- } else { -- offsetBefore = temp.getLeft() - itemMargin; -- } -+ final int offsetBefore = getChildStartEdge(temp) + mItemMargin; - final View before = fillBefore(position - 1, offsetBefore); - - // This will correct for the top of the first view not touching the top of the list - adjustViewsStartOrEnd(); - -- final int offsetAfter; -- if (mIsVertical) { -- offsetAfter = temp.getBottom() + itemMargin; -- } else { -- offsetAfter = temp.getRight() + itemMargin; -- } -+ final int offsetAfter = getChildEndEdge(temp) + mItemMargin; - final View after = fillAfter(position + 1, offsetAfter); - - final int childCount = getChildCount(); -@@ -5009,37 +4978,22 @@ - } - - private void fillBeforeAndAfter(View selected, int position) { -- final int itemMargin = mItemMargin; -- -- final int offsetBefore; -- if (mIsVertical) { -- offsetBefore = selected.getTop() - itemMargin; -- } else { -- offsetBefore = selected.getLeft() - itemMargin; -- } -- -+ final int offsetBefore = getChildStartEdge(selected) + mItemMargin; - fillBefore(position - 1, offsetBefore); - - adjustViewsStartOrEnd(); - -- final int offsetAfter; -- if (mIsVertical) { -- offsetAfter = selected.getBottom() + itemMargin; -- } else { -- offsetAfter = selected.getRight() + itemMargin; -- } -- -+ final int offsetAfter = getChildEndEdge(selected) + mItemMargin; - fillAfter(position + 1, offsetAfter); - } - - private View fillFromSelection(int selectedTop, int start, int end) { - final int selectedPosition = mSelectedPosition; -- View selected; - -- selected = makeAndAddView(selectedPosition, selectedTop, true, true); -+ View selected = makeAndAddView(selectedPosition, selectedTop, true, true); - -- final int selectedStart = (mIsVertical ? selected.getTop() : selected.getLeft()); -- final int selectedEnd = (mIsVertical ? selected.getBottom() : selected.getRight()); -+ final int selectedStart = getChildStartEdge(selected); -+ final int selectedEnd = getChildEndEdge(selected); - - // Some of the newly selected item extends below the bottom of the list - if (selectedEnd > end) { -@@ -5085,28 +5039,19 @@ - return; - } - -- // Get the last child ... -- final View lastChild = getChildAt(childCount - 1); -- -- // ... and its end edge -- final int lastEnd; -- if (mIsVertical) { -- lastEnd = lastChild.getBottom(); -- } else { -- lastEnd = lastChild.getRight(); -- } -+ // Get the last child end edge -+ final int lastEnd = getChildEndEdge(getChildAt(childCount - 1)); - - // This is bottom of our drawable area -- final int start = (mIsVertical ? getPaddingTop() : getPaddingLeft()); -- final int end = -- (mIsVertical ? getHeight() - getPaddingBottom() : getWidth() - getPaddingRight()); -+ final int start = getStartEdge(); -+ final int end = getEndEdge(); - - // This is how far the end edge of the last view is from the end of the - // drawable area - int endOffset = end - lastEnd; - - View firstChild = getChildAt(0); -- int firstStart = (mIsVertical ? firstChild.getTop() : firstChild.getLeft()); -+ int firstStart = getChildStartEdge(firstChild); - - // Make sure we are 1) Too high, and 2) Either there are more rows above the - // first row or the first row is scrolled off the top of the drawable area -@@ -5120,7 +5065,7 @@ - offsetChildren(endOffset); - - if (mFirstPosition > 0) { -- firstStart = (mIsVertical ? firstChild.getTop() : firstChild.getLeft()); -+ firstStart = getChildStartEdge(firstChild); - - // Fill the gap that was opened above mFirstPosition with more rows, if - // possible -@@ -5142,21 +5087,15 @@ - final View first = getChildAt(0); - final int firstStart = (mIsVertical ? first.getTop() : first.getLeft()); - -- final int start = (mIsVertical ? getPaddingTop() : getPaddingLeft()); -- -- final int end; -- if (mIsVertical) { -- end = getHeight() - getPaddingBottom(); -- } else { -- end = getWidth() - getPaddingRight(); -- } -+ final int start = getStartEdge(); -+ final int end = getEndEdge(); - - // This is how far the start edge of the first view is from the start of the - // drawable area - int startOffset = firstStart - start; - - View last = getChildAt(childCount - 1); -- int lastEnd = (mIsVertical ? last.getBottom() : last.getRight()); -+ int lastEnd = getChildEndEdge(last); - - int lastPosition = mFirstPosition + childCount - 1; - -@@ -5174,7 +5113,7 @@ - offsetChildren(-startOffset); - - if (lastPosition < mItemCount - 1) { -- lastEnd = (mIsVertical ? last.getBottom() : last.getRight()); -+ lastEnd = getChildEndEdge(last); - - // Fill the gap that was opened below the last position with more rows, if - // possible -@@ -5366,6 +5305,8 @@ - } - - void resetState() { -+ mScroller.forceFinished(true); -+ - removeAllViewsInLayout(); - - mSelectedStart = 0; -@@ -5419,7 +5360,7 @@ - mSyncPosition = mFirstPosition; - - if (child != null) { -- mSpecificStart = child.getTop(); -+ mSpecificStart = (mIsVertical ? child.getTop() : child.getLeft()); - } - - mSyncMode = SYNC_FIRST_POSITION; -@@ -5435,16 +5376,13 @@ - final int firstPos = mFirstPosition; - final int count = getChildCount(); - -- final boolean useActivated = getContext().getApplicationInfo().targetSdkVersion -- >= Build.VERSION_CODES.HONEYCOMB; -- - for (int i = 0; i < count; i++) { - final View child = getChildAt(i); - final int position = firstPos + i; - - if (child instanceof Checkable) { - ((Checkable) child).setChecked(mCheckStates.get(position)); -- } else if (useActivated) { -+ } else if (Build.VERSION.SDK_INT >= HONEYCOMB) { - child.setActivated(mCheckStates.get(position)); - } - } -@@ -5454,7 +5392,7 @@ - public boolean performItemClick(View view, int position, long id) { - boolean checkedStateChanged = false; - -- if (mChoiceMode.compareTo(ChoiceMode.MULTIPLE) == 0) { -+ if (mChoiceMode == ChoiceMode.MULTIPLE) { - boolean checked = !mCheckStates.get(position, false); - mCheckStates.put(position, checked); - -@@ -5473,7 +5411,7 @@ - } - - checkedStateChanged = true; -- } else if (mChoiceMode.compareTo(ChoiceMode.SINGLE) == 0) { -+ } else if (mChoiceMode == ChoiceMode.SINGLE) { - boolean checked = !mCheckStates.get(position, false); - if (checked) { - mCheckStates.clear(); -@@ -5699,14 +5637,14 @@ - super(width, height); - - if (this.width == MATCH_PARENT) { -- Log.w(LOGTAG, "Constructing LayoutParams with width FILL_PARENT " + -+ Log.w(LOGTAG, "Constructing LayoutParams with width MATCH_PARENT " + - "does not make much sense as the view might change orientation. " + - "Falling back to WRAP_CONTENT"); - this.width = WRAP_CONTENT; - } - - if (this.height == MATCH_PARENT) { -- Log.w(LOGTAG, "Constructing LayoutParams with height FILL_PARENT " + -+ Log.w(LOGTAG, "Constructing LayoutParams with height MATCH_PARENT " + - "does not make much sense as the view might change orientation. " + - "Falling back to WRAP_CONTENT"); - this.height = WRAP_CONTENT; -@@ -5735,7 +5673,7 @@ - super(other); - - if (this.width == MATCH_PARENT) { -- Log.w(LOGTAG, "Constructing LayoutParams with height MATCH_PARENT - " + -+ Log.w(LOGTAG, "Constructing LayoutParams with width MATCH_PARENT - " + - "does not make much sense as the view might change orientation. " + - "Falling back to WRAP_CONTENT"); - this.width = WRAP_CONTENT; -@@ -5786,11 +5724,8 @@ - } else { - final int typeCount = mViewTypeCount; - for (int i = 0; i < typeCount; i++) { -- final ArrayList<View> scrap = mScrapViews[i]; -- final int scrapCount = scrap.size(); -- -- for (int j = 0; j < scrapCount; j++) { -- scrap.get(j).forceLayout(); -+ for (View scrap : mScrapViews[i]) { -+ scrap.forceLayout(); - } - } - } -@@ -6120,7 +6055,7 @@ - // Force one here to make sure that the state of the list matches - // the state of the adapter. - if (mDataChanged) { -- onLayout(false, getLeft(), getTop(), getRight(), getBottom()); -+ layout(getLeft(), getTop(), getRight(), getBottom()); - } - } else { - if (mEmptyView != null) { -@@ -6525,16 +6460,10 @@ - return false; - - case AccessibilityNodeInfoCompat.ACTION_CLICK: -- if (isClickable()) { -- return performItemClick(host, position, id); -- } -- return false; -+ return isClickable() && performItemClick(host, position, id); - - case AccessibilityNodeInfoCompat.ACTION_LONG_CLICK: -- if (isLongClickable()) { -- return performLongPress(host, position, id); -- } -- return false; -+ return isLongClickable() && performLongPress(host, position, id); - } - - return false; diff --git a/data/patches/gnuzilla-bug-1036286-1.patch b/data/patches/gnuzilla-bug-1036286-1.patch deleted file mode 100644 index a5d3110..0000000 --- a/data/patches/gnuzilla-bug-1036286-1.patch +++ /dev/null @@ -1,188 +0,0 @@ ---- a/mozglue/linker/ElfLoader.cpp -+++ a/mozglue/linker/ElfLoader.cpp -@@ -960,28 +960,28 @@ static uint64_t ProcessTimeStamp_Now() - /* Data structure used to pass data to the temporary signal handler, - * as well as triggering a test crash. */ - struct TmpData { - volatile int crash_int; - volatile uint64_t crash_timestamp; - }; - - SEGVHandler::SEGVHandler() --: registeredHandler(false), signalHandlingBroken(false) --, signalHandlingSlow(false) -+: initialized(false), registeredHandler(false), signalHandlingBroken(true) -+, signalHandlingSlow(true) - { - /* Initialize oldStack.ss_flags to an invalid value when used to set - * an alternative stack, meaning we haven't got information about the -- * original alternative stack and thus don't mean to restore it */ -+ * original alternative stack and thus don't mean to restore it in -+ * the desctructor. */ - oldStack.ss_flags = SS_ONSTACK; -- if (!Divert(sigaction, __wrap_sigaction)) -- return; - - /* Get the current segfault signal handler. */ -- sys_sigaction(SIGSEGV, nullptr, &this->action); -+ struct sigaction old_action; -+ sys_sigaction(SIGSEGV, nullptr, &old_action); - - /* Some devices don't provide useful information to their SIGSEGV handlers, - * making it impossible for on-demand decompression to work. To check if - * we're on such a device, setup a temporary handler and deliberately - * trigger a segfault. The handler will set signalHandlingBroken if the - * provided information is bogus. - * Some other devices have a kernel option enabled that makes SIGSEGV handler - * have an overhead so high that it affects how on-demand decompression -@@ -1000,21 +1000,33 @@ SEGVHandler::SEGVHandler() - if (sys_sigaction(SIGSEGV, &action, nullptr)) - return; - - TmpData *data = reinterpret_cast<TmpData*>(stackPtr.get()); - data->crash_timestamp = ProcessTimeStamp_Now(); - mprotect(stackPtr, stackPtr.GetLength(), PROT_NONE); - data->crash_int = 123; - /* Restore the original segfault signal handler. */ -- sys_sigaction(SIGSEGV, &this->action, nullptr); -+ sys_sigaction(SIGSEGV, &old_action, nullptr); - stackPtr.Assign(MAP_FAILED, 0); -+} -+ -+void -+SEGVHandler::FinishInitialization() -+{ -+ /* Ideally, we'd need some locking here, but in practice, we're not -+ * going to race with another thread. */ -+ initialized = true; -+ - if (signalHandlingBroken || signalHandlingSlow) - return; - -+ if (!Divert(sigaction, __wrap_sigaction)) -+ return; -+ - /* Setup an alternative stack if the already existing one is not big - * enough, or if there is none. */ - if (sigaltstack(nullptr, &oldStack) == 0) { - if (oldStack.ss_flags == SS_ONSTACK) - oldStack.ss_flags = 0; - if (!oldStack.ss_sp || oldStack.ss_size < stackSize) { - stackPtr.Assign(MemoryRange::mmap(nullptr, stackSize, - PROT_READ | PROT_WRITE, -@@ -1028,17 +1040,17 @@ SEGVHandler::SEGVHandler() - if (sigaltstack(&stack, nullptr) != 0) - return; - } - } - /* Register our own handler, and store the already registered one in - * SEGVHandler's struct sigaction member */ - action.sa_sigaction = &SEGVHandler::handler; - action.sa_flags = SA_SIGINFO | SA_NODEFER | SA_ONSTACK; -- registeredHandler = !sys_sigaction(SIGSEGV, &action, nullptr); -+ registeredHandler = !sys_sigaction(SIGSEGV, &action, &this->action); - } - - SEGVHandler::~SEGVHandler() - { - /* Restore alternative stack for signals */ - if (oldStack.ss_flags != SS_ONSTACK) - sigaltstack(&oldStack, nullptr); - /* Restore original signal handler */ -@@ -1048,28 +1060,28 @@ SEGVHandler::~SEGVHandler() - - /* Test handler for a deliberately triggered SIGSEGV that determines whether - * useful information is provided to signal handlers, particularly whether - * si_addr is filled in properly, and whether the segfault handler is called - * quickly enough. */ - void SEGVHandler::test_handler(int signum, siginfo_t *info, void *context) - { - SEGVHandler &that = ElfLoader::Singleton; -- if (signum != SIGSEGV || -- info == nullptr || info->si_addr != that.stackPtr.get()) -- that.signalHandlingBroken = true; -+ if (signum == SIGSEGV && info && -+ info->si_addr == that.stackPtr.get()) -+ that.signalHandlingBroken = false; - mprotect(that.stackPtr, that.stackPtr.GetLength(), PROT_READ | PROT_WRITE); - TmpData *data = reinterpret_cast<TmpData*>(that.stackPtr.get()); - uint64_t latency = ProcessTimeStamp_Now() - data->crash_timestamp; - DEBUG_LOG("SEGVHandler latency: %" PRIu64, latency); - /* See bug 886736 for timings on different devices, 150 µs is reasonably above -- * the latency on "working" devices and seems to be reasonably fast to incur -- * a huge overhead to on-demand decompression. */ -- if (latency > 150000) -- that.signalHandlingSlow = true; -+ * the latency on "working" devices and seems to be reasonably fast not to -+ * incur a huge overhead to on-demand decompression. */ -+ if (latency <= 150000) -+ that.signalHandlingSlow = false; - } - - /* TODO: "properly" handle signal masks and flags */ - void SEGVHandler::handler(int signum, siginfo_t *info, void *context) - { - //ASSERT(signum == SIGSEGV); - DEBUG_LOG("Caught segmentation fault @%p", info->si_addr); - ---- a/mozglue/linker/ElfLoader.h -+++ a/mozglue/linker/ElfLoader.h -@@ -307,32 +307,40 @@ private: - * faults within the address space of the loaded libraries. It however - * allows a handler to be set for faults in other places, and redispatches - * to the handler set through signal() or sigaction(). - */ - class SEGVHandler - { - public: - bool hasRegisteredHandler() { -+ if (! initialized) -+ FinishInitialization(); - return registeredHandler; - } - - bool isSignalHandlingBroken() { - return signalHandlingBroken; - } - - protected: - SEGVHandler(); - ~SEGVHandler(); - - private: - static int __wrap_sigaction(int signum, const struct sigaction *act, - struct sigaction *oldact); - - /** -+ * The constructor doesn't do all initialization, and the tail is done -+ * at a later time. -+ */ -+ void FinishInitialization(); -+ -+ /** - * SIGSEGV handler registered with __wrap_signal or __wrap_sigaction. - */ - struct sigaction action; - - /** - * ElfLoader SIGSEGV handler. - */ - static void handler(int signum, siginfo_t *info, void *context); -@@ -354,16 +362,17 @@ private: - stack_t oldStack; - - /** - * Pointer to an alternative stack for signals. Only set if oldStack is - * not set or not big enough. - */ - MappedPtr stackPtr; - -+ bool initialized; - bool registeredHandler; - bool signalHandlingBroken; - bool signalHandlingSlow; - }; - - /** - * Elf Loader class in charge of loading and bookkeeping libraries. - */ diff --git a/data/patches/gnuzilla-bug-1036286-2.patch b/data/patches/gnuzilla-bug-1036286-2.patch deleted file mode 100644 index 6708062..0000000 --- a/data/patches/gnuzilla-bug-1036286-2.patch +++ /dev/null @@ -1,105 +0,0 @@ ---- a/mozglue/linker/CustomElf.cpp -+++ a/mozglue/linker/CustomElf.cpp -@@ -1,16 +1,17 @@ - /* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - - #include <cstring> - #include <sys/mman.h> - #include <vector> - #include <dlfcn.h> -+#include <signal.h> - #include "CustomElf.h" - #include "Mappable.h" - #include "Logging.h" - - using namespace Elf; - using namespace mozilla; - - /* TODO: Fill ElfLoader::Singleton.lastError on errors. */ -@@ -348,16 +349,21 @@ CustomElf::GetSymbolPtrInDeps(const char - if (strcmp(symbol + 2, "dso_handle") == 0) - return const_cast<CustomElf *>(this); - if (strcmp(symbol + 2, "moz_linker_stats") == 0) - return FunctionPtr(&ElfLoader::stats); - #ifdef __ARM_EABI__ - if (strcmp(symbol + 2, "gnu_Unwind_Find_exidx") == 0) - return FunctionPtr(__wrap___gnu_Unwind_Find_exidx); - #endif -+ } else if (symbol[0] == 's' && symbol[1] == 'i') { -+ if (strcmp(symbol + 2, "gnal") == 0) -+ return FunctionPtr(signal); -+ if (strcmp(symbol + 2, "gaction") == 0) -+ return FunctionPtr(sigaction); - } - - #define MISSING_FLASH_SYMNAME_START "_ZN7android10VectorImpl19reservedVectorImpl" - - // Android changed some symbols that Flash depended on in 4.4, - // so stub those out here - if (strncmp(symbol, - MISSING_FLASH_SYMNAME_START, ---- a/mozglue/linker/ElfLoader.cpp -+++ a/mozglue/linker/ElfLoader.cpp -@@ -1014,17 +1014,59 @@ SEGVHandler::FinishInitialization() - { - /* Ideally, we'd need some locking here, but in practice, we're not - * going to race with another thread. */ - initialized = true; - - if (signalHandlingBroken || signalHandlingSlow) - return; - -- if (!Divert(sigaction, __wrap_sigaction)) -+ typedef int (*sigaction_func)(int, const struct sigaction *, -+ struct sigaction *); -+ -+ sigaction_func libc_sigaction; -+ -+#if defined(ANDROID) -+ /* Android > 4.4 comes with a sigaction wrapper in a LD_PRELOADed library -+ * (libsigchain) for ART. That wrapper kind of does the same trick as we -+ * do, so we need extra care in handling it. -+ * - Divert the libc's sigaction, assuming the LD_PRELOADed library uses -+ * it under the hood (which is more or less true according to the source -+ * of that library, since it's doing a lookup in RTLD_NEXT) -+ * - With the LD_PRELOADed library in place, all calls to sigaction from -+ * from system libraries will go to the LD_PRELOADed library. -+ * - The LD_PRELOADed library calls to sigaction go to our __wrap_sigaction. -+ * - The calls to sigaction from libraries faulty.lib loads are sent to -+ * the LD_PRELOADed library. -+ * In practice, for signal handling, this means: -+ * - The signal handler registered to the kernel is ours. -+ * - Our handler redispatches to the LD_PRELOADed library's if there's a -+ * segfault we don't handle. -+ * - The LD_PRELOADed library redispatches according to whatever system -+ * library or faulty.lib-loaded library set with sigaction. -+ * -+ * When there is no sigaction wrapper in place: -+ * - Divert the libc's sigaction. -+ * - Calls to sigaction from system library and faulty.lib-loaded libraries -+ * all go to the libc's sigaction, which end up in our __wrap_sigaction. -+ * - The signal handler registered to the kernel is ours. -+ * - Our handler redispatches according to whatever system library or -+ * faulty.lib-loaded library set with sigaction. -+ */ -+ void *libc = dlopen("libc.so", RTLD_GLOBAL | RTLD_LAZY); -+ if (libc) { -+ libc_sigaction = -+ reinterpret_cast<sigaction_func>(dlsym(libc, "sigaction")); -+ } else -+#endif -+ { -+ libc_sigaction = sigaction; -+ } -+ -+ if (!Divert(libc_sigaction, __wrap_sigaction)) - return; - - /* Setup an alternative stack if the already existing one is not big - * enough, or if there is none. */ - if (sigaltstack(nullptr, &oldStack) == 0) { - if (oldStack.ss_flags == SS_ONSTACK) - oldStack.ss_flags = 0; - if (!oldStack.ss_sp || oldStack.ss_size < stackSize) { diff --git a/data/patches/gnuzilla-bug-1050780.patch b/data/patches/gnuzilla-bug-1050780.patch deleted file mode 100644 index b142dc7..0000000 --- a/data/patches/gnuzilla-bug-1050780.patch +++ /dev/null @@ -1,53 +0,0 @@ -# HG changeset patch -# User Lucas Rocha <lucasr@mozilla.com> - -Bug 1050780 - Avoid disabled items in GeckoMenu's adapter (r=margaret) - -diff --git a/mobile/android/base/menu/GeckoMenu.java b/mobile/android/base/menu/GeckoMenu.java -index eff2a51..cd2404b 100644 ---- a/mobile/android/base/menu/GeckoMenu.java -+++ b/mobile/android/base/menu/GeckoMenu.java -@@ -781,17 +781,19 @@ public class GeckoMenu extends ListView - public boolean areAllItemsEnabled() { - // Setting this to true is a workaround to fix disappearing - // dividers in the menu (bug 963249). - return true; - } - - @Override - public boolean isEnabled(int position) { -- return getItem(position).isEnabled(); -+ // Setting this to true is a workaround to fix disappearing -+ // dividers in the menu in L (bug 1050780). -+ return true; - } - - public void addMenuItem(GeckoMenuItem menuItem) { - if (mItems.contains(menuItem)) - return; - - // Insert it in proper order. - int index = 0; -diff --git a/mobile/android/base/resources/drawable/action_bar_button.xml b/mobile/android/base/resources/drawable/action_bar_button.xml -index 9cb7aa8..fe36bc4 100644 ---- a/mobile/android/base/resources/drawable/action_bar_button.xml -+++ b/mobile/android/base/resources/drawable/action_bar_button.xml -@@ -1,16 +1,17 @@ - <?xml version="1.0" encoding="utf-8"?> - <!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - - <selector xmlns:android="http://schemas.android.com/apk/res/android"> - -- <item android:state_pressed="true"> -+ <item android:state_pressed="true" -+ android:state_enabled="true"> - <shape> - <solid android:color="@color/highlight" /> - </shape> - </item> - - <item android:state_focused="true" - android:state_pressed="false"> - <shape> diff --git a/data/patches/gnuzilla-bug-1055166.patch b/data/patches/gnuzilla-bug-1055166.patch deleted file mode 100644 index 51b8ee5..0000000 --- a/data/patches/gnuzilla-bug-1055166.patch +++ /dev/null @@ -1,33 +0,0 @@ -From: James Willcox <snorp@snorp.net> -Bug 1055166 - Catch IllegalStateException when recycling Message - - - -diff --git a/mobile/android/base/GeckoAppShell.java b/mobile/android/base/GeckoAppShell.java -index b06547f8c8135542d27713bb8e4c5d0e7496bb17..a50538e1b3449d3767ad78ed3fb8e596bc1acfbb 100644 ---- a/mobile/android/base/GeckoAppShell.java -+++ b/mobile/android/base/GeckoAppShell.java -@@ -2478,17 +2478,22 @@ public class GeckoAppShell - // Our "queue is empty" message; see runGecko() - msg.recycle(); - return false; - } - if (msg.getTarget() == null) - Looper.myLooper().quit(); - else - msg.getTarget().dispatchMessage(msg); -- msg.recycle(); -+ -+ try { -+ msg.recycle(); -+ } catch (IllegalStateException e) { -+ // There is nothing we can do here so just eat it -+ } - return true; - } - - @WrapElementForJNI - public static void notifyWakeLockChanged(String topic, String state) { - if (getGeckoInterface() != null) - getGeckoInterface().notifyWakeLockChanged(topic, state); - } diff --git a/data/patches/gnuzilla-bug-1058778.patch b/data/patches/gnuzilla-bug-1058778.patch deleted file mode 100644 index 27d5097..0000000 --- a/data/patches/gnuzilla-bug-1058778.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/security/build/moz.build 2015-01-06 05:07:59.000000000 +0000 -+++ b/security/build/moz.build 2015-01-30 21:55:40.988341831 +0000 -@@ -10,5 +10,5 @@ - - FORCE_SHARED_LIB = True - --if CONFIG['OS_TARGET'] == 'WINNT': -- DEFFILE = 'nss3.def' -+ if CONFIG['OS_TARGET'] == 'WINNT': -+ DEFFILE = 'nss3.def' diff --git a/data/patches/gnuzilla-bug-1089931.patch b/data/patches/gnuzilla-bug-1089931.patch deleted file mode 100644 index cfd019f..0000000 --- a/data/patches/gnuzilla-bug-1089931.patch +++ /dev/null @@ -1,40 +0,0 @@ -https://bugzilla.mozilla.org/show_bug.cgi?id=1089931 ---- a/toolkit/crashreporter/google-breakpad/src/common/android/include/ucontext.h -+++ a/toolkit/crashreporter/google-breakpad/src/common/android/include/ucontext.h -@@ -26,31 +26,30 @@ - // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - #ifndef GOOGLE_BREAKPAD_COMMON_ANDROID_INCLUDE_UCONTEXT_H - #define GOOGLE_BREAKPAD_COMMON_ANDROID_INCLUDE_UCONTEXT_H - - #include <sys/cdefs.h> -+#include <signal.h> - --#ifdef __BIONIC_UCONTEXT_H --#include <ucontext.h> -+#ifdef __BIONIC_HAVE_UCONTEXT_H -+# include_next <ucontext.h> - #else -- --#include <sys/ucontext.h> -+# include <sys/ucontext.h> -+#endif // __BIONIC_UCONTEXT_H - - #ifdef __cplusplus - extern "C" { - #endif // __cplusplus - - // Provided by src/android/common/breakpad_getcontext.S - int breakpad_getcontext(ucontext_t* ucp); - - #define getcontext(x) breakpad_getcontext(x) - - #ifdef __cplusplus - } // extern "C" - #endif // __cplusplus - --#endif // __BIONIC_UCONTEXT_H -- - #endif // GOOGLE_BREAKPAD_COMMON_ANDROID_INCLUDE_UCONTEXT_H diff --git a/data/patches/gnuzilla-bug-1091987.patch b/data/patches/gnuzilla-bug-1091987.patch deleted file mode 100644 index d42b5df..0000000 --- a/data/patches/gnuzilla-bug-1091987.patch +++ /dev/null @@ -1,40 +0,0 @@ -https://bugzilla.mozilla.org/show_bug.cgi?id=1091987 - ---- a/widget/android/AndroidJavaWrappers.h -+++ a/widget/android/AndroidJavaWrappers.h -@@ -228,16 +228,17 @@ private: - static jmethodID jBeginDrawingMethod; - static jmethodID jDrawBackgroundMethod; - static jmethodID jDrawForegroundMethod; - static jmethodID jEndDrawingMethod; - }; - - enum { - // These keycode masks are not defined in android/keycodes.h: -+#if __ANDROID_API__ < 15 - AKEYCODE_ESCAPE = 111, - AKEYCODE_FORWARD_DEL = 112, - AKEYCODE_CTRL_LEFT = 113, - AKEYCODE_CTRL_RIGHT = 114, - AKEYCODE_CAPS_LOCK = 115, - AKEYCODE_SCROLL_LOCK = 116, - AKEYCODE_META_LEFT = 117, - AKEYCODE_META_RIGHT = 118, -@@ -337,16 +338,17 @@ enum { - AKEYCODE_EISU = 212, - AKEYCODE_MUHENKAN = 213, - AKEYCODE_HENKAN = 214, - AKEYCODE_KATAKANA_HIRAGANA = 215, - AKEYCODE_YEN = 216, - AKEYCODE_RO = 217, - AKEYCODE_KANA = 218, - AKEYCODE_ASSIST = 219, -+#endif - - AMETA_FUNCTION_ON = 0x00000008, - AMETA_CTRL_ON = 0x00001000, - AMETA_CTRL_LEFT_ON = 0x00002000, - AMETA_CTRL_RIGHT_ON = 0x00004000, - AMETA_META_ON = 0x00010000, - AMETA_META_LEFT_ON = 0x00020000, - AMETA_META_RIGHT_ON = 0x00040000, diff --git a/data/patches/gnuzilla-bug-1095298.patch b/data/patches/gnuzilla-bug-1095298.patch deleted file mode 100644 index aa075a2..0000000 --- a/data/patches/gnuzilla-bug-1095298.patch +++ /dev/null @@ -1,30 +0,0 @@ ---- a/intl/locale/src/nsLocaleService.cpp -+++ a/intl/locale/src/nsLocaleService.cpp -@@ -135,17 +135,25 @@ nsLocaleService::nsLocaleService(void) - - for( i = 0; i < LocaleListLength; i++ ) { - nsresult result; - // setlocale( , "") evaluates LC_* and LANG - char* lc_temp = setlocale(posix_locale_category[i], ""); - CopyASCIItoUTF16(LocaleList[i], category); - category_platform = category; - category_platform.AppendLiteral("##PLATFORM"); -- if (lc_temp != nullptr) { -+ -+ bool lc_temp_valid = lc_temp != nullptr; -+ -+#if defined(MOZ_WIDGET_ANDROID) -+ // Treat the "C" env as nothing useful. See Bug 1095298. -+ lc_temp_valid = lc_temp_valid && strcmp(lc_temp, "C") != 0; -+#endif -+ -+ if (lc_temp_valid) { - result = nsPosixLocale::GetXPLocale(lc_temp, xpLocale); - CopyASCIItoUTF16(lc_temp, platformLocale); - } else { - if ( lang == nullptr ) { - platformLocale.AssignLiteral("en_US"); - result = nsPosixLocale::GetXPLocale("en-US", xpLocale); - } else { - CopyASCIItoUTF16(lang, platformLocale); - diff --git a/data/patches/hack-manifest-packaging.patch b/data/patches/hack-manifest-packaging.patch deleted file mode 100644 index 5cede80..0000000 --- a/data/patches/hack-manifest-packaging.patch +++ /dev/null @@ -1,17 +0,0 @@ -# Hack allowing to bundle whole unpacked extensions without their manifests -# breaking the packaging process. - ---- a/python/mozbuild/mozpack/packager/__init__.py 2014-10-04 19:03:00.000000000 +0000 -+++ b/python/mozbuild/mozpack/packager/__init__.py 2014-10-06 12:07:03.000000000 +0000 -@@ -246,7 +246,10 @@ - ''' - assert not self._closed - if is_manifest(path): -- self._add_manifest_file(path, file) -+ if "chrome.manifest" in path and "extensions" in path: -+ self._file_queue.append(self.formatter.add, path, file) -+ else: -+ self._add_manifest_file(path, file) - elif path.endswith('.xpt'): - self._queue.append(self.formatter.add_interfaces, path, file) - else: diff --git a/data/patches/reduceGeckoPriority.patch b/data/patches/reduceGeckoPriority.patch deleted file mode 100644 index 843d2c8..0000000 --- a/data/patches/reduceGeckoPriority.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff -ur icecat-31.4.0.orig/mobile/android/base/util/ThreadUtils.java icecat-31.4.0/mobile/android/base/util/ThreadUtils.java ---- icecat-31.4.0.orig/mobile/android/base/util/ThreadUtils.java 2015-02-22 18:35:21.022789023 +0000 -+++ icecat-31.4.0/mobile/android/base/util/ThreadUtils.java 2015-02-22 22:09:50.518544343 +0000 -@@ -179,7 +179,13 @@ - * @param timeout Timeout in ms after which the priority will be reset - */ - public static void reduceGeckoPriority(long timeout) { -- if (!sIsGeckoPriorityReduced) { -+ if (Runtime.getRuntime().availableProcessors() > 1) { -+ // Don't reduce priority for multicore devices. We use availableProcessors() -+ // for its fast performance. It may give false negatives (i.e. multicore -+ // detected as single-core), but we can tolerate this behavior. -+ return; -+ } -+ if (!sIsGeckoPriorityReduced && sGeckoThread != null) { - sIsGeckoPriorityReduced = true; - sGeckoThread.setPriority(Thread.MIN_PRIORITY); - getUiHandler().postDelayed(sPriorityResetRunnable, timeout); diff --git a/data/patches/reorder-mobile_android_base_android-services_mozbuild.patch b/data/patches/reorder-mobile_android_base_android-services_mozbuild.patch deleted file mode 100644 index dd38815..0000000 --- a/data/patches/reorder-mobile_android_base_android-services_mozbuild.patch +++ /dev/null @@ -1,34 +0,0 @@ ---- a/mobile/android/base/android-services.mozbuild 2015-01-06 05:07:54.000000000 +0000 -+++ b/mobile/android/base/android-services.mozbuild 2015-02-02 02:59:30.180709918 +0000 -@@ -567,7 +567,7 @@ - 'fxa/authenticator/FxAccountAuthenticatorService.java', - 'fxa/authenticator/FxAccountLoginDelegate.java', - 'fxa/authenticator/FxAccountLoginException.java', -- 'fxa/FirefoxAccounts.java', -+ 'fxa/IceCatAccounts.java', - 'fxa/login/BaseRequestDelegate.java', - 'fxa/login/Cohabiting.java', - 'fxa/login/Doghouse.java', -@@ -709,8 +709,8 @@ - 'sync/repositories/android/CachedSQLiteOpenHelper.java', - 'sync/repositories/android/ClientsDatabase.java', - 'sync/repositories/android/ClientsDatabaseAccessor.java', -- 'sync/repositories/android/FennecTabsRepository.java', - 'sync/repositories/android/FormHistoryRepositorySession.java', -+ 'sync/repositories/android/IceCatMobileTabsRepository.java', - 'sync/repositories/android/PasswordsRepositorySession.java', - 'sync/repositories/android/RepoUtils.java', - 'sync/repositories/BookmarkNeedsReparentingException.java', -@@ -803,11 +803,11 @@ - 'sync/stage/CompletedStage.java', - 'sync/stage/EnsureClusterURLStage.java', - 'sync/stage/EnsureCrypto5KeysStage.java', -- 'sync/stage/FennecTabsServerSyncStage.java', - 'sync/stage/FetchInfoCollectionsStage.java', - 'sync/stage/FetchMetaGlobalStage.java', - 'sync/stage/FormHistoryServerSyncStage.java', - 'sync/stage/GlobalSyncStage.java', -+ 'sync/stage/IceCatMobileTabsServerSyncStage.java', - 'sync/stage/NoSuchStageException.java', - 'sync/stage/NoSyncIDException.java', - 'sync/stage/PasswordsServerSyncStage.java', diff --git a/data/patches/revert-gnuzilla-bug-973138.patch b/data/patches/revert-gnuzilla-bug-973138.patch deleted file mode 100644 index ffd3a68..0000000 --- a/data/patches/revert-gnuzilla-bug-973138.patch +++ /dev/null @@ -1,25 +0,0 @@ -This patch reverts fix for gnuzilla bug: -https://bugzilla.mozilla.org/show_bug.cgi?id=973138 -which introduces: -https://trac.torproject.org/projects/tor/ticket/12811 -https://bugzilla.mozilla.org/show_bug.cgi?id=1049366 - ---- a/mozglue/build/WindowsDllBlocklist.cpp 2015-01-27 19:17:08.585519129 +0100 -+++ b/mozglue/build/WindowsDllBlocklist.cpp 2015-01-30 00:42:10.817863012 +0100 -@@ -551,7 +551,7 @@ - printf_stderr("LdrLoadDll: dll name '%s'\n", dllName); - #endif - -- // Block a suspicious binary that uses various 12-digit hex strings -+/* // Block a suspicious binary that uses various 12-digit hex strings - // e.g. MovieMode.48CA2AEFA22D.dll (bug 973138) - char * dot = strchr(dllName, '.'); - if (dot && (strchr(dot+1, '.') == dot+13)) { -@@ -561,6 +561,7 @@ - return STATUS_DLL_NOT_FOUND; - } - } -+*/ - - // then compare to everything on the blocklist - info = &sWindowsDllBlocklist[0]; diff --git a/data/patches/torbrowser-bug-12811-2.patch b/data/patches/torbrowser-bug-12811-2.patch deleted file mode 100644 index e80e228..0000000 --- a/data/patches/torbrowser-bug-12811-2.patch +++ /dev/null @@ -1,33 +0,0 @@ -commit 73a628a5cebfa6dae1fca4c5fde072376ce4d06f -Author: Georg Koppen <gk at torproject.org> -Date: Fri Sep 12 09:37:39 2014 +0000 - - Bug 12811: Add MOZ_D3DCOMPILER_DLL iff available. - - It seems MOZ_D3DCOMPILER_DLL is not avilable when compiling with - mingw-w64. Trying to include it nevertheless breaks the packaging step - as `@BINPATH@/@MOZ_D3DCOMPILER_DLL@` resolves to `bin/` which results - in including all the things beginning with a `bin/` (again) which is - treated as an error in case they got already included. - - This got fixed more or less by accident by bug 999260 which did not make - it into ESR 31 (https://hg.mozilla.org/mozilla-central/rev/8b48386fc226). ---- - browser/installer/package-manifest.in | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in -index 521538f..c9117cf 100644 ---- a/browser/installer/package-manifest.in -+++ b/browser/installer/package-manifest.in -@@ -597,8 +597,10 @@ - #ifdef MOZ_ANGLE_RENDERER - @BINPATH@/libEGL.dll - @BINPATH@/libGLESv2.dll -+#ifdef MOZ_D3DCOMPILER_DLL_PATH - @BINPATH@/@MOZ_D3DCOMPILER_DLL@ - #endif -+#endif - - ; [Browser Chrome Files] - @BINPATH@/browser/chrome.manifest diff --git a/data/patches/torbrowser-bug-12811.patch b/data/patches/torbrowser-bug-12811.patch deleted file mode 100644 index 6b062f4..0000000 --- a/data/patches/torbrowser-bug-12811.patch +++ /dev/null @@ -1,19 +0,0 @@ - Bug 12811: WTypes.h -> wtypes.h ---- - .../google-breakpad/src/google_breakpad/common/breakpad_types.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/breakpad_types.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/breakpad_types.h -index a60c5f3..e92436f 100644 ---- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/breakpad_types.h -+++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/breakpad_types.h -@@ -58,7 +58,7 @@ - */ - #include BREAKPAD_CUSTOM_STDINT_H - #else --#include <WTypes.h> -+#include <wtypes.h> - - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - diff --git a/data/patches/torbrowser-bug-9837.patch b/data/patches/torbrowser-bug-9837.patch deleted file mode 100644 index f62f0cb..0000000 --- a/data/patches/torbrowser-bug-9837.patch +++ /dev/null @@ -1,22 +0,0 @@ - Disable uninstall helper.exe on Win32. - - Reworked for Icecat - - Fixes 'make package' breakage on Windows builds. See - https://trac.torproject.org/projects/tor/ticket/9837 ---- - browser/installer/package-manifest.in | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - ---- a/browser/installer/package-manifest.in 2015-01-30 23:33:42.296298458 +0100 -+++ b/browser/installer/package-manifest.in 2015-02-02 03:22:28.480752158 +0100 -@@ -43,7 +43,7 @@ - @BINPATH@/browser/@PREF_DIR@/firefox-l10n.js - @BINPATH@/browser/searchplugins/* - #ifdef XP_WIN32 --@BINPATH@/uninstall/helper.exe -+;@BINPATH@/uninstall/helper.exe - #endif - #ifdef MOZ_UPDATER - @BINPATH@/update.locale - diff --git a/data/searchplugins/creativecommons.xml b/data/searchplugins/creativecommons.xml new file mode 100644 index 0000000..6478369 --- /dev/null +++ b/data/searchplugins/creativecommons.xml @@ -0,0 +1,11 @@ +<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/"> +<ShortName>Creative Commons</ShortName> +<Description>Find photos, movies, music, and text to rip, sample, mash, and share.</Description> +<InputEncoding>utf-8</InputEncoding> +<Image width="16" height="16">data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAJUSURBVDiNjZO9S1thGMXPvTfJFbnkipNkLLS0ksFg0M0lf4CboNCEgIIg/RiKtEOn0qGWTtbVoBYcIji10I9J0ApWCjp0kRaXdhHjTW4+uGnur4NJ8GOwZ3nf4TnnfZ5z3scAdBGGYdyVdN+yrGHTNNOtVqsVhuG+pO+S3gE/LtV3BIxzPDJNc8FxHGN0dNRKpVIGoJ2dndr+/r5Vr9cl6bmkN0AoSQIEyHXdj5KYnZ3F932uolKpkM/nK5KQ9FmSCZwLOI7zQBLr6+vXiFdRLBaDtsiTTve3YrFYkM/nbyR3MDU1dSKpLumO+vr6Xruui+d5AFSrVVZWVtjY2KDRaABwdHTE4uIie3t7AJTLZaLRaFXSCyUSid1MJgOA53n09/eTTqdJJpPMzc2xurqKbduMj48Tj8fZ3d0FYHBw8FjSezmOU56fnwdgeXkZ27ap1WpUKhWazSZjY2Nks1kASqVSd4zp6eljSX/MtiHdRDpnEATyfb+bkiSVSqXu3TCM8xgHBga+dkY4OzvDdV2GhoZIJBLMzMxQKBSIRqNkMhlisRhbW1sAJJPJn5I+KB6Pv7poou/7rK2tsbm5SRAEXROXlpY4ODgAoFarYdu2J+llN8ZcLvffMeZyud+SGpLuCVBPT89jSRQKhRvJxWKxISmU9JTOT5Rk9Pb2fpHE5OQkJycn14inp6dMTEx4bdM/SbKAy8sk6WEkElmwLCuSSqUYGRmxgHB7e7t+eHgYazabgaRnkt7SeZnr63xbUtYwjGHTNNNhGP4F9iR9a6/zr4v1/wDE1D9XlC4rrAAAAABJRU5ErkJggg==</Image> +<Url type="text/html" method="GET" template="http://search.creativecommons.org/" resultdomain="creativecommons.org"> + <Param name="q" value="{searchTerms}"/> + <Param name="sourceid" value="Mozilla-search"/> +</Url> +<SearchForm>http://search.creativecommons.org/</SearchForm> +</SearchPlugin> diff --git a/data/searchplugins/duckduckgo.xml b/data/searchplugins/duckduckgo.xml new file mode 100644 index 0000000..d2a5e06 --- /dev/null +++ b/data/searchplugins/duckduckgo.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/"> +<ShortName>DuckDuckGo</ShortName> +<Description>Search DuckDuckGo (SSL)</Description> +<InputEncoding>UTF-8</InputEncoding> +<LongName>DuckDuckGo Search (SSL)</LongName> +<Image width="16" height="16">data:image/x-icon;base64,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</Image> +<Url type="text/html" method="GET" template="https://duckduckgo.com/html"> + <Param name="q" value="{searchTerms}"/> + <Param name="t" value="gnu"/> +</Url> +</OpenSearchDescription> diff --git a/data/searchplugins/fsfdirectory.xml b/data/searchplugins/fsfdirectory.xml new file mode 100644 index 0000000..08bd6a1 --- /dev/null +++ b/data/searchplugins/fsfdirectory.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/"> +<ShortName>Free Software Directory</ShortName> +<Description>Free Software Directory (en)</Description> +<InputEncoding>UTF-8</InputEncoding> +<LongName>Free Software Directory (en)</LongName> +<Image width="16" height="16">data:image/x-icon;base64,AAABAAMAEBAQAAEABAAoAQAANgAAACAgEAABAAQA6AIAAF4BAAAwMBAAAQAEAGgGAABGBAAAKAAAABAAAAAgAAAAAQAEAAAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAP///wB8fL4AAACAACUlkgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiICIiMAIgASIgIiICICAgAiAAAiIAICICICIiACIgIgIgIiICICAgAiAAAiACIAIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAIAAAAEAAAAABAAQAAAAAAAACAAAAAAAAAAAAABAAAAAAAAAAaGi0ACMjkgDw8PgAQUGhAP///wAAAIAAnp7PAMrK5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFwVVVVVVVVVVVURFVVVVRERERVVERERVVVVERVVVVERVVERVRFZERVVVREVVVVRGVVVEVURVVEVVVURFVVVVVVVURFVEVVREVVVEREREVVV0REFVRFVURFVVREVVVVVERERVVURVVERVVURFVVVVREVVVVVEVVREVVVERVVVUURVVCFVRFVURVVVREMzM1VEVVRDVUQ0REVVVURERERVJERERVVERERVVVVVVVVVVVVQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAMAAAAGAAAAABAAQAAAAAAIAEAAAAAAAAAAAAABAAAAAAAAAA5eXzAFparQDMzOYAHByOAK+v2AD///8AAACAAIGBwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZhVVZmZmZmZmNVVVVRZmZFVVVVdmZmZmZhVVZmZmZmZlVVVVVVVmZFVVVVVWZmZmZhVVZmZmZmZVVVZmJVVWZFVSBVVVZmZmZhVVZmZmZmZVUGZmZVVWZFVWZnVVVmZmZhVVZmZmZmZnVmZmYVVWZFVWZmVVVmZmZhVVZmZmZmZmZmZmZVVWZFVWZmZVVmZmZhVVVVVVU2ZmZmZgVVVWZFVWZmZVVmZmZhVVVVVVU2ZmYVVVVVVmZFVWZmZVUWZmZhVVVVVVU2ZmVVVVVQZmZFVWZmZVUWZmZhVVZmZmZmZlVVVUZmZmZFVWZmZVVmZmZhVVZmZmZmYVVQZmZmZmZFVWZmZVVmZmZhVVZmZmZmZVVWZmZmZmZFVWZmVVVmZmZhVVZmZmZmYlVWZmZVVGZFVWZlVVVmZmZhVVVVVVVWZlVVZmVVVmZFVVVVVVZmZmZhVVVVVVVWZlVVVVVVNmZFVVVVVWZmZmZhVVVVVVVWZmZVVVVWZmZFVVVVZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==</Image> +<Url type="text/html" method="GET" template="https://directory.fsf.org/wiki"> + <Param name="title" value="Special:Search"/> + <Param name="search" value="{searchTerms}"/> +</Url> +</OpenSearchDescription> diff --git a/data/searchplugins/ixquick.xml b/data/searchplugins/ixquick.xml new file mode 100644 index 0000000..448f5fb --- /dev/null +++ b/data/searchplugins/ixquick.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/"> +<ShortName>Ixquick</ShortName> +<Description>Ixquick Search, adds Ixquick.com over HTTPS (POST) to your OpenSearch capable browser.</Description> +<InputEncoding>UTF-8</InputEncoding> +<Image width="16" height="16">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABiklEQVQ4jZ2RsUtCURTGz7/gn+Do0ODc6OgmSJCQLUougohveThZBpecXMRsEIxMjAyhlEeZpAiBvKLQNETSDC3wwQtzcPgarrmoj/DA5Q73fL/vnO8SNEo4eYIymmi1gLQe9WIZ0du31QDy+w/IXYE1Vl8NIOS/QMIjyF3RXGMpwBBqgsQGyFtFtPSxHMAuW2BSF6wwALsbglW+IRRHoGAP5G+CfDIMoSbYZQvsogaWlsGS92CJElL5B5D0/Am9WAZ5q9wx0OHiQGc2AbmKIHsWZD0GmSMgUwhCOAdFHfMVlNEE1lid7yw2uLPYmGVATglkOwNZ4tBZj5AqvCzOgF33uKNP5re7Atq5AW1nQRtJGD3naPdV7RCZ1OUju4rc2c7FZIn/7xeM/um+9iwfeyomcwSpYkMb0O6rPKjp2TqQoLMlZsE5gxltAEvLvNkcAUvLM6jREQet70Jn2tMGGB1x6DcPIb8O5hqFcA605kHqqroY0O4N4QxmoKjjOfFfSeUahP3T5ROsUr/tPVtLvBGVHwAAAABJRU5ErkJggg==</Image> +<Url type="text/html" method="POST" template="https://www.ixquick.com/do/search"> +<Param name="query" value="{searchTerms}"/> +<!-- +Uncomment to enable preferences by URL parameter +<Param name="prfh" value="lang_homepageEEEs/white/eng/N1Nfont_sizeEEEmediumN1Nrecent_results_filterEEE2N1Nlanguage_uiEEEenglishN1Ndisable_open_in_new_windowEEE1N1NsslEEE1N1Ncolor_schemeEEEwhiteN1Npower_refinementEEE1N1Ndisable_family_filterEEE1N1Nnum_of_resultsEEE50N1Npicture_privacyEEEonN1Ndisable_video_family_filterEEE1N1NsuggestionsEEE1N1N"/> +--> +</Url> +<moz:SearchForm>https://www.ixquick.com/</moz:SearchForm> +</OpenSearchDescription> diff --git a/data/searchplugins/startpage.xml b/data/searchplugins/startpage.xml new file mode 100644 index 0000000..0a28b8e --- /dev/null +++ b/data/searchplugins/startpage.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" +xmlns:moz="http://www.mozilla.org/2006/browser/search/"> +<ShortName>Startpage</ShortName> +<Description>Startpage Search, adds Startpage.com over HTTPS (POST) to your OpenSearch capable browser.</Description> +<InputEncoding>UTF-8</InputEncoding> +<Image width="16" height="16">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC5klEQVQ4jV3O329TZRzH8fMfnGvmRW+88sf+AYUFJAwWJxAhyqI4gUzMWkfUZeg6cMGFlq7LqXS6snVLdWzg5mrpzNlshpNMmjFCNMYbjMR4Ia16YcSe50fX5+3FKaPxSV7J9/l8k0++VvKWNomiJrFe1zivV0lu0VtGb1cZXdek7mhjxW9qE1tTxIqK2NpDmlhREy9q4kWFUygz9nEBp/AHTj13iprRDW2syLfanFtRDF2vW1EMrWiGrmvO31Bcen+cxccCuLaNa9tkjg/Ud5r4TW2sDwra9C8rwq4ivNzAVZxdVuSbAsw+28545wD5Jr8o82KIs8uaoW+0sd5bUqbXVfR+Vecq+lzJh8lbpF4Nk28K0D9fps9VDE7d3Sq5cKHAQEEZ6928NKGsIpRVhBYUPVlFT1Yy/Uw7rm1zrSlA75Uyp7KSd7KSSHgO17a52DXM6bwyVnBBmq6rkq6rijfmFAOLiv5FxVuZMrPNO3Btm7H2IG/OSbrnJOf6/IKRY8OcuqaMdeJzaTpnJN3zko3fagBUFASzkpMTJWae9kvmH2/GeSlMbluAmeYddE+V6M5KYx2dkeaVjOTeXzX+VYb8j5tcXNW8/aUi8rWmJ13i8lN+SW5bgMGT4xyfKNE5LTlxRRirIyPM5Y0qAH05xbFpSe4H/w9w788aryVLTNdLEnuDHJmUdExKjmaEsQ6nhfnul00Avvi+ygNpAHggDaV//HnQVXQkS3z25HZc28bZG+RwWvDypDDWwTFhIkuaxrf00yZHJgQP8zM5xf6U4NDwfT59Yjsje4IcSHkcSgtjPZ8UtDqC0wuK9FqVzinB61OC0Kzk978NP5drtDmCfQnBvoTHwch92hKCtoTH/jEPa3fco9H4jUfX3C3XOPCJ8HeOx57/aU14WC3nK7REH0mtam7/WuPSquaFhMfOaIWWqEdL1GNnzLcrWhfzsFpHPLMrVmngmee2VOo8P4/7dsd8bR8J8x95G/ePEZdcmgAAAABJRU5ErkJggg==</Image> +<Url type="text/html" method="POST" template="https://www.startpage.com/do/search"> +<Param name="query" value="{searchTerms}"/> +<!-- +Uncomment to enable preferences by URL parameter +<Param name="prfh" value="lang_homepageEEEs/white/eng/N1Nfont_sizeEEEmediumN1Nrecent_results_filterEEE2N1Nlanguage_uiEEEenglishN1Ndisable_open_in_new_windowEEE1N1NsslEEE1N1Ndisable_family_filterEEE1N1Nnum_of_resultsEEE50N1Npicture_privacyEEEonN1Ndisable_video_family_filterEEE1N1NsuggestionsEEE1N1N"/> +--> +</Url> +<moz:SearchForm>https://www.startpage.com/</moz:SearchForm> +</OpenSearchDescription> diff --git a/data/searchplugins/wikipedia.xml b/data/searchplugins/wikipedia.xml new file mode 100644 index 0000000..262e1b6 --- /dev/null +++ b/data/searchplugins/wikipedia.xml @@ -0,0 +1,14 @@ +<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/"> +<ShortName>Wikipedia</ShortName> +<InputEncoding>UTF-8</InputEncoding> +<Image width="16" height="16">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAHqSURBVHjapJUxb9NQFIW/JAip2xNS1/J+goeqUqeajdGVmFgwI1OcmYEgITFG7EgJQ+b2HzgbElJF+QU2iBl7YAFRnQ5+fnFcB0J8Jp/r53vPu+f6vYEA4JBTTjhkN/zkio9kAAihpyr1v/ijN7ovEHqiffFeDHTAdx6wL46HnPX4HM6HHNEHR0NGvRKMhvRE7wT3ACYssBggpyThIRMCAFaEzHhOiQWumfGFBQGQY0kB9EKSCsVCyKpQxUMhdOEMj4Vi91wIGX2uyNJtwTDHAgbjOUBJ/T50ETDAzCn0CiRpLkSd2VW1rqZR6uOpzHoWl40EkmkIlTIhNJc0bUSlSNNtCaZCKGtpyDZimXB92uhBhTEAHzx/BuQ8Isb62Dti16c7PahrNnbovFhXLGQaau4oqDSULDx/BcCl55cEDTUdCqqagWcXbjpqWD8ZWxRUGq5ZOTYhAXLHV0DU/qCtQLJCkZuM0PHQGThvL152JJh5M61SP2CpMpmmgdsTFDJCiaaubq0haQ7Q3xLUZq4NqzS0DNzWxNq8ksgbFmGgwf95oFgijJuB6v9L3Fx2HSg3XeExZxv1xuSEXQt/o8fqg9cDHfB15zuxjRuOETrfu/5b9bhcf+mlRmLgr/cTgp1vqR9c8YlvALcDAPr5jIx+4LKcAAAAAElFTkSuQmCC</Image> +<Url type="application/x-suggestions+json" method="GET" template="http://en.wikipedia.org/w/api.php"> + <Param name="action" value="opensearch"/> + <Param name="search" value="{searchTerms}"/> +</Url> +<Url type="text/html" method="GET" template="http://en.wikipedia.org/wiki/Special:Search"> + <Param name="search" value="{searchTerms}"/> + <Param name="sourceid" value="Mozilla-search"/> +</Url> +<SearchForm>http://en.wikipedia.org/wiki/Special:Search</SearchForm> +</SearchPlugin> |