| <!DOCTYPE html> |
| |
| <script src="../../../resources/js-test-pre.js"></script> |
| |
| <script> |
| description('MutationObserver wrappers should survive GC for passing into the callback even if JS has lost references and the only remaining observations are transient.'); |
| |
| jsTestIsAsync = true; |
| |
| function addObserver(node, fn) { |
| var observer = new MutationObserver(fn); |
| observer.testProperty = true; |
| observer.observe(node, {attributes:true, subtree: true}); |
| } |
| |
| onload = function() { |
| var root = document.createElement('div'); |
| var child = root.appendChild(document.createElement('span')); |
| addObserver(root, function(records, observer) { |
| window.observer = observer; |
| shouldBe('observer.testProperty', 'true'); |
| finishJSTest(); |
| }); |
| |
| root.removeChild(child); |
| child.setAttribute('foo', 'bar'); |
| root = null; |
| |
| gc(); |
| }; |
| </script> |
| |
| <script src="../../../resources/js-test-post.js"></script> |