| <!DOCTYPE html> | |
| <meta charset="utf-8"> | |
| <title>Check for crashes when a whenDefined promise resolving re-entries</title> | |
| <meta name="author" href="mailto:xiaochengh@chromium.org"> | |
| <link rel="help" href="https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements-api"> | |
| <link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1366813"> | |
| <script> | |
| class CustomElement extends HTMLElement {} | |
| Object.prototype.__defineGetter__("then", main); | |
| let depth = 0; | |
| function main() { | |
| if (depth > 1) return; | |
| ++depth; | |
| customElements.whenDefined("custom-a"); // Causes re-entry of main() | |
| try { customElements.define("custom-a", CustomElement) } catch (e) {} | |
| customElements.whenDefined("custom-b"); | |
| --depth; | |
| } | |
| main(); | |
| </script> | |
| Test passes if it does not crash. |