Correct issue links

This commit is contained in:
YFdyh000 2015-04-07 09:26:05 +08:00
parent 353ce96c26
commit 6e77ec33ff
28 changed files with 164 additions and 164 deletions

View File

@ -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?*

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);
}
};

View File

@ -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.');

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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() {

View File

@ -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,

View File

@ -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

View File

@ -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;

View File

@ -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);

View File

@ -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);

View File

@ -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;

View File

@ -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.

View File

@ -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();

View File

@ -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

View File

@ -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 ||

View File

@ -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;

View File

@ -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 */);

View File

@ -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

View File

@ -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 === '' &&

View File

@ -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 ) {

View File

@ -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;

View File

@ -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.

View File

@ -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');
};