selectionchange-bubble.html (1021B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 <title>Test selectionchange events bubbling from text controls</title> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 7 <input id="input" width="200" value="foo"><br> 8 <textarea id="textarea" width="200">foo</textarea> 9 10 <script> 11 function untilEvent(element, eventName) { 12 return new Promise(resolve => { 13 element.addEventListener(eventName, resolve, { once: true }); 14 }); 15 } 16 17 for (const element of [input, textarea]) { 18 const name = element.localName; 19 for (const focus of [false, true]) { 20 let focused = focus ? " when focused" : ""; 21 let offset = focus ? 2 : 1; 22 promise_test(async () => { 23 if (focus) { 24 element.focus(); 25 } 26 27 element.setSelectionRange(offset, offset); 28 const ev = await untilEvent(element, "selectionchange"); 29 assert_equals(ev.bubbles, true); 30 }, `selectionchange bubbles from ${name}${focused}`); 31 } 32 } 33 </script>