aboutsummaryrefslogtreecommitdiffstats
path: root/src/js/pagestore.js
diff options
context:
space:
mode:
authorgorhill <rhill@raymondhill.net>2015-06-10 09:23:48 -0400
committergorhill <rhill@raymondhill.net>2015-06-10 09:23:48 -0400
commit113c2e11a51860506d0aaee43424ce21adff440b (patch)
tree0195c8412ea78dc5d0ba27115db4b7ce0888307a /src/js/pagestore.js
parentff0ad30ba65a61d845e1d4fe8c622b2acb340e7c (diff)
downloaduBlock-113c2e11a51860506d0aaee43424ce21adff440b.zip
uBlock-113c2e11a51860506d0aaee43424ce21adff440b.tar.gz
uBlock-113c2e11a51860506d0aaee43424ce21adff440b.tar.bz2
this (indirectly) fixes #15: let uBlock block remote fonts globally or on a site-basis
Diffstat (limited to 'src/js/pagestore.js')
-rw-r--r--src/js/pagestore.js43
1 files changed, 34 insertions, 9 deletions
diff --git a/src/js/pagestore.js b/src/js/pagestore.js
index 0b332a6..378072c 100644
--- a/src/js/pagestore.js
+++ b/src/js/pagestore.js
@@ -305,6 +305,7 @@ PageStore.prototype.init = function(tabId) {
this.perLoadBlockedRequestCount = 0;
this.perLoadAllowedRequestCount = 0;
this.hiddenElementCount = ''; // Empty string means "unknown"
+ this.remoteFontCount = 0;
this.netFilteringCache = NetFilteringResultCache.factory();
// Support `elemhide` filter option. Called at this point so the required
@@ -495,9 +496,10 @@ PageStore.prototype.toggleNetFilteringSwitch = function(url, scope, state) {
/******************************************************************************/
PageStore.prototype.filterRequest = function(context) {
+ var requestType = context.requestType;
if ( this.getNetFilteringSwitch() === false ) {
- if ( collapsibleRequestTypes.indexOf(context.requestType) !== -1 ) {
+ if ( collapsibleRequestTypes.indexOf(requestType) !== -1 ) {
this.netFilteringCache.add(context, '');
}
return '';
@@ -509,8 +511,19 @@ PageStore.prototype.filterRequest = function(context) {
return entry.result;
}
- µb.sessionURLFiltering.evaluateZ(context.rootHostname, context.requestURL, context.requestType);
- var result = µb.sessionURLFiltering.toFilterString();
+ var result = '';
+
+ if ( requestType === 'font' ) {
+ if ( µb.hnSwitches.evaluateZ('no-remote-fonts', context.rootHostname) !== false ) {
+ result = µb.hnSwitches.toResultString();
+ }
+ this.remoteFontCount += 1;
+ }
+
+ if ( result === '' ) {
+ µb.sessionURLFiltering.evaluateZ(context.rootHostname, context.requestURL, requestType);
+ result = µb.sessionURLFiltering.toFilterString();
+ }
// Given that:
// - Dynamic filtering override static filtering
@@ -518,7 +531,7 @@ PageStore.prototype.filterRequest = function(context) {
// We evaluate dynamic filtering first, and hopefully we can skip
// evaluation of static filtering.
if ( result === '' && µb.userSettings.advancedUserEnabled ) {
- µb.sessionFirewall.evaluateCellZY( context.rootHostname, context.requestHostname, context.requestType);
+ µb.sessionFirewall.evaluateCellZY( context.rootHostname, context.requestHostname, requestType);
if ( µb.sessionFirewall.mustBlockOrAllow() ) {
result = µb.sessionFirewall.toFilterString();
}
@@ -532,11 +545,11 @@ PageStore.prototype.filterRequest = function(context) {
}
//console.debug('cache MISS: PageStore.filterRequest("%s")', context.requestURL);
- if ( collapsibleRequestTypes.indexOf(context.requestType) !== -1 ) {
+ if ( collapsibleRequestTypes.indexOf(requestType) !== -1 ) {
this.netFilteringCache.add(context, result);
}
- // console.debug('[%s, %s] = "%s"', context.requestHostname, context.requestType, result);
+ // console.debug('[%s, %s] = "%s"', context.requestHostname, requestType, result);
return result;
};
@@ -551,8 +564,20 @@ PageStore.prototype.filterRequestNoCache = function(context) {
return '';
}
- µb.sessionURLFiltering.evaluateZ(context.rootHostname, context.requestURL, context.requestType);
- var result = µb.sessionURLFiltering.toFilterString();
+ var requestType = context.requestType;
+ var result = '';
+
+ if ( requestType === 'font' ) {
+ if ( µb.hnSwitches.evaluateZ('no-remote-fonts', context.rootHostname) !== false ) {
+ result = µb.hnSwitches.toResultString();
+ }
+ this.remoteFontCount += 1;
+ }
+
+ if ( result === '' ) {
+ µb.sessionURLFiltering.evaluateZ(context.rootHostname, context.requestURL, requestType);
+ result = µb.sessionURLFiltering.toFilterString();
+ }
// Given that:
// - Dynamic filtering override static filtering
@@ -560,7 +585,7 @@ PageStore.prototype.filterRequestNoCache = function(context) {
// We evaluate dynamic filtering first, and hopefully we can skip
// evaluation of static filtering.
if ( result === '' && µb.userSettings.advancedUserEnabled ) {
- µb.sessionFirewall.evaluateCellZY(context.rootHostname, context.requestHostname, context.requestType);
+ µb.sessionFirewall.evaluateCellZY(context.rootHostname, context.requestHostname, requestType);
if ( µb.sessionFirewall.mustBlockOrAllow() ) {
result = µb.sessionFirewall.toFilterString();
}