| <!DOCTYPE html> |
| <html> |
| <body> |
| <script src="../../resources/js-test.js"></script> |
| <script> |
| |
| description('This tests that the property added on window.customElements persist after a lot of memory allocation'); |
| |
| for (let i = 0; i < 10; i++) { |
| // Using iframe makes this test more reliable. |
| const iframe = document.createElement('iframe'); |
| document.body.appendChild(iframe); |
| iframe.contentWindow.eval(` |
| window.customElements.someProperty = 'storedValue'; |
| const a = []; |
| if (window.GCController) |
| GCController.collect(); |
| else { |
| for (let i = 0; i < 1000000; i++) |
| a.push({}); |
| } |
| top.check(window.customElements.someProperty);`); |
| iframe.remove(); |
| } |
| |
| function check(value) { |
| if (value == 'storedValue') |
| testPassed('The property was present - the JS wrapper of customElements was not collected'); |
| else |
| testFailed('The property was not present - the JS wrapper of customElements was erroneously collected'); |
| } |
| |
| </script> |
| </body> |
| </html> |