tor-browser

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

test_bug605125-2.html (4082B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=605125
      5 -->
      6 <head>
      7  <title>Test for Bug 605125</title>
      8  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      9  <script src="/tests/SimpleTest/EventUtils.js"></script>
     10  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
     11 </head>
     12 <body>
     13 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=605125">Mozilla Bug 605125</a>
     14 <p id="display"></p>
     15 <div id="content">
     16  <input>
     17  <textarea></textarea>
     18  <select>
     19    <option value="">foo</option>
     20    <option>bar</option>
     21  </select>
     22  <select multiple>
     23    <option value="">foo</option>
     24    <option>bar</option>
     25  </select>
     26 </div>
     27 <pre id="test">
     28 <script type="application/javascript">
     29 
     30 /** Test for Bug 605125 */
     31 
     32 function checkPseudoClass(aElement, aExpected)
     33 {
     34  is(aElement.matches(":user-valid"), aExpected,
     35     "matches(':user-valid') should return " + aExpected + " for " + aElement.outerHTML);
     36 }
     37 
     38 function checkElement(aElement)
     39 {
     40  checkPseudoClass(aElement, false);
     41 
     42  // Focusing while :user-valid doesn't apply,
     43  // the pseudo-class should not apply while typing.
     44  aElement.focus();
     45  checkPseudoClass(aElement, false);
     46  // with keys
     47  sendString("f");
     48  checkPseudoClass(aElement, false);
     49  synthesizeKey("KEY_Backspace");
     50  checkPseudoClass(aElement, false);
     51  // with .value
     52  aElement.value = 'f';
     53  checkPseudoClass(aElement, false);
     54  aElement.value = '';
     55  checkPseudoClass(aElement, false);
     56 
     57  aElement.blur();
     58  checkPseudoClass(aElement, true);
     59 
     60  // Focusing while :user-valid applies,
     61  // the pseudo-class should apply while typing if appropriate.
     62  aElement.focus();
     63  checkPseudoClass(aElement, true);
     64  // with keys
     65  sendString("f");
     66  checkPseudoClass(aElement, true);
     67  synthesizeKey("KEY_Backspace");
     68  checkPseudoClass(aElement, true);
     69  // with .value
     70  aElement.value = 'f';
     71  checkPseudoClass(aElement, true);
     72  aElement.value = '';
     73  checkPseudoClass(aElement, true);
     74 
     75  aElement.blur();
     76  aElement.required = true;
     77  checkPseudoClass(aElement, false);
     78 
     79  // Focusing while :user-invalid applies,
     80  // the pseudo-class should apply while typing if appropriate.
     81  aElement.focus();
     82  checkPseudoClass(aElement, false);
     83  // with keys
     84  sendString("f");
     85  checkPseudoClass(aElement, true);
     86  synthesizeKey("KEY_Backspace");
     87  checkPseudoClass(aElement, false);
     88  // with .value
     89  aElement.value = 'f';
     90  checkPseudoClass(aElement, true);
     91  aElement.value = '';
     92  checkPseudoClass(aElement, false);
     93 }
     94 
     95 function checkSelectElement(aElement)
     96 {
     97  checkPseudoClass(aElement, false);
     98 
     99  if (!aElement.multiple && navigator.platform.startsWith("Mac")) {
    100    // Arrow key on macOS opens the popup.
    101    return;
    102  }
    103 
    104  // Focusing while :user-valid doesn't apply,
    105  // the pseudo-class should not apply while changing selection.
    106  aElement.focus();
    107  checkPseudoClass(aElement, false);
    108 
    109  synthesizeKey("KEY_ArrowDown");
    110  checkPseudoClass(aElement, true);
    111 
    112  // Focusing while :user-valid applies,
    113  // the pseudo-class should apply while changing selection if appropriate.
    114  aElement.focus();
    115  checkPseudoClass(aElement, true);
    116 
    117  aElement.selectedIndex = 1;
    118  checkPseudoClass(aElement, true);
    119  aElement.selectedIndex = 0;
    120  checkPseudoClass(aElement, true);
    121 
    122  aElement.blur();
    123  aElement.required = true;
    124  // select set with multiple is only invalid if no option is selected
    125  if (aElement.multiple) {
    126    aElement.selectedIndex = -1;
    127  }
    128  checkPseudoClass(aElement, false);
    129 
    130  // Focusing while :user-invalid applies,
    131  // the pseudo-class should apply while changing selection if appropriate.
    132  aElement.focus();
    133  checkPseudoClass(aElement, false);
    134 
    135  synthesizeKey("KEY_ArrowDown");
    136  checkPseudoClass(aElement, true);
    137  aElement.selectedIndex = 0;
    138  checkPseudoClass(aElement, aElement.multiple);
    139 }
    140 
    141 checkElement(document.getElementsByTagName('input')[0]);
    142 checkElement(document.getElementsByTagName('textarea')[0]);
    143 checkSelectElement(document.getElementsByTagName('select')[0]);
    144 checkSelectElement(document.getElementsByTagName('select')[1]);
    145 
    146 </script>
    147 </pre>
    148 </body>
    149 </html>