Index: lib/requestBlocker.js |
=================================================================== |
--- a/lib/requestBlocker.js |
+++ b/lib/requestBlocker.js |
@@ -147,17 +147,25 @@ |
FilterNotifier.on("subscription.removed", onFilterChange); |
FilterNotifier.on("subscription.updated", onFilterChange); |
FilterNotifier.on("subscription.disabled", arg => onFilterChange(arg, true)); |
FilterNotifier.on("filter.added", onFilterChange); |
FilterNotifier.on("filter.removed", onFilterChange); |
FilterNotifier.on("filter.disabled", arg => onFilterChange(arg, true)); |
FilterNotifier.on("load", onFilterChange); |
-port.on("request.websocket", (msg, sender) => |
+// On Chrome <58, the webRequest API doesn't intercept WebSocket connections, |
+// see https://crbug.com/129353. |
+// |
+// Hence we patched the WebSocket object as a workaround. WebSocket connections |
+// detected by this workaround are handled below. |
+if (!("WEBSOCKET" in chrome.webRequest.ResourceType)) |
{ |
- return ext.webRequest.onBeforeRequest._dispatch( |
- new URL(msg.url), |
- "WEBSOCKET", |
- sender.page, |
- sender.frame |
- ).indexOf(false) != -1; |
-}); |
+ port.on("request.websocket", (msg, sender) => |
+ { |
+ return ext.webRequest.onBeforeRequest._dispatch( |
+ new URL(msg.url), |
+ "WEBSOCKET", |
+ sender.page, |
+ sender.frame |
+ ).indexOf(false) != -1; |
+ }); |
+} |