test_bug605124-2.html (3185B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=605124 5 --> 6 <head> 7 <title>Test for Bug 605124</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=605124">Mozilla Bug 605124</a> 14 <p id="display"></p> 15 <div id="content"> 16 <input required> 17 <textarea required></textarea> 18 <select required> 19 <option value="">foo</option> 20 <option>bar</option> 21 </select> 22 <select multiple required> 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 605124 */ 31 32 function checkPseudoClass(aElement, aExpected) 33 { 34 is(aElement.matches(":-moz-ui-invalid"), aExpected, 35 "matches(':-moz-ui-invalid') should return " + aExpected + " for " + aElement); 36 } 37 38 function checkElement(aElement) 39 { 40 checkPseudoClass(aElement, false); 41 42 // Focusing while :-moz-ui-invalid 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 :-moz-ui-invalid 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, false); 67 synthesizeKey("KEY_Backspace"); 68 checkPseudoClass(aElement, true); 69 // with .value 70 aElement.value = 'f'; 71 checkPseudoClass(aElement, false); 72 aElement.value = ''; 73 checkPseudoClass(aElement, true); 74 } 75 76 function checkSelectElement(aElement) 77 { 78 checkPseudoClass(aElement, false); 79 80 // Focusing while :-moz-ui-invalid doesn't apply, 81 // the pseudo-class should not apply while changing selection. 82 aElement.focus(); 83 checkPseudoClass(aElement, false); 84 85 aElement.selectedIndex = 1; 86 checkPseudoClass(aElement, false); 87 aElement.selectedIndex = 0; 88 checkPseudoClass(aElement, false); 89 90 aElement.blur(); 91 checkPseudoClass(aElement, false); 92 93 // Focusing while :-moz-ui-invalid applies, 94 // the pseudo-class should apply while changing selection if appropriate. 95 aElement.focus(); 96 checkPseudoClass(aElement, false); 97 98 aElement.selectedIndex = 1; 99 checkPseudoClass(aElement, false); 100 aElement.selectedIndex = 0; 101 checkPseudoClass(aElement, false); 102 aElement.selectedIndex = 1; 103 checkPseudoClass(aElement, false); 104 105 aElement.blur(); 106 checkPseudoClass(aElement, false); 107 } 108 109 checkElement(document.getElementsByTagName('input')[0]); 110 checkElement(document.getElementsByTagName('textarea')[0]); 111 checkSelectElement(document.getElementsByTagName('select')[0]); 112 checkSelectElement(document.getElementsByTagName('select')[1]); 113 114 </script> 115 </pre> 116 </body> 117 </html>