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:
parent
2c4362b4f6
commit
0eb0efa79c
@ -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);
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user