mirror of
https://github.com/gorhill/uBlock.git
synced 2024-09-02 09:09:38 +02:00
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"]
|
||||
|
||||
!Whitelist
|
||||
! https://github.com/gorhill/uBlock/issues/693#issuecomment-72928751
|
||||
! https://github.com/chrisaljoudi/uBlock/issues/693#issuecomment-72928751
|
||||
! @@||homebank.ro^$document
|
||||
! @@||profitshare.emag.ro/get_ads.php?*
|
||||
! @@||profitshare.ro/get_ads.php?*
|
||||
|
@ -1,6 +1,6 @@
|
||||
# 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
|
||||
@@||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
|
||||
www.zerohedge.com##.similar-box
|
||||
|
||||
# https://github.com/gorhill/uBlock/issues/57
|
||||
# https://github.com/gorhill/uBlock/issues/98
|
||||
# https://github.com/chrisaljoudi/uBlock/issues/57
|
||||
# https://github.com/chrisaljoudi/uBlock/issues/98
|
||||
# New filter class: entity filters, where
|
||||
# entity = domain minus public suffix
|
||||
# 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.*##.rscontainer > .ellip
|
||||
|
||||
# https://github.com/gorhill/uBlock/issues/381
|
||||
# https://github.com/chrisaljoudi/uBlock/issues/381
|
||||
google.*###sqh
|
||||
|
||||
# For when javascript is disabled
|
||||
@ -72,22 +72,22 @@ google.*###center_col > #tads
|
||||
www.youtube.com##.masthead-ad-control
|
||||
www.youtube.com##.ad-div
|
||||
|
||||
# https://github.com/gorhill/uBlock/issues/63
|
||||
# https://github.com/chrisaljoudi/uBlock/issues/63
|
||||
@@||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
|
||||
|
||||
# https://github.com/gorhill/uBlock/issues/119
|
||||
# https://github.com/chrisaljoudi/uBlock/issues/119
|
||||
# To counter `google-analytics.com` in Peter Lowe's list
|
||||
@@||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
|
||||
# To counter `tags.tiqcdn.com` in MVPS
|
||||
@@||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
|
||||
@@||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
|
||||
@@||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
|
||||
@@||cdn-static.liverail.com^$object-subrequest
|
||||
|
||||
# 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 `s0.2mdn.net` in MVPS, hpHosts, Dan Pollock's
|
||||
@@||s0.2mdn.net/instream/*$domain=cnet.com|nfl.com|wistv.com
|
||||
@@||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
|
||||
@@||cdn-i.dmdentertainment.com^$domain=cracked.com
|
||||
|
||||
# EasyList/EasyPrivacy fixes
|
||||
# https://github.com/gorhill/uBlock/issues/373
|
||||
# https://github.com/chrisaljoudi/uBlock/issues/373
|
||||
@@||omtrdc.net^$domain=www.amazon.com
|
||||
# To counter `/b/ss/*&aqe=` and `||scorecardresearch.com^$third-party` in
|
||||
# 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
|
||||
@@||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
|
||||
@@||mopub.com^$~third-party
|
||||
|
||||
# https://github.com/gorhill/uBlock/issues/293
|
||||
# https://github.com/chrisaljoudi/uBlock/issues/293
|
||||
# To counter `safelinking.net` in hpHosts
|
||||
@@||safelinking.net^$~third-party
|
||||
|
||||
# https://github.com/gorhill/uBlock/issues/302
|
||||
# https://github.com/chrisaljoudi/uBlock/issues/302
|
||||
# To counter `outbrain.com` in hpHosts
|
||||
@@||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
|
||||
@@||inc.com^$~third-party
|
||||
|
||||
@ -162,11 +162,11 @@ www.thesimsresource.com##.ad-topleader
|
||||
# To counter Peter Lowe's `intergi.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
|
||||
@@||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
|
||||
@@||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
|
||||
@@||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
|
||||
|
||||
# To counter Peter Lowe's, hpHosts
|
||||
@@||boldchat.com^$~third-party
|
||||
|
||||
# https://github.com/gorhill/uBlock/issues/463
|
||||
# https://github.com/chrisaljoudi/uBlock/issues/463
|
||||
# To counter Peter Lowe's, hpHosts
|
||||
@@||mixpanel.com^$~third-party
|
||||
|
||||
# https://github.com/gorhill/uBlock/issues/466
|
||||
# https://github.com/chrisaljoudi/uBlock/issues/466
|
||||
# Until fixed in EasyPrivacy
|
||||
@@/google-analytics-dashboard
|
||||
|
||||
@ -204,7 +204,7 @@ ovh.strim.io#@##tweets
|
||||
# To counter Dan Pollock's, hpHosts, MVPS, Peter Lowe's
|
||||
@@||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
|
||||
@@||yui.yahooapis.com^
|
||||
|
||||
@ -212,10 +212,10 @@ ovh.strim.io#@##tweets
|
||||
# To counter `top.mail.ru` in Peter Lowe's
|
||||
@@||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
|
||||
|
||||
# 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
|
||||
||filenuke.com/a/script.js$script
|
||||
||mwem.filenuke.com/*/*$script
|
||||
@ -228,15 +228,15 @@ ovh.strim.io#@##tweets
|
||||
||lsg.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
|
||||
@@||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
|
||||
@@||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
|
||||
@@||pcekspert.com^$~third-party
|
||||
|
||||
@ -244,22 +244,22 @@ ovh.strim.io#@##tweets
|
||||
# To counter `||clickbank.com^` in Dan Pollock's, Peter Lowe's
|
||||
@@||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 `mc.yandex.ru` in hpHosts, MVPS
|
||||
@@||awaps.yandex.ru^$domain=market.yandex.ru
|
||||
@@||mc.yandex.ru^$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
|
||||
|
||||
# https://github.com/gorhill/uBlock/issues/650
|
||||
# https://github.com/gorhill/uBlock/issues/821
|
||||
# https://github.com/chrisaljoudi/uBlock/issues/650
|
||||
# https://github.com/chrisaljoudi/uBlock/issues/821
|
||||
# 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
|
||||
|
||||
# https://github.com/gorhill/uBlock/issues/774
|
||||
# https://github.com/chrisaljoudi/uBlock/issues/774
|
||||
# To counter `carbonads.net` in Peter Lowe's
|
||||
@@||carbonads.net^$~third-party
|
||||
|
||||
@ -270,12 +270,12 @@ deviantart.com##.dp-ad-chrome.dp-ad-visible
|
||||
# To counter `2o7.net` in Peter Lowe's
|
||||
@@||2o7.net^$domain=totaljobs.com
|
||||
|
||||
# https://github.com/gorhill/uBlock/issues/822
|
||||
# https://github.com/gorhill/uBlock/issues/940
|
||||
# https://github.com/chrisaljoudi/uBlock/issues/822
|
||||
# https://github.com/chrisaljoudi/uBlock/issues/940
|
||||
# To counter `google-analytics.com` in Dan Pollock's, hpHosts, MVPS, Peter Lowe's
|
||||
@@||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
|
||||
@@||quantcast.com^$~third-party
|
||||
|
||||
|
@ -14,7 +14,7 @@ cdn.jsdelivr.net
|
||||
cdnjs.cloudflare.com
|
||||
^cdnjs\.cloudflare\.com\/ajax\/libs\/
|
||||
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
|
||||
# within a data: URI
|
||||
^code\.jquery\.com\/(?!.*\/themes\/.+\.css)
|
||||
@ -27,7 +27,7 @@ netdna.bootstrapcdn.com
|
||||
platform.twitter.com
|
||||
^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
|
||||
ajax.aspnetcdn.com
|
||||
# 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.
|
||||
# ||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:
|
||||
# https://hg.adblockplus.org/easylist/rev/9f6e928c258a#l2.12
|
||||
# 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
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/19
|
||||
// https://github.com/gorhill/uBlock/issues/207
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/19
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/207
|
||||
// Since we may be called asynchronously, the tab id may not exist
|
||||
// anymore, so this ensures it does still exist.
|
||||
|
||||
@ -548,7 +548,7 @@ CallbackWrapper.prototype.init = function(port, request) {
|
||||
};
|
||||
|
||||
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) ) {
|
||||
this.port.postMessage({
|
||||
requestId: this.request.requestId,
|
||||
@ -585,7 +585,7 @@ vAPI.net.registerListeners = function() {
|
||||
var tail = µburi.path.slice(-6);
|
||||
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
|
||||
// Chromium bug 410382 (see below)
|
||||
if ( pos === -1 ) {
|
||||
@ -706,7 +706,7 @@ vAPI.onLoadAllCompleted = function() {
|
||||
while ( i-- ) {
|
||||
tab = tabs[i];
|
||||
µb.bindTabToPageStats(tab.id, tab.url);
|
||||
// https://github.com/gorhill/uBlock/issues/129
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/129
|
||||
scriptStart(tab.id);
|
||||
}
|
||||
};
|
||||
|
@ -34,7 +34,7 @@
|
||||
var vAPI = self.vAPI = self.vAPI || {};
|
||||
var chrome = self.chrome;
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/456
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/456
|
||||
// Already injected?
|
||||
if ( vAPI.vapiClientInjected ) {
|
||||
//console.debug('vapi-client.js already injected: skipping.');
|
||||
|
@ -1339,7 +1339,7 @@ vAPI.net.registerListeners = function() {
|
||||
return;
|
||||
}
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/105
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/105
|
||||
// Allow any kind of pages
|
||||
vAPI.tabs.onNavigation({
|
||||
frameId: 0,
|
||||
@ -1617,7 +1617,7 @@ vAPI.toolbarButton.onBeforeCreated = function(doc) {
|
||||
updateTimer = null;
|
||||
var body = iframe.contentDocument.body;
|
||||
panel.parentNode.style.maxWidth = 'none';
|
||||
// https://github.com/gorhill/uBlock/issues/730
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/730
|
||||
// Voodoo programming: this recipe works
|
||||
panel.style.height = iframe.style.height = body.clientHeight.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 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?
|
||||
if ( !currentURI.schemeIs('http') && !currentURI.schemeIs('https') ) {
|
||||
menuitem.hidden = true;
|
||||
|
@ -69,7 +69,7 @@ function allFiltersApplyHandler() {
|
||||
/******************************************************************************/
|
||||
|
||||
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
|
||||
var abpImporter = function(s) {
|
||||
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) : '?');
|
||||
elem.text(text);
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/104
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/104
|
||||
var asset = listDetails.cache[listKey] || {};
|
||||
|
||||
// Update status
|
||||
|
@ -66,7 +66,7 @@ var exports = {
|
||||
autoUpdate: true,
|
||||
autoUpdateDelay: 4 * oneDay,
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/426
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/426
|
||||
remoteFetchBarrier: 0
|
||||
};
|
||||
|
||||
@ -354,7 +354,7 @@ var updateLocalChecksums = function() {
|
||||
var getRepoMetadata = function(callback) {
|
||||
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
|
||||
// of callers, if any, except to add one at the end of the list.
|
||||
if ( repoMetadata !== null && repoMetadata.waiting.length !== 0 ) {
|
||||
@ -407,7 +407,7 @@ var getRepoMetadata = function(callback) {
|
||||
updateLocalChecksums();
|
||||
}
|
||||
// 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:
|
||||
// - process the waiting callers in a FIFO manner
|
||||
// - 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.
|
||||
|
||||
var readRepoFile = function(path, callback) {
|
||||
// https://github.com/gorhill/uBlock/issues/426
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/426
|
||||
if ( exports.remoteFetchBarrier !== 0 ) {
|
||||
readLocalFile(path, callback);
|
||||
return;
|
||||
@ -866,7 +866,7 @@ var readExternalAsset = function(path, callback) {
|
||||
};
|
||||
|
||||
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
|
||||
// into an error condition.
|
||||
if ( stringIsNotEmpty(this.responseText) === false ) {
|
||||
@ -1045,7 +1045,7 @@ exports.rmrf = function() {
|
||||
exports.metadata = function(callback) {
|
||||
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
|
||||
// has been gathered.
|
||||
var checkCacheObsolescence = function() {
|
||||
|
@ -66,7 +66,7 @@ return {
|
||||
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
|
||||
netWhitelist: {},
|
||||
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 ) {
|
||||
//console.debug('contentscript-end.js > not a HTLMDocument');
|
||||
return false;
|
||||
@ -42,13 +42,13 @@ if ( !vAPI ) {
|
||||
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.
|
||||
if ( !vAPI.contentscriptStartInjected ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/456
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/456
|
||||
// Already injected?
|
||||
if ( vAPI.contentscriptEndInjected ) {
|
||||
//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.
|
||||
// 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 timer = null;
|
||||
@ -136,18 +136,18 @@ var uBlockCollapser = (function() {
|
||||
delete pendingRequests[request.id];
|
||||
pendingRequestCount -= 1;
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/869
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/869
|
||||
if ( !request.collapse ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
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
|
||||
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
|
||||
if ( value = target.getAttribute(entry.attr) ) {
|
||||
selectors.push(entry.tagName + '[' + entry.attr + '="' + value + '"]');
|
||||
@ -200,7 +200,7 @@ var uBlockCollapser = (function() {
|
||||
if ( prop === undefined ) {
|
||||
return;
|
||||
}
|
||||
// https://github.com/gorhill/uBlock/issues/174
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/174
|
||||
// Do not remove fragment from src URL
|
||||
var src = target[prop];
|
||||
if ( typeof src !== 'string' || src === '' ) {
|
||||
@ -278,7 +278,7 @@ var uBlockCollapser = (function() {
|
||||
},
|
||||
retrieveHandler
|
||||
);
|
||||
// https://github.com/gorhill/uBlock/issues/452
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/452
|
||||
retrieveHandler = nextRetrieveHandler;
|
||||
} else {
|
||||
nextRetrieveHandler(null);
|
||||
@ -286,13 +286,13 @@ var uBlockCollapser = (function() {
|
||||
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
|
||||
// received, not at `DOMContentLoaded` time, or else there is a good
|
||||
// likeliness to outrun contentscript-start.js, which may still be waiting
|
||||
// on a response from its own query.
|
||||
var firstRetrieveHandler = function(response) {
|
||||
// https://github.com/gorhill/uBlock/issues/158
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/158
|
||||
// Ensure injected styles are enforced
|
||||
// rhill 2014-11-16: not sure this is needed anymore. Test case in
|
||||
// above issue was fine without the line below..
|
||||
@ -380,7 +380,7 @@ var uBlockCollapser = (function() {
|
||||
};
|
||||
|
||||
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
|
||||
if ( selectors.length === 0 ) {
|
||||
return;
|
||||
@ -388,7 +388,7 @@ var uBlockCollapser = (function() {
|
||||
if ( document.body === null ) {
|
||||
return;
|
||||
}
|
||||
// https://github.com/gorhill/uBlock/issues/158
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/158
|
||||
// Using CSSStyleDeclaration.setProperty is more reliable
|
||||
var elems = document.querySelectorAll(selectors);
|
||||
var i = elems.length;
|
||||
@ -626,7 +626,7 @@ var uBlockCollapser = (function() {
|
||||
return;
|
||||
}
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/618
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/618
|
||||
// Following is to observe dynamically added iframes:
|
||||
// - 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.
|
||||
var treeMutationObservedHandlerAsync = function(mutations) {
|
||||
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
|
||||
|
||||
|
@ -34,7 +34,7 @@
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/464
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/464
|
||||
if ( document instanceof HTMLDocument === false ) {
|
||||
//console.debug('contentscript-start.js > not a HTLMDocument');
|
||||
return false;
|
||||
@ -46,7 +46,7 @@ if ( !vAPI ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/456
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/456
|
||||
// Already injected?
|
||||
if ( vAPI.contentscriptStartInjected ) {
|
||||
//console.debug('contentscript-start.js > content script already injected');
|
||||
@ -77,7 +77,7 @@ var cosmeticFilters = function(details) {
|
||||
donthideCosmeticFilters[donthide[i]] = true;
|
||||
}
|
||||
}
|
||||
// https://github.com/gorhill/uBlock/issues/143
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/143
|
||||
if ( hide.length !== 0 ) {
|
||||
i = hide.length;
|
||||
var selector;
|
||||
@ -135,7 +135,7 @@ var filteringHandler = function(details) {
|
||||
// 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
|
||||
// process was fully initialized. When this happens, pages won't be
|
||||
// cleaned right after browser launch.
|
||||
@ -149,7 +149,7 @@ var hideElements = function(selectors) {
|
||||
if ( document.body === null ) {
|
||||
return;
|
||||
}
|
||||
// https://github.com/gorhill/uBlock/issues/158
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/158
|
||||
// Using CSSStyleDeclaration.setProperty is more reliable
|
||||
var elems = document.querySelectorAll(selectors);
|
||||
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) {
|
||||
this.lastAccessTime = Date.now();
|
||||
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.
|
||||
|
||||
FilterContainer.prototype.div = document.createElement('div');
|
||||
@ -612,7 +612,7 @@ FilterContainer.prototype.compile = function(s, out) {
|
||||
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
|
||||
// of same filter OR globally if there is no non-negated hostnames.
|
||||
var applyGlobally = true;
|
||||
@ -640,7 +640,7 @@ FilterContainer.prototype.compile = function(s, out) {
|
||||
FilterContainer.prototype.compileGenericSelector = function(parsed, out) {
|
||||
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
|
||||
// expected to be very rare.
|
||||
if ( parsed.unhide ) {
|
||||
@ -715,7 +715,7 @@ FilterContainer.prototype.reHighMedium = /^\[href\^="https?:\/\/([^"]{8})[^"]*"\
|
||||
/******************************************************************************/
|
||||
|
||||
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;
|
||||
if ( hostname.charAt(0) === '~' ) {
|
||||
hostname = hostname.slice(1);
|
||||
@ -728,7 +728,7 @@ FilterContainer.prototype.compileHostnameSelector = function(hostname, parsed, o
|
||||
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
|
||||
var hash;
|
||||
var domain = this.µburi.domainFromHostname(hostname);
|
||||
@ -854,7 +854,7 @@ FilterContainer.prototype.fromCompiledContent = function(text, lineBeg, skip) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/497
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/497
|
||||
// Generic exception filters: expected to be a rare occurrence.
|
||||
if ( fields[0] === 'g1' ) {
|
||||
this.genericDonthide.push(fields[1]);
|
||||
@ -1125,7 +1125,7 @@ FilterContainer.prototype.retrieveGenericSelectors = function(request) {
|
||||
hideHigh: this.highHighGenericHide,
|
||||
hideHighCount: this.highHighGenericHideCount
|
||||
};
|
||||
// https://github.com/gorhill/uBlock/issues/497
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/497
|
||||
r.donthide = this.genericDonthide;
|
||||
}
|
||||
|
||||
@ -1170,7 +1170,7 @@ FilterContainer.prototype.retrieveDomainSelectors = function(request) {
|
||||
var domain = µb.URI.domainFromHostname(hostname) || hostname;
|
||||
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
|
||||
// up and ready.
|
||||
|
||||
@ -1190,7 +1190,7 @@ FilterContainer.prototype.retrieveDomainSelectors = function(request) {
|
||||
if ( bucket = this.hostnameFilters[hash] ) {
|
||||
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
|
||||
if ( bucket = this.hostnameFilters[this.type0NoDomainHash] ) {
|
||||
bucket.retrieve(hostname, r.cosmeticHide);
|
||||
@ -1207,7 +1207,7 @@ FilterContainer.prototype.retrieveDomainSelectors = function(request) {
|
||||
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
|
||||
if ( bucket = this.hostnameFilters[this.type1NoDomainHash] ) {
|
||||
bucket.retrieve(hostname, r.cosmeticDonthide);
|
||||
|
@ -97,7 +97,7 @@ function handleImportFilePicker() {
|
||||
if ( typeof this.result !== 'string' || this.result === '' ) {
|
||||
return;
|
||||
}
|
||||
// https://github.com/gorhill/uBlock/issues/757
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/757
|
||||
// Support RequestPolicy rule syntax
|
||||
var result = this.result;
|
||||
var matches = /\[origins-to-destinations\]([^\[]+)/.exec(result);
|
||||
|
@ -545,7 +545,7 @@ Matrix.prototype.fromString = function(text, append) {
|
||||
srcHostname = punycode.toASCII(fields[0]);
|
||||
desHostname = punycode.toASCII(fields[1]);
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/1082
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/1082
|
||||
// Discard rules with invalid hostnames
|
||||
if ( (srcHostname !== '*' && reBadHostname.test(srcHostname)) ||
|
||||
(desHostname !== '*' && reBadHostname.test(desHostname))
|
||||
@ -558,7 +558,7 @@ Matrix.prototype.fromString = function(text, append) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/840
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/840
|
||||
// Discard invalid rules
|
||||
if ( desHostname !== '*' && type !== '*' ) {
|
||||
continue;
|
||||
|
@ -428,7 +428,7 @@ var cosmeticFilterFromElement = function(elem, out) {
|
||||
|
||||
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
|
||||
// `nth-of-type`. It is preferable to use `nth-of-type` as opposed to
|
||||
// `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
|
||||
// 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
|
||||
// insert wildcard(s) into the proposed filter
|
||||
var reStr = '';
|
||||
@ -743,7 +743,7 @@ var onSvgHovered = 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
|
||||
if ( dialog.parentNode.classList.contains('paused') ) {
|
||||
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
|
||||
// of highlighted elements.
|
||||
|
||||
|
@ -38,7 +38,7 @@ var onMessage = function(request, sender, callback) {
|
||||
// Async
|
||||
switch ( request.what ) {
|
||||
case 'getAssetContent':
|
||||
// https://github.com/gorhill/uBlock/issues/417
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/417
|
||||
µb.assets.get(request.url, callback);
|
||||
return;
|
||||
|
||||
@ -317,7 +317,7 @@ var onMessage = function(request, sender, callback) {
|
||||
return;
|
||||
}
|
||||
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 : ''));
|
||||
});
|
||||
return;
|
||||
@ -856,7 +856,7 @@ var onMessage = function(request, sender, callback) {
|
||||
break;
|
||||
|
||||
case 'setSessionFirewallRules':
|
||||
// https://github.com/gorhill/uBlock/issues/772
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/772
|
||||
µb.cosmeticFilteringEngine.removeFromSelectorCache('*');
|
||||
|
||||
µb.sessionFirewall.fromString(request.rules);
|
||||
@ -1115,7 +1115,7 @@ var restoreUserData = function(request) {
|
||||
}, 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.
|
||||
µb.assets.rmrf();
|
||||
|
||||
|
@ -193,7 +193,7 @@ var toUrlKey = function(url) {
|
||||
if ( matches === null ) {
|
||||
continue;
|
||||
}
|
||||
// https://github.com/gorhill/uBlock/issues/301
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/301
|
||||
// Use whole URL as key when no regex capture
|
||||
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
|
||||
|
||||
// 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
|
||||
// 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.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
|
||||
this.pageDomain = µb.URI.domainFromHostname(this.pageHostname) || this.pageHostname;
|
||||
this.rootHostname = this.pageHostname;
|
||||
@ -531,7 +531,7 @@ PageStore.prototype.reuse = function(rawURL, pageURL, context) {
|
||||
this.rawURL = rawURL;
|
||||
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
|
||||
this.netFilteringReadTime = 0;
|
||||
|
||||
@ -599,7 +599,7 @@ PageStore.prototype.setFrame = function(frameId, frameURL) {
|
||||
/******************************************************************************/
|
||||
|
||||
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.
|
||||
if ( this.netFilteringReadTime < µb.netWhitelistModifyTime ) {
|
||||
this.netFiltering = µb.getNetFilteringSwitch(this.pageURL);
|
||||
@ -749,7 +749,7 @@ PageStore.prototype.logRequest = function(context, result) {
|
||||
/******************************************************************************/
|
||||
|
||||
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
|
||||
if ( µb.userSettings.experimentalEnabled === false ||
|
||||
this.getNetFilteringSwitch() === false ||
|
||||
|
@ -52,7 +52,7 @@ document.getElementById('saveRules').style.setProperty(
|
||||
(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
|
||||
// visibility to its last known state. By default the pane is hidden.
|
||||
// Will remove if it makes no difference.
|
||||
@ -246,7 +246,7 @@ var updateFirewallCell = function(scope, des, type, rule) {
|
||||
var aCount = hnDetails.allowCount;
|
||||
var bCount = hnDetails.blockCount;
|
||||
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);
|
||||
bCount = Math.min(Math.ceil(Math.log(bCount + 1) / Math.LN10), 3);
|
||||
textNode.nodeValue = threePlus.slice(0, aCount) +
|
||||
@ -264,7 +264,7 @@ var updateFirewallCell = function(scope, des, type, rule) {
|
||||
aCount = hnDetails.totalAllowCount;
|
||||
bCount = hnDetails.totalBlockCount;
|
||||
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);
|
||||
bCount = Math.min(Math.ceil(Math.log(bCount + 1) / Math.LN10), 3);
|
||||
textNode.nodeValue = threePlus.slice(0, aCount) +
|
||||
@ -436,11 +436,11 @@ var renderPopup = function() {
|
||||
uDom('#noStrictBlocking').toggleClass('on', popupData.noStrictBlocking === 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
|
||||
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
|
||||
// configure the popup size early next time it is opened, which means a
|
||||
// less glitchy popup at open time.
|
||||
@ -541,7 +541,7 @@ var toggleFirewallPane = function() {
|
||||
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
|
||||
// configure the popup size early next time it is opened, which means a
|
||||
// less glitchy popup at open time.
|
||||
@ -639,7 +639,7 @@ var reloadTab = function() {
|
||||
|
||||
// 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
|
||||
// there were changes or not.
|
||||
popupData.contentLastModified = -1;
|
||||
|
@ -42,7 +42,7 @@ var µb = µBlock;
|
||||
// - Schedule next update operation.
|
||||
|
||||
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.
|
||||
µb.assetUpdater.onStart.addEventListener(µb.updateStartHandler.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 parser needs PSL to be ready.
|
||||
// gorhill 2014-12-15: not anymore
|
||||
@ -123,13 +123,13 @@ var onUserSettingsReady = function(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
|
||||
// time.
|
||||
µb.assets.autoUpdate = userSettings.autoUpdate;
|
||||
µ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
|
||||
userSettings.experimentalEnabled = false;
|
||||
µb.mirrors.toggle(false /* userSettings.experimentalEnabled */);
|
||||
|
@ -176,7 +176,7 @@ var alwaysTruePseudoRegex = {
|
||||
};
|
||||
|
||||
var strToRegex = function(s, anchor) {
|
||||
// https://github.com/gorhill/uBlock/issues/1038
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/1038
|
||||
// Special case: always match.
|
||||
if ( s === '*' ) {
|
||||
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.
|
||||
|
||||
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
|
||||
|
||||
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) === '^' ) {
|
||||
this.unsupported = true;
|
||||
return this;
|
||||
@ -1484,7 +1484,7 @@ FilterParser.prototype.makeToken = function() {
|
||||
|
||||
var s = this.f;
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/1038
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/1038
|
||||
// Match any URL.
|
||||
if ( s === '*' ) {
|
||||
this.token = '*';
|
||||
@ -1729,7 +1729,7 @@ FilterContainer.prototype.compile = function(raw, out) {
|
||||
}
|
||||
|
||||
// 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.
|
||||
if ( parsed.hostnamePure && this.compileHostnameOnlyFilter(parsed, out) ) {
|
||||
return true;
|
||||
@ -1838,7 +1838,7 @@ FilterContainer.prototype.compileFilter = function(parsed, out) {
|
||||
if ( filterClass === null ) {
|
||||
return false;
|
||||
}
|
||||
// https://github.com/gorhill/uBlock/issues/251
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/251
|
||||
// Apply third-party option if it is present
|
||||
this.compileToAtomicFilter(filterClass, parsed, party, out);
|
||||
}
|
||||
@ -1856,7 +1856,7 @@ FilterContainer.prototype.compileFilter = function(parsed, out) {
|
||||
if ( filterClass === null ) {
|
||||
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
|
||||
// evaluation.
|
||||
if ( parsed.action === BlockAction ) {
|
||||
@ -1985,7 +1985,7 @@ FilterContainer.prototype.tokenize = function(url) {
|
||||
tokenEntry.token = matches[0];
|
||||
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...
|
||||
if ( i === 2048 ) {
|
||||
break;
|
||||
@ -2037,7 +2037,7 @@ FilterContainer.prototype.matchTokens = function(bucket, url) {
|
||||
|
||||
// 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,
|
||||
// not the generic handling.
|
||||
|
||||
@ -2062,7 +2062,7 @@ FilterContainer.prototype.matchStringExactType = function(context, requestURL, r
|
||||
// Tokenize only once
|
||||
this.tokenize(url);
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/139
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/139
|
||||
// Test against important block filters
|
||||
if ( bucket = categories[this.makeCategoryKey(BlockAnyParty | Important | type)] ) {
|
||||
bf = this.matchTokens(bucket, url);
|
||||
@ -2112,7 +2112,7 @@ FilterContainer.prototype.matchStringExactType = function(context, requestURL, r
|
||||
/******************************************************************************/
|
||||
|
||||
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`
|
||||
// Also, be prepared to support unknown types
|
||||
var type = typeNameToTypeValue[context.requestType] || typeOtherValue;
|
||||
@ -2161,7 +2161,7 @@ FilterContainer.prototype.matchString = function(context) {
|
||||
|
||||
var bf = false;
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/139
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/139
|
||||
// Test against important block filters.
|
||||
// The purpose of the `important` option is to reverse the order of
|
||||
// evaluation. Normally, it is "evaluate block then evaluate allow", with
|
||||
|
@ -154,7 +154,7 @@
|
||||
if ( details.error ) {
|
||||
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
|
||||
// added for sure: do not try to be too smart, trying to avoid
|
||||
// duplicates at this point may lead to more issues.
|
||||
@ -171,7 +171,7 @@
|
||||
var relocationMap = {};
|
||||
|
||||
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
|
||||
if ( /^https?:/.test(location) === false ) {
|
||||
location = 'assets/thirdparties/' + location;
|
||||
@ -208,7 +208,7 @@
|
||||
}
|
||||
// This may happen if the list name was pulled from the list
|
||||
// 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
|
||||
// the list content.
|
||||
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 ) {
|
||||
//console.debug('subscriber.js > not a HTLMDocument');
|
||||
return;
|
||||
@ -109,7 +109,7 @@ var onAbpLinkClicked = function(ev) {
|
||||
}
|
||||
|
||||
// List already subscribed to?
|
||||
// https://github.com/gorhill/uBlock/issues/1033
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/1033
|
||||
// Split on line separators, not whitespaces.
|
||||
var externalLists = details.externalLists.trim().split(/\s*[\n\r]+\s*/);
|
||||
if ( externalLists.indexOf(location) !== -1 ) {
|
||||
|
@ -44,7 +44,7 @@ vAPI.tabs.onNavigation = function(details) {
|
||||
}
|
||||
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
|
||||
// mini-matrix. That's the best place I could find for the fix, all other
|
||||
// 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) {
|
||||
//console.debug('vAPI.tabs.onPopup: details = %o', details);
|
||||
@ -131,8 +131,8 @@ vAPI.tabs.onPopup = function(details) {
|
||||
result = 'ub:noPopups true';
|
||||
}
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/323
|
||||
// https://github.com/gorhill/uBlock/issues/1142
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/323
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/1142
|
||||
// If popup OR opener URL is whitelisted, do not block the popup
|
||||
if (
|
||||
result === '' &&
|
||||
@ -142,7 +142,7 @@ vAPI.tabs.onPopup = function(details) {
|
||||
result = µb.staticNetFilteringEngine.matchStringExactType(context, targetURL, 'popup');
|
||||
}
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/91
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/91
|
||||
if ( pageStore ) {
|
||||
pageStore.logRequest(context, result);
|
||||
}
|
||||
@ -222,7 +222,7 @@ vAPI.tabs.registerListeners();
|
||||
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
|
||||
if ( vAPI.isBehindTheSceneTabId(tabId) ) {
|
||||
return pageStore;
|
||||
@ -283,7 +283,7 @@ vAPI.tabs.registerListeners();
|
||||
/******************************************************************************/
|
||||
|
||||
// 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 pageStoreJanitorSampleAt = 0;
|
||||
|
@ -33,7 +33,7 @@
|
||||
|
||||
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
|
||||
// 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);
|
||||
|
||||
// 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
|
||||
// behind-the-scene
|
||||
var requestType = details.type;
|
||||
@ -70,14 +70,14 @@ var onBeforeRequest = function(details) {
|
||||
var µb = µBlock;
|
||||
var pageStore = µb.pageStoreFromTabId(tabId);
|
||||
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
|
||||
// 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".
|
||||
if ( (Date.now() - mostRecentRootDocURLTimestamp) >= 500 ) {
|
||||
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
|
||||
// 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
|
||||
@ -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 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
|
||||
// to lookup the proper context:
|
||||
// > 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) ) {
|
||||
//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;
|
||||
if ( frameId > 0 ) {
|
||||
if ( isFrame ) {
|
||||
@ -141,7 +141,7 @@ var onBeforeRequest = function(details) {
|
||||
|
||||
// https://code.google.com/p/chromium/issues/detail?id=387198
|
||||
// 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
|
||||
//var redirectURL = pageStore.toMirrorURL(requestURL);
|
||||
//if ( redirectURL !== '' ) {
|
||||
@ -160,13 +160,13 @@ var onBeforeRequest = function(details) {
|
||||
|
||||
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.
|
||||
if ( µb.userSettings.showIconBadge ) {
|
||||
µ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
|
||||
// will not be made. There can be no such guarantee with redirection.
|
||||
|
||||
@ -182,7 +182,7 @@ var onBeforeRootFrameRequest = function(details) {
|
||||
mostRecentRootDocURLTimestamp = Date.now();
|
||||
|
||||
// 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
|
||||
// behind-the-scene
|
||||
var µb = µBlock;
|
||||
@ -214,7 +214,7 @@ var onBeforeRootFrameRequest = function(details) {
|
||||
// Filtering
|
||||
if ( result === '' && µb.getNetFilteringSwitch(requestURL) ) {
|
||||
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.
|
||||
if ( result !== '' ) {
|
||||
result = toBlockDocResult(requestURL, requestHostname, result);
|
||||
@ -364,8 +364,8 @@ var onHeadersReceived = function(details) {
|
||||
}
|
||||
}
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/384
|
||||
// https://github.com/gorhill/uBlock/issues/540
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/384
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/540
|
||||
// Disabling local mirroring for the time being
|
||||
//if ( details.parentFrameId === -1 ) {
|
||||
// pageStore.skipLocalMirroring = headerStartsWith(details.responseHeaders, 'content-security-policy') !== '';
|
||||
@ -373,7 +373,7 @@ var onHeadersReceived = function(details) {
|
||||
|
||||
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
|
||||
// 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.
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/405
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/405
|
||||
// Be more flexible with whitelist syntax
|
||||
|
||||
// Any special regexp char will be escaped
|
||||
@ -209,7 +209,7 @@ var matchWhitelistDirective = function(url, hostname, directive) {
|
||||
}
|
||||
|
||||
// Be sure this stays fixed:
|
||||
// https://github.com/gorhill/uBlock/issues/185
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/185
|
||||
|
||||
if ( whitelist.hasOwnProperty(key) === false ) {
|
||||
whitelist[key] = [];
|
||||
@ -262,7 +262,7 @@ var matchWhitelistDirective = function(url, hostname, directive) {
|
||||
break;
|
||||
case 'experimentalEnabled':
|
||||
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
|
||||
this.mirrors.toggle(false /* value */);
|
||||
}
|
||||
@ -290,7 +290,7 @@ var matchWhitelistDirective = function(url, hostname, directive) {
|
||||
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.action !== 0 ) {
|
||||
this.permanentFirewall.setCellZ(details.srcHostname, details.desHostname, details.requestType, details.action);
|
||||
@ -300,7 +300,7 @@ var matchWhitelistDirective = function(url, hostname, directive) {
|
||||
this.savePermanentFirewallRules();
|
||||
}
|
||||
|
||||
// https://github.com/gorhill/uBlock/issues/420
|
||||
// https://github.com/chrisaljoudi/uBlock/issues/420
|
||||
this.cosmeticFilteringEngine.removeFromSelectorCache(details.srcHostname, 'net');
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user