| <!DOCTYPE html><!-- webkit-test-runner [ IntersectionObserverEnabled=true ] --> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script src="../resources/gc.js"></script> |
| <div id="container"></div> |
| function accessToObserverInCallback() { |
| let test = async_test("test: Nodes inside callback should be garbage collected if no one refers to it"); |
| let initialNodesCount = internals.numberOfLiveNodes(document); |
| const iterationCount = 50; |
| for (let j = 0; j < iterationCount; ++j) { |
| const div = document.createElement('div'); |
| container.appendChild(div); |
| let observer = new IntersectionObserver(() => { |
| container.removeChild(div); |
| if (callbackCount == iterationCount) { |
| window.requestAnimationFrame(() => { |
| let additionalNodesCount = internals.numberOfLiveNodes(document) - initialNodesCount; |
| assert_true(additionalNodesCount < iterationCount, 'Nodes inside callback should be collected.'); |
| window.onload = accessToObserverInCallback(); |