test_bug1673434.html (2306B)
1 <!DOCTYPE html> 2 <html> 3 <!-- 4 bugzilla.mozilla.org/show_bug.cgi?id=1673434 5 --> 6 <head> 7 <title>Test for bug 1673434</title> 8 <script src="/tests/SimpleTest/SimpleTest.js"></script> 9 <script src="/tests/SimpleTest/EventUtils.js"></script> 10 <link rel="stylesheet" href="/tests/SimpleTest/test.css"/> 11 </head> 12 <body> 13 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1673434">Mozilla Bug 1673434</a> 14 <p id="display"></p> 15 <div id="content" style="display: none"> 16 </div> 17 <pre id="test"> 18 <input type="checkbox"> 19 <input type="radio" name="group" value="foo"> 20 <input type="radio" name="group" value="bar" checked> 21 <input type="text"> 22 <script> 23 const utils = SpecialPowers.DOMWindowUtils; 24 25 function test_events(element, resolve) { 26 element.addEventListener("input", () => { 27 is(utils.isHandlingUserInput, false, 28 "isHandlingUserInput is false on input event by element.click()"); 29 }, { once: true }); 30 element.addEventListener("change", () => { 31 is(utils.isHandlingUserInput, false, 32 "isHandlingUserInput is false on change event by element.click()"); 33 resolve(); 34 }, { once: true }); 35 36 element.click(); 37 } 38 39 add_task(function testCheckboxEvent() { 40 return new Promise(resolve => { 41 let element = document.querySelector("input[type=checkbox]"); 42 test_events(element, resolve); 43 }); 44 }); 45 46 add_task(function testRadioEvent() { 47 return new Promise(resolve => { 48 let element = document.querySelector("input[type=radio]"); 49 test_events(element, resolve); 50 }); 51 }); 52 53 add_task(function testUserInput() { 54 // setUserInput should be handled as user input. 55 // 56 // XXX <textarea> won't fire input event by setUserInput. 57 return new Promise(resolve => { 58 let element = document.querySelector("input[type=text]"); 59 element.addEventListener("input", () => { 60 is(utils.isHandlingUserInput, true, 61 "isHandlingUserInput is true on input event by setUserInput"); 62 }, { once: true }); 63 element.addEventListener("change", () => { 64 is(utils.isHandlingUserInput, true, 65 "isHandlingUserInput is true on change event by setUserInput"); 66 resolve(); 67 }, { once: true }); 68 69 SpecialPowers.wrap(element).setUserInput("a"); 70 }); 71 }); 72 </script> 73 </pre> 74 </body> 75 </html>