aboutsummaryrefslogtreecommitdiffstats
path: root/platform
diff options
context:
space:
mode:
authorgorhill <rhill@raymondhill.net>2015-09-03 10:45:36 -0400
committergorhill <rhill@raymondhill.net>2015-09-03 10:45:36 -0400
commit7fe8c64f6f232392f179ac460218bb1a951243e8 (patch)
tree19df3f8d5dba5c8a89f7bb27d2d68b6af67dc353 /platform
parentd536b5a591a5afab517dfa8faf8c1059790a763d (diff)
downloaduBlock-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.js65
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();
};
/******************************************************************************/