diff options
author | gorhill <rhill@raymondhill.net> | 2015-09-03 10:45:36 -0400 |
---|---|---|
committer | gorhill <rhill@raymondhill.net> | 2015-09-03 10:45:36 -0400 |
commit | 7fe8c64f6f232392f179ac460218bb1a951243e8 (patch) | |
tree | 19df3f8d5dba5c8a89f7bb27d2d68b6af67dc353 /platform | |
parent | d536b5a591a5afab517dfa8faf8c1059790a763d (diff) | |
download | uBlock-7fe8c64f6f232392f179ac460218bb1a951243e8.zip uBlock-7fe8c64f6f232392f179ac460218bb1a951243e8.tar.gz uBlock-7fe8c64f6f232392f179ac460218bb1a951243e8.tar.bz2 |
vAPI.net.registerListeners(): code review
Diffstat (limited to 'platform')
-rw-r--r-- | platform/chromium/vapi-background.js | 65 |
1 files changed, 42 insertions, 23 deletions
diff --git a/platform/chromium/vapi-background.js b/platform/chromium/vapi-background.js index c167b8e..79d929e 100644 --- a/platform/chromium/vapi-background.js +++ b/platform/chromium/vapi-background.js @@ -190,7 +190,7 @@ vAPI.tabs.registerListeners = function() { if ( popup !== undefined ) { return; } - return popupCandidates[details.tabId] = new PopupCandidate(details); + return (popupCandidates[details.tabId] = new PopupCandidate(details)); }; var popupCandidateTest = function(details) { @@ -838,20 +838,6 @@ vAPI.net.registerListeners = function() { normalizeRequestDetails(details); return onBeforeRequestClient(details); }; - chrome.webRequest.onBeforeRequest.addListener( - onBeforeRequest, - //function(details) { - // quickProfiler.start('onBeforeRequest'); - // var r = onBeforeRequest(details); - // quickProfiler.stop(); - // return r; - //}, - { - 'urls': this.onBeforeRequest.urls || ['<all_urls>'], - 'types': this.onBeforeRequest.types || undefined - }, - this.onBeforeRequest.extra - ); var onHeadersReceivedClient = this.onHeadersReceived.callback; var onHeadersReceivedClientTypes = this.onHeadersReceived.types.slice(0); @@ -890,14 +876,47 @@ vAPI.net.registerListeners = function() { } return onHeadersReceivedClient(details); }; - chrome.webRequest.onHeadersReceived.addListener( - onHeadersReceived, - { - 'urls': this.onHeadersReceived.urls || ['<all_urls>'], - 'types': onHeadersReceivedTypes - }, - this.onHeadersReceived.extra - ); + + var installListeners = (function() { + var listener; + var crapi = chrome.webRequest; + + listener = onBeforeRequest; + //listener = function(details) { + // quickProfiler.start('onBeforeRequest'); + // var r = onBeforeRequest(details); + // quickProfiler.stop(); + // return r; + //}; + if ( crapi.onBeforeRequest.hasListener(listener) === false ) { + crapi.onBeforeRequest.addListener( + listener, + { + 'urls': this.onBeforeRequest.urls || ['<all_urls>'], + 'types': this.onBeforeRequest.types || undefined + }, + this.onBeforeRequest.extra + ); + } + + listener = onHeadersReceived; + if ( crapi.onHeadersReceived.hasListener(listener) === false ) { + crapi.onHeadersReceived.addListener( + listener, + { + 'urls': this.onHeadersReceived.urls || ['<all_urls>'], + 'types': onHeadersReceivedTypes + }, + this.onHeadersReceived.extra + ); + } + + // https://github.com/gorhill/uBlock/issues/675 + // Experimental: keep polling to be sure our listeners are still installed. + //setTimeout(installListeners, 20000); + }).bind(this); + + installListeners(); }; /******************************************************************************/ |