Safari: block programmatic image requests, more thorough XHR

Currently, this is done the same way we block XMLHttpRequests: mess
with the constructor. This was done in the most efficient way I
could think of (overhead is relatively minimal). This also
injects uBlock's blocking interceptor earlier, thusly covering
more requests that may have slipped through before.
This commit is contained in:
Chris 2015-02-22 21:59:21 -07:00
parent 37aaeca8aa
commit 0ea7920c20

View file

@ -188,6 +188,9 @@
return !(safari.self.tab.canLoad(beforeLoadEvent, details));
};
var onBeforeLoad = function(e) {
if(firstMutation !== false) {
firstMutation();
}
linkHelper.href = e.url;
if(linkHelper.protocol.charCodeAt(0) !== 104) { // h = 104
return;
@ -232,7 +235,20 @@ return e.detail.url === false;\
},\
wo = open,\
xo = XMLHttpRequest.prototype.open,\
img = Image;\
_noOP = function(){};\
Image = function() {\
var x = new img();\
Object.defineProperty(x, 'src', {\
get: function() {\
return x.getAttribute('src');\
},\
set: function(val) {\
x.setAttribute('src', block(val, 'image') ? 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=' : val);\
}\
});\
return x;\
};\
open = function(u) {\
return block(u, 'popup') ? null : wo.apply(this, arguments);\
};\