1
0
mirror of https://github.com/gorhill/uBlock.git synced 2024-10-06 09:37:12 +02:00

wontfix #1330, still code reviewed while at it

This commit is contained in:
gorhill 2016-02-03 19:15:28 -05:00
parent 2c4362b4f6
commit 0eb0efa79c

View File

@ -73,11 +73,10 @@ var uBlockCollapser = (function() {
var timer = null; var timer = null;
var requestId = 1; var requestId = 1;
var newRequests = []; var newRequests = [];
var pendingRequests = {}; var pendingRequests = Object.create(null);
var pendingRequestCount = 0; var pendingRequestCount = 0;
var src1stProps = { var src1stProps = {
'embed': 'src', 'embed': 'src',
'iframe': 'src',
'img': 'src', 'img': 'src',
'object': 'data' 'object': 'data'
}; };
@ -119,10 +118,10 @@ var uBlockCollapser = (function() {
var request, entry, target, value; var request, entry, target, value;
while ( i-- ) { while ( i-- ) {
request = requests[i]; request = requests[i];
if ( pendingRequests.hasOwnProperty(request.id) === false ) { entry = pendingRequests[request.id];
if ( entry === undefined ) {
continue; continue;
} }
entry = pendingRequests[request.id];
delete pendingRequests[request.id]; delete pendingRequests[request.id];
pendingRequestCount -= 1; pendingRequestCount -= 1;
@ -154,7 +153,7 @@ var uBlockCollapser = (function() {
// Renew map: I believe that even if all properties are deleted, an // Renew map: I believe that even if all properties are deleted, an
// object will still use more memory than a brand new one. // object will still use more memory than a brand new one.
if ( pendingRequestCount === 0 ) { if ( pendingRequestCount === 0 ) {
pendingRequests = {}; pendingRequests = Object.create(null);
} }
}; };
@ -210,6 +209,13 @@ var uBlockCollapser = (function() {
newRequests.push(new BouncingRequest(req.id, tagName, src)); newRequests.push(new BouncingRequest(req.id, tagName, src));
}; };
var addMany = function(targets) {
var i = targets.length;
while ( i-- ) {
add(targets[i]);
}
};
var iframeSourceModified = function(mutations) { var iframeSourceModified = function(mutations) {
var i = mutations.length; var i = mutations.length;
while ( i-- ) { while ( i-- ) {
@ -254,21 +260,26 @@ var uBlockCollapser = (function() {
newRequests.push(new BouncingRequest(req.id, 'iframe', src)); newRequests.push(new BouncingRequest(req.id, 'iframe', src));
}; };
var iframesFromNode = function(node) { var addIFrames = function(iframes) {
if ( node.localName === 'iframe' ) {
addIFrame(node);
}
var iframes = node.getElementsByTagName('iframe');
var i = iframes.length; var i = iframes.length;
while ( i-- ) { while ( i-- ) {
addIFrame(iframes[i]); addIFrame(iframes[i]);
} }
};
var iframesFromNode = function(node) {
if ( node.localName === 'iframe' ) {
addIFrame(node);
}
addIFrames(node.getElementsByTagName('iframe'));
process(); process();
}; };
return { return {
add: add, add: add,
addMany: addMany,
addIFrame: addIFrame, addIFrame: addIFrame,
addIFrames: addIFrames,
iframesFromNode: iframesFromNode, iframesFromNode: iframesFromNode,
process: process process: process
}; };
@ -925,35 +936,17 @@ var uBlockCollapser = (function() {
(function() { (function() {
var collapser = uBlockCollapser; var collapser = uBlockCollapser;
var elems, i, elem; var elems = document.getElementsByTagName('img'),
i = elems.length, elem;
elems = document.getElementsByTagName('embed');
i = elems.length;
while ( i-- ) {
collapser.add(elems[i]);
}
elems = document.getElementsByTagName('object');
i = elems.length;
while ( i-- ) {
collapser.add(elems[i]);
}
elems = document.getElementsByTagName('img');
i = elems.length;
while ( i-- ) { while ( i-- ) {
elem = elems[i]; elem = elems[i];
if ( elem.complete ) { if ( elem.complete ) {
collapser.add(elem); collapser.add(elem);
} }
} }
collapser.addMany(document.getElementsByTagName('embed'));
elems = document.getElementsByTagName('iframe'); collapser.addMany(document.getElementsByTagName('object'));
i = elems.length; collapser.addIFrames(document.getElementsByTagName('iframe'));
while ( i-- ) {
collapser.addIFrame(elems[i]);
}
collapser.process(0); collapser.process(0);
})(); })();