test_bug557087-1.html (3684B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=557087 5 --> 6 <head> 7 <title>Test for Bug 557087</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=557087">Mozilla Bug 557087</a> 14 <p id="display"></p> 15 <div id="content"> 16 </div> 17 <pre id="test"> 18 <script> 19 20 /** Test for Bug 557087 */ 21 22 function checkDisabledAttribute(aFieldset) 23 { 24 ok('disabled' in aFieldset, 25 "fieldset elements should have the disabled attribute"); 26 27 ok(!aFieldset.disabled, 28 "fieldset elements disabled attribute should be disabled"); 29 is(aFieldset.getAttribute('disabled'), null, 30 "fieldset elements disabled attribute should be disabled"); 31 32 aFieldset.disabled = true; 33 ok(aFieldset.disabled, 34 "fieldset elements disabled attribute should be enabled"); 35 isnot(aFieldset.getAttribute('disabled'), null, 36 "fieldset elements disabled attribute should be enabled"); 37 38 aFieldset.removeAttribute('disabled'); 39 aFieldset.setAttribute('disabled', ''); 40 ok(aFieldset.disabled, 41 "fieldset elements disabled attribute should be enabled"); 42 isnot(aFieldset.getAttribute('disabled'), null, 43 "fieldset elements disabled attribute should be enabled"); 44 45 aFieldset.removeAttribute('disabled'); 46 ok(!aFieldset.disabled, 47 "fieldset elements disabled attribute should be disabled"); 48 is(aFieldset.getAttribute('disabled'), null, 49 "fieldset elements disabled attribute should be disabled"); 50 } 51 52 function checkDisabledPseudoClass(aFieldset) 53 { 54 is(document.querySelector(":disabled"), null, 55 "no elements should have :disabled applied to them"); 56 57 aFieldset.disabled = true; 58 is(document.querySelector(":disabled"), aFieldset, 59 ":disabled should apply to fieldset elements"); 60 61 aFieldset.disabled = false; 62 is(document.querySelector(":disabled"), null, 63 "no elements should have :disabled applied to them"); 64 } 65 66 function checkEnabledPseudoClass(aFieldset) 67 { 68 is(document.querySelector(":enabled"), aFieldset, 69 ":enabled should apply to fieldset elements"); 70 71 aFieldset.disabled = true; 72 is(document.querySelector(":enabled"), null, 73 "no elements should have :enabled applied to them"); 74 75 aFieldset.disabled = false; 76 is(document.querySelector(":enabled"), aFieldset, 77 ":enabled should apply to fieldset elements"); 78 } 79 80 function checkFocus(aFieldset) 81 { 82 aFieldset.disabled = true; 83 aFieldset.setAttribute('tabindex', 1); 84 85 aFieldset.focus(); 86 87 isnot(document.activeElement, aFieldset, 88 "fieldset can't be focused when disabled"); 89 aFieldset.removeAttribute('tabindex'); 90 aFieldset.disabled = false; 91 } 92 93 function checkClickEvent(aFieldset) 94 { 95 var clickHandled = false; 96 97 aFieldset.disabled = true; 98 99 aFieldset.addEventListener("click", function(aEvent) { 100 clickHandled = true; 101 }, {once: true}); 102 103 sendMouseEvent({type:'click'}, aFieldset); 104 SimpleTest.executeSoon(function() { 105 ok(clickHandled, "When disabled, fieldset should not prevent click events"); 106 SimpleTest.finish(); 107 }); 108 } 109 110 SimpleTest.waitForExplicitFinish(); 111 112 SpecialPowers.pushPrefEnv({ 113 set: [["dom.forms.fieldset_disable_only_descendants.enabled", true]] 114 }).then(() => { 115 var fieldset = document.createElement("fieldset"); 116 var content = document.getElementById('content'); 117 content.appendChild(fieldset); 118 119 checkDisabledAttribute(fieldset); 120 checkDisabledPseudoClass(fieldset); 121 checkEnabledPseudoClass(fieldset); 122 checkFocus(fieldset); 123 checkClickEvent(fieldset); 124 }); 125 126 </script> 127 </pre> 128 </body> 129 </html>