this fixes #854.

Unlike PageStore, TabContext is best placed to keep track of whitelist status
This commit is contained in:
gorhill 2015-10-22 09:45:21 -04:00
parent 97c87ce646
commit afd77a3cef
2 changed files with 18 additions and 16 deletions

View file

@ -300,8 +300,6 @@ PageStore.prototype.init = function(tabId) {
this.hostnameToCountMap = {}; this.hostnameToCountMap = {};
this.contentLastModified = 0; this.contentLastModified = 0;
this.frames = {}; this.frames = {};
this.netFiltering = true;
this.netFilteringReadTime = 0;
this.perLoadBlockedRequestCount = 0; this.perLoadBlockedRequestCount = 0;
this.perLoadAllowedRequestCount = 0; this.perLoadAllowedRequestCount = 0;
this.hiddenElementCount = ''; // Empty string means "unknown" this.hiddenElementCount = ''; // Empty string means "unknown"
@ -351,7 +349,6 @@ PageStore.prototype.reuse = function(context) {
// As part of https://github.com/chrisaljoudi/uBlock/issues/405 // As part of https://github.com/chrisaljoudi/uBlock/issues/405
// URL changed, force a re-evaluation of filtering switch // URL changed, force a re-evaluation of filtering switch
this.rawURL = tabContext.rawURL; this.rawURL = tabContext.rawURL;
this.netFilteringReadTime = 0;
return this; return this;
} }
@ -444,19 +441,7 @@ PageStore.prototype.createContextFromFrameHostname = function(frameHostname) {
/******************************************************************************/ /******************************************************************************/
PageStore.prototype.getNetFilteringSwitch = function() { PageStore.prototype.getNetFilteringSwitch = function() {
var tabContext = µb.tabContextManager.lookup(this.tabId); return µb.tabContextManager.lookup(this.tabId).getNetFilteringSwitch();
if ( this.netFilteringReadTime > µb.netWhitelistModifyTime ) {
return this.netFiltering;
}
// https://github.com/chrisaljoudi/uBlock/issues/1078
// Use both the raw and normalized URLs.
this.netFiltering = µb.getNetFilteringSwitch(tabContext.normalURL);
if ( this.netFiltering && tabContext.rawURL !== tabContext.normalURL ) {
this.netFiltering = µb.getNetFilteringSwitch(tabContext.rawURL);
}
this.netFilteringReadTime = Date.now();
return this.netFiltering;
}; };
/******************************************************************************/ /******************************************************************************/

View file

@ -155,6 +155,8 @@ housekeep itself.
this.rootDomain = ''; this.rootDomain = '';
this.commitTimer = null; this.commitTimer = null;
this.gcTimer = null; this.gcTimer = null;
this.netFiltering = true;
this.netFilteringReadTime = 0;
tabContexts[tabId] = this; tabContexts[tabId] = this;
}; };
@ -228,6 +230,7 @@ housekeep itself.
// Update just force all properties to be updated to match the most recent // Update just force all properties to be updated to match the most recent
// root URL. // root URL.
TabContext.prototype.update = function() { TabContext.prototype.update = function() {
this.netFilteringReadTime = 0;
if ( this.stack.length === 0 ) { if ( this.stack.length === 0 ) {
this.rawURL = this.normalURL = this.rootHostname = this.rootDomain = ''; this.rawURL = this.normalURL = this.rootHostname = this.rootDomain = '';
return; return;
@ -291,6 +294,20 @@ housekeep itself.
this.update(); this.update();
}; };
TabContext.prototype.getNetFilteringSwitch = function() {
if ( this.netFilteringReadTime > µb.netWhitelistModifyTime ) {
return this.netFiltering;
}
// https://github.com/chrisaljoudi/uBlock/issues/1078
// Use both the raw and normalized URLs.
this.netFiltering = µb.getNetFilteringSwitch(this.normalURL);
if ( this.netFiltering && this.rawURL !== this.normalURL ) {
this.netFiltering = µb.getNetFilteringSwitch(this.rawURL);
}
this.netFilteringReadTime = Date.now();
return this.netFiltering;
};
// These are to be used for the API of the tab context manager. // These are to be used for the API of the tab context manager.
var push = function(tabId, url) { var push = function(tabId, url) {