mirror of https://github.com/gorhill/uBlock.git
Merge pull request #3 from yfdyh000/fix_issue_links_gorhill
Correct issue links
This commit is contained in:
commit
5758490daa
|
@ -67,7 +67,7 @@ info##DIV[class="banda-sticky-vp"]
|
||||||
info##DIV[class="banda-sticky-mini"]
|
info##DIV[class="banda-sticky-mini"]
|
||||||
|
|
||||||
!Whitelist
|
!Whitelist
|
||||||
! https://github.com/gorhill/uBlock/issues/693#issuecomment-72928751
|
! https://github.com/chrisaljoudi/uBlock/issues/693#issuecomment-72928751
|
||||||
! @@||homebank.ro^$document
|
! @@||homebank.ro^$document
|
||||||
! @@||profitshare.emag.ro/get_ads.php?*
|
! @@||profitshare.emag.ro/get_ads.php?*
|
||||||
! @@||profitshare.ro/get_ads.php?*
|
! @@||profitshare.ro/get_ads.php?*
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Needed to unbreak sites affected by out of the box lists
|
# Needed to unbreak sites affected by out of the box lists
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/20
|
# https://github.com/chrisaljoudi/uBlock/issues/20
|
||||||
# => blocking counterpart in Peter Lowe's Ad Server
|
# => blocking counterpart in Peter Lowe's Ad Server
|
||||||
@@||www.google-analytics.com/ga.js^$domain=xda-developers.com
|
@@||www.google-analytics.com/ga.js^$domain=xda-developers.com
|
||||||
|
|
||||||
|
@ -11,8 +11,8 @@
|
||||||
# Zerohedge: ref: http://forums.lanik.us/viewtopic.php?f=62&t=17307
|
# Zerohedge: ref: http://forums.lanik.us/viewtopic.php?f=62&t=17307
|
||||||
www.zerohedge.com##.similar-box
|
www.zerohedge.com##.similar-box
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/57
|
# https://github.com/chrisaljoudi/uBlock/issues/57
|
||||||
# https://github.com/gorhill/uBlock/issues/98
|
# https://github.com/chrisaljoudi/uBlock/issues/98
|
||||||
# New filter class: entity filters, where
|
# New filter class: entity filters, where
|
||||||
# entity = domain minus public suffix
|
# entity = domain minus public suffix
|
||||||
# The following filters were taken out of EasyList and given an entity name,
|
# The following filters were taken out of EasyList and given an entity name,
|
||||||
|
@ -61,7 +61,7 @@ google.*##.ra[width="30%"][align="right"] + table[width="70%"][cellpadding="0"]
|
||||||
google.*##.rhsvw[style="background-color:#fff;margin:0 0 14px;padding-bottom:1px;padding-top:1px;"]
|
google.*##.rhsvw[style="background-color:#fff;margin:0 0 14px;padding-bottom:1px;padding-top:1px;"]
|
||||||
google.*##.rscontainer > .ellip
|
google.*##.rscontainer > .ellip
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/381
|
# https://github.com/chrisaljoudi/uBlock/issues/381
|
||||||
google.*###sqh
|
google.*###sqh
|
||||||
|
|
||||||
# For when javascript is disabled
|
# For when javascript is disabled
|
||||||
|
@ -72,22 +72,22 @@ google.*###center_col > #tads
|
||||||
www.youtube.com##.masthead-ad-control
|
www.youtube.com##.masthead-ad-control
|
||||||
www.youtube.com##.ad-div
|
www.youtube.com##.ad-div
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/63
|
# https://github.com/chrisaljoudi/uBlock/issues/63
|
||||||
@@||adf.ly^$~third-party
|
@@||adf.ly^$~third-party
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/69
|
# https://github.com/chrisaljoudi/uBlock/issues/69
|
||||||
@@||widget-cdn.rpxnow.com^$domain=foxnews.com,script
|
@@||widget-cdn.rpxnow.com^$domain=foxnews.com,script
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/119
|
# https://github.com/chrisaljoudi/uBlock/issues/119
|
||||||
# To counter `google-analytics.com` in Peter Lowe's list
|
# To counter `google-analytics.com` in Peter Lowe's list
|
||||||
@@||google-analytics.com^$domain=avianca.com
|
@@||google-analytics.com^$domain=avianca.com
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/141
|
# https://github.com/chrisaljoudi/uBlock/issues/141
|
||||||
# Videos broken on weather.com
|
# Videos broken on weather.com
|
||||||
# To counter `tags.tiqcdn.com` in MVPS
|
# To counter `tags.tiqcdn.com` in MVPS
|
||||||
@@||tags.tiqcdn.com/utag/*.js$script,domain=cnet.com|weather.com
|
@@||tags.tiqcdn.com/utag/*.js$script,domain=cnet.com|weather.com
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/17#issuecomment-51625306
|
# https://github.com/chrisaljoudi/uBlock/issues/17#issuecomment-51625306
|
||||||
# To counter `extras.mnginteractive.com` in hpHosts
|
# To counter `extras.mnginteractive.com` in hpHosts
|
||||||
@@||extras.mnginteractive.com^$domain=mercurynews.com|denverpost.com|twincities.com
|
@@||extras.mnginteractive.com^$domain=mercurynews.com|denverpost.com|twincities.com
|
||||||
|
|
||||||
|
@ -95,23 +95,23 @@ www.youtube.com##.ad-div
|
||||||
# To counter `statcounter.com` in Peter Lowe's, MVPS, Dan Pollock's and hpHosts
|
# To counter `statcounter.com` in Peter Lowe's, MVPS, Dan Pollock's and hpHosts
|
||||||
@@||statcounter.com^$~third-party
|
@@||statcounter.com^$~third-party
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/166
|
# https://github.com/chrisaljoudi/uBlock/issues/166
|
||||||
# To counter `liverail.com` in Peter Lowe's, MVPS, and hpHosts
|
# To counter `liverail.com` in Peter Lowe's, MVPS, and hpHosts
|
||||||
@@||cdn-static.liverail.com^$object-subrequest
|
@@||cdn-static.liverail.com^$object-subrequest
|
||||||
|
|
||||||
# cnet.com needs this for video players
|
# cnet.com needs this for video players
|
||||||
# https://github.com/gorhill/uBlock/issues/227
|
# https://github.com/chrisaljoudi/uBlock/issues/227
|
||||||
# To counter `2mdn.net` in Peter Lowe's
|
# To counter `2mdn.net` in Peter Lowe's
|
||||||
# To counter `s0.2mdn.net` in MVPS, hpHosts, Dan Pollock's
|
# To counter `s0.2mdn.net` in MVPS, hpHosts, Dan Pollock's
|
||||||
@@||s0.2mdn.net/instream/*$domain=cnet.com|nfl.com|wistv.com
|
@@||s0.2mdn.net/instream/*$domain=cnet.com|nfl.com|wistv.com
|
||||||
@@||s0.2mdn.net/instream/flash/v3/adsapi_3.swf$object
|
@@||s0.2mdn.net/instream/flash/v3/adsapi_3.swf$object
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/243
|
# https://github.com/chrisaljoudi/uBlock/issues/243
|
||||||
# To counter `cdn-i.dmdentertainment.com` in hpHosts
|
# To counter `cdn-i.dmdentertainment.com` in hpHosts
|
||||||
@@||cdn-i.dmdentertainment.com^$domain=cracked.com
|
@@||cdn-i.dmdentertainment.com^$domain=cracked.com
|
||||||
|
|
||||||
# EasyList/EasyPrivacy fixes
|
# EasyList/EasyPrivacy fixes
|
||||||
# https://github.com/gorhill/uBlock/issues/373
|
# https://github.com/chrisaljoudi/uBlock/issues/373
|
||||||
@@||omtrdc.net^$domain=www.amazon.com
|
@@||omtrdc.net^$domain=www.amazon.com
|
||||||
# To counter `/b/ss/*&aqe=` and `||scorecardresearch.com^$third-party` in
|
# To counter `/b/ss/*&aqe=` and `||scorecardresearch.com^$third-party` in
|
||||||
# EasyPrivacy: "cant click on next picture on this adreess ... "
|
# EasyPrivacy: "cant click on next picture on this adreess ... "
|
||||||
|
@ -142,19 +142,19 @@ www.thesimsresource.com##.ad-topleader
|
||||||
# To counter `adm.fwmrm.net` from hpHosts, MVPS, Dan Pollock's
|
# To counter `adm.fwmrm.net` from hpHosts, MVPS, Dan Pollock's
|
||||||
@@||adm.fwmrm.net^$domain=go.com
|
@@||adm.fwmrm.net^$domain=go.com
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/274
|
# https://github.com/chrisaljoudi/uBlock/issues/274
|
||||||
# To counter `mopub.com` in Peter Lowe's
|
# To counter `mopub.com` in Peter Lowe's
|
||||||
@@||mopub.com^$~third-party
|
@@||mopub.com^$~third-party
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/293
|
# https://github.com/chrisaljoudi/uBlock/issues/293
|
||||||
# To counter `safelinking.net` in hpHosts
|
# To counter `safelinking.net` in hpHosts
|
||||||
@@||safelinking.net^$~third-party
|
@@||safelinking.net^$~third-party
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/302
|
# https://github.com/chrisaljoudi/uBlock/issues/302
|
||||||
# To counter `outbrain.com` in hpHosts
|
# To counter `outbrain.com` in hpHosts
|
||||||
@@||outbrain.com^$~third-party
|
@@||outbrain.com^$~third-party
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/316
|
# https://github.com/chrisaljoudi/uBlock/issues/316
|
||||||
# To counter `inc.com` in Peter Lowe's, hpHosts
|
# To counter `inc.com` in Peter Lowe's, hpHosts
|
||||||
@@||inc.com^$~third-party
|
@@||inc.com^$~third-party
|
||||||
|
|
||||||
|
@ -162,11 +162,11 @@ www.thesimsresource.com##.ad-topleader
|
||||||
# To counter Peter Lowe's `intergi.com`
|
# To counter Peter Lowe's `intergi.com`
|
||||||
@@||intergi.com^$domain=tvgolo.com
|
@@||intergi.com^$domain=tvgolo.com
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/336
|
# https://github.com/chrisaljoudi/uBlock/issues/336
|
||||||
# To counter `flurry.com` in Peter Lowe's, hpHosts, MVPS
|
# To counter `flurry.com` in Peter Lowe's, hpHosts, MVPS
|
||||||
@@||flurry.com^$~third-party
|
@@||flurry.com^$~third-party
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/374
|
# https://github.com/chrisaljoudi/uBlock/issues/374
|
||||||
# To counter `2mdn.net` in Peter Lowe's, `s0.2mdn.net` in hpHosts
|
# To counter `2mdn.net` in Peter Lowe's, `s0.2mdn.net` in hpHosts
|
||||||
@@||s0.2mdn.net/instream/*$object,script,domain=wsmv.com
|
@@||s0.2mdn.net/instream/*$object,script,domain=wsmv.com
|
||||||
|
|
||||||
|
@ -178,17 +178,17 @@ www.thesimsresource.com##.ad-topleader
|
||||||
# To counter `www.googletagservices.com` in MVPS, hpHosts, Dan Pollock's
|
# To counter `www.googletagservices.com` in MVPS, hpHosts, Dan Pollock's
|
||||||
@@||www.googletagservices.com/tag/js/gpt.js^$script,domain=weather.com
|
@@||www.googletagservices.com/tag/js/gpt.js^$script,domain=weather.com
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/409
|
# https://github.com/chrisaljoudi/uBlock/issues/409
|
||||||
@@||c.speedtest.net^$~third-party
|
@@||c.speedtest.net^$~third-party
|
||||||
|
|
||||||
# To counter Peter Lowe's, hpHosts
|
# To counter Peter Lowe's, hpHosts
|
||||||
@@||boldchat.com^$~third-party
|
@@||boldchat.com^$~third-party
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/463
|
# https://github.com/chrisaljoudi/uBlock/issues/463
|
||||||
# To counter Peter Lowe's, hpHosts
|
# To counter Peter Lowe's, hpHosts
|
||||||
@@||mixpanel.com^$~third-party
|
@@||mixpanel.com^$~third-party
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/466
|
# https://github.com/chrisaljoudi/uBlock/issues/466
|
||||||
# Until fixed in EasyPrivacy
|
# Until fixed in EasyPrivacy
|
||||||
@@/google-analytics-dashboard
|
@@/google-analytics-dashboard
|
||||||
|
|
||||||
|
@ -204,7 +204,7 @@ ovh.strim.io#@##tweets
|
||||||
# To counter Dan Pollock's, hpHosts, MVPS, Peter Lowe's
|
# To counter Dan Pollock's, hpHosts, MVPS, Peter Lowe's
|
||||||
@@||google-analytics.com/analytics.js$domain=www.vd.nl
|
@@||google-analytics.com/analytics.js$domain=www.vd.nl
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/570
|
# https://github.com/chrisaljoudi/uBlock/issues/570
|
||||||
# To counter `yui.yahooapis.com` in hpHosts
|
# To counter `yui.yahooapis.com` in hpHosts
|
||||||
@@||yui.yahooapis.com^
|
@@||yui.yahooapis.com^
|
||||||
|
|
||||||
|
@ -212,10 +212,10 @@ ovh.strim.io#@##tweets
|
||||||
# To counter `top.mail.ru` in Peter Lowe's
|
# To counter `top.mail.ru` in Peter Lowe's
|
||||||
@@||top.mail.ru^$~third-party
|
@@||top.mail.ru^$~third-party
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/510#issuecomment-71050211
|
# https://github.com/chrisaljoudi/uBlock/issues/510#issuecomment-71050211
|
||||||
||racksauce.com^$domain=promptfile.com
|
||racksauce.com^$domain=promptfile.com
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/510#issuecomment-71078475
|
# https://github.com/chrisaljoudi/uBlock/issues/510#issuecomment-71078475
|
||||||
|http://$popup,domain=filenuke.com|sharesix.com
|
|http://$popup,domain=filenuke.com|sharesix.com
|
||||||
||filenuke.com/a/script.js$script
|
||filenuke.com/a/script.js$script
|
||||||
||mwem.filenuke.com/*/*$script
|
||mwem.filenuke.com/*/*$script
|
||||||
|
@ -228,15 +228,15 @@ ovh.strim.io#@##tweets
|
||||||
||lsg.sharesix.com/*/*$script
|
||lsg.sharesix.com/*/*$script
|
||||||
||nvy.sharesix.com/*/*$script
|
||nvy.sharesix.com/*/*$script
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/580
|
# https://github.com/chrisaljoudi/uBlock/issues/580
|
||||||
# To counter `liverail.com` in Dan Pollock's, hpHosts, MVPS, Peter Lowe's
|
# To counter `liverail.com` in Dan Pollock's, hpHosts, MVPS, Peter Lowe's
|
||||||
@@||cdn-static.liverail.com$domain=9to5mac.com
|
@@||cdn-static.liverail.com$domain=9to5mac.com
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/602
|
# https://github.com/chrisaljoudi/uBlock/issues/602
|
||||||
# To counter `/ads.css` in EasyList
|
# To counter `/ads.css` in EasyList
|
||||||
@@||css.washingtonpost.com/*/ads.css$stylesheet,~third-party
|
@@||css.washingtonpost.com/*/ads.css$stylesheet,~third-party
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/607
|
# https://github.com/chrisaljoudi/uBlock/issues/607
|
||||||
# To counter `||pcekspert.com^` in Peter Lowe's
|
# To counter `||pcekspert.com^` in Peter Lowe's
|
||||||
@@||pcekspert.com^$~third-party
|
@@||pcekspert.com^$~third-party
|
||||||
|
|
||||||
|
@ -244,22 +244,22 @@ ovh.strim.io#@##tweets
|
||||||
# To counter `||clickbank.com^` in Dan Pollock's, Peter Lowe's
|
# To counter `||clickbank.com^` in Dan Pollock's, Peter Lowe's
|
||||||
@@||clickbank.com^$~third-party
|
@@||clickbank.com^$~third-party
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/614
|
# https://github.com/chrisaljoudi/uBlock/issues/614
|
||||||
# To counter `awaps.yandex.ru` in hpHosts
|
# To counter `awaps.yandex.ru` in hpHosts
|
||||||
# To counter `mc.yandex.ru` in hpHosts, MVPS
|
# To counter `mc.yandex.ru` in hpHosts, MVPS
|
||||||
@@||awaps.yandex.ru^$domain=market.yandex.ru
|
@@||awaps.yandex.ru^$domain=market.yandex.ru
|
||||||
@@||mc.yandex.ru^$domain=market.yandex.ru
|
@@||mc.yandex.ru^$domain=market.yandex.ru
|
||||||
@@||yastatic.net/market-export/*/advert.js$domain=market.yandex.ru
|
@@||yastatic.net/market-export/*/advert.js$domain=market.yandex.ru
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/618
|
# https://github.com/chrisaljoudi/uBlock/issues/618
|
||||||
deviantart.com##.dp-ad-chrome.dp-ad-visible
|
deviantart.com##.dp-ad-chrome.dp-ad-visible
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/650
|
# https://github.com/chrisaljoudi/uBlock/issues/650
|
||||||
# https://github.com/gorhill/uBlock/issues/821
|
# https://github.com/chrisaljoudi/uBlock/issues/821
|
||||||
# To counter `google-analytics.com` in Dan Pollock's, hpHosts, MVPS, Peter Lowe's
|
# To counter `google-analytics.com` in Dan Pollock's, hpHosts, MVPS, Peter Lowe's
|
||||||
@@||www.google-analytics.com/ga.js$domain=onlinetv.ru|zie.nl
|
@@||www.google-analytics.com/ga.js$domain=onlinetv.ru|zie.nl
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/774
|
# https://github.com/chrisaljoudi/uBlock/issues/774
|
||||||
# To counter `carbonads.net` in Peter Lowe's
|
# To counter `carbonads.net` in Peter Lowe's
|
||||||
@@||carbonads.net^$~third-party
|
@@||carbonads.net^$~third-party
|
||||||
|
|
||||||
|
@ -270,12 +270,12 @@ deviantart.com##.dp-ad-chrome.dp-ad-visible
|
||||||
# To counter `2o7.net` in Peter Lowe's
|
# To counter `2o7.net` in Peter Lowe's
|
||||||
@@||2o7.net^$domain=totaljobs.com
|
@@||2o7.net^$domain=totaljobs.com
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/822
|
# https://github.com/chrisaljoudi/uBlock/issues/822
|
||||||
# https://github.com/gorhill/uBlock/issues/940
|
# https://github.com/chrisaljoudi/uBlock/issues/940
|
||||||
# To counter `google-analytics.com` in Dan Pollock's, hpHosts, MVPS, Peter Lowe's
|
# To counter `google-analytics.com` in Dan Pollock's, hpHosts, MVPS, Peter Lowe's
|
||||||
@@||google-analytics.com^$domain=musixmatch.com|bikstok.sonymusicshop.dk
|
@@||google-analytics.com^$domain=musixmatch.com|bikstok.sonymusicshop.dk
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/841
|
# https://github.com/chrisaljoudi/uBlock/issues/841
|
||||||
# To counter `quantcast.com` in hpHosts, Peter Lowe's
|
# To counter `quantcast.com` in hpHosts, Peter Lowe's
|
||||||
@@||quantcast.com^$~third-party
|
@@||quantcast.com^$~third-party
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ cdn.jsdelivr.net
|
||||||
cdnjs.cloudflare.com
|
cdnjs.cloudflare.com
|
||||||
^cdnjs\.cloudflare\.com\/ajax\/libs\/
|
^cdnjs\.cloudflare\.com\/ajax\/libs\/
|
||||||
code.jquery.com
|
code.jquery.com
|
||||||
# https://github.com/gorhill/uBlock/issues/357
|
# https://github.com/chrisaljoudi/uBlock/issues/357
|
||||||
# Avoid CSS-based themes, because relative URLs won't work from
|
# Avoid CSS-based themes, because relative URLs won't work from
|
||||||
# within a data: URI
|
# within a data: URI
|
||||||
^code\.jquery\.com\/(?!.*\/themes\/.+\.css)
|
^code\.jquery\.com\/(?!.*\/themes\/.+\.css)
|
||||||
|
@ -27,7 +27,7 @@ netdna.bootstrapcdn.com
|
||||||
platform.twitter.com
|
platform.twitter.com
|
||||||
^platform\.twitter\.com\/widgets\.js
|
^platform\.twitter\.com\/widgets\.js
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/270#issuecomment-57913228
|
# https://github.com/chrisaljoudi/uBlock/issues/270#issuecomment-57913228
|
||||||
# Ref: http://www.asp.net/ajax/cdn
|
# Ref: http://www.asp.net/ajax/cdn
|
||||||
ajax.aspnetcdn.com
|
ajax.aspnetcdn.com
|
||||||
# Avoid CSS-based themes, because relative URLs won't work from
|
# Avoid CSS-based themes, because relative URLs won't work from
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
# Commenting it out allows me to enable this one out-of-the-box.
|
# Commenting it out allows me to enable this one out-of-the-box.
|
||||||
# ||linkedin.com^$third-party,important
|
# ||linkedin.com^$third-party,important
|
||||||
|
|
||||||
# https://github.com/gorhill/uBlock/issues/289
|
# https://github.com/chrisaljoudi/uBlock/issues/289
|
||||||
# Commented out, breaks to many sites. See:
|
# Commented out, breaks to many sites. See:
|
||||||
# https://hg.adblockplus.org/easylist/rev/9f6e928c258a#l2.12
|
# https://hg.adblockplus.org/easylist/rev/9f6e928c258a#l2.12
|
||||||
# Users can still block this one through hpHosts, MVPS, Dan Pollock's or
|
# Users can still block this one through hpHosts, MVPS, Dan Pollock's or
|
||||||
|
|
|
@ -382,8 +382,8 @@ vAPI.tabs.injectScript = function(tabId, details, callback) {
|
||||||
|
|
||||||
// Must read: https://code.google.com/p/chromium/issues/detail?id=410868#c8
|
// Must read: https://code.google.com/p/chromium/issues/detail?id=410868#c8
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/19
|
// https://github.com/chrisaljoudi/uBlock/issues/19
|
||||||
// https://github.com/gorhill/uBlock/issues/207
|
// https://github.com/chrisaljoudi/uBlock/issues/207
|
||||||
// Since we may be called asynchronously, the tab id may not exist
|
// Since we may be called asynchronously, the tab id may not exist
|
||||||
// anymore, so this ensures it does still exist.
|
// anymore, so this ensures it does still exist.
|
||||||
|
|
||||||
|
@ -548,7 +548,7 @@ CallbackWrapper.prototype.init = function(port, request) {
|
||||||
};
|
};
|
||||||
|
|
||||||
CallbackWrapper.prototype.proxy = function(response) {
|
CallbackWrapper.prototype.proxy = function(response) {
|
||||||
// https://github.com/gorhill/uBlock/issues/383
|
// https://github.com/chrisaljoudi/uBlock/issues/383
|
||||||
if ( this.messaging.ports.hasOwnProperty(this.port.name) ) {
|
if ( this.messaging.ports.hasOwnProperty(this.port.name) ) {
|
||||||
this.port.postMessage({
|
this.port.postMessage({
|
||||||
requestId: this.request.requestId,
|
requestId: this.request.requestId,
|
||||||
|
@ -585,7 +585,7 @@ vAPI.net.registerListeners = function() {
|
||||||
var tail = µburi.path.slice(-6);
|
var tail = µburi.path.slice(-6);
|
||||||
var pos = tail.lastIndexOf('.');
|
var pos = tail.lastIndexOf('.');
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/862
|
// https://github.com/chrisaljoudi/uBlock/issues/862
|
||||||
// If no transposition possible, transpose to `object` as per
|
// If no transposition possible, transpose to `object` as per
|
||||||
// Chromium bug 410382 (see below)
|
// Chromium bug 410382 (see below)
|
||||||
if ( pos === -1 ) {
|
if ( pos === -1 ) {
|
||||||
|
@ -706,7 +706,7 @@ vAPI.onLoadAllCompleted = function() {
|
||||||
while ( i-- ) {
|
while ( i-- ) {
|
||||||
tab = tabs[i];
|
tab = tabs[i];
|
||||||
µb.bindTabToPageStats(tab.id, tab.url);
|
µb.bindTabToPageStats(tab.id, tab.url);
|
||||||
// https://github.com/gorhill/uBlock/issues/129
|
// https://github.com/chrisaljoudi/uBlock/issues/129
|
||||||
scriptStart(tab.id);
|
scriptStart(tab.id);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
var vAPI = self.vAPI = self.vAPI || {};
|
var vAPI = self.vAPI = self.vAPI || {};
|
||||||
var chrome = self.chrome;
|
var chrome = self.chrome;
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/456
|
// https://github.com/chrisaljoudi/uBlock/issues/456
|
||||||
// Already injected?
|
// Already injected?
|
||||||
if ( vAPI.vapiClientInjected ) {
|
if ( vAPI.vapiClientInjected ) {
|
||||||
//console.debug('vapi-client.js already injected: skipping.');
|
//console.debug('vapi-client.js already injected: skipping.');
|
||||||
|
|
|
@ -1339,7 +1339,7 @@ vAPI.net.registerListeners = function() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/105
|
// https://github.com/chrisaljoudi/uBlock/issues/105
|
||||||
// Allow any kind of pages
|
// Allow any kind of pages
|
||||||
vAPI.tabs.onNavigation({
|
vAPI.tabs.onNavigation({
|
||||||
frameId: 0,
|
frameId: 0,
|
||||||
|
@ -1617,7 +1617,7 @@ vAPI.toolbarButton.onBeforeCreated = function(doc) {
|
||||||
updateTimer = null;
|
updateTimer = null;
|
||||||
var body = iframe.contentDocument.body;
|
var body = iframe.contentDocument.body;
|
||||||
panel.parentNode.style.maxWidth = 'none';
|
panel.parentNode.style.maxWidth = 'none';
|
||||||
// https://github.com/gorhill/uBlock/issues/730
|
// https://github.com/chrisaljoudi/uBlock/issues/730
|
||||||
// Voodoo programming: this recipe works
|
// Voodoo programming: this recipe works
|
||||||
panel.style.height = iframe.style.height = body.clientHeight.toString() + 'px';
|
panel.style.height = iframe.style.height = body.clientHeight.toString() + 'px';
|
||||||
panel.style.width = iframe.style.width = body.clientWidth.toString() + 'px';
|
panel.style.width = iframe.style.width = body.clientWidth.toString() + 'px';
|
||||||
|
@ -1713,7 +1713,7 @@ vAPI.contextMenu.displayMenuItem = function({target}) {
|
||||||
var menuitem = doc.getElementById(vAPI.contextMenu.menuItemId);
|
var menuitem = doc.getElementById(vAPI.contextMenu.menuItemId);
|
||||||
var currentURI = gContextMenu.browser.currentURI;
|
var currentURI = gContextMenu.browser.currentURI;
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/105
|
// https://github.com/chrisaljoudi/uBlock/issues/105
|
||||||
// TODO: Should the element picker works on any kind of pages?
|
// TODO: Should the element picker works on any kind of pages?
|
||||||
if ( !currentURI.schemeIs('http') && !currentURI.schemeIs('https') ) {
|
if ( !currentURI.schemeIs('http') && !currentURI.schemeIs('https') ) {
|
||||||
menuitem.hidden = true;
|
menuitem.hidden = true;
|
||||||
|
|
|
@ -69,7 +69,7 @@ function allFiltersApplyHandler() {
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
var handleImportFilePicker = function() {
|
var handleImportFilePicker = function() {
|
||||||
// https://github.com/gorhill/uBlock/issues/1004
|
// https://github.com/chrisaljoudi/uBlock/issues/1004
|
||||||
// Support extraction of filters from ABP backup file
|
// Support extraction of filters from ABP backup file
|
||||||
var abpImporter = function(s) {
|
var abpImporter = function(s) {
|
||||||
var reAbpExtractor = /\n\[Subscription\]\n+url=~[\x08-\x7E]+?\[Subscription filters\]([\x08-\x7E]*?)(?:\[Subscription\]|$)/ig;
|
var reAbpExtractor = /\n\[Subscription\]\n+url=~[\x08-\x7E]+?\[Subscription filters\]([\x08-\x7E]*?)(?:\[Subscription\]|$)/ig;
|
||||||
|
|
|
@ -115,7 +115,7 @@ var renderFilterLists = function() {
|
||||||
.replace('{{total}}', !isNaN(+entry.entryCount) ? renderNumber(entry.entryCount) : '?');
|
.replace('{{total}}', !isNaN(+entry.entryCount) ? renderNumber(entry.entryCount) : '?');
|
||||||
elem.text(text);
|
elem.text(text);
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/104
|
// https://github.com/chrisaljoudi/uBlock/issues/104
|
||||||
var asset = listDetails.cache[listKey] || {};
|
var asset = listDetails.cache[listKey] || {};
|
||||||
|
|
||||||
// Update status
|
// Update status
|
||||||
|
|
|
@ -66,7 +66,7 @@ var exports = {
|
||||||
autoUpdate: true,
|
autoUpdate: true,
|
||||||
autoUpdateDelay: 4 * oneDay,
|
autoUpdateDelay: 4 * oneDay,
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/426
|
// https://github.com/chrisaljoudi/uBlock/issues/426
|
||||||
remoteFetchBarrier: 0
|
remoteFetchBarrier: 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -354,7 +354,7 @@ var updateLocalChecksums = function() {
|
||||||
var getRepoMetadata = function(callback) {
|
var getRepoMetadata = function(callback) {
|
||||||
callback = callback || nullFunc;
|
callback = callback || nullFunc;
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/515
|
// https://github.com/chrisaljoudi/uBlock/issues/515
|
||||||
// Handle re-entrancy here, i.e. we MUST NOT tamper with the waiting list
|
// Handle re-entrancy here, i.e. we MUST NOT tamper with the waiting list
|
||||||
// of callers, if any, except to add one at the end of the list.
|
// of callers, if any, except to add one at the end of the list.
|
||||||
if ( repoMetadata !== null && repoMetadata.waiting.length !== 0 ) {
|
if ( repoMetadata !== null && repoMetadata.waiting.length !== 0 ) {
|
||||||
|
@ -407,7 +407,7 @@ var getRepoMetadata = function(callback) {
|
||||||
updateLocalChecksums();
|
updateLocalChecksums();
|
||||||
}
|
}
|
||||||
// Notify all waiting callers
|
// Notify all waiting callers
|
||||||
// https://github.com/gorhill/uBlock/issues/515
|
// https://github.com/chrisaljoudi/uBlock/issues/515
|
||||||
// VERY IMPORTANT: because of re-entrancy, we MUST:
|
// VERY IMPORTANT: because of re-entrancy, we MUST:
|
||||||
// - process the waiting callers in a FIFO manner
|
// - process the waiting callers in a FIFO manner
|
||||||
// - not cache repoMetadata.waiting.length, we MUST use the live
|
// - not cache repoMetadata.waiting.length, we MUST use the live
|
||||||
|
@ -534,7 +534,7 @@ var readLocalFile = function(path, callback) {
|
||||||
// Get the repository copy of a built-in asset.
|
// Get the repository copy of a built-in asset.
|
||||||
|
|
||||||
var readRepoFile = function(path, callback) {
|
var readRepoFile = function(path, callback) {
|
||||||
// https://github.com/gorhill/uBlock/issues/426
|
// https://github.com/chrisaljoudi/uBlock/issues/426
|
||||||
if ( exports.remoteFetchBarrier !== 0 ) {
|
if ( exports.remoteFetchBarrier !== 0 ) {
|
||||||
readLocalFile(path, callback);
|
readLocalFile(path, callback);
|
||||||
return;
|
return;
|
||||||
|
@ -866,7 +866,7 @@ var readExternalAsset = function(path, callback) {
|
||||||
};
|
};
|
||||||
|
|
||||||
var onExternalFileLoaded = function() {
|
var onExternalFileLoaded = function() {
|
||||||
// https://github.com/gorhill/uBlock/issues/708
|
// https://github.com/chrisaljoudi/uBlock/issues/708
|
||||||
// A successful download should never return an empty file: turn this
|
// A successful download should never return an empty file: turn this
|
||||||
// into an error condition.
|
// into an error condition.
|
||||||
if ( stringIsNotEmpty(this.responseText) === false ) {
|
if ( stringIsNotEmpty(this.responseText) === false ) {
|
||||||
|
@ -1045,7 +1045,7 @@ exports.rmrf = function() {
|
||||||
exports.metadata = function(callback) {
|
exports.metadata = function(callback) {
|
||||||
var out = {};
|
var out = {};
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/186
|
// https://github.com/chrisaljoudi/uBlock/issues/186
|
||||||
// We need to check cache obsolescence when both cache and repo meta data
|
// We need to check cache obsolescence when both cache and repo meta data
|
||||||
// has been gathered.
|
// has been gathered.
|
||||||
var checkCacheObsolescence = function() {
|
var checkCacheObsolescence = function() {
|
||||||
|
|
|
@ -66,7 +66,7 @@ return {
|
||||||
showIconBadge: true
|
showIconBadge: true
|
||||||
},
|
},
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/180
|
// https://github.com/chrisaljoudi/uBlock/issues/180
|
||||||
// Whitelist directives need to be loaded once the PSL is available
|
// Whitelist directives need to be loaded once the PSL is available
|
||||||
netWhitelist: {},
|
netWhitelist: {},
|
||||||
netWhitelistModifyTime: 0,
|
netWhitelistModifyTime: 0,
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/464
|
// https://github.com/chrisaljoudi/uBlock/issues/464
|
||||||
if ( document instanceof HTMLDocument === false ) {
|
if ( document instanceof HTMLDocument === false ) {
|
||||||
//console.debug('contentscript-end.js > not a HTLMDocument');
|
//console.debug('contentscript-end.js > not a HTLMDocument');
|
||||||
return false;
|
return false;
|
||||||
|
@ -42,13 +42,13 @@ if ( !vAPI ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/587
|
// https://github.com/chrisaljoudi/uBlock/issues/587
|
||||||
// Pointless to execute without the start script having done its job.
|
// Pointless to execute without the start script having done its job.
|
||||||
if ( !vAPI.contentscriptStartInjected ) {
|
if ( !vAPI.contentscriptStartInjected ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/456
|
// https://github.com/chrisaljoudi/uBlock/issues/456
|
||||||
// Already injected?
|
// Already injected?
|
||||||
if ( vAPI.contentscriptEndInjected ) {
|
if ( vAPI.contentscriptEndInjected ) {
|
||||||
//console.debug('contentscript-end.js > content script already injected');
|
//console.debug('contentscript-end.js > content script already injected');
|
||||||
|
@ -63,7 +63,7 @@ var messager = vAPI.messaging.channel('contentscript-end.js');
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/789
|
// https://github.com/chrisaljoudi/uBlock/issues/789
|
||||||
// Be sure that specific cosmetic filters are still applied.
|
// Be sure that specific cosmetic filters are still applied.
|
||||||
// Executed once, then flushed from memory.
|
// Executed once, then flushed from memory.
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ var messager = vAPI.messaging.channel('contentscript-end.js');
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/7
|
// https://github.com/chrisaljoudi/uBlock/issues/7
|
||||||
|
|
||||||
var uBlockCollapser = (function() {
|
var uBlockCollapser = (function() {
|
||||||
var timer = null;
|
var timer = null;
|
||||||
|
@ -136,18 +136,18 @@ var uBlockCollapser = (function() {
|
||||||
delete pendingRequests[request.id];
|
delete pendingRequests[request.id];
|
||||||
pendingRequestCount -= 1;
|
pendingRequestCount -= 1;
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/869
|
// https://github.com/chrisaljoudi/uBlock/issues/869
|
||||||
if ( !request.collapse ) {
|
if ( !request.collapse ) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
target = entry.target;
|
target = entry.target;
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/399
|
// https://github.com/chrisaljoudi/uBlock/issues/399
|
||||||
// Never remove elements from the DOM, just hide them
|
// Never remove elements from the DOM, just hide them
|
||||||
target.style.setProperty('display', 'none', 'important');
|
target.style.setProperty('display', 'none', 'important');
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/1048
|
// https://github.com/chrisaljoudi/uBlock/issues/1048
|
||||||
// Use attribute to construct CSS rule
|
// Use attribute to construct CSS rule
|
||||||
if ( value = target.getAttribute(entry.attr) ) {
|
if ( value = target.getAttribute(entry.attr) ) {
|
||||||
selectors.push(entry.tagName + '[' + entry.attr + '="' + value + '"]');
|
selectors.push(entry.tagName + '[' + entry.attr + '="' + value + '"]');
|
||||||
|
@ -200,7 +200,7 @@ var uBlockCollapser = (function() {
|
||||||
if ( prop === undefined ) {
|
if ( prop === undefined ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// https://github.com/gorhill/uBlock/issues/174
|
// https://github.com/chrisaljoudi/uBlock/issues/174
|
||||||
// Do not remove fragment from src URL
|
// Do not remove fragment from src URL
|
||||||
var src = target[prop];
|
var src = target[prop];
|
||||||
if ( typeof src !== 'string' || src === '' ) {
|
if ( typeof src !== 'string' || src === '' ) {
|
||||||
|
@ -278,7 +278,7 @@ var uBlockCollapser = (function() {
|
||||||
},
|
},
|
||||||
retrieveHandler
|
retrieveHandler
|
||||||
);
|
);
|
||||||
// https://github.com/gorhill/uBlock/issues/452
|
// https://github.com/chrisaljoudi/uBlock/issues/452
|
||||||
retrieveHandler = nextRetrieveHandler;
|
retrieveHandler = nextRetrieveHandler;
|
||||||
} else {
|
} else {
|
||||||
nextRetrieveHandler(null);
|
nextRetrieveHandler(null);
|
||||||
|
@ -286,13 +286,13 @@ var uBlockCollapser = (function() {
|
||||||
lowGenericSelectors = [];
|
lowGenericSelectors = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/452
|
// https://github.com/chrisaljoudi/uBlock/issues/452
|
||||||
// This needs to be executed *after* the response from our query is
|
// This needs to be executed *after* the response from our query is
|
||||||
// received, not at `DOMContentLoaded` time, or else there is a good
|
// received, not at `DOMContentLoaded` time, or else there is a good
|
||||||
// likeliness to outrun contentscript-start.js, which may still be waiting
|
// likeliness to outrun contentscript-start.js, which may still be waiting
|
||||||
// on a response from its own query.
|
// on a response from its own query.
|
||||||
var firstRetrieveHandler = function(response) {
|
var firstRetrieveHandler = function(response) {
|
||||||
// https://github.com/gorhill/uBlock/issues/158
|
// https://github.com/chrisaljoudi/uBlock/issues/158
|
||||||
// Ensure injected styles are enforced
|
// Ensure injected styles are enforced
|
||||||
// rhill 2014-11-16: not sure this is needed anymore. Test case in
|
// rhill 2014-11-16: not sure this is needed anymore. Test case in
|
||||||
// above issue was fine without the line below..
|
// above issue was fine without the line below..
|
||||||
|
@ -380,7 +380,7 @@ var uBlockCollapser = (function() {
|
||||||
};
|
};
|
||||||
|
|
||||||
var hideElements = function(selectors) {
|
var hideElements = function(selectors) {
|
||||||
// https://github.com/gorhill/uBlock/issues/207
|
// https://github.com/chrisaljoudi/uBlock/issues/207
|
||||||
// Do not call querySelectorAll() using invalid CSS selectors
|
// Do not call querySelectorAll() using invalid CSS selectors
|
||||||
if ( selectors.length === 0 ) {
|
if ( selectors.length === 0 ) {
|
||||||
return;
|
return;
|
||||||
|
@ -388,7 +388,7 @@ var uBlockCollapser = (function() {
|
||||||
if ( document.body === null ) {
|
if ( document.body === null ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// https://github.com/gorhill/uBlock/issues/158
|
// https://github.com/chrisaljoudi/uBlock/issues/158
|
||||||
// Using CSSStyleDeclaration.setProperty is more reliable
|
// Using CSSStyleDeclaration.setProperty is more reliable
|
||||||
var elems = document.querySelectorAll(selectors);
|
var elems = document.querySelectorAll(selectors);
|
||||||
var i = elems.length;
|
var i = elems.length;
|
||||||
|
@ -626,7 +626,7 @@ var uBlockCollapser = (function() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/618
|
// https://github.com/chrisaljoudi/uBlock/issues/618
|
||||||
// Following is to observe dynamically added iframes:
|
// Following is to observe dynamically added iframes:
|
||||||
// - On Firefox, the iframes fails to fire a `load` event
|
// - On Firefox, the iframes fails to fire a `load` event
|
||||||
|
|
||||||
|
@ -665,7 +665,7 @@ var uBlockCollapser = (function() {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/205
|
// https://github.com/chrisaljoudi/uBlock/issues/205
|
||||||
// Do not handle added node directly from within mutation observer.
|
// Do not handle added node directly from within mutation observer.
|
||||||
var treeMutationObservedHandlerAsync = function(mutations) {
|
var treeMutationObservedHandlerAsync = function(mutations) {
|
||||||
var iMutation = mutations.length;
|
var iMutation = mutations.length;
|
||||||
|
@ -712,7 +712,7 @@ document.addEventListener('error', onResourceFailed, true);
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/7
|
// https://github.com/chrisaljoudi/uBlock/issues/7
|
||||||
|
|
||||||
// Executed only once
|
// Executed only once
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/464
|
// https://github.com/chrisaljoudi/uBlock/issues/464
|
||||||
if ( document instanceof HTMLDocument === false ) {
|
if ( document instanceof HTMLDocument === false ) {
|
||||||
//console.debug('contentscript-start.js > not a HTLMDocument');
|
//console.debug('contentscript-start.js > not a HTLMDocument');
|
||||||
return false;
|
return false;
|
||||||
|
@ -46,7 +46,7 @@ if ( !vAPI ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/456
|
// https://github.com/chrisaljoudi/uBlock/issues/456
|
||||||
// Already injected?
|
// Already injected?
|
||||||
if ( vAPI.contentscriptStartInjected ) {
|
if ( vAPI.contentscriptStartInjected ) {
|
||||||
//console.debug('contentscript-start.js > content script already injected');
|
//console.debug('contentscript-start.js > content script already injected');
|
||||||
|
@ -77,7 +77,7 @@ var cosmeticFilters = function(details) {
|
||||||
donthideCosmeticFilters[donthide[i]] = true;
|
donthideCosmeticFilters[donthide[i]] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// https://github.com/gorhill/uBlock/issues/143
|
// https://github.com/chrisaljoudi/uBlock/issues/143
|
||||||
if ( hide.length !== 0 ) {
|
if ( hide.length !== 0 ) {
|
||||||
i = hide.length;
|
i = hide.length;
|
||||||
var selector;
|
var selector;
|
||||||
|
@ -135,7 +135,7 @@ var filteringHandler = function(details) {
|
||||||
// the browser to flush this script from memory.
|
// the browser to flush this script from memory.
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/587
|
// https://github.com/chrisaljoudi/uBlock/issues/587
|
||||||
// If no filters were found, maybe the script was injected before uBlock's
|
// If no filters were found, maybe the script was injected before uBlock's
|
||||||
// process was fully initialized. When this happens, pages won't be
|
// process was fully initialized. When this happens, pages won't be
|
||||||
// cleaned right after browser launch.
|
// cleaned right after browser launch.
|
||||||
|
@ -149,7 +149,7 @@ var hideElements = function(selectors) {
|
||||||
if ( document.body === null ) {
|
if ( document.body === null ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// https://github.com/gorhill/uBlock/issues/158
|
// https://github.com/chrisaljoudi/uBlock/issues/158
|
||||||
// Using CSSStyleDeclaration.setProperty is more reliable
|
// Using CSSStyleDeclaration.setProperty is more reliable
|
||||||
var elems = document.querySelectorAll(selectors);
|
var elems = document.querySelectorAll(selectors);
|
||||||
var i = elems.length;
|
var i = elems.length;
|
||||||
|
|
|
@ -407,7 +407,7 @@ SelectorCacheEntry.prototype.add = function(selectors, type) {
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/420
|
// https://github.com/chrisaljoudi/uBlock/issues/420
|
||||||
SelectorCacheEntry.prototype.remove = function(type) {
|
SelectorCacheEntry.prototype.remove = function(type) {
|
||||||
this.lastAccessTime = Date.now();
|
this.lastAccessTime = Date.now();
|
||||||
if ( type === undefined || type === 'cosmetic' ) {
|
if ( type === undefined || type === 'cosmetic' ) {
|
||||||
|
@ -561,7 +561,7 @@ FilterContainer.prototype.reset = function() {
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/1004
|
// https://github.com/chrisaljoudi/uBlock/issues/1004
|
||||||
// Detect and report invalid CSS selectors.
|
// Detect and report invalid CSS selectors.
|
||||||
|
|
||||||
FilterContainer.prototype.div = document.createElement('div');
|
FilterContainer.prototype.div = document.createElement('div');
|
||||||
|
@ -612,7 +612,7 @@ FilterContainer.prototype.compile = function(s, out) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/151
|
// https://github.com/chrisaljoudi/uBlock/issues/151
|
||||||
// Negated hostname means the filter applies to all non-negated hostnames
|
// Negated hostname means the filter applies to all non-negated hostnames
|
||||||
// of same filter OR globally if there is no non-negated hostnames.
|
// of same filter OR globally if there is no non-negated hostnames.
|
||||||
var applyGlobally = true;
|
var applyGlobally = true;
|
||||||
|
@ -640,7 +640,7 @@ FilterContainer.prototype.compile = function(s, out) {
|
||||||
FilterContainer.prototype.compileGenericSelector = function(parsed, out) {
|
FilterContainer.prototype.compileGenericSelector = function(parsed, out) {
|
||||||
var selector = parsed.suffix;
|
var selector = parsed.suffix;
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/497
|
// https://github.com/chrisaljoudi/uBlock/issues/497
|
||||||
// All generic exception filters are put in the same bucket: they are
|
// All generic exception filters are put in the same bucket: they are
|
||||||
// expected to be very rare.
|
// expected to be very rare.
|
||||||
if ( parsed.unhide ) {
|
if ( parsed.unhide ) {
|
||||||
|
@ -715,7 +715,7 @@ FilterContainer.prototype.reHighMedium = /^\[href\^="https?:\/\/([^"]{8})[^"]*"\
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
FilterContainer.prototype.compileHostnameSelector = function(hostname, parsed, out) {
|
FilterContainer.prototype.compileHostnameSelector = function(hostname, parsed, out) {
|
||||||
// https://github.com/gorhill/uBlock/issues/145
|
// https://github.com/chrisaljoudi/uBlock/issues/145
|
||||||
var unhide = parsed.unhide;
|
var unhide = parsed.unhide;
|
||||||
if ( hostname.charAt(0) === '~' ) {
|
if ( hostname.charAt(0) === '~' ) {
|
||||||
hostname = hostname.slice(1);
|
hostname = hostname.slice(1);
|
||||||
|
@ -728,7 +728,7 @@ FilterContainer.prototype.compileHostnameSelector = function(hostname, parsed, o
|
||||||
hostname = this.punycode.toASCII(hostname);
|
hostname = this.punycode.toASCII(hostname);
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/188
|
// https://github.com/chrisaljoudi/uBlock/issues/188
|
||||||
// If not a real domain as per PSL, assign a synthetic one
|
// If not a real domain as per PSL, assign a synthetic one
|
||||||
var hash;
|
var hash;
|
||||||
var domain = this.µburi.domainFromHostname(hostname);
|
var domain = this.µburi.domainFromHostname(hostname);
|
||||||
|
@ -854,7 +854,7 @@ FilterContainer.prototype.fromCompiledContent = function(text, lineBeg, skip) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/497
|
// https://github.com/chrisaljoudi/uBlock/issues/497
|
||||||
// Generic exception filters: expected to be a rare occurrence.
|
// Generic exception filters: expected to be a rare occurrence.
|
||||||
if ( fields[0] === 'g1' ) {
|
if ( fields[0] === 'g1' ) {
|
||||||
this.genericDonthide.push(fields[1]);
|
this.genericDonthide.push(fields[1]);
|
||||||
|
@ -1125,7 +1125,7 @@ FilterContainer.prototype.retrieveGenericSelectors = function(request) {
|
||||||
hideHigh: this.highHighGenericHide,
|
hideHigh: this.highHighGenericHide,
|
||||||
hideHighCount: this.highHighGenericHideCount
|
hideHighCount: this.highHighGenericHideCount
|
||||||
};
|
};
|
||||||
// https://github.com/gorhill/uBlock/issues/497
|
// https://github.com/chrisaljoudi/uBlock/issues/497
|
||||||
r.donthide = this.genericDonthide;
|
r.donthide = this.genericDonthide;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1170,7 +1170,7 @@ FilterContainer.prototype.retrieveDomainSelectors = function(request) {
|
||||||
var domain = µb.URI.domainFromHostname(hostname) || hostname;
|
var domain = µb.URI.domainFromHostname(hostname) || hostname;
|
||||||
var pos = domain.indexOf('.');
|
var pos = domain.indexOf('.');
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/587
|
// https://github.com/chrisaljoudi/uBlock/issues/587
|
||||||
// r.ready will tell the content script the cosmetic filtering engine is
|
// r.ready will tell the content script the cosmetic filtering engine is
|
||||||
// up and ready.
|
// up and ready.
|
||||||
|
|
||||||
|
@ -1190,7 +1190,7 @@ FilterContainer.prototype.retrieveDomainSelectors = function(request) {
|
||||||
if ( bucket = this.hostnameFilters[hash] ) {
|
if ( bucket = this.hostnameFilters[hash] ) {
|
||||||
bucket.retrieve(hostname, r.cosmeticHide);
|
bucket.retrieve(hostname, r.cosmeticHide);
|
||||||
}
|
}
|
||||||
// https://github.com/gorhill/uBlock/issues/188
|
// https://github.com/chrisaljoudi/uBlock/issues/188
|
||||||
// Special bucket for those filters without a valid domain name as per PSL
|
// Special bucket for those filters without a valid domain name as per PSL
|
||||||
if ( bucket = this.hostnameFilters[this.type0NoDomainHash] ) {
|
if ( bucket = this.hostnameFilters[this.type0NoDomainHash] ) {
|
||||||
bucket.retrieve(hostname, r.cosmeticHide);
|
bucket.retrieve(hostname, r.cosmeticHide);
|
||||||
|
@ -1207,7 +1207,7 @@ FilterContainer.prototype.retrieveDomainSelectors = function(request) {
|
||||||
bucket.retrieve(hostname, r.cosmeticDonthide);
|
bucket.retrieve(hostname, r.cosmeticDonthide);
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/188
|
// https://github.com/chrisaljoudi/uBlock/issues/188
|
||||||
// Special bucket for those filters without a valid domain name as per PSL
|
// Special bucket for those filters without a valid domain name as per PSL
|
||||||
if ( bucket = this.hostnameFilters[this.type1NoDomainHash] ) {
|
if ( bucket = this.hostnameFilters[this.type1NoDomainHash] ) {
|
||||||
bucket.retrieve(hostname, r.cosmeticDonthide);
|
bucket.retrieve(hostname, r.cosmeticDonthide);
|
||||||
|
|
|
@ -97,7 +97,7 @@ function handleImportFilePicker() {
|
||||||
if ( typeof this.result !== 'string' || this.result === '' ) {
|
if ( typeof this.result !== 'string' || this.result === '' ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// https://github.com/gorhill/uBlock/issues/757
|
// https://github.com/chrisaljoudi/uBlock/issues/757
|
||||||
// Support RequestPolicy rule syntax
|
// Support RequestPolicy rule syntax
|
||||||
var result = this.result;
|
var result = this.result;
|
||||||
var matches = /\[origins-to-destinations\]([^\[]+)/.exec(result);
|
var matches = /\[origins-to-destinations\]([^\[]+)/.exec(result);
|
||||||
|
|
|
@ -545,7 +545,7 @@ Matrix.prototype.fromString = function(text, append) {
|
||||||
srcHostname = punycode.toASCII(fields[0]);
|
srcHostname = punycode.toASCII(fields[0]);
|
||||||
desHostname = punycode.toASCII(fields[1]);
|
desHostname = punycode.toASCII(fields[1]);
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/1082
|
// https://github.com/chrisaljoudi/uBlock/issues/1082
|
||||||
// Discard rules with invalid hostnames
|
// Discard rules with invalid hostnames
|
||||||
if ( (srcHostname !== '*' && reBadHostname.test(srcHostname)) ||
|
if ( (srcHostname !== '*' && reBadHostname.test(srcHostname)) ||
|
||||||
(desHostname !== '*' && reBadHostname.test(desHostname))
|
(desHostname !== '*' && reBadHostname.test(desHostname))
|
||||||
|
@ -558,7 +558,7 @@ Matrix.prototype.fromString = function(text, append) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/840
|
// https://github.com/chrisaljoudi/uBlock/issues/840
|
||||||
// Discard invalid rules
|
// Discard invalid rules
|
||||||
if ( desHostname !== '*' && type !== '*' ) {
|
if ( desHostname !== '*' && type !== '*' ) {
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -428,7 +428,7 @@ var cosmeticFilterFromElement = function(elem, out) {
|
||||||
|
|
||||||
var selector = prefix + suffix.join('');
|
var selector = prefix + suffix.join('');
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/637
|
// https://github.com/chrisaljoudi/uBlock/issues/637
|
||||||
// If the selector is still ambiguous at this point, further narrow using
|
// If the selector is still ambiguous at this point, further narrow using
|
||||||
// `nth-of-type`. It is preferable to use `nth-of-type` as opposed to
|
// `nth-of-type`. It is preferable to use `nth-of-type` as opposed to
|
||||||
// `nth-child`, as `nth-of-type` is less volatile.
|
// `nth-child`, as `nth-of-type` is less volatile.
|
||||||
|
@ -497,7 +497,7 @@ var elementsFromFilter = function(filter) {
|
||||||
// Net filters: we need to lookup manually -- translating into a
|
// Net filters: we need to lookup manually -- translating into a
|
||||||
// foolproof CSS selector is just not possible
|
// foolproof CSS selector is just not possible
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/945
|
// https://github.com/chrisaljoudi/uBlock/issues/945
|
||||||
// Transform into a regular expression, this allows the user to edit and
|
// Transform into a regular expression, this allows the user to edit and
|
||||||
// insert wildcard(s) into the proposed filter
|
// insert wildcard(s) into the proposed filter
|
||||||
var reStr = '';
|
var reStr = '';
|
||||||
|
@ -743,7 +743,7 @@ var onSvgHovered = function(ev) {
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
var onSvgClicked = function(ev) {
|
var onSvgClicked = function(ev) {
|
||||||
// https://github.com/gorhill/uBlock/issues/810#issuecomment-74600694
|
// https://github.com/chrisaljoudi/uBlock/issues/810#issuecomment-74600694
|
||||||
// Unpause picker if user click outside dialog
|
// Unpause picker if user click outside dialog
|
||||||
if ( dialog.parentNode.classList.contains('paused') ) {
|
if ( dialog.parentNode.classList.contains('paused') ) {
|
||||||
unpausePicker();
|
unpausePicker();
|
||||||
|
@ -777,7 +777,7 @@ var onKeyPressed = function(ev) {
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/190
|
// https://github.com/chrisaljoudi/uBlock/issues/190
|
||||||
// May need to dynamically adjust the height of the overlay + new position
|
// May need to dynamically adjust the height of the overlay + new position
|
||||||
// of highlighted elements.
|
// of highlighted elements.
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ var onMessage = function(request, sender, callback) {
|
||||||
// Async
|
// Async
|
||||||
switch ( request.what ) {
|
switch ( request.what ) {
|
||||||
case 'getAssetContent':
|
case 'getAssetContent':
|
||||||
// https://github.com/gorhill/uBlock/issues/417
|
// https://github.com/chrisaljoudi/uBlock/issues/417
|
||||||
µb.assets.get(request.url, callback);
|
µb.assets.get(request.url, callback);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -317,7 +317,7 @@ var onMessage = function(request, sender, callback) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
vAPI.tabs.get(request.tabId, function(tab) {
|
vAPI.tabs.get(request.tabId, function(tab) {
|
||||||
// https://github.com/gorhill/uBlock/issues/1012
|
// https://github.com/chrisaljoudi/uBlock/issues/1012
|
||||||
callback(getStats(getTargetTabId(tab), tab ? tab.title : ''));
|
callback(getStats(getTargetTabId(tab), tab ? tab.title : ''));
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
|
@ -856,7 +856,7 @@ var onMessage = function(request, sender, callback) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'setSessionFirewallRules':
|
case 'setSessionFirewallRules':
|
||||||
// https://github.com/gorhill/uBlock/issues/772
|
// https://github.com/chrisaljoudi/uBlock/issues/772
|
||||||
µb.cosmeticFilteringEngine.removeFromSelectorCache('*');
|
µb.cosmeticFilteringEngine.removeFromSelectorCache('*');
|
||||||
|
|
||||||
µb.sessionFirewall.fromString(request.rules);
|
µb.sessionFirewall.fromString(request.rules);
|
||||||
|
@ -1115,7 +1115,7 @@ var restoreUserData = function(request) {
|
||||||
}, onCountdown);
|
}, onCountdown);
|
||||||
};
|
};
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/1102
|
// https://github.com/chrisaljoudi/uBlock/issues/1102
|
||||||
// Ensure all currently cached assets are flushed from storage AND memory.
|
// Ensure all currently cached assets are flushed from storage AND memory.
|
||||||
µb.assets.rmrf();
|
µb.assets.rmrf();
|
||||||
|
|
||||||
|
|
|
@ -193,7 +193,7 @@ var toUrlKey = function(url) {
|
||||||
if ( matches === null ) {
|
if ( matches === null ) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// https://github.com/gorhill/uBlock/issues/301
|
// https://github.com/chrisaljoudi/uBlock/issues/301
|
||||||
// Use whole URL as key when no regex capture
|
// Use whole URL as key when no regex capture
|
||||||
return matches.length === 1 ? url : matches[1];
|
return matches.length === 1 ? url : matches[1];
|
||||||
}
|
}
|
||||||
|
@ -204,7 +204,7 @@ var toUrlKey = function(url) {
|
||||||
|
|
||||||
// Ref: http://www.iana.org/assignments/media-types/media-types.xhtml
|
// Ref: http://www.iana.org/assignments/media-types/media-types.xhtml
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/362
|
// https://github.com/chrisaljoudi/uBlock/issues/362
|
||||||
//
|
//
|
||||||
// Using http://dev.w3.org/2006/webapi/FileAPI/#enctype logic, at least it's
|
// Using http://dev.w3.org/2006/webapi/FileAPI/#enctype logic, at least it's
|
||||||
// something... It looks like this is what the browser should be doing with
|
// something... It looks like this is what the browser should be doing with
|
||||||
|
|
|
@ -472,7 +472,7 @@ PageStore.prototype.init = function(tabId, rawURL, pageURL) {
|
||||||
this.pageURL = pageURL;
|
this.pageURL = pageURL;
|
||||||
this.pageHostname = µb.URI.hostnameFromURI(pageURL);
|
this.pageHostname = µb.URI.hostnameFromURI(pageURL);
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/185
|
// https://github.com/chrisaljoudi/uBlock/issues/185
|
||||||
// Use hostname if no domain can be extracted
|
// Use hostname if no domain can be extracted
|
||||||
this.pageDomain = µb.URI.domainFromHostname(this.pageHostname) || this.pageHostname;
|
this.pageDomain = µb.URI.domainFromHostname(this.pageHostname) || this.pageHostname;
|
||||||
this.rootHostname = this.pageHostname;
|
this.rootHostname = this.pageHostname;
|
||||||
|
@ -531,7 +531,7 @@ PageStore.prototype.reuse = function(rawURL, pageURL, context) {
|
||||||
this.rawURL = rawURL;
|
this.rawURL = rawURL;
|
||||||
this.pageURL = pageURL;
|
this.pageURL = pageURL;
|
||||||
|
|
||||||
// As part of https://github.com/gorhill/uBlock/issues/405
|
// As part of https://github.com/chrisaljoudi/uBlock/issues/405
|
||||||
// URL changed, force a re-evaluation of filtering switch
|
// URL changed, force a re-evaluation of filtering switch
|
||||||
this.netFilteringReadTime = 0;
|
this.netFilteringReadTime = 0;
|
||||||
|
|
||||||
|
@ -599,7 +599,7 @@ PageStore.prototype.setFrame = function(frameId, frameURL) {
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
PageStore.prototype.getNetFilteringSwitch = function() {
|
PageStore.prototype.getNetFilteringSwitch = function() {
|
||||||
// https://github.com/gorhill/uBlock/issues/1078
|
// https://github.com/chrisaljoudi/uBlock/issues/1078
|
||||||
// Use both the raw and normalized URLs.
|
// Use both the raw and normalized URLs.
|
||||||
if ( this.netFilteringReadTime < µb.netWhitelistModifyTime ) {
|
if ( this.netFilteringReadTime < µb.netWhitelistModifyTime ) {
|
||||||
this.netFiltering = µb.getNetFilteringSwitch(this.pageURL);
|
this.netFiltering = µb.getNetFilteringSwitch(this.pageURL);
|
||||||
|
@ -749,7 +749,7 @@ PageStore.prototype.logRequest = function(context, result) {
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
PageStore.prototype.toMirrorURL = function(requestURL) {
|
PageStore.prototype.toMirrorURL = function(requestURL) {
|
||||||
// https://github.com/gorhill/uBlock/issues/351
|
// https://github.com/chrisaljoudi/uBlock/issues/351
|
||||||
// Bypass experimental features when uBlock is disabled for a site
|
// Bypass experimental features when uBlock is disabled for a site
|
||||||
if ( µb.userSettings.experimentalEnabled === false ||
|
if ( µb.userSettings.experimentalEnabled === false ||
|
||||||
this.getNetFilteringSwitch() === false ||
|
this.getNetFilteringSwitch() === false ||
|
||||||
|
|
|
@ -52,7 +52,7 @@ document.getElementById('saveRules').style.setProperty(
|
||||||
(document.getElementById('gotoPrefs').getBoundingClientRect().bottom + 4) + 'px'
|
(document.getElementById('gotoPrefs').getBoundingClientRect().bottom + 4) + 'px'
|
||||||
);
|
);
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/996
|
// https://github.com/chrisaljoudi/uBlock/issues/996
|
||||||
// Experimental: mitigate glitchy popup UI: immediately set the firewall pane
|
// Experimental: mitigate glitchy popup UI: immediately set the firewall pane
|
||||||
// visibility to its last known state. By default the pane is hidden.
|
// visibility to its last known state. By default the pane is hidden.
|
||||||
// Will remove if it makes no difference.
|
// Will remove if it makes no difference.
|
||||||
|
@ -246,7 +246,7 @@ var updateFirewallCell = function(scope, des, type, rule) {
|
||||||
var aCount = hnDetails.allowCount;
|
var aCount = hnDetails.allowCount;
|
||||||
var bCount = hnDetails.blockCount;
|
var bCount = hnDetails.blockCount;
|
||||||
if ( aCount !== 0 || bCount !== 0 ) {
|
if ( aCount !== 0 || bCount !== 0 ) {
|
||||||
// https://github.com/gorhill/uBlock/issues/471
|
// https://github.com/chrisaljoudi/uBlock/issues/471
|
||||||
aCount = Math.min(Math.ceil(Math.log(aCount + 1) / Math.LN10), 3);
|
aCount = Math.min(Math.ceil(Math.log(aCount + 1) / Math.LN10), 3);
|
||||||
bCount = Math.min(Math.ceil(Math.log(bCount + 1) / Math.LN10), 3);
|
bCount = Math.min(Math.ceil(Math.log(bCount + 1) / Math.LN10), 3);
|
||||||
textNode.nodeValue = threePlus.slice(0, aCount) +
|
textNode.nodeValue = threePlus.slice(0, aCount) +
|
||||||
|
@ -264,7 +264,7 @@ var updateFirewallCell = function(scope, des, type, rule) {
|
||||||
aCount = hnDetails.totalAllowCount;
|
aCount = hnDetails.totalAllowCount;
|
||||||
bCount = hnDetails.totalBlockCount;
|
bCount = hnDetails.totalBlockCount;
|
||||||
if ( aCount !== 0 || bCount !== 0 ) {
|
if ( aCount !== 0 || bCount !== 0 ) {
|
||||||
// https://github.com/gorhill/uBlock/issues/471
|
// https://github.com/chrisaljoudi/uBlock/issues/471
|
||||||
aCount = Math.min(Math.ceil(Math.log(aCount + 1) / Math.LN10), 3);
|
aCount = Math.min(Math.ceil(Math.log(aCount + 1) / Math.LN10), 3);
|
||||||
bCount = Math.min(Math.ceil(Math.log(bCount + 1) / Math.LN10), 3);
|
bCount = Math.min(Math.ceil(Math.log(bCount + 1) / Math.LN10), 3);
|
||||||
textNode.nodeValue = threePlus.slice(0, aCount) +
|
textNode.nodeValue = threePlus.slice(0, aCount) +
|
||||||
|
@ -436,11 +436,11 @@ var renderPopup = function() {
|
||||||
uDom('#noStrictBlocking').toggleClass('on', popupData.noStrictBlocking === true);
|
uDom('#noStrictBlocking').toggleClass('on', popupData.noStrictBlocking === true);
|
||||||
uDom('#noCosmeticFiltering').toggleClass('on', popupData.noCosmeticFiltering === true);
|
uDom('#noCosmeticFiltering').toggleClass('on', popupData.noCosmeticFiltering === true);
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/470
|
// https://github.com/chrisaljoudi/uBlock/issues/470
|
||||||
// This must be done here, to be sure the popup is resized properly
|
// This must be done here, to be sure the popup is resized properly
|
||||||
var dfPaneVisible = popupData.dfEnabled && popupData.advancedUserEnabled;
|
var dfPaneVisible = popupData.dfEnabled && popupData.advancedUserEnabled;
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/1068
|
// https://github.com/chrisaljoudi/uBlock/issues/1068
|
||||||
// Remember the last state of the firewall pane. This allows to
|
// Remember the last state of the firewall pane. This allows to
|
||||||
// configure the popup size early next time it is opened, which means a
|
// configure the popup size early next time it is opened, which means a
|
||||||
// less glitchy popup at open time.
|
// less glitchy popup at open time.
|
||||||
|
@ -541,7 +541,7 @@ var toggleFirewallPane = function() {
|
||||||
value: popupData.dfEnabled
|
value: popupData.dfEnabled
|
||||||
});
|
});
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/996
|
// https://github.com/chrisaljoudi/uBlock/issues/996
|
||||||
// Remember the last state of the firewall pane. This allows to
|
// Remember the last state of the firewall pane. This allows to
|
||||||
// configure the popup size early next time it is opened, which means a
|
// configure the popup size early next time it is opened, which means a
|
||||||
// less glitchy popup at open time.
|
// less glitchy popup at open time.
|
||||||
|
@ -639,7 +639,7 @@ var reloadTab = function() {
|
||||||
|
|
||||||
// Polling will take care of refreshing the popup content
|
// Polling will take care of refreshing the popup content
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/748
|
// https://github.com/chrisaljoudi/uBlock/issues/748
|
||||||
// User forces a reload, assume the popup has to be updated regardless if
|
// User forces a reload, assume the popup has to be updated regardless if
|
||||||
// there were changes or not.
|
// there were changes or not.
|
||||||
popupData.contentLastModified = -1;
|
popupData.contentLastModified = -1;
|
||||||
|
|
|
@ -42,7 +42,7 @@ var µb = µBlock;
|
||||||
// - Schedule next update operation.
|
// - Schedule next update operation.
|
||||||
|
|
||||||
var onAllReady = function() {
|
var onAllReady = function() {
|
||||||
// https://github.com/gorhill/uBlock/issues/184
|
// https://github.com/chrisaljoudi/uBlock/issues/184
|
||||||
// Check for updates not too far in the future.
|
// Check for updates not too far in the future.
|
||||||
µb.assetUpdater.onStart.addEventListener(µb.updateStartHandler.bind(µb));
|
µb.assetUpdater.onStart.addEventListener(µb.updateStartHandler.bind(µb));
|
||||||
µb.assetUpdater.onCompleted.addEventListener(µb.updateCompleteHandler.bind(µb));
|
µb.assetUpdater.onCompleted.addEventListener(µb.updateCompleteHandler.bind(µb));
|
||||||
|
@ -104,7 +104,7 @@ var onSelfieReady = function(selfie) {
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/226
|
// https://github.com/chrisaljoudi/uBlock/issues/226
|
||||||
// Whitelist in memory.
|
// Whitelist in memory.
|
||||||
// Whitelist parser needs PSL to be ready.
|
// Whitelist parser needs PSL to be ready.
|
||||||
// gorhill 2014-12-15: not anymore
|
// gorhill 2014-12-15: not anymore
|
||||||
|
@ -123,13 +123,13 @@ var onUserSettingsReady = function(fetched) {
|
||||||
|
|
||||||
fromFetch(userSettings, fetched);
|
fromFetch(userSettings, fetched);
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/426
|
// https://github.com/chrisaljoudi/uBlock/issues/426
|
||||||
// Important: block remote fetching for when loading assets at launch
|
// Important: block remote fetching for when loading assets at launch
|
||||||
// time.
|
// time.
|
||||||
µb.assets.autoUpdate = userSettings.autoUpdate;
|
µb.assets.autoUpdate = userSettings.autoUpdate;
|
||||||
µb.assets.autoUpdateDelay = µb.updateAssetsEvery;
|
µb.assets.autoUpdateDelay = µb.updateAssetsEvery;
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/540
|
// https://github.com/chrisaljoudi/uBlock/issues/540
|
||||||
// Disabling local mirroring for the time being
|
// Disabling local mirroring for the time being
|
||||||
userSettings.experimentalEnabled = false;
|
userSettings.experimentalEnabled = false;
|
||||||
µb.mirrors.toggle(false /* userSettings.experimentalEnabled */);
|
µb.mirrors.toggle(false /* userSettings.experimentalEnabled */);
|
||||||
|
|
|
@ -176,7 +176,7 @@ var alwaysTruePseudoRegex = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var strToRegex = function(s, anchor) {
|
var strToRegex = function(s, anchor) {
|
||||||
// https://github.com/gorhill/uBlock/issues/1038
|
// https://github.com/chrisaljoudi/uBlock/issues/1038
|
||||||
// Special case: always match.
|
// Special case: always match.
|
||||||
if ( s === '*' ) {
|
if ( s === '*' ) {
|
||||||
return alwaysTruePseudoRegex;
|
return alwaysTruePseudoRegex;
|
||||||
|
@ -533,7 +533,7 @@ FilterPlainRightAnchoredHostname.fromSelfie = function(s) {
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/235
|
// https://github.com/chrisaljoudi/uBlock/issues/235
|
||||||
// The filter is left-anchored somewhere within the hostname part of the URL.
|
// The filter is left-anchored somewhere within the hostname part of the URL.
|
||||||
|
|
||||||
var FilterPlainHnAnchored = function(s) {
|
var FilterPlainHnAnchored = function(s) {
|
||||||
|
@ -1228,7 +1228,7 @@ FilterParser.prototype.reset = function() {
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/589
|
// https://github.com/chrisaljoudi/uBlock/issues/589
|
||||||
// Be ready to handle multiple negated types
|
// Be ready to handle multiple negated types
|
||||||
|
|
||||||
FilterParser.prototype.parseOptType = function(raw, not) {
|
FilterParser.prototype.parseOptType = function(raw, not) {
|
||||||
|
@ -1379,7 +1379,7 @@ FilterParser.prototype.parse = function(raw) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/1096
|
// https://github.com/chrisaljoudi/uBlock/issues/1096
|
||||||
if ( s.charAt(0) === '^' ) {
|
if ( s.charAt(0) === '^' ) {
|
||||||
this.unsupported = true;
|
this.unsupported = true;
|
||||||
return this;
|
return this;
|
||||||
|
@ -1484,7 +1484,7 @@ FilterParser.prototype.makeToken = function() {
|
||||||
|
|
||||||
var s = this.f;
|
var s = this.f;
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/1038
|
// https://github.com/chrisaljoudi/uBlock/issues/1038
|
||||||
// Match any URL.
|
// Match any URL.
|
||||||
if ( s === '*' ) {
|
if ( s === '*' ) {
|
||||||
this.token = '*';
|
this.token = '*';
|
||||||
|
@ -1729,7 +1729,7 @@ FilterContainer.prototype.compile = function(raw, out) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pure hostnames, use more efficient liquid dict
|
// Pure hostnames, use more efficient liquid dict
|
||||||
// https://github.com/gorhill/uBlock/issues/665
|
// https://github.com/chrisaljoudi/uBlock/issues/665
|
||||||
// Create a dict keyed on request type etc.
|
// Create a dict keyed on request type etc.
|
||||||
if ( parsed.hostnamePure && this.compileHostnameOnlyFilter(parsed, out) ) {
|
if ( parsed.hostnamePure && this.compileHostnameOnlyFilter(parsed, out) ) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -1838,7 +1838,7 @@ FilterContainer.prototype.compileFilter = function(parsed, out) {
|
||||||
if ( filterClass === null ) {
|
if ( filterClass === null ) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// https://github.com/gorhill/uBlock/issues/251
|
// https://github.com/chrisaljoudi/uBlock/issues/251
|
||||||
// Apply third-party option if it is present
|
// Apply third-party option if it is present
|
||||||
this.compileToAtomicFilter(filterClass, parsed, party, out);
|
this.compileToAtomicFilter(filterClass, parsed, party, out);
|
||||||
}
|
}
|
||||||
|
@ -1856,7 +1856,7 @@ FilterContainer.prototype.compileFilter = function(parsed, out) {
|
||||||
if ( filterClass === null ) {
|
if ( filterClass === null ) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// https://github.com/gorhill/uBlock/issues/191#issuecomment-53654024
|
// https://github.com/chrisaljoudi/uBlock/issues/191#issuecomment-53654024
|
||||||
// If it is a block filter, we need to reverse the order of
|
// If it is a block filter, we need to reverse the order of
|
||||||
// evaluation.
|
// evaluation.
|
||||||
if ( parsed.action === BlockAction ) {
|
if ( parsed.action === BlockAction ) {
|
||||||
|
@ -1985,7 +1985,7 @@ FilterContainer.prototype.tokenize = function(url) {
|
||||||
tokenEntry.token = matches[0];
|
tokenEntry.token = matches[0];
|
||||||
i += 1;
|
i += 1;
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/1118
|
// https://github.com/chrisaljoudi/uBlock/issues/1118
|
||||||
// Crazy case... but I guess we have to expect the worst...
|
// Crazy case... but I guess we have to expect the worst...
|
||||||
if ( i === 2048 ) {
|
if ( i === 2048 ) {
|
||||||
break;
|
break;
|
||||||
|
@ -2037,7 +2037,7 @@ FilterContainer.prototype.matchTokens = function(bucket, url) {
|
||||||
|
|
||||||
// Specialized handlers
|
// Specialized handlers
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/116
|
// https://github.com/chrisaljoudi/uBlock/issues/116
|
||||||
// Some type of requests are exceptional, they need custom handling,
|
// Some type of requests are exceptional, they need custom handling,
|
||||||
// not the generic handling.
|
// not the generic handling.
|
||||||
|
|
||||||
|
@ -2062,7 +2062,7 @@ FilterContainer.prototype.matchStringExactType = function(context, requestURL, r
|
||||||
// Tokenize only once
|
// Tokenize only once
|
||||||
this.tokenize(url);
|
this.tokenize(url);
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/139
|
// https://github.com/chrisaljoudi/uBlock/issues/139
|
||||||
// Test against important block filters
|
// Test against important block filters
|
||||||
if ( bucket = categories[this.makeCategoryKey(BlockAnyParty | Important | type)] ) {
|
if ( bucket = categories[this.makeCategoryKey(BlockAnyParty | Important | type)] ) {
|
||||||
bf = this.matchTokens(bucket, url);
|
bf = this.matchTokens(bucket, url);
|
||||||
|
@ -2112,7 +2112,7 @@ FilterContainer.prototype.matchStringExactType = function(context, requestURL, r
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
FilterContainer.prototype.matchString = function(context) {
|
FilterContainer.prototype.matchString = function(context) {
|
||||||
// https://github.com/gorhill/uBlock/issues/519
|
// https://github.com/chrisaljoudi/uBlock/issues/519
|
||||||
// Use exact type match for anything beyond `other`
|
// Use exact type match for anything beyond `other`
|
||||||
// Also, be prepared to support unknown types
|
// Also, be prepared to support unknown types
|
||||||
var type = typeNameToTypeValue[context.requestType] || typeOtherValue;
|
var type = typeNameToTypeValue[context.requestType] || typeOtherValue;
|
||||||
|
@ -2161,7 +2161,7 @@ FilterContainer.prototype.matchString = function(context) {
|
||||||
|
|
||||||
var bf = false;
|
var bf = false;
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/139
|
// https://github.com/chrisaljoudi/uBlock/issues/139
|
||||||
// Test against important block filters.
|
// Test against important block filters.
|
||||||
// The purpose of the `important` option is to reverse the order of
|
// The purpose of the `important` option is to reverse the order of
|
||||||
// evaluation. Normally, it is "evaluate block then evaluate allow", with
|
// evaluation. Normally, it is "evaluate block then evaluate allow", with
|
||||||
|
|
|
@ -154,7 +154,7 @@
|
||||||
if ( details.error ) {
|
if ( details.error ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// https://github.com/gorhill/uBlock/issues/976
|
// https://github.com/chrisaljoudi/uBlock/issues/976
|
||||||
// If we reached this point, the filter quite probably needs to be
|
// If we reached this point, the filter quite probably needs to be
|
||||||
// added for sure: do not try to be too smart, trying to avoid
|
// added for sure: do not try to be too smart, trying to avoid
|
||||||
// duplicates at this point may lead to more issues.
|
// duplicates at this point may lead to more issues.
|
||||||
|
@ -171,7 +171,7 @@
|
||||||
var relocationMap = {};
|
var relocationMap = {};
|
||||||
|
|
||||||
var fixLocation = function(location) {
|
var fixLocation = function(location) {
|
||||||
// https://github.com/gorhill/uBlock/issues/418
|
// https://github.com/chrisaljoudi/uBlock/issues/418
|
||||||
// We now support built-in external filter lists
|
// We now support built-in external filter lists
|
||||||
if ( /^https?:/.test(location) === false ) {
|
if ( /^https?:/.test(location) === false ) {
|
||||||
location = 'assets/thirdparties/' + location;
|
location = 'assets/thirdparties/' + location;
|
||||||
|
@ -208,7 +208,7 @@
|
||||||
}
|
}
|
||||||
// This may happen if the list name was pulled from the list
|
// This may happen if the list name was pulled from the list
|
||||||
// content.
|
// content.
|
||||||
// https://github.com/gorhill/uBlock/issues/982
|
// https://github.com/chrisaljoudi/uBlock/issues/982
|
||||||
// There is no guarantee the title was successfully extracted from
|
// There is no guarantee the title was successfully extracted from
|
||||||
// the list content.
|
// the list content.
|
||||||
if ( availableEntry.title === '' &&
|
if ( availableEntry.title === '' &&
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/464
|
// https://github.com/chrisaljoudi/uBlock/issues/464
|
||||||
if ( document instanceof HTMLDocument === false ) {
|
if ( document instanceof HTMLDocument === false ) {
|
||||||
//console.debug('subscriber.js > not a HTLMDocument');
|
//console.debug('subscriber.js > not a HTLMDocument');
|
||||||
return;
|
return;
|
||||||
|
@ -109,7 +109,7 @@ var onAbpLinkClicked = function(ev) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// List already subscribed to?
|
// List already subscribed to?
|
||||||
// https://github.com/gorhill/uBlock/issues/1033
|
// https://github.com/chrisaljoudi/uBlock/issues/1033
|
||||||
// Split on line separators, not whitespaces.
|
// Split on line separators, not whitespaces.
|
||||||
var externalLists = details.externalLists.trim().split(/\s*[\n\r]+\s*/);
|
var externalLists = details.externalLists.trim().split(/\s*[\n\r]+\s*/);
|
||||||
if ( externalLists.indexOf(location) !== -1 ) {
|
if ( externalLists.indexOf(location) !== -1 ) {
|
||||||
|
|
|
@ -44,7 +44,7 @@ vAPI.tabs.onNavigation = function(details) {
|
||||||
}
|
}
|
||||||
var pageStore = µb.bindTabToPageStats(details.tabId, details.url, 'afterNavigate');
|
var pageStore = µb.bindTabToPageStats(details.tabId, details.url, 'afterNavigate');
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/630
|
// https://github.com/chrisaljoudi/uBlock/issues/630
|
||||||
// The hostname of the bound document must always be present in the
|
// The hostname of the bound document must always be present in the
|
||||||
// mini-matrix. That's the best place I could find for the fix, all other
|
// mini-matrix. That's the best place I could find for the fix, all other
|
||||||
// options had bad side-effects or complications.
|
// options had bad side-effects or complications.
|
||||||
|
@ -83,7 +83,7 @@ vAPI.tabs.onClosed = function(tabId) {
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/297
|
// https://github.com/chrisaljoudi/uBlock/issues/297
|
||||||
|
|
||||||
vAPI.tabs.onPopup = function(details) {
|
vAPI.tabs.onPopup = function(details) {
|
||||||
//console.debug('vAPI.tabs.onPopup: details = %o', details);
|
//console.debug('vAPI.tabs.onPopup: details = %o', details);
|
||||||
|
@ -131,8 +131,8 @@ vAPI.tabs.onPopup = function(details) {
|
||||||
result = 'ub:noPopups true';
|
result = 'ub:noPopups true';
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/323
|
// https://github.com/chrisaljoudi/uBlock/issues/323
|
||||||
// https://github.com/gorhill/uBlock/issues/1142
|
// https://github.com/chrisaljoudi/uBlock/issues/1142
|
||||||
// If popup OR opener URL is whitelisted, do not block the popup
|
// If popup OR opener URL is whitelisted, do not block the popup
|
||||||
if (
|
if (
|
||||||
result === '' &&
|
result === '' &&
|
||||||
|
@ -142,7 +142,7 @@ vAPI.tabs.onPopup = function(details) {
|
||||||
result = µb.staticNetFilteringEngine.matchStringExactType(context, targetURL, 'popup');
|
result = µb.staticNetFilteringEngine.matchStringExactType(context, targetURL, 'popup');
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/91
|
// https://github.com/chrisaljoudi/uBlock/issues/91
|
||||||
if ( pageStore ) {
|
if ( pageStore ) {
|
||||||
pageStore.logRequest(context, result);
|
pageStore.logRequest(context, result);
|
||||||
}
|
}
|
||||||
|
@ -222,7 +222,7 @@ vAPI.tabs.registerListeners();
|
||||||
return this.pageStores[tabId] = this.PageStore.factory(tabId, pageURL, normalURL);
|
return this.pageStores[tabId] = this.PageStore.factory(tabId, pageURL, normalURL);
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/chrisaljoudi/uBlock/issues/1176
|
// https://github.com/chrisaljoudi/uBlock/issues/516
|
||||||
// Never rebind behind-the-scene scope
|
// Never rebind behind-the-scene scope
|
||||||
if ( vAPI.isBehindTheSceneTabId(tabId) ) {
|
if ( vAPI.isBehindTheSceneTabId(tabId) ) {
|
||||||
return pageStore;
|
return pageStore;
|
||||||
|
@ -283,7 +283,7 @@ vAPI.tabs.registerListeners();
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
// Stale page store entries janitor
|
// Stale page store entries janitor
|
||||||
// https://github.com/gorhill/uBlock/issues/455
|
// https://github.com/chrisaljoudi/uBlock/issues/455
|
||||||
|
|
||||||
var pageStoreJanitorPeriod = 15 * 60 * 1000;
|
var pageStoreJanitorPeriod = 15 * 60 * 1000;
|
||||||
var pageStoreJanitorSampleAt = 0;
|
var pageStoreJanitorSampleAt = 0;
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
|
|
||||||
var exports = {};
|
var exports = {};
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/1001
|
// https://github.com/chrisaljoudi/uBlock/issues/1001
|
||||||
// This is to be used as last-resort fallback in case a tab is found to not
|
// This is to be used as last-resort fallback in case a tab is found to not
|
||||||
// be bound while network requests are fired for the tab.
|
// be bound while network requests are fired for the tab.
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ var onBeforeRequest = function(details) {
|
||||||
//console.debug('µBlock.webRequest/onBeforeRequest(): "type=%s, id=%d, parent id=%d, url=%s', details.type, details.frameId, details.parentFrameId, details.url);
|
//console.debug('µBlock.webRequest/onBeforeRequest(): "type=%s, id=%d, parent id=%d, url=%s', details.type, details.frameId, details.parentFrameId, details.url);
|
||||||
|
|
||||||
// Special handling for root document.
|
// Special handling for root document.
|
||||||
// https://github.com/gorhill/uBlock/issues/1001
|
// https://github.com/chrisaljoudi/uBlock/issues/1001
|
||||||
// This must be executed regardless of whether the request is
|
// This must be executed regardless of whether the request is
|
||||||
// behind-the-scene
|
// behind-the-scene
|
||||||
var requestType = details.type;
|
var requestType = details.type;
|
||||||
|
@ -70,14 +70,14 @@ var onBeforeRequest = function(details) {
|
||||||
var µb = µBlock;
|
var µb = µBlock;
|
||||||
var pageStore = µb.pageStoreFromTabId(tabId);
|
var pageStore = µb.pageStoreFromTabId(tabId);
|
||||||
if ( !pageStore ) {
|
if ( !pageStore ) {
|
||||||
// https://github.com/gorhill/uBlock/issues/1025
|
// https://github.com/chrisaljoudi/uBlock/issues/1025
|
||||||
// Google Hangout popup opens without a root frame. So for now we will
|
// Google Hangout popup opens without a root frame. So for now we will
|
||||||
// just discard that best-guess root frame if it is too far in the
|
// just discard that best-guess root frame if it is too far in the
|
||||||
// future, at which point it ceases to be a "best guess".
|
// future, at which point it ceases to be a "best guess".
|
||||||
if ( (Date.now() - mostRecentRootDocURLTimestamp) >= 500 ) {
|
if ( (Date.now() - mostRecentRootDocURLTimestamp) >= 500 ) {
|
||||||
mostRecentRootDocURL = '';
|
mostRecentRootDocURL = '';
|
||||||
}
|
}
|
||||||
// https://github.com/gorhill/uBlock/issues/1001
|
// https://github.com/chrisaljoudi/uBlock/issues/1001
|
||||||
// Not a behind-the-scene request, yet no page store found for the
|
// Not a behind-the-scene request, yet no page store found for the
|
||||||
// tab id: we will thus bind the last-seen root document to the
|
// tab id: we will thus bind the last-seen root document to the
|
||||||
// unbound tab. It's a guess, but better than ending up filtering
|
// unbound tab. It's a guess, but better than ending up filtering
|
||||||
|
@ -97,10 +97,10 @@ var onBeforeRequest = function(details) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/114
|
// https://github.com/chrisaljoudi/uBlock/issues/114
|
||||||
var requestContext = pageStore;
|
var requestContext = pageStore;
|
||||||
var frameStore;
|
var frameStore;
|
||||||
// https://github.com/gorhill/uBlock/issues/886
|
// https://github.com/chrisaljoudi/uBlock/issues/886
|
||||||
// For requests of type `sub_frame`, the parent frame id must be used
|
// For requests of type `sub_frame`, the parent frame id must be used
|
||||||
// to lookup the proper context:
|
// to lookup the proper context:
|
||||||
// > If the document of a (sub-)frame is loaded (type is main_frame or
|
// > If the document of a (sub-)frame is loaded (type is main_frame or
|
||||||
|
@ -129,7 +129,7 @@ var onBeforeRequest = function(details) {
|
||||||
if ( µb.isAllowResult(result) ) {
|
if ( µb.isAllowResult(result) ) {
|
||||||
//console.debug('traffic.js > onBeforeRequest(): ALLOW "%s" (%o) because "%s"', details.url, details, result);
|
//console.debug('traffic.js > onBeforeRequest(): ALLOW "%s" (%o) because "%s"', details.url, details, result);
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/114
|
// https://github.com/chrisaljoudi/uBlock/issues/114
|
||||||
frameId = details.frameId;
|
frameId = details.frameId;
|
||||||
if ( frameId > 0 ) {
|
if ( frameId > 0 ) {
|
||||||
if ( isFrame ) {
|
if ( isFrame ) {
|
||||||
|
@ -141,7 +141,7 @@ var onBeforeRequest = function(details) {
|
||||||
|
|
||||||
// https://code.google.com/p/chromium/issues/detail?id=387198
|
// https://code.google.com/p/chromium/issues/detail?id=387198
|
||||||
// Not all redirects will succeed, until bug above is fixed.
|
// Not all redirects will succeed, until bug above is fixed.
|
||||||
// https://github.com/gorhill/uBlock/issues/540
|
// https://github.com/chrisaljoudi/uBlock/issues/540
|
||||||
// Disabling local mirroring for the time being
|
// Disabling local mirroring for the time being
|
||||||
//var redirectURL = pageStore.toMirrorURL(requestURL);
|
//var redirectURL = pageStore.toMirrorURL(requestURL);
|
||||||
//if ( redirectURL !== '' ) {
|
//if ( redirectURL !== '' ) {
|
||||||
|
@ -160,13 +160,13 @@ var onBeforeRequest = function(details) {
|
||||||
|
|
||||||
pageStore.logRequest(requestContext, result);
|
pageStore.logRequest(requestContext, result);
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/905#issuecomment-76543649
|
// https://github.com/chrisaljoudi/uBlock/issues/905#issuecomment-76543649
|
||||||
// No point updating the badge if it's not being displayed.
|
// No point updating the badge if it's not being displayed.
|
||||||
if ( µb.userSettings.showIconBadge ) {
|
if ( µb.userSettings.showIconBadge ) {
|
||||||
µb.updateBadgeAsync(tabId);
|
µb.updateBadgeAsync(tabId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/18
|
// https://github.com/chrisaljoudi/uBlock/issues/18
|
||||||
// Do not use redirection, we need to block outright to be sure the request
|
// Do not use redirection, we need to block outright to be sure the request
|
||||||
// will not be made. There can be no such guarantee with redirection.
|
// will not be made. There can be no such guarantee with redirection.
|
||||||
|
|
||||||
|
@ -182,7 +182,7 @@ var onBeforeRootFrameRequest = function(details) {
|
||||||
mostRecentRootDocURLTimestamp = Date.now();
|
mostRecentRootDocURLTimestamp = Date.now();
|
||||||
|
|
||||||
// Special handling for root document.
|
// Special handling for root document.
|
||||||
// https://github.com/gorhill/uBlock/issues/1001
|
// https://github.com/chrisaljoudi/uBlock/issues/1001
|
||||||
// This must be executed regardless of whether the request is
|
// This must be executed regardless of whether the request is
|
||||||
// behind-the-scene
|
// behind-the-scene
|
||||||
var µb = µBlock;
|
var µb = µBlock;
|
||||||
|
@ -214,7 +214,7 @@ var onBeforeRootFrameRequest = function(details) {
|
||||||
// Filtering
|
// Filtering
|
||||||
if ( result === '' && µb.getNetFilteringSwitch(requestURL) ) {
|
if ( result === '' && µb.getNetFilteringSwitch(requestURL) ) {
|
||||||
result = µb.staticNetFilteringEngine.matchString(context);
|
result = µb.staticNetFilteringEngine.matchString(context);
|
||||||
// https://github.com/gorhill/uBlock/issues/1128
|
// https://github.com/chrisaljoudi/uBlock/issues/1128
|
||||||
// Do not block if the match begins after the hostname.
|
// Do not block if the match begins after the hostname.
|
||||||
if ( result !== '' ) {
|
if ( result !== '' ) {
|
||||||
result = toBlockDocResult(requestURL, requestHostname, result);
|
result = toBlockDocResult(requestURL, requestHostname, result);
|
||||||
|
@ -364,8 +364,8 @@ var onHeadersReceived = function(details) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/384
|
// https://github.com/chrisaljoudi/uBlock/issues/384
|
||||||
// https://github.com/gorhill/uBlock/issues/540
|
// https://github.com/chrisaljoudi/uBlock/issues/540
|
||||||
// Disabling local mirroring for the time being
|
// Disabling local mirroring for the time being
|
||||||
//if ( details.parentFrameId === -1 ) {
|
//if ( details.parentFrameId === -1 ) {
|
||||||
// pageStore.skipLocalMirroring = headerStartsWith(details.responseHeaders, 'content-security-policy') !== '';
|
// pageStore.skipLocalMirroring = headerStartsWith(details.responseHeaders, 'content-security-policy') !== '';
|
||||||
|
@ -373,7 +373,7 @@ var onHeadersReceived = function(details) {
|
||||||
|
|
||||||
var requestHostname = details.hostname;
|
var requestHostname = details.hostname;
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/525
|
// https://github.com/chrisaljoudi/uBlock/issues/525
|
||||||
// When we are dealing with the root frame, due to fix to issue #516, it
|
// When we are dealing with the root frame, due to fix to issue #516, it
|
||||||
// is likely the root frame has not been bound yet to the tab, and thus
|
// is likely the root frame has not been bound yet to the tab, and thus
|
||||||
// we could end up using the context of the previous page for filtering.
|
// we could end up using the context of the previous page for filtering.
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/405
|
// https://github.com/chrisaljoudi/uBlock/issues/405
|
||||||
// Be more flexible with whitelist syntax
|
// Be more flexible with whitelist syntax
|
||||||
|
|
||||||
// Any special regexp char will be escaped
|
// Any special regexp char will be escaped
|
||||||
|
@ -209,7 +209,7 @@ var matchWhitelistDirective = function(url, hostname, directive) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Be sure this stays fixed:
|
// Be sure this stays fixed:
|
||||||
// https://github.com/gorhill/uBlock/issues/185
|
// https://github.com/chrisaljoudi/uBlock/issues/185
|
||||||
|
|
||||||
if ( whitelist.hasOwnProperty(key) === false ) {
|
if ( whitelist.hasOwnProperty(key) === false ) {
|
||||||
whitelist[key] = [];
|
whitelist[key] = [];
|
||||||
|
@ -262,7 +262,7 @@ var matchWhitelistDirective = function(url, hostname, directive) {
|
||||||
break;
|
break;
|
||||||
case 'experimentalEnabled':
|
case 'experimentalEnabled':
|
||||||
if ( typeof this.mirrors === 'object' ) {
|
if ( typeof this.mirrors === 'object' ) {
|
||||||
// https://github.com/gorhill/uBlock/issues/540
|
// https://github.com/chrisaljoudi/uBlock/issues/540
|
||||||
// Disabling local mirroring for the time being
|
// Disabling local mirroring for the time being
|
||||||
this.mirrors.toggle(false /* value */);
|
this.mirrors.toggle(false /* value */);
|
||||||
}
|
}
|
||||||
|
@ -290,7 +290,7 @@ var matchWhitelistDirective = function(url, hostname, directive) {
|
||||||
this.sessionFirewall.unsetCell(details.srcHostname, details.desHostname, details.requestType);
|
this.sessionFirewall.unsetCell(details.srcHostname, details.desHostname, details.requestType);
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/731#issuecomment-73937469
|
// https://github.com/chrisaljoudi/uBlock/issues/731#issuecomment-73937469
|
||||||
if ( details.persist ) {
|
if ( details.persist ) {
|
||||||
if ( details.action !== 0 ) {
|
if ( details.action !== 0 ) {
|
||||||
this.permanentFirewall.setCellZ(details.srcHostname, details.desHostname, details.requestType, details.action);
|
this.permanentFirewall.setCellZ(details.srcHostname, details.desHostname, details.requestType, details.action);
|
||||||
|
@ -300,7 +300,7 @@ var matchWhitelistDirective = function(url, hostname, directive) {
|
||||||
this.savePermanentFirewallRules();
|
this.savePermanentFirewallRules();
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/gorhill/uBlock/issues/420
|
// https://github.com/chrisaljoudi/uBlock/issues/420
|
||||||
this.cosmeticFilteringEngine.removeFromSelectorCache(details.srcHostname, 'net');
|
this.cosmeticFilteringEngine.removeFromSelectorCache(details.srcHostname, 'net');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue