| <!DOCTYPE html> |
| <html> |
| <body> |
| <script src="../../resources/js-test.js"></script> |
| <div id="editor" contenteditable></div> |
| <script> |
| |
| description('This tests the existence of the backup element queue. To manually test, press the delete key once the page is loaded.'); |
| |
| var jsTestIsAsync = true; |
| |
| var constructed = false; |
| var disconnected = false; |
| class TestElement extends HTMLElement { |
| constructor() { |
| super(); |
| constructed = true; |
| } |
| disconnectedCallback() { |
| disconnected = true; |
| } |
| } |
| customElements.define('test-element', TestElement); |
| |
| var editor = document.getElementById('editor'); |
| shouldBe('constructed', 'false'); |
| shouldBe('editor.innerHTML = "a<test-element>b</test-element>c"; constructed', 'true'); |
| shouldBe('editor.focus(); getSelection().selectAllChildren(editor); disconnected', 'false'); |
| |
| function checkDisconnectedAtEndOfMictotask() |
| { |
| shouldBe('"Before the end of the micro task"; disconnected', 'false'); |
| Promise.resolve().then(function () { |
| shouldBe('"At the end of the micro task"; disconnected', 'true'); |
| finishJSTest(); |
| }); |
| } |
| |
| if (window.testRunner) { |
| testRunner.execCommand('delete', false, null); |
| checkDisconnectedAtEndOfMictotask(); |
| } else { |
| editor.oninput = function () { |
| checkDisconnectedAtEndOfMictotask(); |
| } |
| } |
| |
| |
| </script> |
| </body> |
| </html> |