tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>