From 628ddf9b60dc248813b54ac21d42b3a8627df527 Mon Sep 17 00:00:00 2001 From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Sun, 11 Nov 2018 16:44:36 +0100 Subject: [PATCH] Release 70.0.3538.102 --- CHANGELOG.md | 5 + filters/adblock_entries.h | 77 +- ...46_Allow-playing-audio-in-background.patch | 2 +- ...reText-add-fingerprinting-mitigation.patch | 4 +- ...tions-in-bookmarks-activity-and-page.patch | 11 +- ...-account-access-permission-on-reboot.patch | 12 +- ...BRM089_kill-TOS-and-metrics-opt-out.patch} | 0 patches/BRM089_kill-Vision.patch | 156 --- ...work.patch => BRM090_kill-Translate.patch} | 21 +- patches/BRM091_kill-Vision.patch | 113 ++ ...92_kill-Location-fall-back-to-system.patch | 48 + patches/BRM093_kill-Auth.patch | 161 +++ patches/BRM094_kill-GCM.patch | 977 ++++++++++++++++++ ...mail-without-signing-in-to-Chromium.patch} | 0 ...ermanently-disable-query-in-omnibox.patch} | 0 ...iltin-autocomplete-for-chrome-flags.patch} | 0 ...history-requirement-of-user-gesture.patch} | 0 ...roll-position-changes-while-loading.patch} | 0 ...passwords-keyboard-accessory-option.patch} | 0 ...101_Enable-TLS-1.3-final-by-default.patch} | 0 ...tifications-to-default-search-engine.patch | 23 + ...03_Remove-contacts-picker-permission.patch | 37 + ...romos-displayed-in-bookmarks-manager.patch | 171 +++ 23 files changed, 1630 insertions(+), 188 deletions(-) rename patches/{BRM090_kill-TOS-and-metrics-opt-out.patch => BRM089_kill-TOS-and-metrics-opt-out.patch} (100%) delete mode 100644 patches/BRM089_kill-Vision.patch rename patches/{BRM091_kill-Translate-doesn-t-work.patch => BRM090_kill-Translate.patch} (81%) create mode 100644 patches/BRM091_kill-Vision.patch create mode 100644 patches/BRM092_kill-Location-fall-back-to-system.patch create mode 100644 patches/BRM093_kill-Auth.patch create mode 100644 patches/BRM094_kill-GCM.patch rename patches/{BRM092_Allow-sign-in-to-Google-sites-like-Gmail-without-signing-in-to-Chromium.patch => BRM095_Allow-sign-in-to-Google-sites-like-Gmail-without-signing-in-to-Chromium.patch} (100%) rename patches/{BRM093_Permanently-disable-query-in-omnibox.patch => BRM096_Permanently-disable-query-in-omnibox.patch} (100%) rename patches/{BRM094_Offer-builtin-autocomplete-for-chrome-flags.patch => BRM097_Offer-builtin-autocomplete-for-chrome-flags.patch} (100%) rename patches/{BRM095_Enable-history-requirement-of-user-gesture.patch => BRM098_Enable-history-requirement-of-user-gesture.patch} (100%) rename patches/{BRM096_Enable-serialization-of-scroll-position-changes-while-loading.patch => BRM099_Enable-serialization-of-scroll-position-changes-while-loading.patch} (100%) rename patches/{BRM097_Remove-passwords-keyboard-accessory-option.patch => BRM100_Remove-passwords-keyboard-accessory-option.patch} (100%) rename patches/{BRM098_Enable-TLS-1.3-final-by-default.patch => BRM101_Enable-TLS-1.3-final-by-default.patch} (100%) create mode 100644 patches/BRM102_Do-not-grant-notifications-to-default-search-engine.patch create mode 100644 patches/BRM103_Remove-contacts-picker-permission.patch create mode 100644 patches/BRM104_Disable-promos-displayed-in-bookmarks-manager.patch diff --git a/CHANGELOG.md b/CHANGELOG.md index eb07c568..5f1de70d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +# 70.0.3538.102 +* do not grant notifications to default search engine +* remove all promos from bookmark manager page +* re-introduced various patches to eradicate binary blob dependencies (only Cast left) + # 70.0.3538.95 * fix crash on bookmark edit activity (fixes https://github.com/bromite/bromite/issues/172) * fix slow chrome://flags (fixes https://github.com/bromite/bromite/issues/173) diff --git a/filters/adblock_entries.h b/filters/adblock_entries.h index 2b8e4322..15b23004 100644 --- a/filters/adblock_entries.h +++ b/filters/adblock_entries.h @@ -19,7 +19,7 @@ struct adblock_entry { const char **domains, **domains_skip; }; -#define ADBLOCK_ENTRY_COUNT 54616 +#define ADBLOCK_ENTRY_COUNT 54642 const char *m10030a28[] = { "/InsightTrk/", NULL }; const char *m10045299[] = { "award.sitekeuring.net^", NULL }; const char *m100458cd[] = { "eluhhfyxx.com^", NULL }; @@ -2905,6 +2905,7 @@ const char *m1cf8a296[] = { "sysomos.com/track/", NULL }; const char *m1cf915a7[] = { "xrpcbukuwdvkc.com^", NULL }; const char *m1cfabb7f[] = { "samlmqljptbd.com^", NULL }; const char *m1cfe890d[] = { "/adjs_", NULL }; +const char *m1d007dac[] = { "/counter_liveinternet.", NULL }; const char *m1d028d4b[] = { "mediaplus.fm/cntr.php?", NULL }; const char *m1d0571c2[] = { "/bcsensor.js", NULL }; const char *m1d064838[] = { "/embed-ad-", NULL }; @@ -3862,7 +3863,6 @@ const char *m2140190f[] = { "aboutads.quantcast.com^", NULL }; const char *m21401a97[] = { "webring.com/cgi-bin/logit?", NULL }; const char *m214624c5[] = { "bmhvaoxr.com^", NULL }; const char *m2147a020[] = { "vnekbyzxamo.bid^", NULL }; -const char *m21497b92[] = { "adsagony.com", NULL }; const char *m214c9fbc[] = { "mobinozer.com^", "^advert.js", NULL }; const char *m214e67f3[] = { "host-tracker.com^", NULL }; const char *m214f5479[] = { "viadeo.com/pub/", NULL }; @@ -6240,6 +6240,7 @@ const char *m2bf33dc6[] = { "levisites.com^", NULL }; const char *m2bf3960d[] = { "mzhyrgyo.bid^", NULL }; const char *m2bf3b512[] = { "eyjuwcrnu.bid^", NULL }; const char *m2bf914da[] = { "experteerads.com^", NULL }; +const char *m2bf9bb28[] = { "/ad-ace/", NULL }; const char *m2bf9d48b[] = { "zappos.com/karakoram/js/main.", NULL }; const char *m2bfba73d[] = { "sascdn.com/video/", NULL }; const char *m2bfd5561[] = { "ef867a1be4f83922.com^", NULL }; @@ -6457,6 +6458,7 @@ const char *m2cee6e52[] = { "60eaae1ac88a.online^", NULL }; const char *m2ceea9dd[] = { "/banner-ad/", NULL }; const char *m2cefc9aa[] = { "mmo4rpg.com^", ".gif", NULL }; const char *m2cf1b3b8[] = { "ettevotja.ee/templates/", "/images/advert.gif", NULL }; +const char *m2cf3fa2 [] = { "/sponsored_content-", NULL }; const char *m2cf48b1c[] = { "_advertisment.", NULL }; const char *m2cf4ee22[] = { "/sidebar-ads/", NULL }; const char *m2cf67f2e[] = { "/refads/", NULL }; @@ -7611,6 +7613,7 @@ const char *m3203e4da[] = { "/tracker/tracker.js", NULL }; const char *m3204cb37[] = { "kzawrekf.bid^", NULL }; const char *m3205cfc3[] = { "bigcommerce.com^", "^product_images^", NULL }; const char *m3205f48c[] = { "d258j801nsw1p7.cloudfront.net^", NULL }; +const char *m3209c23b[] = { "deltaleech.com/adframe.js", NULL }; const char *m3209e095[] = { "advprotraffic.com^", NULL }; const char *m320a641 [] = { "yxghdgwi.bid^", NULL }; const char *m320ac31d[] = { "netbiscuits.net^", "^analytics^", NULL }; @@ -7731,6 +7734,7 @@ const char *m3287e45f[] = { "s-yoolk-banner-assets.yoolk.com^", NULL }; const char *m32895de7[] = { "zjk24.com^", NULL }; const char *m3289bd6c[] = { "_advert_overview.", NULL }; const char *m328afc1b[] = { "468x60.php", NULL }; +const char *m328bed83[] = { "/GoogleAdSense-", NULL }; const char *m328c8a3a[] = { "_638x200_", NULL }; const char *m328d2805[] = { "/sp/delivery/", NULL }; const char *m328d8b40[] = { "clicsante.ca^", "^angulartics-google-tag-manager.min.js", NULL }; @@ -8544,6 +8548,7 @@ const char *m3632521e[] = { "d276dbe50af7e29d81.com^", NULL }; const char *m363369c [] = { "counter.1i.kz^", NULL }; const char *m3633bb1a[] = { "rate.ru^", NULL }; const char *m3633f6d8[] = { "clkfeed.com^", NULL }; +const char *m3634bc7b[] = { "xhcdn.com^", "^xpops.", NULL }; const char *m3634d986[] = { "phonedog.com/geo.php", NULL }; const char *m36355c8e[] = { "160x600.php", NULL }; const char *m36369600[] = { "view-ads.de^", NULL }; @@ -9716,9 +9721,11 @@ const char *m3bb5e3cc[] = { "adobedtm.com^", "^mbox-contents-", NULL }; const char *m3bb70dec[] = { "pokewatchers.com/ads.js", NULL }; const char *m3bb791a6[] = { "sqopuafrwvnouz.bid^", NULL }; const char *m3bb8cc2f[] = { ".cn/s.gif?", NULL }; +const char *m3bb94d3a[] = { "/ad-layers.", NULL }; const char *m3bb96a39[] = { "fybrwdikdsvzt.com^", NULL }; const char *m3bb9a68b[] = { "cl96rwprue.com^", NULL }; const char *m3bbb610f[] = { "213.174.140.38^", "^msn-", ".js", NULL }; +const char *m3bbb8bd1[] = { "/ad-layers-", NULL }; const char *m3bbc6fcc[] = { "randomarchive.com/js/linkify-jquery.min.js", NULL }; const char *m3bbd680a[] = { "powerlinks.com^", NULL }; const char *m3bbdcb3e[] = { "valshara.com^", NULL }; @@ -10309,6 +10316,7 @@ const char *m3e4bddea[] = { "l33tsite.info^", NULL }; const char *m3e4eb441[] = { "/uchkr.swf", NULL }; const char *m3e563584[] = { "arcadebannerexchange.org^", NULL }; const char *m3e564a89[] = { "/advert/", NULL }; +const char *m3e566177[] = { "dash.tmearn.com^", NULL }; const char *m3e568d2f[] = { "hoomefodl.com^", NULL }; const char *m3e56e3ed[] = { "pc1.io^", NULL }; const char *m3e57e96d[] = { "imwx.com/js/adstwo/adcontroller.js", NULL }; @@ -10406,6 +10414,7 @@ const char *m3eccadf9[] = { "/counter.lt?", NULL }; const char *m3ece4318[] = { "app.link^", NULL }; const char *m3ece5be6[] = { "satopsites.com^", "^banners^", NULL }; const char *m3ece726b[] = { "/webTracking.", NULL }; +const char *m3ed41b44[] = { "/sponsored_content/", NULL }; const char *m3ed42cf9[] = { "phncdn.com/js/fav_like_user_feed/", NULL }; const char *m3ed50475[] = { "-468x70.", NULL }; const char *m3ed6355c[] = { "affilae.com^", NULL }; @@ -12272,6 +12281,7 @@ const char *m47252ec9[] = { "stylight.net/track/", NULL }; const char *m4725f8a2[] = { "/globalAdTag.", NULL }; const char *m4726080a[] = { "/play?refer=", NULL }; const char *m472612e4[] = { "usfakdxuo.bid^", NULL }; +const char *m47290420[] = { "t2lgo.com^", NULL }; const char *m47297af6[] = { "4chan.org/support/", NULL }; const char *m472a3abd[] = { "glo-glo-oom.com^", NULL }; const char *m472a697c[] = { "xmlconfig.ltassrv.com^", NULL }; @@ -12570,6 +12580,7 @@ const char *m485c4a80[] = { "chaturbate.com/sitestats/openwindow/", NULL }; const char *m485dc2c4[] = { "folue.info/player/", ".js", NULL }; const char *m485e5ba1[] = { "ovchjqpdh.com^", NULL }; const char *m485e931a[] = { "dimestore.com^", NULL }; +const char *m485f2424[] = { "clyp.it^", "^log^", NULL }; const char *m485f543d[] = { "tcadops.ca^", NULL }; const char *m4860e744[] = { "/ad728x15.", NULL }; const char *m486294b8[] = { ".adnetwork.", NULL }; @@ -16930,6 +16941,7 @@ const char *m5c5488db[] = { "vfasewomnmco.com^", NULL }; const char *m5c551ecd[] = { "site-rips.org^", NULL }; const char *m5c57ed8c[] = { "thefile.me^", NULL }; const char *m5c580695[] = { "/fingerprint.js", NULL }; +const char *m5c586992[] = { "/targeting/render.", NULL }; const char *m5c5acd26[] = { "adserver.adreactor.com/js/libcode1_noajax.js", NULL }; const char *m5c5bcf7d[] = { "bahamaslocal.com/img/banners/", NULL }; const char *m5c5bfc41[] = { "virtualearth.net/mapcontrol/", "/veapiAnalytics.js", NULL }; @@ -18839,6 +18851,7 @@ const char *m64952963[] = { "mashery.com/analytics/", NULL }; const char *m6495690c[] = { "tm-awx.com/felix.min.js", NULL }; const char *m6496615c[] = { "channel4.com/foresee_c4/", NULL }; const char *m6496f6cd[] = { "/content_ad.", NULL }; +const char *m6497f928[] = { "cvtr.io^", NULL }; const char *m6498dbef[] = { "/ga-lite.", NULL }; const char *m64993dd5[] = { "/ad_locations/", NULL }; const char *m6499e122[] = { "/magiq-", NULL }; @@ -19095,6 +19108,7 @@ const char *m658d4db0[] = { "et.grabnetworks.com^", NULL }; const char *m658e4cd9[] = { "cashfiesta.com^", NULL }; const char *m659313c [] = { "longinglettuce.com^", NULL }; const char *m6593c7d3[] = { "linkwithin.com/pixel.png", NULL }; +const char *m65962340[] = { "/commercial/sponsor/", NULL }; const char *m65974820[] = { "trepit.pro^", NULL }; const char *m6598f32c[] = { "kinley.com^", NULL }; const char *m65991992[] = { "/affclick/", NULL }; @@ -21624,6 +21638,7 @@ const char *m70b1abb3[] = { "adnami.io^", NULL }; const char *m70b3411a[] = { "/adbox2.", NULL }; const char *m70b4233f[] = { "picsee.net/clk.js", NULL }; const char *m70b4ce45[] = { "media.truex.com/release/", "TrueXRenderer.js", NULL }; +const char *m70b5ca41[] = { "multporn.net/frunti_", NULL }; const char *m70b79e03[] = { "wmfsbxjcdsbkrw.com^", NULL }; const char *m70bbdcb4[] = { "/parking_caf_", NULL }; const char *m70bdc511[] = { "yukwxqnxwzghxb.com^", NULL }; @@ -23722,6 +23737,7 @@ const char *m7a18295a[] = { "intergi.com^", NULL }; const char *m7a184616[] = { "/ad-400.", NULL }; const char *m7a197b9a[] = { "partnermax.de^", NULL }; const char *m7a1c1e64[] = { "nike.com/cms/analytics-store-desktop.js", NULL }; +const char *m7a1c9e0 [] = { "/css/ad-", NULL }; const char *m7a1cc788[] = { "/meme_ad.", NULL }; const char *m7a1dc07e[] = { "-ads.js?", NULL }; const char *m7a1e1e7b[] = { "/commercial_horizontal.", NULL }; @@ -32091,6 +32107,7 @@ const char *ma06d2e1b[] = { "lapbekessbozpx.bid^", NULL }; const char *ma06fbd [] = { "/adline.", NULL }; const char *ma06ff08f[] = { "/ad_icons/", NULL }; const char *ma070c3c2[] = { "h-bid.com^", NULL }; +const char *ma07131ce[] = { "stackpathdns.com/static/", NULL }; const char *ma0715d96[] = { "ossdqciz.com^", NULL }; const char *ma0735840[] = { "baltchd.net^", NULL }; const char *ma0746ce7[] = { "nation.co.ke^", "_bg.png", NULL }; @@ -32930,6 +32947,7 @@ const char *ma4078cd5[] = { "filmey.com/Filmey.Ad.js", NULL }; const char *ma4079ba5[] = { "digwzeutydo.com^", NULL }; const char *ma407c8a0[] = { "jackettrain.com^", NULL }; const char *ma4082c3b[] = { "whoson.com/include.js?", NULL }; +const char *ma40901a9[] = { "usersegment.wpdigital.net^", NULL }; const char *ma40a1928[] = { "jkjoxlhkwnxd.com^", NULL }; const char *ma40aca3b[] = { "embed.docstoc.com/Flash.asmx/StoreReffer?", NULL }; const char *ma40b502c[] = { "adidas.com^", "^analytics^", NULL }; @@ -39009,6 +39027,7 @@ const char *mbf0dc1ec[] = { "sunmaker.com^", "^a_aid^", NULL }; const char *mbf1000c9[] = { "northclick-statistiken.de^", NULL }; const char *mbf11311b[] = { "ads.elefant.ro/ajs.php?", NULL }; const char *mbf12fecc[] = { "adserver.friendfinder.com^", NULL }; +const char *mbf1312c7[] = { "logger.kataweb.it^", NULL }; const char *mbf135bff[] = { "105app.com^", NULL }; const char *mbf13f88e[] = { "&adsize=", NULL }; const char *mbf15f99c[] = { "/puff_ad?", NULL }; @@ -40414,6 +40433,7 @@ const char *mc5941f5d[] = { "gtqfsxrrerzu.com^", NULL }; const char *mc594725a[] = { "cnn.com^", "^banner.html^^csiid^", NULL }; const char *mc594eade[] = { "lego.com^", "^affiliate^", NULL }; const char *mc595527 [] = { "/www/xengine/", NULL }; +const char *mc5956719[] = { "/track?", "&event=", NULL }; const char *mc595ad0f[] = { "asci.freenet.de^", NULL }; const char *mc5984fb [] = { "featence.com^", NULL }; const char *mc598574a[] = { "/AdvertisementShare.", NULL }; @@ -42107,6 +42127,7 @@ const char *mccfde3c [] = { "iwantmoar.net^", NULL }; const char *mcd01a2e7[] = { "irxtcbkoql.bid^", NULL }; const char *mcd0255b8[] = { "logo-net.co.uk^", NULL }; const char *mcd0595dc[] = { "redtube.com/htmllogin", NULL }; +const char *mcd079a85[] = { "nile.works^", NULL }; const char *mcd09a1d [] = { "/js.ng/channel_", NULL }; const char *mcd09ad24[] = { "postadsnow.com/panbanners/", NULL }; const char *mcd09b3ca[] = { "nadstive.com^", NULL }; @@ -46883,6 +46904,7 @@ const char *me224458e[] = { "thisav.com/js/thisav_pop.js", NULL }; const char *me225b91e[] = { "rtl.fr/stats/", NULL }; const char *me226c13f[] = { "bslqjxmltuel.bid^", NULL }; const char *me226ca5f[] = { "ultrastats.it^", NULL }; +const char *me2279319[] = { "/LoadAudienceSegs-", NULL }; const char *me2296fb8[] = { "furk.net/counter.yadro.ru/", NULL }; const char *me22a9546[] = { "korexo.com^", NULL }; const char *me22bbeae[] = { "exoplanetwar.com/l/landing.php?", NULL }; @@ -48092,6 +48114,7 @@ const char *me7d614cc[] = { "ltwlxoedrydz.com^", NULL }; const char *me7d6d3fe[] = { ".org/ad/", NULL }; const char *me7d87dc1[] = { "cheerfulrange.com^", NULL }; const char *me7d9502a[] = { "/gs-analytics-", NULL }; +const char *me7de3498[] = { "d23pi6hvdpcc5i.cloudfront.net^", NULL }; const char *me7de4bcd[] = { "ukvkloytfaw.bid^", NULL }; const char *me7de5b21[] = { "adbrn.com^", NULL }; const char *me7dec11e[] = { "propertyeu.info/peu_storage_banners/", NULL }; @@ -48509,6 +48532,7 @@ const char *me9b0a7aa[] = { "temnos.com^", NULL }; const char *me9b1663c[] = { "allnewspipeline.com^", "^Launch_Banner.", NULL }; const char *me9b4c1d4[] = { "realitytvworld.com/images/pixel.gif", NULL }; const char *me9b55ac0[] = { "ker.pic2pic.site^", NULL }; +const char *me9b764b0[] = { "_content/sponsored_", NULL }; const char *me9b7aa3a[] = { "sirablivefbxul.bid^", NULL }; const char *me9b9e9a4[] = { "uktv.co.uk/static/js/ads.js", NULL }; const char *me9bad382[] = { "globaldating.online^", NULL }; @@ -51598,6 +51622,7 @@ const char *mf7a0f3ce[] = { "traffic.tuberip.com^", NULL }; const char *mf7a1a817[] = { "qcogokgclksa.com^", NULL }; const char *mf7a22a53[] = { "c1e1084410050e34ef.com^", NULL }; const char *mf7a250bf[] = { "/ping.gif?", NULL }; +const char *mf7a256a2[] = { "_dfp_targeting.", NULL }; const char *mf7a5a634[] = { "/add728.", NULL }; const char *mf7a75abf[] = { "wvmtyaqdp.bid^", NULL }; const char *mf7a87c51[] = { "breakingburner.com/stats.html?", NULL }; @@ -52144,6 +52169,7 @@ const char *mf9ff8195[] = { ".650x100.", NULL }; const char *mfa0160b6[] = { "kbrwlgzazfnv.com^", NULL }; const char *mfa025436[] = { "shmential.co^", NULL }; const char *mfa03029 [] = { "340ca71c.space^", NULL }; +const char *mfa05857f[] = { "/CookieManager-bdl?", NULL }; const char *mfa063dab[] = { "pleaseletmeadvertise.com/.adcenter.", NULL }; const char *mfa0667a2[] = { "yahoo.com^", "^eyc-themis^", NULL }; const char *mfa079a73[] = { "slack.com/clog/track/", NULL }; @@ -53495,7 +53521,6 @@ const char *d143d3e80[] = { "verliga.net", NULL }; const char *d143df0d8[] = { "batmanstream.com", "collectivelyconscious.net", "live.robinwidget.com", NULL }; const char *d144b8e9 [] = { "hanime.tv", NULL }; const char *d145428c4[] = { "weather.com", NULL }; -const char *d146d9e46[] = { "dplay.dk", NULL }; const char *d146fc812[] = { "freeallmusic.net", NULL }; const char *d14781b7d[] = { "armstrongmywire.com", "atlanticbb.net", "bestbuy.com", "bresnan.net", "broadstripe.net", "buckeyecablesystem.net", "cableone.net", "centurylink.net", "charter.net", "cincinnatibell.net", "dish.net", "forbbbs.org", "gumtree.com.au", "hargray.net", "hawaiiantel.net", "hickorytech.net", "homeaway.co.uk", "knology.net", "livestrong.com", "mediacomtoday.com", "midco.net", "mybendbroadband.com", "mybrctv.com", "mycenturylink.com", "myconsolidated.net", "myepb.net", "mygrande.net", "mygvtc.com", "myhughesnet.com", "myritter.com", "northstate.net", "nwcable.net", "query.nytimes.com", "rentals.com", "search.rr.com", "searchresults.verizon.com", "suddenlink.net", "surewest.com", "synacor.net", "tds.net", "toshiba.com", "trustedreviews.com", "truvista.net", "windstream.net", "windstreambusiness.net", "wowway.net", "www.google.com", "zoover.co.uk", "zoover.com", NULL }; const char *d149b274c[] = { "dailygames.com", NULL }; @@ -53751,6 +53776,7 @@ const char *d37b98303[] = { "100percentfedup.com", "activistpost.com", "addictin const char *d37d130d7[] = { "spatialbuzz.com", NULL }; const char *d37d55046[] = { "rarbg.is", "rarbg.to", "rarbgmirror.com", "rarbgproxy.org", "rarbgprx.org", NULL }; const char *d37d76785[] = { "publicleech.xyz", "sznpaste.net", NULL }; +const char *d37f989cc[] = { "100percentfedup.com", "activistpost.com", "addictinginfo.com", "alfonzorachel.com", "allthingsvegas.com", "americansublime.com", "askmefast.com", "auntyacid.com", "barbwire.com", "bestfunnyjokes4u.com", "bighealthreport.com", "bipartisanreport.com", "breaking911.com", "bulletsfirst.net", "celebrity-gossip.net", "clashdaily.com", "classicalite.com", "collapse.news", "comicallyincorrect.com", "conservativebyte.com", "conservativevideos.com", "constitution.com", "coviral.com", "craigjames.com", "creepybasement.com", "crossmap.com", "cyberwar.news", "dailyfeed.co.uk", "dailyheadlines.net", "dailyhealthpost.com", "dailysurge.com", "dccrimestories.com", "deneenborelli.com", "digitaljournal.com", "eaglerising.com", "earnthenecklace.com", "enstarz.com", "evil.news", "fitnessconnoisseur.com", "foreverymom.com", "freedom.news", "freedomdaily.com", "freedomforce.com", "freedomoutpost.com", "girlsjustwannahaveguns.com", "glitch.news", "greatamericanrepublic.com", "groopspeak.com", "guardianlv.com", "guns.news", "gymflow100.com", "hallels.com", "hautereport.com", "healthstatus.com", "hngn.com", "honesttopaws.com", "ifyouonlynews.com", "infowars.com", "instigatornews.com", "intellectualconservative.com", "jobsnhire.com", "joeforamerica.com", "juicerhead.com", "justdiy.com", "kdramastars.com", "keepandbear.com", "kpopstarz.com", "lastresistance.com", "latinpost.com", "legalinsurrection.com", "liberty.news", "libertyalliance.com", "libertyunyielding.com", "medicine.news", "mentalflare.com", "minutemennews.com", "musictimes.com", "myscienceacademy.org", "natural.news", "naturalblaze.com", "naturalnews.com", "naturalsociety.com", "natureworldnews.com", "newser.com", "newseveryday.com", "newsthump.com", "oddee.com", "patriotnewswire.com", "patriotoutdoornews.com", "patriottribune.com", "pickthebrain.com", "politicaloutcast.com", "politichicks.com", "practicallyviral.com", "quirlycues.com", "rantlifestyle.com", "readysethealth.com", "realfarmacy.com", "realmomsrealreviews.com", "redhotchacha.com", "redmaryland.com", "returnofkings.com", "robotics.news", "shark-tank.com", "shedthoselbs.com", "slender.news", "sonsoflibertymedia.com", "spectator.org", "stevedeace.com", "stupid.news", "supercheats.com", "techconsumer.com", "techtimes.com", "theblacksphere.net", "theboredmind.com", "thefreethoughtproject.com", "thegatewaypundit.com", "themattwalshblog.com", "thepoke.co.uk", "therealside.com", "theviralmob.com", "tosavealife.com", "traileraddict.com", "truththeory.com", "twisted.news", "urbantabloid.com", "usherald.com", "valuewalk.com", "vcpost.com", "victoriajackson.com", "videogamesblogger.com", "viralnova.com", "viralthread.com", "visiontoamerica.com", "wakingtimes.com", "winningdemocrats.com", "xtribune.com", "youthhealthmag.com", NULL }; const char *d381ae572[] = { "espn.go.com", NULL }; const char *d3846dd25[] = { "activistpost.com", "addictinginfo.com", "alfonzorachel.com", "askmefast.com", "breathecast.com", "bulletsfirst.net", "clashdaily.com", "classicalite.com", "comicallyincorrect.com", "conservativebyte.com", "conservativevideos.com", "crossmap.com", "dailyheadlines.net", "dailysurge.com", "dccrimestories.com", "digitaljournal.com", "eaglerising.com", "enstarz.com", "girlsjustwannahaveguns.com", "greatamericanrepublic.com", "hngn.com", "infowars.com", "instigatornews.com", "joeforamerica.com", "kdramastars.com", "kpopstarz.com", "latinpost.com", "libertyunyielding.com", "minutemennews.com", "musictimes.com", "naturalblaze.com", "naturalnews.com", "natureworldnews.com", "newser.com", "oddee.com", "patriotoutdoornews.com", "rantlifestyle.com", "realfarmacy.com", "redmaryland.com", "rightwingnews.com", "shark-tank.com", "spectator.org", "stevedeace.com", "techtimes.com", "theblacksphere.net", "thefreethoughtproject.com", "thegatewaypundit.com", "themattwalshblog.com", "thepoke.co.uk", "valuewalk.comvcpost.com", "victoriajackson.com", "viralnova.com", "viralthread.com", NULL }; const char *d384e0c02[] = { "adidas.de", NULL }; @@ -53762,6 +53788,7 @@ const char *d38d76a2d[] = { "sportube.tv", NULL }; const char *d391c81af[] = { "dillards.com", NULL }; const char *d391c8ce8[] = { "nydailynews.com", "travelscream.com", "yahoo.com", NULL }; const char *d39409c50[] = { "shares.enetres.net", "videos.13tv.es", NULL }; +const char *d396ade6a[] = { "100percentfedup.com", "activistpost.com", "addictinginfo.com", "alfonzorachel.com", "allthingsvegas.com", "americansublime.com", "askmefast.com", "auntyacid.com", "barbwire.com", "bestfunnyjokes4u.com", "bighealthreport.com", "bipartisanreport.com", "breaking911.com", "breathecast.com", "bulletsfirst.net", "celebrity-gossip.net", "clashdaily.com", "classicalite.com", "collapse.news", "comicallyincorrect.com", "conservativebyte.com", "conservativeintel.com", "conservativevideos.com", "constitution.com", "coviral.com", "craigjames.com", "creepybasement.com", "crossmap.com", "cyberwar.news", "dailyfeed.co.uk", "dailyheadlines.net", "dailyhealthpost.com", "dailysurge.com", "dccrimestories.com", "deneenborelli.com", "digitaljournal.com", "eaglerising.com", "earnthenecklace.com", "enstarz.com", "evil.news", "faithit.com", "fitnessconnoisseur.com", "foreverymom.com", "freedom.news", "freedomdaily.com", "freedomforce.com", "freedomoutpost.com", "girlsjustwannahaveguns.com", "glitch.news", "greatamericanrepublic.com", "groopspeak.com", "guardianlv.com", "guns.news", "gymflow100.com", "hallels.com", "hautereport.com", "healthstatus.com", "hispolitica.com", "hngn.com", "honesttopaws.com", "ifyouonlynews.com", "infowars.com", "instigatornews.com", "intellectualconservative.com", "janmorganmedia.com", "jobsnhire.com", "joeforamerica.com", "juicerhead.com", "justdiy.com", "kdramastars.com", "keepandbear.com", "kpopstarz.com", "lastresistance.com", "latinpost.com", "legalinsurrection.com", "liberty.news", "libertyalliance.com", "libertyunyielding.com", "lidblog.com", "medicine.news", "mentalflare.com", "minutemennews.com", "musictimes.com", "myscienceacademy.org", "natural.news", "naturalblaze.com", "naturalnews.com", "naturalsociety.com", "natureworldnews.com", "newser.com", "newseveryday.com", "newsthump.com", "oddee.com", "opednews.com", "patriotoutdoornews.com", "patriottribune.com", "pickthebrain.com", "politicaloutcast.com", "politichicks.com", "practicallyviral.com", "quirlycues.com", "rantlifestyle.com", "readysethealth.com", "realfarmacy.com", "realmomsrealreviews.com", "realtytoday.com", "redhotchacha.com", "redmaryland.com", "returnofkings.com", "robotics.news", "shark-tank.com", "shedthoselbs.com", "slender.news", "sonsoflibertymedia.com", "spectator.org", "stevedeace.com", "stupid.news", "supercheats.com", "techconsumer.com", "techtimes.com", "theblacksphere.net", "theboredmind.com", "thefreethoughtproject.com", "thegatewaypundit.com", "themattwalshblog.com", "thepoke.co.uk", "therealside.com", "theviralmob.com", "tosavealife.com", "traileraddict.com", "truththeory.com", "twisted.news", "urbantabloid.com", "usherald.com", "valuewalk.com", "vcpost.com", "victoriajackson.com", "videogamesblogger.com", "viralnova.com", "viralthread.com", "visiontoamerica.com", "winningdemocrats.com", "xtribune.com", "youthhealthmag.com", NULL }; const char *d398c400f[] = { "pumpkinpatch.co.nz", "pumpkinpatch.co.uk", "pumpkinpatch.com", "pumpkinpatch.com.au", NULL }; const char *d39a5afaf[] = { "civilization5cheats.com", "kzupload.com", NULL }; const char *d39c0dc35[] = { "stylished.de", NULL }; @@ -53870,6 +53897,7 @@ const char *d4b6a3f74[] = { "100percentfedup.com", "activistpost.com", "addictin const char *d4b6c1d72[] = { "smartertravel.com", NULL }; const char *d4b6ea9ef[] = { "itworld.com", "juniper.net", NULL }; const char *d4b8eec0 [] = { "backupload.net", NULL }; +const char *d4ba054f8[] = { "gamezhero.com", NULL }; const char *d4c1ca440[] = { "yonhapnews.co.kr", NULL }; const char *d4c2ab000[] = { "pga.com", NULL }; const char *d4c3182d6[] = { "dielochis.de", NULL }; @@ -53984,7 +54012,6 @@ const char *d5d685d0 [] = { "microsoft.com", "store.office.live.com", "xbox.com" const char *d5d8aa4d [] = { "softgames.com", NULL }; const char *d5dca9eaf[] = { "forwardprogressives.com", NULL }; const char *d5e67cc71[] = { "cyberdevilz.net", NULL }; -const char *d5ecb54b4[] = { "100percentfedup.com", "activistpost.com", "addictinginfo.com", "alfonzorachel.com", "allthingsvegas.com", "americansublime.com", "askmefast.com", "auntyacid.com", "barbwire.com", "bestfunnyjokes4u.com", "bighealthreport.com", "bipartisanreport.com", "breaking911.com", "bulletsfirst.net", "celebrity-gossip.net", "clashdaily.com", "classicalite.com", "collapse.news", "comicallyincorrect.com", "conservativebyte.com", "conservativevideos.com", "constitution.com", "coviral.com", "craigjames.com", "creepybasement.com", "crossmap.com", "cyberwar.news", "dailyfeed.co.uk", "dailyheadlines.net", "dailyhealthpost.com", "dailysurge.com", "dccrimestories.com", "deneenborelli.com", "digitaljournal.com", "eaglerising.com", "earnthenecklace.com", "enstarz.com", "evil.news", "fitnessconnoisseur.com", "foreverymom.com", "freedom.news", "freedomdaily.com", "freedomforce.com", "freedomoutpost.com", "girlsjustwannahaveguns.com", "glitch.news", "greatamericanrepublic.com", "groopspeak.com", "guardianlv.com", "guns.news", "gymflow100.com", "hallels.com", "hautereport.com", "healthstatus.com", "hngn.com", "honesttopaws.com", "ifyouonlynews.com", "infowars.com", "instigatornews.com", "intellectualconservative.com", "jobsnhire.com", "joeforamerica.com", "juicerhead.com", "justdiy.com", "kdramastars.com", "keepandbear.com", "kpopstarz.com", "lastresistance.com", "latinpost.com", "legalinsurrection.com", "liberty.news", "libertyalliance.com", "libertyunyielding.com", "medicine.news", "mentalflare.com", "minutemennews.com", "musictimes.com", "myscienceacademy.org", "natural.news", "naturalblaze.com", "naturalnews.com", "naturalsociety.com", "natureworldnews.com", "newser.com", "newseveryday.com", "newsthump.com", "oddee.com", "patriotnewswire.com", "patriotoutdoornews.com", "patriottribune.com", "pickthebrain.com", "politicaloutcast.com", "politichicks.com", "practicallyviral.com", "quirlycues.com", "rantlifestyle.com", "realfarmacy.com", "realmomsrealreviews.com", "redhotchacha.com", "redmaryland.com", "returnofkings.com", "robotics.news", "shark-tank.com", "shedthoselbs.com", "slender.news", "sonsoflibertymedia.com", "spectator.org", "stevedeace.com", "stupid.news", "supercheats.com", "techconsumer.com", "techtimes.com", "theblacksphere.net", "theboredmind.com", "thefreethoughtproject.com", "thegatewaypundit.com", "themattwalshblog.com", "thepoke.co.uk", "therealside.com", "theviralmob.com", "tosavealife.com", "traileraddict.com", "truththeory.com", "twisted.news", "urbantabloid.com", "usherald.com", "valuewalk.com", "vcpost.com", "victoriajackson.com", "videogamesblogger.com", "viralnova.com", "viralthread.com", "visiontoamerica.com", "wakingtimes.com", "winningdemocrats.com", "xtribune.com", "youthhealthmag.com", NULL }; const char *d5ee758b5[] = { "whitepages.com", NULL }; const char *d5eed0668[] = { "sporcle.com", NULL }; const char *d5f0acbca[] = { "bingads.microsoft.com", NULL }; @@ -54452,7 +54479,6 @@ const char *da7ff8ce9[] = { "classifieds.nydailynews.com", NULL }; const char *da8079d1b[] = { "fcportables.com", NULL }; const char *da856ef1 [] = { "zeperfs.com", NULL }; const char *da85eddea[] = { "tugaflix.net", NULL }; -const char *da87390b3[] = { "girlsocool.com", NULL }; const char *da887953e[] = { "coinarge.com", NULL }; const char *da8c3dbca[] = { "kmvt.com", NULL }; const char *da8fa6476[] = { "watchfreemovies.ch", NULL }; @@ -54563,7 +54589,6 @@ const char *db723f4c0[] = { "openx.com", NULL }; const char *db728eb42[] = { "blesk.cz", "open.fm", NULL }; const char *db76f1b39[] = { "eio.manhattan.yahoo.com", NULL }; const char *db7ba5860[] = { "hulu.com", NULL }; -const char *db7cc8a60[] = { "100percentfedup.com", "activistpost.com", "addictinginfo.com", "alfonzorachel.com", "allthingsvegas.com", "americansublime.com", "askmefast.com", "auntyacid.com", "barbwire.com", "bestfunnyjokes4u.com", "bighealthreport.com", "bipartisanreport.com", "breaking911.com", "breathecast.com", "bulletsfirst.net", "celebrity-gossip.net", "clashdaily.com", "classicalite.com", "collapse.news", "comicallyincorrect.com", "conservativebyte.com", "conservativeintel.com", "conservativevideos.com", "constitution.com", "coviral.com", "craigjames.com", "creepybasement.com", "crossmap.com", "cyberwar.news", "dailyfeed.co.uk", "dailyheadlines.net", "dailyhealthpost.com", "dailysurge.com", "dccrimestories.com", "deneenborelli.com", "digitaljournal.com", "eaglerising.com", "earnthenecklace.com", "enstarz.com", "evil.news", "faithit.com", "fitnessconnoisseur.com", "foreverymom.com", "freedom.news", "freedomdaily.com", "freedomforce.com", "freedomoutpost.com", "girlsjustwannahaveguns.com", "glitch.news", "greatamericanrepublic.com", "groopspeak.com", "guardianlv.com", "guns.news", "gymflow100.com", "hallels.com", "hautereport.com", "healthstatus.com", "hispolitica.com", "hngn.com", "honesttopaws.com", "ifyouonlynews.com", "infowars.com", "instigatornews.com", "intellectualconservative.com", "janmorganmedia.com", "jobsnhire.com", "joeforamerica.com", "juicerhead.com", "justdiy.com", "kdramastars.com", "keepandbear.com", "kpopstarz.com", "lastresistance.com", "latinpost.com", "legalinsurrection.com", "liberty.news", "libertyalliance.com", "libertyunyielding.com", "lidblog.com", "medicine.news", "mentalflare.com", "minutemennews.com", "musictimes.com", "myscienceacademy.org", "natural.news", "naturalblaze.com", "naturalnews.com", "naturalsociety.com", "natureworldnews.com", "newser.com", "newseveryday.com", "newsthump.com", "oddee.com", "opednews.com", "patriotoutdoornews.com", "patriottribune.com", "pickthebrain.com", "politicaloutcast.com", "politichicks.com", "practicallyviral.com", "quirlycues.com", "rantlifestyle.com", "realfarmacy.com", "realmomsrealreviews.com", "realtytoday.com", "redhotchacha.com", "redmaryland.com", "returnofkings.com", "robotics.news", "shark-tank.com", "shedthoselbs.com", "slender.news", "sonsoflibertymedia.com", "spectator.org", "stevedeace.com", "stupid.news", "supercheats.com", "techconsumer.com", "techtimes.com", "theblacksphere.net", "theboredmind.com", "thefreethoughtproject.com", "thegatewaypundit.com", "themattwalshblog.com", "thepoke.co.uk", "therealside.com", "theviralmob.com", "tosavealife.com", "traileraddict.com", "truththeory.com", "twisted.news", "urbantabloid.com", "usherald.com", "valuewalk.com", "vcpost.com", "victoriajackson.com", "videogamesblogger.com", "viralnova.com", "viralthread.com", "visiontoamerica.com", "winningdemocrats.com", "xtribune.com", "youthhealthmag.com", NULL }; const char *db7e2aca5[] = { "tmz.com", NULL }; const char *db7f66c5d[] = { "slashdot.org", NULL }; const char *db7f843c5[] = { "secureupload.eu", NULL }; @@ -54672,6 +54697,7 @@ const char *dc7453a93[] = { "netcombo.com.br", NULL }; const char *dc79cdc1b[] = { "unknowncheats.me", NULL }; const char *dc7e8820d[] = { "investing.com", NULL }; const char *dc7f73b94[] = { "miliblog.co.uk", NULL }; +const char *dc811bba7[] = { "ruutu.fi", NULL }; const char *dc86704af[] = { "live.scity.tv", NULL }; const char *dc8d0ae3 [] = { "eurogamer.net", "nintendolife.com", "onehourtranslation.com", "rockpapershotgun.com", "usgamer.net", "vg247.com", NULL }; const char *dc903b8b7[] = { "allmusic.com", "blinkx.com", NULL }; @@ -54692,6 +54718,7 @@ const char *dcb9e5448[] = { "limonfree.nl", NULL }; const char *dcbc0c6b8[] = { "iherb.com", NULL }; const char *dcbfa29f1[] = { "aim.com", "autoblog.com", "autos.aol.com", "engadget.com", "mapquest.com", "video.aol.com", "www.aol.com", NULL }; const char *dcc180a37[] = { "nextag.com", NULL }; +const char *dcc2caf32[] = { "enstarz.com", "itechpost.com", "kdramastars.com", "kpopstarz.com", "musictimes.com", "natureworldnews.com", "realtytoday.com", NULL }; const char *dcc338217[] = { "100percentfedup.com", "activistpost.com", "addictinginfo.com", "alfonzorachel.com", "allthingsvegas.com", "americansublime.com", "askmefast.com", "auntyacid.com", "barbwire.com", "bestfunnyjokes4u.com", "bighealthreport.com", "bipartisanreport.com", "breaking911.com", "breathecast.com", "bulletsfirst.net", "celebrity-gossip.net", "clashdaily.com", "classicalite.com", "collapse.news", "comicallyincorrect.com", "conservativebyte.com", "conservativeintel.com", "conservativevideos.com", "constitution.com", "coviral.com", "craigjames.com", "creepybasement.com", "crossmap.com", "cyberwar.news", "dailyfeed.co.uk", "dailyheadlines.net", "dailyhealthpost.com", "dailysurge.com", "damnlol.com", "dccrimestories.com", "deneenborelli.com", "digitaljournal.com", "eaglerising.com", "earnthenecklace.com", "enstarz.com", "evil.news", "faithit.com", "fitnessconnoisseur.com", "foreverymom.com", "freedom.news", "freedomdaily.com", "freedomforce.com", "freedomoutpost.com", "girlsjustwannahaveguns.com", "glitch.news", "godfatherpolitics.com", "gosocial.co", "greatamericanrepublic.com", "groopspeak.com", "guardianlv.com", "guns.news", "gymflow100.com", "hallels.com", "hautereport.com", "headcramp.com", "healthstatus.com", "hispolitica.com", "hngn.com", "honesttopaws.com", "ifyouonlynews.com", "infowars.com", "instigatornews.com", "janmorganmedia.com", "jobsnhire.com", "joeforamerica.com", "juicerhead.com", "justdiy.com", "kdramastars.com", "keepandbear.com", "kpopstarz.com", "lastresistance.com", "latinpost.com", "legalinsurrection.com", "liberty.news", "libertyalliance.com", "libertyunyielding.com", "lidblog.com", "medicine.news", "mentalflare.com", "minutemennews.com", "musictimes.com", "myscienceacademy.org", "natural.news", "naturalblaze.com", "naturalnews.com", "naturalsociety.com", "natureworldnews.com", "newser.com", "newseveryday.com", "newsthump.com", "oddee.com", "opednews.com", "parentherald.com", "patriotoutdoornews.com", "patriottribune.com", "pickthebrain.com", "politicaloutcast.com", "politichicks.com", "practicallyviral.com", "quirlycues.com", "realfarmacy.com", "realmomsrealreviews.com", "realtytoday.com", "redhotchacha.com", "redmaryland.com", "returnofkings.com", "reverbpress.com", "reviveusa.com", "rightwingnews.com", "robotics.news", "shark-tank.com", "shedthoselbs.com", "slender.news", "sonsoflibertymedia.com", "spectator.org", "stevedeace.com", "stupid.news", "techconsumer.com", "techtimes.com", "theblacksphere.net", "theboredmind.com", "thefreethoughtproject.com", "thegatewaypundit.com", "thelibertarianrepublic.com", "themattwalshblog.com", "thepoke.co.uk", "therealside.com", "theviralmob.com", "tinypic.com", "tosavealife.com", "traileraddict.com", "truththeory.com", "twisted.news", "universityherald.com", "usherald.com", "valuewalk.com", "vcpost.com", "victoriajackson.com", "videogamesblogger.com", "viralnova.com", "viralthread.com", "visiontoamerica.com", "wakingtimes.com", "westernjournalism.com", "winningdemocrats.com", "xtribune.com", "youthhealthmag.com", NULL }; const char *dccbe7ff1[] = { "allmusic.com", "hulkusc.com", "sc2casts.com", NULL }; const char *dcd7b8fdc[] = { "forums.redflagdeals.com", NULL }; @@ -56133,6 +56160,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m49a3eb0f, 0, NULL, NULL }, {m97aab2eb, 0, NULL, NULL }, {m61d975f5, 0, NULL, NULL }, + {m2bf9bb28, 0, NULL, NULL }, {ma0624766, 0, NULL, NULL }, {m9841c419, 0, NULL, NULL }, {m543cdbdf, 0, NULL, NULL }, @@ -56193,6 +56221,8 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {mdcb85ff7, 0, NULL, NULL }, {mdcc0aebc, 0, NULL, NULL }, {m39001d38, 0, NULL, NULL }, + {m3bbb8bd1, 0, NULL, NULL }, + {m3bb94d3a, 0, NULL, NULL }, {m72d437c1, 0, NULL, NULL }, {ma9e41185, 0, NULL, NULL }, {m3c42cbdc, 0, NULL, NULL }, @@ -59265,6 +59295,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m58972a5d, 0, NULL, NULL }, {m5b923348, 0, NULL, NULL }, {m5b8b7783, 0, NULL, NULL }, + {m65962340, 0, NULL, NULL }, {m7a1e1e7b, 0, NULL, NULL }, {m5120e148, 0, NULL, NULL }, {macfeb041, 0, NULL, NULL }, @@ -59348,6 +59379,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {mf06cfb94, 0, NULL, NULL }, {m6aca9ec0, 0, NULL, NULL }, {m25d6e44e, 0, NULL, NULL }, + {m7a1c9e0, 0, NULL, NULL }, {mc79aa95b, 0, NULL, NULL }, {m98dd2235, 0, NULL, NULL }, {md8db485e, 0, NULL, NULL }, @@ -59964,6 +59996,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m7071c106, 0, NULL, NULL }, {m62560bd6, 0, NULL, NULL }, {ma311e7a6, 0, NULL, NULL }, + {m328bed83, 0, NULL, NULL }, {mc631a5a8, 0, NULL, NULL }, {m3e150d8a, 0, NULL, NULL }, {macb11c7f, 0, NULL, NULL }, @@ -61497,6 +61530,8 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m10724692, 0, NULL, NULL }, {m9e333b87, 0, NULL, NULL }, {m2c0ccc77, 0, NULL, NULL }, + {m2cf3fa2, 0, NULL, NULL }, + {m3ed41b44, 0, NULL, NULL }, {mf4f59842, 0, NULL, NULL }, {ma412ced1, 0, NULL, NULL }, {mb989dab2, 0, NULL, NULL }, @@ -62614,6 +62649,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m39a9e67c, 0, NULL, NULL }, {me65cb0ae, 0, NULL, NULL }, {m6ef60e93, 0, NULL, NULL }, + {me9b764b0, 0, NULL, NULL }, {m8b2dc1bd, 0, NULL, NULL }, {m470885d8, 0, NULL, NULL }, {me26564fb, 0, NULL, NULL }, @@ -62623,6 +62659,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m7bbd6204, 0, NULL, NULL }, {m1a4f0a02, 0, NULL, NULL }, {m95d8644d, 0, NULL, NULL }, + {mf7a256a2, 0, NULL, NULL }, {m4d6b044e, 0, NULL, NULL }, {m72ff3135, 0, NULL, NULL }, {m5fd7382b, 0, NULL, NULL }, @@ -64171,7 +64208,6 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {ma2672437, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m720717ce, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m1d20dadd, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, - {m75aa7a06, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m46f27a74, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m688112e7, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m7ddf8a55, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, @@ -69399,6 +69435,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m7fcde7ac, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mf7df9bff, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m5bda7a85, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m47290420, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m75daeb75, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mcfe079ad, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m75e6286f, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, @@ -83616,6 +83653,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m2e93bb6a, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {m893f45af, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {me1b0029d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, + {m3e566177, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {mc8fbc253, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {m1a119d1a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m389dca79, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, @@ -87281,7 +87319,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m9818f6a8, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {m2eebf9b8, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, dbd47168a, NULL }, {mc013e090, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, deeee052f, NULL }, - {md07330ef, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_THIRD_PARTY, db7cc8a60, NULL }, + {md07330ef, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_THIRD_PARTY, d396ade6a, NULL }, {md2d439df, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_THIRD_PARTY, db21290fe, NULL }, {maeae25b, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, d38b293a6, NULL }, {m347c0e67, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d831c4d20, NULL }, @@ -87322,7 +87360,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m19bd7b5d, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, d5f4b38f2, NULL }, {mcd7b5ad, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m2b6ef855, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d984dc2b2, NULL }, - {m3d8633ea, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_THIRD_PARTY, d5ecb54b4, NULL }, + {m3d8633ea, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_THIRD_PARTY, d37f989cc, NULL }, {m7acc9b50, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_THIRD_PARTY, dd4029dcc, NULL }, {me5299c51, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, dcf5054d8, NULL }, {mc740dc51, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_THIRD_PARTY, d8be651e8, NULL }, @@ -87999,6 +88037,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m14c0c80e, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {m757ee383, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {m9de0d53c, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, + {m70b5ca41, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {m6c90f735, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m13554a39, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {mdd4daea1, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, @@ -88392,6 +88431,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m743efd82, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {mfacfd40a, ADBLOCK_FLAG_MATCH_DOMAIN, d433b238a, NULL }, {m9dfc9414, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, + {m3634bc7b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m97772fae, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {m416b2d8b, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {m3d184d21, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, @@ -91282,6 +91322,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m892ab560, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m62ec0feb, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m27960a60, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {ma07131ce, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, dcc2caf32, NULL }, {m14fb9d0c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mce6022b0, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m37c845a4, ADBLOCK_FLAG_HAS_WILDCARD, NULL, NULL }, @@ -91356,7 +91397,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m7f24c592, ADBLOCK_FLAG_MATCH_DOMAIN, def102471, NULL }, {m2a9d13fa, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m1e74a73d, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD, NULL, NULL }, - {m21497b92, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m75aa7a06, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m80de4c79, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m8184b4a0, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d8d1d96cc, NULL }, {ma1e7a98d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD, dbf0f5d9b, NULL }, @@ -91732,7 +91773,6 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m1a3584d2, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD, NULL, NULL }, {m8ca39593, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mf51e184f, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, - {m57d20d3c, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d146d9e46, NULL }, {m6dac3d96, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {mb7cfb034, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL }, {m583009a8, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, @@ -92088,8 +92128,10 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {mb57941da, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m5e6ca2cd, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m153ba2af, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, - {m5d0f3e9, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, da87390b3, NULL }, {m36ecb5fc, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD, de9510849, NULL }, + {m57d20d3c, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, dc811bba7, NULL }, + {m3209c23b, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL }, + {m5d0f3e9, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d4ba054f8, NULL }, {m959374f7, 0, NULL, NULL }, {m69eee246, 0, NULL, NULL }, {m480a1f0f, ADBLOCK_FLAG_HAS_WILDCARD, NULL, NULL }, @@ -93170,6 +93212,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m74f794db, 0, NULL, NULL }, {m34ace6d0, 0, NULL, NULL }, {m6c85715e, 0, NULL, NULL }, + {mfa05857f, 0, NULL, NULL }, {mc0cab245, 0, NULL, NULL }, {me390cf5e, 0, NULL, NULL }, {mff64452, 0, NULL, NULL }, @@ -93221,6 +93264,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {me77668ca, 0, NULL, NULL }, {m60a124d0, 0, NULL, NULL }, {m9f726233, 0, NULL, NULL }, + {m1d007dac, 0, NULL, NULL }, {m685b0f27, 0, NULL, NULL }, {m1911679c, 0, NULL, NULL }, {mf44945f9, 0, NULL, NULL }, @@ -94066,6 +94110,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {mbda5bce8, 0, NULL, NULL }, {m6b6798ab, 0, NULL, NULL }, {m1b7cc01f, 0, NULL, NULL }, + {me2279319, 0, NULL, NULL }, {m74f435e8, 0, NULL, NULL }, {m4a1a71d4, 0, NULL, NULL }, {m71c3c0b4, 0, NULL, NULL }, @@ -95256,6 +95301,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m79382307, 0, NULL, NULL }, {m87f80ff4, 0, NULL, NULL }, {me12886a0, 0, NULL, NULL }, + {m5c586992, 0, NULL, NULL }, {mee3766a4, 0, NULL, NULL }, {m5f1e51c, 0, NULL, NULL }, {mee3400f4, 0, NULL, NULL }, @@ -95362,6 +95408,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m9e82cd08, 0, NULL, NULL }, {m3d90a18d, 0, NULL, NULL }, {m4b5ed0db, 0, NULL, NULL }, + {mc5956719, ADBLOCK_FLAG_HAS_WILDCARD, NULL, NULL }, {m9707598, ADBLOCK_FLAG_HAS_WILDCARD, NULL, NULL }, {m521c04d3, 0, NULL, NULL }, {md68f664, 0, NULL, NULL }, @@ -96832,6 +96879,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m6443e38e, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mc777f1e1, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m22cef2f9, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {m6497f928, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m9c3478b4, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mdbd27cce, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m42cc5579, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, @@ -97679,6 +97727,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m9229a2f8, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m52c36651, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m34f9997f, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, + {mcd079a85, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m2cff4ec, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {mf55d0f70, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m19e28b12, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, @@ -100679,6 +100728,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {mf4114e84, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {mab4dceba, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m1b40aa4d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, + {me7de3498, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m6423a217, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {mbed593cd, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {m2e8639f4, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, @@ -101931,6 +101981,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m9c49275f, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {mc7cff7e7, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m2299966a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, + {ma40901a9, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {mbafc68bd, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {md7b7a601, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL }, {m124348e6, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, @@ -102461,6 +102512,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {md3d830d2, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {mb4a7cd90, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {ma96928d6, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, + {mbf1312c7, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m4c03c8a9, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {m86a76742, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {m24986b80, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, @@ -103136,6 +103188,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = { {m49e00a35, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL }, {m85720f2c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m96b4c5cc, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, + {m485f2424, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {mdd4d3033, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {mc7ebea92, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, {m259e4692, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL }, diff --git a/patches/BRM046_Allow-playing-audio-in-background.patch b/patches/BRM046_Allow-playing-audio-in-background.patch index df19a17b..4e89707d 100644 --- a/patches/BRM046_Allow-playing-audio-in-background.patch +++ b/patches/BRM046_Allow-playing-audio-in-background.patch @@ -23,7 +23,7 @@ diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_imp void WebMediaPlayerImpl::EnabledAudioTracksChanged( const blink::WebVector& enabledTrackIds) { DCHECK(main_task_runner_->BelongsToCurrentThread()); -@@ -2993,7 +2999,10 @@ bool WebMediaPlayerImpl::ShouldPauseVideoWhenHidden() const { +@@ -2997,7 +3003,10 @@ bool WebMediaPlayerImpl::ShouldPauseVideoWhenHidden() const { // If suspending background video, pause any video that's not remoted or // not unlocked to play in the background. if (IsBackgroundSuspendEnabled(delegate_)) { diff --git a/patches/BRM056_getClientRects-getBoundingClientRect-measureText-add-fingerprinting-mitigation.patch b/patches/BRM056_getClientRects-getBoundingClientRect-measureText-add-fingerprinting-mitigation.patch index 713bd986..cf09aa34 100644 --- a/patches/BRM056_getClientRects-getBoundingClientRect-measureText-add-fingerprinting-mitigation.patch +++ b/patches/BRM056_getClientRects-getBoundingClientRect-measureText-add-fingerprinting-mitigation.patch @@ -31,7 +31,7 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/ #include "third_party/blink/public/platform/web_scroll_into_view_params.h" #include "third_party/blink/renderer/bindings/core/v8/dictionary.h" -@@ -1383,6 +1384,15 @@ DOMRectList* Element::getClientRects() { +@@ -1384,6 +1385,15 @@ DOMRectList* Element::getClientRects() { DCHECK(element_layout_object); GetDocument().AdjustFloatQuadsForScrollAndAbsoluteZoom( quads, *element_layout_object); @@ -47,7 +47,7 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/ return DOMRectList::Create(quads); } -@@ -1400,6 +1410,13 @@ DOMRect* Element::getBoundingClientRect() { +@@ -1401,6 +1411,13 @@ DOMRect* Element::getBoundingClientRect() { DCHECK(element_layout_object); GetDocument().AdjustFloatRectForScrollAndAbsoluteZoom(result, *element_layout_object); diff --git a/patches/BRM068_Add-bookmark-import-export-actions-in-bookmarks-activity-and-page.patch b/patches/BRM068_Add-bookmark-import-export-actions-in-bookmarks-activity-and-page.patch index 6ddf4d7a..947c42e3 100644 --- a/patches/BRM068_Add-bookmark-import-export-actions-in-bookmarks-activity-and-page.patch +++ b/patches/BRM068_Add-bookmark-import-export-actions-in-bookmarks-activity-and-page.patch @@ -7,7 +7,7 @@ Thanks to Arnaud for the snippet on how to add toast notifications .../java/res/menu/bookmark_action_bar_menu.xml | 14 ++ .../browser/bookmarks/BookmarkActionBar.java | 12 ++ .../chrome/browser/bookmarks/BookmarkActivity.java | 19 ++ - .../chrome/browser/bookmarks/BookmarkBridge.java | 55 ++++++ + .../chrome/browser/bookmarks/BookmarkBridge.java | 56 ++++++ .../chrome/browser/bookmarks/BookmarkDelegate.java | 10 + .../chrome/browser/bookmarks/BookmarkManager.java | 20 ++ .../chrome/browser/bookmarks/BookmarkPage.java | 1 + @@ -20,7 +20,7 @@ Thanks to Arnaud for the snippet on how to add toast notifications chrome/utility/BUILD.gn | 7 +- chrome/utility/importer/bookmark_html_reader.cc | 27 ++- chrome/utility/importer/bookmark_html_reader.h | 9 + - 16 files changed, 418 insertions(+), 10 deletions(-) + 16 files changed, 419 insertions(+), 10 deletions(-) diff --git a/chrome/android/java/res/menu/bookmark_action_bar_menu.xml b/chrome/android/java/res/menu/bookmark_action_bar_menu.xml --- a/chrome/android/java/res/menu/bookmark_action_bar_menu.xml @@ -196,7 +196,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm * Synchronously gets a list of bookmarks that match the specified search query. * @param query Keyword used for searching bookmarks. * @param maxNumberOfResult Maximum number of result to fetch. -@@ -840,6 +867,32 @@ public class BookmarkBridge { +@@ -840,6 +867,33 @@ public class BookmarkBridge { depthList.add(depth); } @@ -205,7 +205,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm + public void bookmarksImported() { + Context context = ContextUtils.getApplicationContext(); + -+ Toast.makeText(ContextUtils.getApplicationContext(), "Bookmarks imported", Toast.LENGTH_LONG).show(); ++ //TODO: call this after actual import ++ //Toast.makeText(ContextUtils.getApplicationContext(), "Bookmarks imported", Toast.LENGTH_LONG).show(); + } + + @CalledByNative @@ -229,7 +230,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm private static List> createPairsList(int[] left, int[] right) { List> pairList = new ArrayList>(); for (int i = 0; i < left.length; i++) { -@@ -906,6 +959,8 @@ public class BookmarkBridge { +@@ -906,6 +960,8 @@ public class BookmarkBridge { boolean getFolders, boolean getBookmarks, List bookmarksList); private native BookmarkId nativeGetChildAt(long nativeBookmarkBridge, long id, int type, int index); diff --git a/patches/BRM074_Remove-google-account-access-permission-on-reboot.patch b/patches/BRM074_Remove-google-account-access-permission-on-reboot.patch index 960f7fed..9470a6ce 100644 --- a/patches/BRM074_Remove-google-account-access-permission-on-reboot.patch +++ b/patches/BRM074_Remove-google-account-access-permission-on-reboot.patch @@ -3,9 +3,9 @@ Date: Tue, 15 Aug 2017 15:33:16 -0400 Subject: Remove google account access permission on reboot --- - chrome/android/BUILD.gn | 3 +-- + chrome/android/BUILD.gn | 4 +--- chrome/android/java/AndroidManifest.xml | 4 ++-- - 2 files changed, 3 insertions(+), 4 deletions(-) + 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn @@ -20,6 +20,14 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn ] res_dir = "java/res_template" variables = chrome_public_jinja_variables +@@ -936,7 +935,6 @@ jinja_template_resources("chrome_sync_shell_apk_template_resources") { + "java/res_template/xml/file_paths.xml", + "java/res_template/xml/launchershortcuts.xml", + "java/res_template/xml/searchable.xml", +- "java/res_template/xml/syncadapter.xml", + ] + res_dir = "java/res_template" + variables = chrome_sync_shell_jinja_variables diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml diff --git a/patches/BRM090_kill-TOS-and-metrics-opt-out.patch b/patches/BRM089_kill-TOS-and-metrics-opt-out.patch similarity index 100% rename from patches/BRM090_kill-TOS-and-metrics-opt-out.patch rename to patches/BRM089_kill-TOS-and-metrics-opt-out.patch diff --git a/patches/BRM089_kill-Vision.patch b/patches/BRM089_kill-Vision.patch deleted file mode 100644 index 6da5f5d2..00000000 --- a/patches/BRM089_kill-Vision.patch +++ /dev/null @@ -1,156 +0,0 @@ -From: thermatk -Date: Fri, 22 Jun 2018 17:04:43 +0200 -Subject: kill Vision - ---- - .../org/chromium/shape_detection/BarcodeDetectionImpl.java | 6 +++--- - .../java/src/org/chromium/shape_detection/BitmapUtils.java | 12 ------------ - .../chromium/shape_detection/FaceDetectionImplGmsCore.java | 6 +++--- - .../chromium/shape_detection/FaceDetectionProviderImpl.java | 2 +- - .../src/org/chromium/shape_detection/InterfaceRegistrar.java | 10 +++++----- - .../src/org/chromium/shape_detection/TextDetectionImpl.java | 6 +++--- - 6 files changed, 15 insertions(+), 27 deletions(-) - -diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java ---- a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java -+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java -@@ -43,11 +43,11 @@ public class BarcodeDetectionImpl implements BarcodeDetection { - // on the device; this happens "fast", but it might have not completed, - // bail in this case. Also, the API was disabled between and v.9.0 and - // v.9.2, see https://developers.google.com/android/guides/releases. -- if (!mBarcodeDetector.isOperational()) { -+// if (!mBarcodeDetector.isOperational()) { - Log.e(TAG, "BarcodeDetector is not operational"); - callback.call(new BarcodeDetectionResult[0]); - return; -- } -+/* } - - Frame frame = BitmapUtils.convertToFrame(bitmapData); - if (frame == null) { -@@ -77,7 +77,7 @@ public class BarcodeDetectionImpl implements BarcodeDetection { - barcodeArray[i].cornerPoints[j].y = corners[j].y; - } - } -- callback.call(barcodeArray); -+ callback.call(barcodeArray);*/ - } - - @Override -diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java ---- a/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java -+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java -@@ -6,8 +6,6 @@ package org.chromium.shape_detection; - - import android.graphics.Bitmap; - --import com.google.android.gms.vision.Frame; -- - import org.chromium.mojo_base.BigBufferUtil; - import org.chromium.skia.mojom.ColorType; - -@@ -44,14 +42,4 @@ public class BitmapUtils { - - return bitmap; - } -- -- public static Frame convertToFrame(org.chromium.skia.mojom.Bitmap bitmapData) { -- Bitmap bitmap = convertToBitmap(bitmapData); -- if (bitmap == null) { -- return null; -- } -- -- // This constructor implies a pixel format conversion to YUV. -- return new Frame.Builder().setBitmap(bitmap).build(); -- } - } -diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java ---- a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java -+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java -@@ -63,7 +63,7 @@ public class FaceDetectionImplGmsCore implements FaceDetection { - // The vision library will be downloaded the first time the API is used - // on the device; this happens "fast", but it might have not completed, - // bail in this case. -- if (!mFaceDetector.isOperational()) { -+// if (!mFaceDetector.isOperational()) { - Log.e(TAG, "FaceDetector is not operational"); - - // Fallback to Android's FaceDetectionImpl. -@@ -73,7 +73,7 @@ public class FaceDetectionImplGmsCore implements FaceDetection { - FaceDetectionImpl detector = new FaceDetectionImpl(options); - detector.detect(bitmapData, callback); - return; -- } -+/* } - - Frame frame = BitmapUtils.convertToFrame(bitmapData); - if (frame == null) { -@@ -157,7 +157,7 @@ public class FaceDetectionImplGmsCore implements FaceDetection { - faceArray[i].boundingBox.height = face.getHeight(); - } - } -- callback.call(faceArray); -+ callback.call(faceArray);*/ - } - - @Override -diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java ---- a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java -+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java -@@ -30,7 +30,7 @@ public class FaceDetectionProviderImpl implements FaceDetectionProvider { - == ConnectionResult.SUCCESS; - - if (isGmsCoreSupported) { -- FaceDetection.MANAGER.bind(new FaceDetectionImplGmsCore(options), request); -+ //FaceDetection.MANAGER.bind(new FaceDetectionImplGmsCore(options), request); - } else { - FaceDetection.MANAGER.bind(new FaceDetectionImpl(options), request); - } -diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java ---- a/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java -+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java -@@ -20,10 +20,10 @@ class InterfaceRegistrar { - // is not necessary to hold on to a reference to it explicitly. - InterfaceRegistry registry = InterfaceRegistry.create( - CoreImpl.getInstance().acquireNativeHandle(nativeHandle).toMessagePipeHandle()); -- registry.addInterface( -- BarcodeDetectionProvider.MANAGER, new BarcodeDetectionProviderImpl.Factory()); -- registry.addInterface( -- FaceDetectionProvider.MANAGER, new FaceDetectionProviderImpl.Factory()); -- registry.addInterface(TextDetection.MANAGER, new TextDetectionImpl.Factory()); -+// registry.addInterface( -+// BarcodeDetectionProvider.MANAGER, new BarcodeDetectionProviderImpl.Factory()); -+// registry.addInterface( -+// FaceDetectionProvider.MANAGER, new FaceDetectionProviderImpl.Factory()); -+// registry.addInterface(TextDetection.MANAGER, new TextDetectionImpl.Factory()); - } - } -diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java ---- a/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java -+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java -@@ -42,11 +42,11 @@ public class TextDetectionImpl implements TextDetection { - // on the device; this happens "fast", but it might have not completed, - // bail in this case. Also, the API was disabled between and v.9.0 and - // v.9.2, see https://developers.google.com/android/guides/releases. -- if (!mTextRecognizer.isOperational()) { -+// if (!mTextRecognizer.isOperational()) { - Log.e(TAG, "TextDetector is not operational"); - callback.call(new TextDetectionResult[0]); - return; -- } -+/* } - - Frame frame = BitmapUtils.convertToFrame(bitmapData); - if (frame == null) { -@@ -76,7 +76,7 @@ public class TextDetectionImpl implements TextDetection { - detectedTextArray[i].cornerPoints[j].y = corners[j].y; - } - } -- callback.call(detectedTextArray); -+ callback.call(detectedTextArray); */ - } - - @Override --- -2.11.0 - diff --git a/patches/BRM091_kill-Translate-doesn-t-work.patch b/patches/BRM090_kill-Translate.patch similarity index 81% rename from patches/BRM091_kill-Translate-doesn-t-work.patch rename to patches/BRM090_kill-Translate.patch index d723111a..0d40efec 100644 --- a/patches/BRM091_kill-Translate-doesn-t-work.patch +++ b/patches/BRM090_kill-Translate.patch @@ -1,11 +1,11 @@ From: thermatk Date: Fri, 22 Jun 2018 17:16:43 +0200 -Subject: kill Translate(doesn't work) +Subject: kill Translate --- chrome/android/java/res/xml/languages_preferences.xml | 3 ++- - .../src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java | 2 ++ - 2 files changed, 4 insertions(+), 1 deletion(-) + .../src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java | 3 +++ + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/chrome/android/java/res/xml/languages_preferences.xml b/chrome/android/java/res/xml/languages_preferences.xml --- a/chrome/android/java/res/xml/languages_preferences.xml @@ -30,14 +30,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR import org.chromium.chrome.browser.search_engines.TemplateUrlService; import org.chromium.chrome.browser.searchwidget.SearchWidgetProvider; import org.chromium.ui.base.LocalizationUtils; -@@ -143,6 +144,7 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa - if (mFreProperties.getBoolean(SHOW_DATA_REDUCTION_PAGE)) { - mFreProgressStates.add(FRE_PROGRESS_DATA_SAVER_SHOWN); - notifyAdapter = true; -+ PrefServiceBridge.getInstance().setTranslateEnabled(false); - } +@@ -138,6 +139,8 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa + if (mPostNativePageSequenceCreated) return; + mFirstRunFlowSequencer.onNativeInitialized(mFreProperties); - // An optional page to select a default search engine. ++ PrefServiceBridge.getInstance().setTranslateEnabled(false); ++ + boolean notifyAdapter = false; + // An optional Data Saver page. + if (mFreProperties.getBoolean(SHOW_DATA_REDUCTION_PAGE)) { -- 2.11.0 diff --git a/patches/BRM091_kill-Vision.patch b/patches/BRM091_kill-Vision.patch new file mode 100644 index 00000000..e5eadcc5 --- /dev/null +++ b/patches/BRM091_kill-Vision.patch @@ -0,0 +1,113 @@ +From: thermatk +Date: Fri, 22 Jun 2018 17:04:43 +0200 +Subject: kill Vision + +Barcode, face and text detection APIs +--- + services/shape_detection/BUILD.gn | 4 ---- + .../java/src/org/chromium/shape_detection/BitmapUtils.java | 12 ------------ + .../chromium/shape_detection/FaceDetectionProviderImpl.java | 13 ++----------- + .../org/chromium/shape_detection/InterfaceRegistrar.java | 5 ----- + 4 files changed, 2 insertions(+), 32 deletions(-) + +diff --git a/services/shape_detection/BUILD.gn b/services/shape_detection/BUILD.gn +--- a/services/shape_detection/BUILD.gn ++++ b/services/shape_detection/BUILD.gn +@@ -84,14 +84,10 @@ if (is_android) { + + android_library("shape_detection_java") { + java_files = [ +- "android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java", +- "android/java/src/org/chromium/shape_detection/BarcodeDetectionProviderImpl.java", + "android/java/src/org/chromium/shape_detection/FaceDetectionImpl.java", +- "android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java", + "android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java", + "android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java", + "android/java/src/org/chromium/shape_detection/BitmapUtils.java", +- "android/java/src/org/chromium/shape_detection/TextDetectionImpl.java", + ] + + deps = [ +diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java +--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java ++++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java +@@ -6,8 +6,6 @@ package org.chromium.shape_detection; + + import android.graphics.Bitmap; + +-import com.google.android.gms.vision.Frame; +- + import org.chromium.mojo_base.BigBufferUtil; + import org.chromium.skia.mojom.ColorType; + +@@ -44,14 +42,4 @@ public class BitmapUtils { + + return bitmap; + } +- +- public static Frame convertToFrame(org.chromium.skia.mojom.Bitmap bitmapData) { +- Bitmap bitmap = convertToBitmap(bitmapData); +- if (bitmap == null) { +- return null; +- } +- +- // This constructor implies a pixel format conversion to YUV. +- return new Frame.Builder().setBitmap(bitmap).build(); +- } + } +diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java +--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java ++++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java +@@ -5,7 +5,6 @@ + package org.chromium.shape_detection; + + import com.google.android.gms.common.ConnectionResult; +-import com.google.android.gms.common.GoogleApiAvailability; + + import org.chromium.base.ContextUtils; + import org.chromium.mojo.bindings.InterfaceRequest; +@@ -24,16 +23,8 @@ public class FaceDetectionProviderImpl implements FaceDetectionProvider { + @Override + public void createFaceDetection( + InterfaceRequest request, FaceDetectorOptions options) { +- final boolean isGmsCoreSupported = +- GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable( +- ContextUtils.getApplicationContext()) +- == ConnectionResult.SUCCESS; +- +- if (isGmsCoreSupported) { +- FaceDetection.MANAGER.bind(new FaceDetectionImplGmsCore(options), request); +- } else { +- FaceDetection.MANAGER.bind(new FaceDetectionImpl(options), request); +- } ++ ++ FaceDetection.MANAGER.bind(new FaceDetectionImpl(options), request); + } + + @Override +diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java +--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java ++++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java +@@ -8,9 +8,7 @@ import org.chromium.base.annotations.CalledByNative; + import org.chromium.base.annotations.JNINamespace; + import org.chromium.mojo.system.impl.CoreImpl; + import org.chromium.services.service_manager.InterfaceRegistry; +-import org.chromium.shape_detection.mojom.BarcodeDetectionProvider; + import org.chromium.shape_detection.mojom.FaceDetectionProvider; +-import org.chromium.shape_detection.mojom.TextDetection; + + @JNINamespace("shape_detection") + class InterfaceRegistrar { +@@ -21,9 +19,6 @@ class InterfaceRegistrar { + InterfaceRegistry registry = InterfaceRegistry.create( + CoreImpl.getInstance().acquireNativeHandle(nativeHandle).toMessagePipeHandle()); + registry.addInterface( +- BarcodeDetectionProvider.MANAGER, new BarcodeDetectionProviderImpl.Factory()); +- registry.addInterface( + FaceDetectionProvider.MANAGER, new FaceDetectionProviderImpl.Factory()); +- registry.addInterface(TextDetection.MANAGER, new TextDetectionImpl.Factory()); + } + } +-- +2.11.0 + diff --git a/patches/BRM092_kill-Location-fall-back-to-system.patch b/patches/BRM092_kill-Location-fall-back-to-system.patch new file mode 100644 index 00000000..ed726da2 --- /dev/null +++ b/patches/BRM092_kill-Location-fall-back-to-system.patch @@ -0,0 +1,48 @@ +From: thermatk +Date: Fri, 22 Jun 2018 17:05:17 +0200 +Subject: kill Location, fall back to system + +--- + services/device/geolocation/BUILD.gn | 1 - + .../chromium/device/geolocation/LocationProviderFactory.java | 10 ++-------- + 2 files changed, 2 insertions(+), 9 deletions(-) + +diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/BUILD.gn +--- a/services/device/geolocation/BUILD.gn ++++ b/services/device/geolocation/BUILD.gn +@@ -131,7 +131,6 @@ if (is_android) { + "android/java/src/org/chromium/device/geolocation/LocationProviderAdapter.java", + "android/java/src/org/chromium/device/geolocation/LocationProviderAndroid.java", + "android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java", +- "android/java/src/org/chromium/device/geolocation/LocationProviderGmsCore.java", + ] + + deps = [ +diff --git a/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java b/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java +--- a/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java ++++ b/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java +@@ -26,19 +26,13 @@ public class LocationProviderFactory { + + @CalledByNative + public static void useGmsCoreLocationProvider() { +- sUseGmsCoreLocationProvider = true; ++ sUseGmsCoreLocationProvider = false; + } + + public static LocationProvider create() { + if (sProviderImpl != null) return sProviderImpl; + +- if (sUseGmsCoreLocationProvider +- && LocationProviderGmsCore.isGooglePlayServicesAvailable( +- ContextUtils.getApplicationContext())) { +- sProviderImpl = new LocationProviderGmsCore(ContextUtils.getApplicationContext()); +- } else { +- sProviderImpl = new LocationProviderAndroid(); +- } ++ sProviderImpl = new LocationProviderAndroid(); + return sProviderImpl; + } + } +-- +2.11.0 + diff --git a/patches/BRM093_kill-Auth.patch b/patches/BRM093_kill-Auth.patch new file mode 100644 index 00000000..ab68f192 --- /dev/null +++ b/patches/BRM093_kill-Auth.patch @@ -0,0 +1,161 @@ +From: thermatk +Date: Fri, 22 Jun 2018 17:06:15 +0200 +Subject: kill Auth + +--- + .../chrome/browser/signin/SigninHelper.java | 22 +--------- + .../components/signin/AccountIdProvider.java | 9 +--- + .../signin/SystemAccountManagerDelegate.java | 50 ++-------------------- + 3 files changed, 5 insertions(+), 76 deletions(-) + +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java +@@ -8,10 +8,6 @@ import android.accounts.Account; + import android.annotation.SuppressLint; + import android.content.Context; + +-import com.google.android.gms.auth.AccountChangeEvent; +-import com.google.android.gms.auth.GoogleAuthException; +-import com.google.android.gms.auth.GoogleAuthUtil; +- + import org.chromium.base.AsyncTask; + import org.chromium.base.ContextUtils; + import org.chromium.base.Log; +@@ -71,23 +67,7 @@ public class SigninHelper { + @Override + public List getAccountChangeEvents( + Context context, int index, String accountName) { +- try { +- List list = GoogleAuthUtil.getAccountChangeEvents( +- context, index, accountName); +- List result = new ArrayList<>(list.size()); +- for (AccountChangeEvent e : list) { +- if (e.getChangeType() == GoogleAuthUtil.CHANGE_TYPE_ACCOUNT_RENAMED_TO) { +- result.add(e.getChangeData()); +- } else { +- result.add(null); +- } +- } +- return result; +- } catch (IOException e) { +- Log.w(TAG, "Failed to get change events", e); +- } catch (GoogleAuthException e) { +- Log.w(TAG, "Failed to get change events", e); +- } ++ + return new ArrayList<>(0); + } + } +diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java +--- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java ++++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java +@@ -4,8 +4,6 @@ + + package org.chromium.components.signin; + +-import com.google.android.gms.auth.GoogleAuthException; +-import com.google.android.gms.auth.GoogleAuthUtil; + import com.google.android.gms.common.ConnectionResult; + import com.google.android.gms.common.GoogleApiAvailability; + +@@ -40,12 +38,7 @@ public class AccountIdProvider { + * @param accountName The email address of a Google account. + */ + public String getAccountId(String accountName) { +- try { +- return GoogleAuthUtil.getAccountId(ContextUtils.getApplicationContext(), accountName); +- } catch (IOException | GoogleAuthException ex) { +- Log.e("cr.AccountIdProvider", "AccountIdProvider.getAccountId", ex); +- return null; +- } ++ return null; + } + + /** +diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java +--- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java ++++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java +@@ -24,9 +24,6 @@ import android.os.PatternMatcher; + import android.os.Process; + import android.os.SystemClock; + +-import com.google.android.gms.auth.GoogleAuthException; +-import com.google.android.gms.auth.GoogleAuthUtil; +-import com.google.android.gms.auth.GooglePlayServicesAvailabilityException; + import com.google.android.gms.common.ConnectionResult; + import com.google.android.gms.common.GoogleApiAvailability; + +@@ -117,48 +114,18 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { + // so don't report any accounts if Google Play Services are out of date. + checkCanUseGooglePlayServices(); + +- if (!hasGetAccountsPermission()) { +- return new Account[] {}; +- } +- long now = SystemClock.elapsedRealtime(); +- Account[] accounts = mAccountManager.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE); +- long elapsed = SystemClock.elapsedRealtime() - now; +- recordElapsedTimeHistogram("Signin.AndroidGetAccountsTime_AccountManager", elapsed); +- if (ThreadUtils.runningOnUiThread()) { +- recordElapsedTimeHistogram( +- "Signin.AndroidGetAccountsTimeUiThread_AccountManager", elapsed); +- } +- return accounts; ++ return new Account[] {}; + } + + @Override + public String getAuthToken(Account account, String authTokenScope) throws AuthException { + assert !ThreadUtils.runningOnUiThread(); + assert AccountManagerFacade.GOOGLE_ACCOUNT_TYPE.equals(account.type); +- try { +- return GoogleAuthUtil.getTokenWithNotification( +- ContextUtils.getApplicationContext(), account, authTokenScope, null); +- } catch (GoogleAuthException ex) { +- // This case includes a UserRecoverableNotifiedException, but most clients will have +- // their own retry mechanism anyway. +- throw new AuthException(AuthException.NONTRANSIENT, +- "Error while getting token for scope '" + authTokenScope + "'", ex); +- } catch (IOException ex) { +- throw new AuthException(AuthException.TRANSIENT, ex); +- } ++ return null; + } + + @Override +- public void invalidateAuthToken(String authToken) throws AuthException { +- try { +- GoogleAuthUtil.clearToken(ContextUtils.getApplicationContext(), authToken); +- } catch (GooglePlayServicesAvailabilityException ex) { +- throw new AuthException(AuthException.NONTRANSIENT, ex); +- } catch (GoogleAuthException ex) { +- throw new AuthException(AuthException.NONTRANSIENT, ex); +- } catch (IOException ex) { +- throw new AuthException(AuthException.TRANSIENT, ex); +- } ++ public void invalidateAuthToken(String authToken) { + } + + @Override +@@ -198,17 +165,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { + @SuppressLint("MissingPermission") + @Override + public void createAddAccountIntent(Callback callback) { +- AccountManagerCallback accountManagerCallback = accountManagerFuture -> { +- try { +- Bundle bundle = accountManagerFuture.getResult(); +- callback.onResult(bundle.getParcelable(AccountManager.KEY_INTENT)); +- } catch (OperationCanceledException | IOException | AuthenticatorException e) { +- Log.e(TAG, "Error while creating an intent to add an account: ", e); +- callback.onResult(null); +- } +- }; +- mAccountManager.addAccount(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE, null, null, null, null, +- accountManagerCallback, null); + } + + // No permission is needed on 23+ and Chrome always has MANAGE_ACCOUNTS permission on lower APIs +-- +2.11.0 + diff --git a/patches/BRM094_kill-GCM.patch b/patches/BRM094_kill-GCM.patch new file mode 100644 index 00000000..13657313 --- /dev/null +++ b/patches/BRM094_kill-GCM.patch @@ -0,0 +1,977 @@ +From: thermatk +Date: Fri, 22 Jun 2018 17:11:38 +0200 +Subject: kill GCM + +--- + build/secondary/third_party/android_tools/BUILD.gn | 3 - + chrome/android/BUILD.gn | 1 - + chrome/android/java/AndroidManifest.xml | 62 --------- + .../chrome/browser/BackgroundSyncLauncher.java | 97 -------------- + .../chrome/browser/ChromeBackgroundService.java | 1 - + .../invalidation/InvalidationController.java | 13 -- + .../browser/ntp/snippets/SnippetsLauncher.java | 44 ------- + .../browser/services/gcm/GCMBackgroundTask.java | 2 - + .../gcm/InvalidationGcmUpstreamSender.java | 15 --- + chrome/android/java_sources.gni | 2 - + components/background_task_scheduler/BUILD.gn | 1 - + .../BackgroundTaskSchedulerGcmNetworkManager.java | 146 +-------------------- + components/gcm_driver/android/BUILD.gn | 1 - + components/gcm_driver/instance_id/android/BUILD.gn | 1 - + .../gcm_driver/instance_id/InstanceIDBridge.java | 30 +---- + components/sync/android/BUILD.gn | 1 - + third_party/cacheinvalidation/BUILD.gn | 6 - + .../client/contrib/MultiplexingGcmListener.java | 92 +------------ + .../android2/channel/AndroidNetworkChannel.java | 18 +-- + 19 files changed, 14 insertions(+), 522 deletions(-) + +diff --git a/build/secondary/third_party/android_tools/BUILD.gn b/build/secondary/third_party/android_tools/BUILD.gn +--- a/build/secondary/third_party/android_tools/BUILD.gn ++++ b/build/secondary/third_party/android_tools/BUILD.gn +@@ -53,9 +53,6 @@ if (enable_java_templates) { + testonly = true + java_files = [ "//third_party/android_tools/sdk/extras/chromium/support/src/org/chromium/android/support/PackageManagerWrapper.java" ] + } +- android_java_prebuilt("android_gcm_java") { +- jar_path = "//third_party/android_tools/sdk/extras/google/gcm/gcm-client/dist/gcm.jar" +- } + android_java_prebuilt("emma_device_java") { + jar_path = "//third_party/android_tools/sdk/tools/lib/emma_device.jar" + include_java_resources = true +diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn +--- a/chrome/android/BUILD.gn ++++ b/chrome/android/BUILD.gn +@@ -281,7 +281,6 @@ android_library("chrome_java") { + "//third_party/android_swipe_refresh:android_swipe_refresh_java", + "//third_party/android_tools:android_arch_lifecycle_common_java", + "//third_party/android_tools:android_arch_lifecycle_runtime_java", +- "//third_party/android_tools:android_gcm_java", + "//third_party/android_tools:android_support_annotations_java", + "//third_party/android_tools:android_support_compat_java", + "//third_party/android_tools:android_support_design_java", +diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml +--- a/chrome/android/java/AndroidManifest.xml ++++ b/chrome/android/java/AndroidManifest.xml +@@ -78,22 +78,17 @@ by a child template that "extends" this file. + + + +- +- + + +- + + + + + + +- + + + +@@ -888,43 +883,6 @@ by a child template that "extends" this file. + android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" + android:hardwareAccelerated="false" /> + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- + + +@@ -936,8 +894,6 @@ by a child template that "extends" this file. + + +- + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- + +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncLauncher.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncLauncher.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncLauncher.java +@@ -8,10 +8,6 @@ import android.content.Context; + import android.content.SharedPreferences; + import android.os.StrictMode; + +-import com.google.android.gms.gcm.GcmNetworkManager; +-import com.google.android.gms.gcm.OneoffTask; +-import com.google.android.gms.gcm.Task; +- + import org.chromium.base.AsyncTask; + import org.chromium.base.ContextUtils; + import org.chromium.base.Log; +@@ -37,8 +33,6 @@ public class BackgroundSyncLauncher { + // BackgroundSyncLauncherAndroid, if any. If it is non-null then the browser is running. + private static BackgroundSyncLauncher sInstance; + +- private GcmNetworkManager mScheduler; +- + /** + * Disables the automatic use of the GCMNetworkManager. When disabled, the methods which + * interact with GCM can still be used, but will not be called automatically on creation, or by +@@ -124,30 +118,6 @@ public class BackgroundSyncLauncher { + @VisibleForTesting + @CalledByNative + protected void launchBrowserIfStopped(final boolean shouldLaunch, final long minDelayMs) { +- mLaunchBrowserIfStoppedTask = new AsyncTask() { +- @Override +- protected Void doInBackground() { +- SharedPreferences prefs = ContextUtils.getAppSharedPreferences(); +- prefs.edit() +- .putBoolean(PREF_BACKGROUND_SYNC_LAUNCH_NEXT_ONLINE, shouldLaunch) +- .apply(); +- return null; +- } +- @Override +- protected void onPostExecute(Void params) { +- if (sGCMEnabled) { +- if (shouldLaunch) { +- RecordHistogram.recordBooleanHistogram( +- "BackgroundSync.LaunchTask.ScheduleSuccess", +- scheduleLaunchTask(mScheduler, minDelayMs)); +- } else { +- RecordHistogram.recordBooleanHistogram( +- "BackgroundSync.LaunchTask.CancelSuccess", +- removeScheduledTasks(mScheduler)); +- } +- } +- } +- }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + } + + /** +@@ -159,7 +129,6 @@ public class BackgroundSyncLauncher { + } + + protected BackgroundSyncLauncher() { +- mScheduler = GcmNetworkManager.getInstance(ContextUtils.getApplicationContext()); + launchBrowserIfStopped(false, 0); + } + +@@ -188,72 +157,6 @@ public class BackgroundSyncLauncher { + return !sGCMEnabled; + } + +- private static boolean scheduleLaunchTask(GcmNetworkManager scheduler, long minDelayMs) { +- // Google Play Services may not be up to date, if the application was not installed through +- // the Play Store. In this case, scheduling the task will fail silently. +- final long minDelaySecs = minDelayMs / 1000; +- OneoffTask oneoff = new OneoffTask.Builder() +- .setService(ChromeBackgroundService.class) +- .setTag(TASK_TAG) +- // We have to set a non-zero execution window here +- .setExecutionWindow(minDelaySecs, minDelaySecs + 1) +- .setRequiredNetwork(Task.NETWORK_STATE_CONNECTED) +- .setPersisted(true) +- .setUpdateCurrent(true) +- .build(); +- try { +- scheduler.schedule(oneoff); +- } catch (IllegalArgumentException e) { +- // Disable GCM for the remainder of this session. +- setGCMEnabled(false); +- // Return false so that the failure will be logged. +- return false; +- } +- return true; +- } +- +- private static boolean removeScheduledTasks(GcmNetworkManager scheduler) { +- // Third-party code causes broadcast to touch disk. http://crbug.com/614679 +- StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads(); +- try { +- scheduler.cancelTask(TASK_TAG, ChromeBackgroundService.class); +- } catch (IllegalArgumentException e) { +- // This occurs when BackgroundSyncLauncherService is not found in the application +- // manifest. This should not happen in code that reaches here, but has been seen in +- // the past. See https://crbug.com/548314 +- // Disable GCM for the remainder of this session. +- setGCMEnabled(false); +- // Return false so that the failure will be logged. +- return false; +- } finally { +- StrictMode.setThreadPolicy(oldPolicy); +- } +- return true; +- } +- +- /** +- * Reschedule any required background sync tasks, if they have been removed due to an +- * application upgrade. +- * +- * This method checks the saved preferences, and reschedules the sync tasks as appropriate +- * to match the preferences. +- * This method is static so that it can be run without actually instantiating a +- * BackgroundSyncLauncher. +- */ +- protected static void rescheduleTasksOnUpgrade(final Context context) { +- final GcmNetworkManager scheduler = GcmNetworkManager.getInstance(context); +- BackgroundSyncLauncher.ShouldLaunchCallback callback = shouldLaunch -> { +- if (shouldLaunch) { +- // It's unclear what time the sync event was supposed to fire, so fire +- // without delay and let the browser reschedule if necessary. +- // TODO(iclelland): If this fails, report the failure via UMA (not now, +- // since the browser is not running, but on next startup.) +- scheduleLaunchTask(scheduler, 0); +- } +- }; +- BackgroundSyncLauncher.shouldLaunchBrowserIfStopped(callback); +- } +- + @VisibleForTesting + static void setGCMEnabled(boolean enabled) { + sGCMEnabled = enabled; +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java +@@ -106,7 +106,6 @@ public class ChromeBackgroundService extends GcmTaskService { + + @VisibleForTesting + protected void rescheduleBackgroundSyncTasksOnUpgrade() { +- BackgroundSyncLauncher.rescheduleTasksOnUpgrade(this); + } + + private void handleSnippetsOnBrowserUpgraded() { +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java +@@ -10,8 +10,6 @@ import android.os.Build; + import android.os.Handler; + import android.os.SystemClock; + +-import com.google.ipc.invalidation.ticl.android2.channel.AndroidGcmController; +- + import org.chromium.base.ApplicationState; + import org.chromium.base.ApplicationStatus; + import org.chromium.base.AsyncTask; +@@ -198,18 +196,7 @@ public class InvalidationController implements ApplicationStatus.ApplicationStat + * Registers for Google Cloud Messaging (GCM) for Invalidations. + */ + private void ensureGcmIsInitialized() { +- if (mGcmInitialized) return; + mGcmInitialized = true; +- new AsyncTask() { +- @Override +- protected Void doInBackground() { +- boolean useGcmUpstream = true; +- AndroidGcmController.get(ContextUtils.getApplicationContext()) +- .initializeGcm(useGcmUpstream); +- return null; +- } +- } +- .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + } + + @VisibleForTesting +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java +@@ -7,15 +7,10 @@ package org.chromium.chrome.browser.ntp.snippets; + import android.content.Context; + import android.net.ConnectivityManager; + +-import com.google.android.gms.gcm.GcmNetworkManager; +-import com.google.android.gms.gcm.PeriodicTask; +-import com.google.android.gms.gcm.Task; +- + import org.chromium.base.ContextUtils; + import org.chromium.base.Log; + import org.chromium.base.VisibleForTesting; + import org.chromium.base.annotations.CalledByNative; +-import org.chromium.chrome.browser.ChromeBackgroundService; + import org.chromium.chrome.browser.externalauth.ExternalAuthUtils; + + /** +@@ -40,8 +35,6 @@ public class SnippetsLauncher { + // If it is non-null then the browser is running. + private static SnippetsLauncher sInstance; + +- private GcmNetworkManager mScheduler; +- + private boolean mGCMEnabled = true; + + /** +@@ -78,7 +71,6 @@ public class SnippetsLauncher { + + protected SnippetsLauncher() { + checkGCM(); +- mScheduler = GcmNetworkManager.getInstance(ContextUtils.getApplicationContext()); + } + + private void checkGCM() { +@@ -89,32 +81,7 @@ public class SnippetsLauncher { + } + } + +- private static PeriodicTask buildFetchTask( +- String tag, long periodSeconds, int requiredNetwork) { +- // Add a bit of "flex" around the target period. This achieves the following: +- // - It makes sure the task doesn't run (significantly) before its initial period has +- // elapsed. In practice, the scheduler seems to behave like that anyway, but it doesn't +- // guarantee that, so we shouldn't rely on it. +- // - It gives the scheduler a bit of room to optimize for battery life. +- long effectivePeriodSeconds = (long) (periodSeconds * (1.0 + FLEX_FACTOR)); +- long flexSeconds = (long) (periodSeconds * (2.0 * FLEX_FACTOR)); +- return new PeriodicTask.Builder() +- .setService(ChromeBackgroundService.class) +- .setTag(tag) +- .setPeriod(effectivePeriodSeconds) +- .setFlex(flexSeconds) +- .setRequiredNetwork(requiredNetwork) +- .setPersisted(true) +- .setUpdateCurrent(true) +- .build(); +- } +- + private void scheduleOrCancelFetchTask(String taskTag, long period, int requiredNetwork) { +- if (period > 0) { +- mScheduler.schedule(buildFetchTask(taskTag, period, requiredNetwork)); +- } else { +- mScheduler.cancelTask(taskTag, ChromeBackgroundService.class); +- } + } + + @CalledByNative +@@ -127,23 +94,12 @@ public class SnippetsLauncher { + .edit() + .putBoolean(PREF_IS_SCHEDULED, isScheduled) + .apply(); +- +- // Google Play Services may not be up to date, if the application was not installed through +- // the Play Store. In this case, scheduling the task will fail silently. +- try { +- scheduleOrCancelFetchTask( +- TASK_TAG_WIFI, periodWifiSeconds, Task.NETWORK_STATE_UNMETERED); +- scheduleOrCancelFetchTask( +- TASK_TAG_FALLBACK, periodFallbackSeconds, Task.NETWORK_STATE_CONNECTED); +- } catch (IllegalArgumentException e) { + // Disable GCM for the remainder of this session. + mGCMEnabled = false; + + ContextUtils.getAppSharedPreferences().edit().remove(PREF_IS_SCHEDULED).apply(); + // Return false so that the failure will be logged. + return false; +- } +- return true; + } + + @CalledByNative +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java +@@ -39,8 +39,6 @@ public class GCMBackgroundTask implements BackgroundTask { + Log.e(TAG, "The received bundle containing message data could not be validated."); + return false; + } +- +- ChromeGcmListenerService.dispatchMessageToDriver(context, new GCMMessage(extras)); + return false; + } + +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java +@@ -12,7 +12,6 @@ import android.os.Parcel; + import android.support.annotation.MainThread; + import android.util.Log; + +-import com.google.android.gms.gcm.GoogleCloudMessaging; + import com.google.ipc.invalidation.ticl.android2.channel.GcmUpstreamSenderService; + + import org.chromium.base.AsyncTask; +@@ -96,20 +95,6 @@ public class InvalidationGcmUpstreamSender extends GcmUpstreamSenderService { + * This function runs on a thread from the AsyncTask.THREAD_POOL_EXECUTOR. + */ + private void sendUpstreamMessage(String to, Bundle data, String token, Context context) { +- // Add the OAuth2 token to the bundle. The token should have the prefix Bearer added to it. +- data.putString("Authorization", "Bearer " + token); +- if (!isMessageWithinLimit(data)) { +- GcmUma.recordGcmUpstreamHistogram(context, GcmUma.UMA_UPSTREAM_SIZE_LIMIT_EXCEEDED); +- return; +- } +- String msgId = UUID.randomUUID().toString(); +- try { +- GoogleCloudMessaging.getInstance(ContextUtils.getApplicationContext()) +- .send(to, msgId, 1, data); +- } catch (IOException | IllegalArgumentException exception) { +- Log.w(TAG, "Send message failed"); +- GcmUma.recordGcmUpstreamHistogram(context, GcmUma.UMA_UPSTREAM_SEND_FAILED); +- } + } + + private boolean isMessageWithinLimit(Bundle data) { +diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni +--- a/chrome/android/java_sources.gni ++++ b/chrome/android/java_sources.gni +@@ -26,7 +26,6 @@ chrome_java_sources = [ + "java/src/org/chromium/chrome/browser/ChromeActivity.java", + "java/src/org/chromium/chrome/browser/ChromeActivitySessionTracker.java", + "java/src/org/chromium/chrome/browser/ChromeApplication.java", +- "java/src/org/chromium/chrome/browser/ChromeBackgroundService.java", + "java/src/org/chromium/chrome/browser/ChromeBackupAgent.java", + "java/src/org/chromium/chrome/browser/ChromeBackupWatcher.java", + "java/src/org/chromium/chrome/browser/ChromeFeatureList.java", +@@ -1283,7 +1282,6 @@ chrome_java_sources = [ + "java/src/org/chromium/chrome/browser/services/AndroidEduAndChildAccountHelper.java", + "java/src/org/chromium/chrome/browser/services/AndroidEduOwnerCheckCallback.java", + "java/src/org/chromium/chrome/browser/services/GoogleServicesManager.java", +- "java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java", + "java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java", + "java/src/org/chromium/chrome/browser/services/gcm/GcmUma.java", + "java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java", +diff --git a/components/background_task_scheduler/BUILD.gn b/components/background_task_scheduler/BUILD.gn +--- a/components/background_task_scheduler/BUILD.gn ++++ b/components/background_task_scheduler/BUILD.gn +@@ -30,7 +30,6 @@ if (is_android) { + android_library("background_task_scheduler_java") { + java_files = [ + "android/java/src/org/chromium/components/background_task_scheduler/BackgroundTask.java", +- "android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskService.java", + "android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskJobService.java", + "android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskReflection.java", + "android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskScheduler.java", +diff --git a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java +--- a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java ++++ b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java +@@ -8,14 +8,6 @@ import android.content.Context; + import android.os.Bundle; + import android.support.annotation.NonNull; + +-import com.google.android.gms.common.ConnectionResult; +-import com.google.android.gms.common.GoogleApiAvailability; +-import com.google.android.gms.gcm.GcmNetworkManager; +-import com.google.android.gms.gcm.OneoffTask; +-import com.google.android.gms.gcm.PeriodicTask; +-import com.google.android.gms.gcm.Task; +-import com.google.android.gms.gcm.TaskParams; +- + import org.chromium.base.Log; + import org.chromium.base.ThreadUtils; + import org.chromium.base.VisibleForTesting; +@@ -34,104 +26,6 @@ class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedule + @VisibleForTesting + static final String BACKGROUND_TASK_EXTRAS_KEY = "_background_task_extras"; + +- static BackgroundTask getBackgroundTaskFromTaskParams(@NonNull TaskParams taskParams) { +- String backgroundTaskClassName = getBackgroundTaskClassFromTaskParams(taskParams); +- return BackgroundTaskReflection.getBackgroundTaskFromClassName(backgroundTaskClassName); +- } +- +- private static String getBackgroundTaskClassFromTaskParams(@NonNull TaskParams taskParams) { +- Bundle extras = taskParams.getExtras(); +- if (extras == null) return null; +- return extras.getString(BACKGROUND_TASK_CLASS_KEY); +- } +- +- /** +- * Retrieves the {@link TaskParameters} from the {@link TaskParams}, which are passed as +- * one of the keys. Only values valid for {@link android.os.BaseBundle} are supported, and other +- * values are stripped at the time when the task is scheduled. +- * +- * @param taskParams the {@link TaskParams} to extract the {@link TaskParameters} from. +- * @return the {@link TaskParameters} for the current job. +- */ +- static TaskParameters getTaskParametersFromTaskParams(@NonNull TaskParams taskParams) { +- int taskId; +- try { +- taskId = Integer.parseInt(taskParams.getTag()); +- } catch (NumberFormatException e) { +- Log.e(TAG, "Cound not parse task ID from task tag: " + taskParams.getTag()); +- return null; +- } +- +- TaskParameters.Builder builder = TaskParameters.create(taskId); +- +- Bundle extras = taskParams.getExtras(); +- Bundle taskExtras = extras.getBundle(BACKGROUND_TASK_EXTRAS_KEY); +- builder.addExtras(taskExtras); +- +- return builder.build(); +- } +- +- @VisibleForTesting +- static Task createTaskFromTaskInfo(@NonNull TaskInfo taskInfo) { +- Bundle taskExtras = new Bundle(); +- taskExtras.putString( +- BACKGROUND_TASK_CLASS_KEY, taskInfo.getBackgroundTaskClass().getName()); +- taskExtras.putBundle(BACKGROUND_TASK_EXTRAS_KEY, taskInfo.getExtras()); +- +- Task.Builder builder; +- if (taskInfo.isPeriodic()) { +- builder = getPeriodicTaskBuilder(taskInfo.getPeriodicInfo()); +- } else { +- builder = getOneOffTaskBuilder(taskInfo.getOneOffInfo()); +- } +- +- builder.setExtras(taskExtras) +- .setPersisted(taskInfo.isPersisted()) +- .setRequiredNetwork(getGcmNetworkManagerNetworkTypeFromTypeFromTaskNetworkType( +- taskInfo.getRequiredNetworkType())) +- .setRequiresCharging(taskInfo.requiresCharging()) +- .setService(BackgroundTaskGcmTaskService.class) +- .setTag(taskIdToTaskTag(taskInfo.getTaskId())) +- .setUpdateCurrent(taskInfo.shouldUpdateCurrent()); +- +- return builder.build(); +- } +- +- private static Task.Builder getPeriodicTaskBuilder(TaskInfo.PeriodicInfo periodicInfo) { +- PeriodicTask.Builder builder = new PeriodicTask.Builder(); +- builder.setPeriod(TimeUnit.MILLISECONDS.toSeconds(periodicInfo.getIntervalMs())); +- if (periodicInfo.hasFlex()) { +- builder.setFlex(TimeUnit.MILLISECONDS.toSeconds(periodicInfo.getFlexMs())); +- } +- return builder; +- } +- +- private static Task.Builder getOneOffTaskBuilder(TaskInfo.OneOffInfo oneOffInfo) { +- OneoffTask.Builder builder = new OneoffTask.Builder(); +- long windowStartSeconds = oneOffInfo.hasWindowStartTimeConstraint() +- ? TimeUnit.MILLISECONDS.toSeconds(oneOffInfo.getWindowStartTimeMs()) +- : 0; +- builder.setExecutionWindow(windowStartSeconds, +- TimeUnit.MILLISECONDS.toSeconds(oneOffInfo.getWindowEndTimeMs())); +- return builder; +- } +- +- private static int getGcmNetworkManagerNetworkTypeFromTypeFromTaskNetworkType( +- @TaskInfo.NetworkType int networkType) { +- switch (networkType) { +- // This is correct: GcmNM ANY means no network is guaranteed. +- case TaskInfo.NETWORK_TYPE_NONE: +- return Task.NETWORK_STATE_ANY; +- case TaskInfo.NETWORK_TYPE_ANY: +- return Task.NETWORK_STATE_CONNECTED; +- case TaskInfo.NETWORK_TYPE_UNMETERED: +- return Task.NETWORK_STATE_UNMETERED; +- default: +- assert false; +- } +- return Task.NETWORK_STATE_ANY; +- } +- + @Override + public boolean schedule(Context context, @NonNull TaskInfo taskInfo) { + ThreadUtils.assertOnUiThread(); +@@ -142,50 +36,12 @@ class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedule + + " has no parameterless public constructor."); + return false; + } +- +- GcmNetworkManager gcmNetworkManager = getGcmNetworkManager(context); +- if (gcmNetworkManager == null) { +- Log.e(TAG, "GcmNetworkManager is not available."); +- return false; +- } +- +- try { +- Task task = createTaskFromTaskInfo(taskInfo); +- gcmNetworkManager.schedule(task); +- } catch (IllegalArgumentException e) { +- String gcmErrorMessage = e.getMessage() == null ? "null." : e.getMessage(); +- Log.e(TAG, +- "GcmNetworkManager failed to schedule task, gcm message: " + gcmErrorMessage); +- return false; +- } +- +- return true; ++ return false; + } + + @Override + public void cancel(Context context, int taskId) { + ThreadUtils.assertOnUiThread(); +- +- GcmNetworkManager gcmNetworkManager = getGcmNetworkManager(context); +- if (gcmNetworkManager == null) { +- Log.e(TAG, "GcmNetworkManager is not available."); +- return; +- } +- +- try { +- gcmNetworkManager.cancelTask( +- taskIdToTaskTag(taskId), BackgroundTaskGcmTaskService.class); +- } catch (IllegalArgumentException e) { +- Log.e(TAG, "GcmNetworkManager failed to cancel task."); +- } +- } +- +- private GcmNetworkManager getGcmNetworkManager(Context context) { +- if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context) +- == ConnectionResult.SUCCESS) { +- return GcmNetworkManager.getInstance(context); +- } +- return null; + } + + private static String taskIdToTaskTag(int taskId) { +diff --git a/components/gcm_driver/android/BUILD.gn b/components/gcm_driver/android/BUILD.gn +--- a/components/gcm_driver/android/BUILD.gn ++++ b/components/gcm_driver/android/BUILD.gn +@@ -15,7 +15,6 @@ android_library("gcm_driver_java") { + deps = [ + "//base:base_java", + "//content/public/android:content_java", +- "//third_party/android_tools:android_gcm_java", + "//third_party/jsr-305:jsr_305_javalib", + ] + +diff --git a/components/gcm_driver/instance_id/android/BUILD.gn b/components/gcm_driver/instance_id/android/BUILD.gn +--- a/components/gcm_driver/instance_id/android/BUILD.gn ++++ b/components/gcm_driver/instance_id/android/BUILD.gn +@@ -26,7 +26,6 @@ android_library("instance_id_driver_java") { + + java_files = [ + "java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java", +- "java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java", + ] + } + +diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java +--- a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java ++++ b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java +@@ -25,7 +25,6 @@ public class InstanceIDBridge { + * Underlying InstanceIDWithSubtype. May be shared by multiple InstanceIDBridges. Must be + * initialized on a background thread. + */ +- private InstanceIDWithSubtype mInstanceID; + + private static boolean sBlockOnAsyncTasksForTesting; + +@@ -70,7 +69,7 @@ public class InstanceIDBridge { + new BridgeAsyncTask() { + @Override + protected String doBackgroundWork() { +- return mInstanceID.getId(); ++ return ""; + } + @Override + protected void sendResultToNative(String id) { +@@ -85,7 +84,7 @@ public class InstanceIDBridge { + new BridgeAsyncTask() { + @Override + protected Long doBackgroundWork() { +- return mInstanceID.getCreationTime(); ++ return 0L; + } + @Override + protected void sendResultToNative(Long creationTime) { +@@ -106,11 +105,7 @@ public class InstanceIDBridge { + new BridgeAsyncTask() { + @Override + protected String doBackgroundWork() { +- try { +- return mInstanceID.getToken(authorizedEntity, scope, extras); +- } catch (IOException ex) { +- return ""; +- } ++ return ""; + } + @Override + protected void sendResultToNative(String token) { +@@ -126,12 +121,7 @@ public class InstanceIDBridge { + new BridgeAsyncTask() { + @Override + protected Boolean doBackgroundWork() { +- try { +- mInstanceID.deleteToken(authorizedEntity, scope); +- return true; +- } catch (IOException ex) { +- return false; +- } ++ return true; + } + @Override + protected void sendResultToNative(Boolean success) { +@@ -146,12 +136,7 @@ public class InstanceIDBridge { + new BridgeAsyncTask() { + @Override + protected Boolean doBackgroundWork() { +- try { +- mInstanceID.deleteInstanceID(); +- return true; +- } catch (IOException ex) { +- return false; +- } ++ return true; + } + @Override + protected void sendResultToNative(Boolean success) { +@@ -190,11 +175,6 @@ public class InstanceIDBridge { + @Override + @SuppressWarnings("NoSynchronizedThisCheck") // Only used/accessible by native. + protected Result doInBackground() { +- synchronized (InstanceIDBridge.this) { +- if (mInstanceID == null) { +- mInstanceID = InstanceIDWithSubtype.getInstance(mSubtype); +- } +- } + return doBackgroundWork(); + } + @Override +diff --git a/components/sync/android/BUILD.gn b/components/sync/android/BUILD.gn +--- a/components/sync/android/BUILD.gn ++++ b/components/sync/android/BUILD.gn +@@ -10,7 +10,6 @@ android_library("sync_java") { + "//base:base_java", + "//components/signin/core/browser/android:java", + "//net/android:net_java", +- "//third_party/android_tools:android_gcm_java", + "//third_party/android_tools:android_support_annotations_java", + "//third_party/cacheinvalidation:cacheinvalidation_javalib", + "//third_party/cacheinvalidation:cacheinvalidation_proto_java", +diff --git a/third_party/cacheinvalidation/BUILD.gn b/third_party/cacheinvalidation/BUILD.gn +--- a/third_party/cacheinvalidation/BUILD.gn ++++ b/third_party/cacheinvalidation/BUILD.gn +@@ -141,7 +141,6 @@ if (is_android) { + "$google_play_services_package:google_play_services_iid_java", + "$google_play_services_package:google_play_services_tasks_java", + "//third_party/android_protobuf:protobuf_nano_javalib", +- "//third_party/android_tools:android_gcm_java", + ] + + java_files = [ +@@ -207,13 +206,8 @@ if (is_android) { + "src/java/com/google/ipc/invalidation/ticl/android2/WakeLockManager.java", + "src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidChannelConstants.java", + "src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidChannelPreferences.java", +- "src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidGcmController.java", +- "src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidInstanceIDListenerService.java", +- "src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageReceiverService.java", +- "src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageSenderService.java", + "src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidNetworkChannel.java", + "src/java/com/google/ipc/invalidation/ticl/android2/channel/CommonUtils.java", +- "src/java/com/google/ipc/invalidation/ticl/android2/channel/GcmRegistrationTaskService.java", + "src/java/com/google/ipc/invalidation/ticl/android2/channel/GcmUpstreamSenderService.java", + "src/java/com/google/ipc/invalidation/ticl/proto/AndroidChannel.java", + "src/java/com/google/ipc/invalidation/ticl/proto/AndroidListenerProtocol.java", +diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/contrib/MultiplexingGcmListener.java b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/contrib/MultiplexingGcmListener.java +--- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/contrib/MultiplexingGcmListener.java ++++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/contrib/MultiplexingGcmListener.java +@@ -16,9 +16,6 @@ + + package com.google.ipc.invalidation.external.client.contrib; + +-import com.google.android.gcm.GCMBaseIntentService; +-import com.google.android.gcm.GCMBroadcastReceiver; +-import com.google.android.gcm.GCMRegistrar; + import com.google.ipc.invalidation.external.client.SystemResources.Logger; + import com.google.ipc.invalidation.external.client.android.service.AndroidLogger; + import com.google.ipc.invalidation.ticl.android2.WakeLockManager; +@@ -69,7 +66,7 @@ import android.content.pm.ServiceInfo; + * there is nothing to do except log an error (which this class does). + * + */ +-public class MultiplexingGcmListener extends GCMBaseIntentService { ++public class MultiplexingGcmListener { + /* This class is public so that it can be instantiated by the Android runtime. */ + + /** Constants used in broadcast Intents. */ +@@ -106,18 +103,6 @@ public class MultiplexingGcmListener extends GCMBaseIntentService { + } + + /** +- * {@link GCMBroadcastReceiver} that forwards GCM intents to the {@code MultiplexingGcmListener} +- * class. +- */ +- public static class GCMReceiver extends GCMBroadcastReceiver { +- /* This class is public so that it can be instantiated by the Android runtime. */ +- @Override +- protected String getGCMIntentServiceClassName(Context context) { +- return MultiplexingGcmListener.class.getName(); +- } +- } +- +- /** + * Convenience base class for client implementations. It provides base classes for a broadcast + * receiver and an intent service that work together to handle events from the + * {@code MultiplexingGcmListener} while holding a wake lock. +@@ -260,85 +245,10 @@ public class MultiplexingGcmListener extends GCMBaseIntentService { + /** Logger. */ + private static final Logger logger = AndroidLogger.forTag("MplexGcmListener"); + +- // All onYYY methods work by constructing an appropriate Intent and broadcasting it. +- +- @Override +- protected void onMessage(Context context, Intent intent) { +- Intent newIntent = new Intent(); +- newIntent.putExtra(Intents.EXTRA_OP_MESSAGE, true); +- newIntent.putExtras(intent); +- rebroadcast(newIntent); +- } +- +- @Override +- protected void onRegistered(Context context, String registrationId) { +- Intent intent = new Intent(); +- intent.putExtra(Intents.EXTRA_OP_REGISTERED, true); +- intent.putExtra(Intents.EXTRA_DATA_REG_ID, registrationId); +- rebroadcast(intent); +- } +- +- @Override +- protected void onUnregistered(Context context, String registrationId) { +- Intent intent = new Intent(); +- intent.putExtra(Intents.EXTRA_OP_UNREGISTERED, true); +- intent.putExtra(Intents.EXTRA_DATA_REG_ID, registrationId); +- rebroadcast(intent); +- } +- +- @Override +- protected void onDeletedMessages(Context context, int total) { +- Intent intent = new Intent(); +- intent.putExtra(Intents.EXTRA_OP_DELETED_MESSAGES, true); +- intent.putExtra(Intents.EXTRA_DATA_NUM_DELETED_MSGS, total); +- rebroadcast(intent); +- } +- +- @Override +- protected void onError(Context context, String errorId) { +- // This is called for unrecoverable errors, so just log a warning. +- logger.warning("GCM error: %s", errorId); +- } +- +- @Override +- protected String[] getSenderIds(Context context) { +- return readSenderIdsFromManifestOrDie(this); +- } +- +- /** +- * Broadcasts {@code intent} with the action set to {@link Intents#ACTION} and the package name +- * set to the package name of this service. +- */ +- private void rebroadcast(Intent intent) { +- intent.setAction(Intents.ACTION); +- intent.setPackage(getPackageName()); +- sendBroadcast(intent); +- } +- +- /** +- * Registers with GCM if not already registered. Also verifies that the device supports GCM +- * and that the manifest is correctly configured. Returns the existing registration id, if one +- * exists, or the empty string if one does not. +- * +- * @throws UnsupportedOperationException if the device does not have all GCM dependencies +- * @throws IllegalStateException if the manifest is not correctly configured +- */ +- public static String initializeGcm(Context context) { +- AndroidChannelPreferences.setGcmChannelType(context, GcmChannelType.DEFAULT); +- GCMRegistrar.checkDevice(context); +- GCMRegistrar.checkManifest(context); +- final String regId = GCMRegistrar.getRegistrationId(context); +- if (regId.isEmpty()) { +- GCMRegistrar.register(context, readSenderIdsFromManifestOrDie(context)); +- } +- return regId; +- } +- + /** + * Returns the GCM sender ids from {@link #GCM_SENDER_IDS_METADATA_KEY} or throws a + * {@code RuntimeException} if they are not defined. + */ +- + static String[] readSenderIdsFromManifestOrDie(Context context) { + try { + ServiceInfo serviceInfo = context.getPackageManager().getServiceInfo( +diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidNetworkChannel.java b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidNetworkChannel.java +--- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidNetworkChannel.java ++++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidNetworkChannel.java +@@ -48,16 +48,12 @@ public class AndroidNetworkChannel implements TestableNetworkChannel { + Intent intent = ProtocolIntents.newOutboundMessageIntent(outgoingMessage); + + // Select the sender service to use for upstream message. +- if (AndroidChannelPreferences.getGcmChannelType(context) == GcmChannelType.GCM_UPSTREAM){ +- String upstreamServiceClass = new AndroidTiclManifest(context).getGcmUpstreamServiceClass(); +- if (upstreamServiceClass == null || upstreamServiceClass.isEmpty()) { +- logger.warning("GcmUpstreamSenderService class not found."); +- return; +- } +- intent.setClassName(context, upstreamServiceClass); +- } else { +- intent.setClassName(context, AndroidMessageSenderService.class.getName()); +- } ++ String upstreamServiceClass = new AndroidTiclManifest(context).getGcmUpstreamServiceClass(); ++ if (upstreamServiceClass == null || upstreamServiceClass.isEmpty()) { ++ logger.warning("GcmUpstreamSenderService class not found."); ++ return; ++ } ++ intent.setClassName(context, upstreamServiceClass); + try { + context.startService(intent); + } catch (IllegalStateException exception) { +@@ -77,6 +73,6 @@ public class AndroidNetworkChannel implements TestableNetworkChannel { + + @Override + public NetworkEndpointId getNetworkIdForTest() { +- return AndroidMessageSenderService.getNetworkEndpointId(context, resources.getLogger()); ++ return null; + } + } +-- +2.11.0 + diff --git a/patches/BRM092_Allow-sign-in-to-Google-sites-like-Gmail-without-signing-in-to-Chromium.patch b/patches/BRM095_Allow-sign-in-to-Google-sites-like-Gmail-without-signing-in-to-Chromium.patch similarity index 100% rename from patches/BRM092_Allow-sign-in-to-Google-sites-like-Gmail-without-signing-in-to-Chromium.patch rename to patches/BRM095_Allow-sign-in-to-Google-sites-like-Gmail-without-signing-in-to-Chromium.patch diff --git a/patches/BRM093_Permanently-disable-query-in-omnibox.patch b/patches/BRM096_Permanently-disable-query-in-omnibox.patch similarity index 100% rename from patches/BRM093_Permanently-disable-query-in-omnibox.patch rename to patches/BRM096_Permanently-disable-query-in-omnibox.patch diff --git a/patches/BRM094_Offer-builtin-autocomplete-for-chrome-flags.patch b/patches/BRM097_Offer-builtin-autocomplete-for-chrome-flags.patch similarity index 100% rename from patches/BRM094_Offer-builtin-autocomplete-for-chrome-flags.patch rename to patches/BRM097_Offer-builtin-autocomplete-for-chrome-flags.patch diff --git a/patches/BRM095_Enable-history-requirement-of-user-gesture.patch b/patches/BRM098_Enable-history-requirement-of-user-gesture.patch similarity index 100% rename from patches/BRM095_Enable-history-requirement-of-user-gesture.patch rename to patches/BRM098_Enable-history-requirement-of-user-gesture.patch diff --git a/patches/BRM096_Enable-serialization-of-scroll-position-changes-while-loading.patch b/patches/BRM099_Enable-serialization-of-scroll-position-changes-while-loading.patch similarity index 100% rename from patches/BRM096_Enable-serialization-of-scroll-position-changes-while-loading.patch rename to patches/BRM099_Enable-serialization-of-scroll-position-changes-while-loading.patch diff --git a/patches/BRM097_Remove-passwords-keyboard-accessory-option.patch b/patches/BRM100_Remove-passwords-keyboard-accessory-option.patch similarity index 100% rename from patches/BRM097_Remove-passwords-keyboard-accessory-option.patch rename to patches/BRM100_Remove-passwords-keyboard-accessory-option.patch diff --git a/patches/BRM098_Enable-TLS-1.3-final-by-default.patch b/patches/BRM101_Enable-TLS-1.3-final-by-default.patch similarity index 100% rename from patches/BRM098_Enable-TLS-1.3-final-by-default.patch rename to patches/BRM101_Enable-TLS-1.3-final-by-default.patch diff --git a/patches/BRM102_Do-not-grant-notifications-to-default-search-engine.patch b/patches/BRM102_Do-not-grant-notifications-to-default-search-engine.patch new file mode 100644 index 00000000..170a171c --- /dev/null +++ b/patches/BRM102_Do-not-grant-notifications-to-default-search-engine.patch @@ -0,0 +1,23 @@ +From: csagan5 <32685696+csagan5@users.noreply.github.com> +Date: Sat, 10 Nov 2018 19:47:39 +0100 +Subject: Do not grant notifications to default search engine + +--- + chrome/common/chrome_features.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc +--- a/chrome/common/chrome_features.cc ++++ b/chrome/common/chrome_features.cc +@@ -301,7 +301,7 @@ const base::Feature kGeoLanguage{"GeoLanguage", + + #if defined(OS_ANDROID) + const base::Feature kGrantNotificationsToDSE{"GrantNotificationsToDSE", +- base::FEATURE_ENABLED_BY_DEFAULT}; ++ base::FEATURE_DISABLED_BY_DEFAULT}; + #endif // defined(OS_ANDROID) + + #if defined (OS_CHROMEOS) +-- +2.11.0 + diff --git a/patches/BRM103_Remove-contacts-picker-permission.patch b/patches/BRM103_Remove-contacts-picker-permission.patch new file mode 100644 index 00000000..1e18a871 --- /dev/null +++ b/patches/BRM103_Remove-contacts-picker-permission.patch @@ -0,0 +1,37 @@ +From: csagan5 <32685696+csagan5@users.noreply.github.com> +Date: Sat, 10 Nov 2018 16:09:26 +0100 +Subject: Remove contacts picker permission + +--- + chrome/android/java/AndroidManifest.xml | 1 - + ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java | 4 +--- + 2 files changed, 1 insertion(+), 4 deletions(-) + +diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml +--- a/chrome/android/java/AndroidManifest.xml ++++ b/chrome/android/java/AndroidManifest.xml +@@ -35,7 +35,6 @@ by a child template that "extends" this file. + {% endif %} + + +- + + + +diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java +--- a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java ++++ b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java +@@ -324,9 +324,7 @@ public class SelectFileDialog + * 3.) There is a valid Android Activity associated with the file request. + */ + private boolean shouldUseContactsPicker() { +- if (mFileTypes.size() != 1) return false; +- if (!mFileTypes.get(0).equals("text/json+contacts")) return false; +- return UiUtils.shouldShowContactsPicker() && mWindowAndroid.getActivity().get() != null; ++ return false; + } + + /** +-- +2.11.0 + diff --git a/patches/BRM104_Disable-promos-displayed-in-bookmarks-manager.patch b/patches/BRM104_Disable-promos-displayed-in-bookmarks-manager.patch new file mode 100644 index 00000000..bfc0003f --- /dev/null +++ b/patches/BRM104_Disable-promos-displayed-in-bookmarks-manager.patch @@ -0,0 +1,171 @@ +From: csagan5 <32685696+csagan5@users.noreply.github.com> +Date: Sat, 10 Nov 2018 17:20:21 +0100 +Subject: =?UTF-8?q?Disable=20promos=20displayed=20in=20bookmarks=20manager?= + =?UTF-8?q?=0AXPATCH:=20never=20reach=20signin=20thresholds?= + +XPATCH remove promo header from bookmarks + +Remove personalized signin promo view from bookmarks +--- + .../personalized_signin_promo_view_bookmarks.xml | 30 ---------------------- + .../browser/bookmarks/BookmarkItemsAdapter.java | 23 ++--------------- + .../browser/signin/SigninPromoController.java | 19 ++------------ + chrome/android/java_sources.gni | 1 - + 4 files changed, 4 insertions(+), 69 deletions(-) + delete mode 100644 chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml + +diff --git a/chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml b/chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml +deleted file mode 100644 +--- a/chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml ++++ /dev/null +@@ -1,30 +0,0 @@ +- +- +- +- +- +- +- +- +- +- +- +- +- +\ No newline at end of file +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java +@@ -57,7 +57,6 @@ class BookmarkItemsAdapter + + private BookmarkDelegate mDelegate; + private Context mContext; +- private BookmarkPromoHeader mPromoHeaderManager; + private String mSearchText; + private BookmarkId mCurrentFolder; + +@@ -211,9 +210,9 @@ class BookmarkItemsAdapter + + switch (viewType) { + case ViewType.PERSONALIZED_SIGNIN_PROMO: +- return mPromoHeaderManager.createPersonalizedSigninPromoHolder(parent); ++ return null; + case ViewType.SYNC_PROMO: +- return mPromoHeaderManager.createSyncPromoHolder(parent); ++ return null; + case ViewType.FOLDER: + BookmarkFolderRow folder = (BookmarkFolderRow) LayoutInflater.from( + parent.getContext()).inflate(R.layout.bookmark_folder_row, parent, false); +@@ -234,8 +233,6 @@ class BookmarkItemsAdapter + public void onBindViewHolder(ViewHolder holder, int position) { + switch (holder.getItemViewType()) { + case ViewType.PERSONALIZED_SIGNIN_PROMO: +- PersonalizedSigninPromoView view = (PersonalizedSigninPromoView) holder.itemView; +- mPromoHeaderManager.setupPersonalizedSigninPromo(view); + break; + case ViewType.SYNC_PROMO: + break; +@@ -254,7 +251,6 @@ class BookmarkItemsAdapter + public void onViewRecycled(ViewHolder holder) { + switch (holder.getItemViewType()) { + case ViewType.PERSONALIZED_SIGNIN_PROMO: +- mPromoHeaderManager.detachPersonalizePromoView(); + break; + default: + // Other view holders don't have special recycling code. +@@ -289,7 +285,6 @@ class BookmarkItemsAdapter + } + }; + +- mPromoHeaderManager = new BookmarkPromoHeader(mContext, promoHeaderChangeAction); + populateTopLevelFoldersList(); + } + +@@ -299,7 +294,6 @@ class BookmarkItemsAdapter + mDelegate.removeUIObserver(this); + mDelegate.getModel().removeObserver(mBookmarkModelObserver); + mDelegate = null; +- mPromoHeaderManager.destroy(); + } + + @Override +@@ -366,19 +360,6 @@ class BookmarkItemsAdapter + if (currentUIState == BookmarkUIState.STATE_SEARCHING) return; + + assert currentUIState == BookmarkUIState.STATE_FOLDER : "Unexpected UI state"; +- +- switch (mPromoHeaderManager.getPromoState()) { +- case BookmarkPromoHeader.PromoState.PROMO_NONE: +- return; +- case BookmarkPromoHeader.PromoState.PROMO_SIGNIN_PERSONALIZED: +- mPromoHeaderSection.add(ViewType.PERSONALIZED_SIGNIN_PROMO); +- return; +- case BookmarkPromoHeader.PromoState.PROMO_SYNC: +- mPromoHeaderSection.add(ViewType.SYNC_PROMO); +- return; +- default: +- assert false : "Unexpected value for promo state!"; +- } + } + + private void populateTopLevelFoldersList() { +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java +@@ -77,23 +77,8 @@ public class SigninPromoController { + */ + public static boolean hasNotReachedImpressionLimit(@AccessPoint int accessPoint) { + SharedPreferences sharedPreferences = ContextUtils.getAppSharedPreferences(); +- switch (accessPoint) { +- case SigninAccessPoint.BOOKMARK_MANAGER: +- return sharedPreferences.getInt(SIGNIN_PROMO_IMPRESSIONS_COUNT_BOOKMARKS, 0) +- < MAX_IMPRESSIONS_BOOKMARKS; +- case SigninAccessPoint.NTP_CONTENT_SUGGESTIONS: +- // There is no impression limit for NTP content suggestions. +- return true; +- case SigninAccessPoint.RECENT_TABS: +- // There is no impression limit for Recent Tabs. +- return true; +- case SigninAccessPoint.SETTINGS: +- return sharedPreferences.getInt(SIGNIN_PROMO_IMPRESSIONS_COUNT_SETTINGS, 0) +- < MAX_IMPRESSIONS_SETTINGS; +- default: +- assert false : "Unexpected value for access point: " + accessPoint; +- return false; +- } ++ // never show anything ++ return true; + } + + /** +diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni +--- a/chrome/android/java_sources.gni ++++ b/chrome/android/java_sources.gni +@@ -137,7 +137,6 @@ chrome_java_sources = [ + "java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java", + "java/src/org/chromium/chrome/browser/bookmarks/BookmarkModel.java", + "java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java", +- "java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java", + "java/src/org/chromium/chrome/browser/bookmarks/BookmarkRow.java", + "java/src/org/chromium/chrome/browser/bookmarks/BookmarkUIObserver.java", + "java/src/org/chromium/chrome/browser/bookmarks/BookmarkUIState.java", +-- +2.11.0 +