| <html> |
| <head> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script src="../../resources/testdriver.js"></script> |
| <script src="../../resources/testdriver-vendor.js"></script> |
| <title>This tests the memory leak issue in CachedTextInputInfo</title> |
| </head> |
| <body> |
| <div class="App" id="app"></div> |
| <span id="app1"> |
| How to repro:<br/> |
| 1. Click on this page before the "Watch me leak!" text disappears.<br/> |
| 2. Once the text disappears, without clicking anywhere else, take a heap snapshot.<br/> |
| </span> |
| <script> |
| promise_test(async () => { |
| document.addEventListener("selectionchange", e => { |
| var app = document.getElementById("app"); |
| var header = document.getElementById("header"); |
| app.removeChild(header); |
| }); |
| var app = document.getElementById("app"); |
| var header = document.createElement("h1"); |
| header.id = "header"; |
| header.innerHTML = "Watch me leak!"; |
| app.appendChild(header); |
| var app1 = document.getElementById("app1"); |
| await test_driver.click(app1); |
| assert_equals(document.activeElement, document.body, 'activeElement'); |
| assert_equals(app.firstChild, null, 'child'); |
| }, 'Removing an element after clicking textnodes shouldn\'t cause memory leaks'); |
| </script> |
| </body> |
| </html> |