Index: lib/requestBlocker.js |
=================================================================== |
--- a/lib/requestBlocker.js |
+++ b/lib/requestBlocker.js |
@@ -147,17 +147,24 @@ |
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) => |
+// Before Chrome 58, the webRequest API didn'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; |
+ }); |
+} |