| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <title>Test selectionchange events bubbling from text controls</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| |
| <input id="input" width="200" value="foo"><br> |
| <textarea id="textarea" width="200">foo</textarea> |
| |
| <script> |
| function untilEvent(element, eventName) { |
| return new Promise(resolve => { |
| element.addEventListener(eventName, resolve, { once: true }); |
| }); |
| } |
| |
| for (const element of [input, textarea]) { |
| const name = element.localName; |
| for (const focus of [false, true]) { |
| let focused = focus ? " when focused" : ""; |
| let offset = focus ? 2 : 1; |
| promise_test(async () => { |
| if (focus) { |
| element.focus(); |
| } |
| |
| element.setSelectionRange(offset, offset); |
| const ev = await untilEvent(element, "selectionchange"); |
| assert_equals(ev.bubbles, true); |
| }, `selectionchange bubbles from ${name}${focused}`); |
| } |
| } |
| </script> |