| <html> |
| <import src="../resources/chai.sky" /> |
| <import src="../resources/mocha.sky" /> |
| <script> |
| describe('MutationObserver wrappers', function() { |
| it('should survive GC for passing into the callback even if JS has lost references and the only remaining observations are transient.', function(done) { |
| function addObserver(node, fn) { |
| var observer = new MutationObserver(fn); |
| observer.testProperty = true; |
| observer.observe(node, {attributes:true, subtree: true}); |
| } |
| |
| var root = document.createElement('div'); |
| var child = root.appendChild(document.createElement('span')); |
| addObserver(root, function(records, observer) { |
| window.observer = observer; |
| assert.ok(observer.testProperty); |
| done(); |
| }); |
| |
| root.removeChild(child); |
| child.setAttribute('foo', 'bar'); |
| root = null; |
| |
| gc(); |
| }); |
| }); |
| </script> |
| </html> |