@@ -1028,28 +1028,33 @@ vAPI.net.registerListeners = function() {
1028
1028
onBeforeRequestClient = onBeforeRequest . callback ,
1029
1029
onHeadersReceivedClient = vAPI . net . onHeadersReceived . callback ;
1030
1030
1031
+ // https://github.com/el1t/uBlock-Safari/issues/32
1032
+ // Ignore websocket/webworker directives
1033
+ var shouldBlockResponseHeader = / s c r i p t - s r c / ;
1034
+
1031
1035
var onBeforeRequestAdapter = function ( e ) {
1032
1036
if ( e . name !== 'canLoad' ) {
1033
1037
return ;
1034
1038
}
1035
1039
e . stopPropagation && e . stopPropagation ( ) ;
1036
- if ( e . message . type === 'main_frame' ) {
1037
- vAPI . tabs . onNavigation ( {
1038
- url : e . message . url ,
1039
- frameId : 0 ,
1040
- tabId : vAPI . tabs . getTabId ( e . target ) . toString ( )
1041
- } ) ;
1042
- e . message . hostname = µb . URI . hostnameFromURI ( e . message . url ) ;
1043
- e . message . tabId = vAPI . tabs . getTabId ( e . target ) ;
1044
- e . message . responseHeaders = [ ] ;
1045
- onBeforeRequestClient ( e . message ) ;
1046
- var blockVerdict = onHeadersReceivedClient ( e . message ) ;
1047
- e . message = {
1048
- shouldBlock : blockVerdict && blockVerdict . responseHeaders
1049
- } ;
1050
- return ;
1051
- }
1052
1040
switch ( e . message . type ) {
1041
+ case 'main_frame' :
1042
+ vAPI . tabs . onNavigation ( {
1043
+ url : e . message . url ,
1044
+ frameId : 0 ,
1045
+ tabId : vAPI . tabs . getTabId ( e . target ) . toString ( )
1046
+ } ) ;
1047
+ e . message . hostname = µb . URI . hostnameFromURI ( e . message . url ) ;
1048
+ e . message . tabId = vAPI . tabs . getTabId ( e . target ) ;
1049
+ e . message . responseHeaders = [ ] ;
1050
+ onBeforeRequestClient ( e . message ) ;
1051
+ var blockVerdict = onHeadersReceivedClient ( e . message ) ;
1052
+ blockVerdict = blockVerdict && blockVerdict . responseHeaders && blockVerdict . responseHeaders [ 0 ] &&
1053
+ shouldBlockResponseHeader . test ( blockVerdict . responseHeaders [ 0 ] . value ) ;
1054
+ e . message = {
1055
+ shouldBlock : blockVerdict === true
1056
+ } ;
1057
+ return ;
1053
1058
case 'popup' :
1054
1059
var openerTabId = vAPI . tabs . getTabId ( e . target ) . toString ( ) ;
1055
1060
var shouldBlock = ! ! vAPI . tabs . onPopupUpdated ( 'preempt' , openerTabId , e . message . url ) ;
0 commit comments