test_bug605124-1.html (2629B)
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 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> 10 </head> 11 <body> 12 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=605124">Mozilla Bug 605124</a> 13 <p id="display"></p> 14 <div id="content"> 15 <form> 16 <textarea required></textarea> 17 <input required> 18 <select required></select> 19 <button type='submit'></button> 20 </form> 21 22 <table> 23 <form> 24 <tr> 25 <textarea required></textarea> 26 <input required> 27 <select required></select> 28 <button type='submit'></button> 29 </tr> 30 </form> 31 </table> 32 </div> 33 <pre id="test"> 34 <script type="application/javascript"> 35 36 /** Test for Bug 605124 */ 37 38 function checkPseudoClass(aElement, aExpected) 39 { 40 is(aElement.matches(":user-invalid"), aExpected, 41 "matches(':user-invalid') should return " + aExpected + " for " + aElement); 42 } 43 44 var content = document.getElementById('content'); 45 var textarea = document.getElementsByTagName('textarea')[0]; 46 var input = document.getElementsByTagName('input')[0]; 47 var select = document.getElementsByTagName('select')[0]; 48 var button = document.getElementsByTagName('button')[0]; 49 var form = document.forms[0]; 50 51 checkPseudoClass(textarea, false); 52 checkPseudoClass(input, false); 53 checkPseudoClass(select, false); 54 55 // Try to submit. 56 button.click(); 57 checkPseudoClass(textarea, true); 58 checkPseudoClass(input, true); 59 checkPseudoClass(select, true); 60 61 // No longer in the form. 62 content.appendChild(textarea); 63 content.appendChild(input); 64 content.appendChild(select); 65 checkPseudoClass(textarea, true); 66 checkPseudoClass(input, true); 67 checkPseudoClass(select, true); 68 69 // Back in the form. 70 form.appendChild(textarea); 71 form.appendChild(input); 72 form.appendChild(select); 73 checkPseudoClass(textarea, true); 74 checkPseudoClass(input, true); 75 checkPseudoClass(select, true); 76 77 /* Case when elements get orphaned. */ 78 var textarea = document.getElementsByTagName('textarea')[1]; 79 var input = document.getElementsByTagName('input')[1]; 80 var select = document.getElementsByTagName('select')[1]; 81 var button = document.getElementsByTagName('button')[1]; 82 var form = document.forms[1]; 83 84 // Try to submit. 85 button.click(); 86 checkPseudoClass(textarea, true); 87 checkPseudoClass(input, true); 88 checkPseudoClass(select, true); 89 90 // Remove the form. 91 document.getElementsByTagName('table')[0].removeChild(form); 92 checkPseudoClass(textarea, true); 93 checkPseudoClass(input, true); 94 checkPseudoClass(select, true); 95 </script> 96 </pre> 97 </body> 98 </html>