| <!DOCTYPE html><!-- webkit-test-runner [ ResizeObserverEnabled=true ] --> |
| <html> |
| <body> |
| <pre id="log">This tests observing an element with an ResizeObserver and removing the element from the document. |
| The element should become eligible for GC at some point. |
| |
| </pre> |
| <script src="../resources/gc.js"></script> |
| <script> |
| |
| let initialNodeCount; |
| function runTest() |
| { |
| if (!window.testRunner || !window.internals) { |
| log.textContent += 'FAIL - This test requires internals'; |
| return; |
| } |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| |
| initialNodeCount = internals.referencingNodeCount(document); |
| |
| const resizeObserverCount = 100; |
| for (let i = 0; i < resizeObserverCount; ++i) |
| createResizeObserver(); |
| |
| requestAnimationFrame(() => { |
| gc(); |
| setTimeout(() => { |
| gc(); |
| log.textContent += internals.referencingNodeCount(document) < initialNodeCount + resizeObserverCount * 0.95 ? 'PASS' : 'FAIL - Less than 20% of nodes were collected.' |
| testRunner.notifyDone(); |
| }, 0); |
| }); |
| } |
| |
| function createResizeObserver() |
| { |
| const element = document.createElement('div'); |
| const resizeObserver = new ResizeObserver(() => { }).observe(element); |
| } |
| |
| onload = runTest; |
| |
| </script> |
| </body> |
| </html> |