enqueue the entire MuObs handler instead.

This commit is contained in:
Paul Irish
2018-03-19 10:31:53 -07:00
committed by Ilya Grigorik
parent 8e199cd975
commit b31d53a4d0

View File

@@ -286,29 +286,22 @@ chrome.runtime.sendMessage({}, function(response) {
}
}
// Process the DOM nodes lazily
function enqueueCheckNodes(node, parent, added) {
const checkNodes = _ => checkForVideo(node, parent, added);
if ('requestIdleCallback' in window) {
requestIdleCallback(checkNodes, {timeout: 1000});
} else {
checkNodes();
}
}
var observer = new MutationObserver(function(mutations) {
// Process the DOM nodes lazily
requestIdleCallback(_ => {
mutations.forEach(function(mutation) {
forEach.call(mutation.addedNodes, function(node) {
if (typeof node === "function")
return;
enqueueCheckNodes(node, node.parentNode || mutation.target, true);
checkForVideo(node, node.parentNode || mutation.target, true);
});
forEach.call(mutation.removedNodes, function(node) {
if (typeof node === "function")
return;
enqueueCheckNodes(node, node.parentNode || mutation.target, false);
checkForVideo(node, node.parentNode || mutation.target, false);
});
});
}, {timeout: 1000});
});
observer.observe(document, { childList: true, subtree: true });