tor-browser

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

test_bug557087-2.html (10381B)


      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" style="display:none;">
     16 </div>
     17 <pre id="test">
     18 <script>
     19 
     20 /** Test for Bug 557087 */
     21 
     22 SimpleTest.waitForExplicitFinish();
     23 
     24 var elementsPreventingClick = [ "input", "button", "select", "textarea" ];
     25 var elementsWithClick = [ "option", "optgroup", "output", "label", "object", "fieldset" ];
     26 var gHandled = 0;
     27 
     28 function clickShouldNotHappenHandler(aEvent)
     29 {
     30  aEvent.target.removeEventListener("click", clickShouldNotHappenHandler);
     31  ok(false, "click event should be prevented! (test1)");
     32  if (++gHandled >= elementsWithClick.length) {
     33    test2();
     34  }
     35 }
     36 
     37 function clickShouldNotHappenHandler2(aEvent)
     38 {
     39  aEvent.target.removeEventListener("click", clickShouldNotHappenHandler3);
     40  ok(false, "click event should be prevented! (test2)");
     41  if (++gHandled >= elementsWithClick.length) {
     42    test3();
     43  }
     44 }
     45 
     46 function clickShouldNotHappenHandler5(aEvent)
     47 {
     48  aEvent.target.removeEventListener("click", clickShouldNotHappenHandler5);
     49  ok(false, "click event should be prevented! (test5)");
     50  if (++gHandled >= elementsWithClick.length) {
     51    test6();
     52  }
     53 }
     54 
     55 function clickShouldNotHappenHandler7(aEvent)
     56 {
     57  aEvent.target.removeEventListener("click", clickShouldNotHappenHandler7);
     58  ok(false, "click event should be prevented! (test7)");
     59  if (++gHandled >= elementsWithClick.length) {
     60    test8();
     61  }
     62 }
     63 
     64 function clickShouldHappenHandler(aEvent)
     65 {
     66  aEvent.target.removeEventListener("click", clickShouldHappenHandler);
     67  ok(true, "click event has been correctly received (test1)");
     68  if (++gHandled >= elementsWithClick.length) {
     69    test2();
     70  }
     71 }
     72 
     73 function clickShouldHappenHandler2(aEvent)
     74 {
     75  aEvent.target.removeEventListener("click", clickShouldHappenHandler2);
     76  ok(true, "click event has been correctly received (test2)");
     77  if (++gHandled >= elementsWithClick.length) {
     78    test3();
     79  }
     80 }
     81 
     82 function clickShouldHappenHandler3(aEvent)
     83 {
     84  aEvent.target.removeEventListener("click", clickShouldHappenHandler3);
     85  ok(true, "click event has been correctly received (test3)");
     86  if (++gHandled >= (elementsWithClick.length +
     87                     elementsPreventingClick.length)) {
     88    test4();
     89  }
     90 }
     91 
     92 function clickShouldHappenHandler4(aEvent)
     93 {
     94  aEvent.target.removeEventListener("click", clickShouldHappenHandler4);
     95  ok(true, "click event has been correctly received (test4)");
     96  if (++gHandled >= (elementsWithClick.length +
     97                     elementsPreventingClick.length)) {
     98    test5();
     99  }
    100 }
    101 
    102 function clickShouldHappenHandler5(aEvent)
    103 {
    104  aEvent.target.removeEventListener("click", clickShouldHappenHandler5);
    105  ok(true, "click event has been correctly received (test5)");
    106  if (++gHandled >= elementsWithClick.length) {
    107    test6();
    108  }
    109 }
    110 
    111 function clickShouldHappenHandler6(aEvent)
    112 {
    113  aEvent.target.removeEventListener("click", clickShouldHappenHandler6);
    114  ok(true, "click event has been correctly received (test6)");
    115  if (++gHandled >= (elementsWithClick.length +
    116                     elementsPreventingClick.length)) {
    117    test7();
    118  }
    119 }
    120 
    121 function clickShouldHappenHandler7(aEvent)
    122 {
    123  aEvent.target.removeEventListener("click", clickShouldHappenHandler7);
    124  ok(true, "click event has been correctly received (test5)");
    125  if (++gHandled >= elementsWithClick.length) {
    126    test8();
    127  }
    128 }
    129 
    130 function clickShouldHappenHandler8(aEvent)
    131 {
    132  aEvent.target.removeEventListener("click", clickShouldHappenHandler8);
    133  ok(true, "click event has been correctly received (test8)");
    134  if (++gHandled >= (elementsWithClick.length +
    135                     elementsPreventingClick.length)) {
    136    SimpleTest.finish();
    137  }
    138 }
    139 
    140 var fieldset1 = document.createElement("fieldset");
    141 var fieldset2 = document.createElement("fieldset");
    142 var legendA = document.createElement("legend");
    143 var legendB = document.createElement("legend");
    144 var content  = document.getElementById('content');
    145 fieldset1.disabled = true;
    146 content.appendChild(fieldset1);
    147 fieldset1.appendChild(fieldset2);
    148 
    149 function clean()
    150 {
    151  var count = fieldset2.children.length;
    152  for (var i=0; i<count; ++i) {
    153    if (fieldset2.children[i] != legendA &&
    154        fieldset2.children[i] != legendB) {
    155      fieldset2.removeChild(fieldset2.children[i]);
    156    }
    157  }
    158 }
    159 
    160 function test1()
    161 {
    162  gHandled = 0;
    163 
    164  // Initialize children without click expected.
    165  for (var name of elementsPreventingClick) {
    166    var element = document.createElement(name);
    167    fieldset2.appendChild(element);
    168    element.addEventListener("click", clickShouldNotHappenHandler);
    169    sendMouseEvent({type:'click'}, element);
    170  }
    171 
    172  // Initialize children with click expected.
    173  for (var name of elementsWithClick) {
    174    var element = document.createElement(name);
    175    fieldset2.appendChild(element);
    176    element.addEventListener("click", clickShouldHappenHandler);
    177    sendMouseEvent({type:'click'}, element);
    178  }
    179 }
    180 
    181 function test2()
    182 {
    183  gHandled = 0;
    184  fieldset1.disabled = false;
    185  fieldset2.disabled = true;
    186 
    187  // Initialize children without click expected.
    188  for (var name of elementsPreventingClick) {
    189    var element = document.createElement(name);
    190    fieldset2.appendChild(element);
    191    element.addEventListener("click", clickShouldNotHappenHandler2);
    192    sendMouseEvent({type:'click'}, element);
    193  }
    194 
    195  // Initialize children with click expected.
    196  for (var name of elementsWithClick) {
    197    var element = document.createElement(name);
    198    fieldset2.appendChild(element);
    199    element.addEventListener("click", clickShouldHappenHandler2);
    200    sendMouseEvent({type:'click'}, element);
    201  }
    202 }
    203 
    204 function test3()
    205 {
    206  gHandled = 0;
    207  fieldset1.disabled = false;
    208  fieldset2.disabled = false;
    209 
    210  // All elements should accept the click.
    211  for (var name of elementsPreventingClick) {
    212    var element = document.createElement(name);
    213    fieldset2.appendChild(element);
    214    element.addEventListener("click", clickShouldHappenHandler3);
    215    sendMouseEvent({type:'click'}, element);
    216  }
    217 
    218  // Initialize children with click expected.
    219  for (var name of elementsWithClick) {
    220    var element = document.createElement(name);
    221    fieldset2.appendChild(element);
    222    element.addEventListener("click", clickShouldHappenHandler3);
    223    sendMouseEvent({type:'click'}, element);
    224  }
    225 }
    226 
    227 function test4()
    228 {
    229  gHandled = 0;
    230  fieldset1.disabled = false;
    231  fieldset2.disabled = true;
    232 
    233  fieldset2.appendChild(legendA);
    234 
    235  // All elements should accept the click.
    236  for (var name of elementsPreventingClick) {
    237    var element = document.createElement(name);
    238    legendA.appendChild(element);
    239    element.addEventListener("click", clickShouldHappenHandler4);
    240    sendMouseEvent({type:'click'}, element);
    241  }
    242 
    243  // Initialize children with click expected.
    244  for (var name of elementsWithClick) {
    245    var element = document.createElement(name);
    246    legendA.appendChild(element);
    247    element.addEventListener("click", clickShouldHappenHandler4);
    248    sendMouseEvent({type:'click'}, element);
    249  }
    250 }
    251 
    252 function test5()
    253 {
    254  gHandled = 0;
    255  fieldset2.insertBefore(legendB, legendA);
    256 
    257  // Initialize children without click expected.
    258  for (var name of elementsPreventingClick) {
    259    var element = document.createElement(name);
    260    legendA.appendChild(element);
    261    element.addEventListener("click", clickShouldNotHappenHandler5);
    262    sendMouseEvent({type:'click'}, element);
    263  }
    264 
    265  // Initialize children with click expected.
    266  for (var name of elementsWithClick) {
    267    var element = document.createElement(name);
    268    legendA.appendChild(element);
    269    element.addEventListener("click", clickShouldHappenHandler5);
    270    sendMouseEvent({type:'click'}, element);
    271  }
    272 }
    273 
    274 function test6()
    275 {
    276  gHandled = 0;
    277  fieldset2.removeChild(legendB);
    278  fieldset1.disabled = true;
    279  fieldset2.disabled = false;
    280 
    281  fieldset1.appendChild(legendA);
    282  legendA.appendChild(fieldset2);
    283 
    284  // All elements should accept the click.
    285  for (var name of elementsPreventingClick) {
    286    var element = document.createElement(name);
    287    fieldset2.appendChild(element);
    288    element.addEventListener("click", clickShouldHappenHandler6);
    289    sendMouseEvent({type:'click'}, element);
    290  }
    291 
    292  // Initialize children with click expected.
    293  for (var name of elementsWithClick) {
    294    var element = document.createElement(name);
    295    fieldset2.appendChild(element);
    296    element.addEventListener("click", clickShouldHappenHandler6);
    297    sendMouseEvent({type:'click'}, element);
    298  }
    299 }
    300 
    301 function test7()
    302 {
    303  gHandled = 0;
    304  fieldset1.disabled = true;
    305  fieldset2.disabled = false;
    306 
    307  fieldset1.appendChild(fieldset2);
    308  fieldset2.appendChild(legendA);
    309 
    310  // All elements should accept the click.
    311  for (var name of elementsPreventingClick) {
    312    var element = document.createElement(name);
    313    legendA.appendChild(element);
    314    element.addEventListener("click", clickShouldNotHappenHandler7);
    315    sendMouseEvent({type:'click'}, element);
    316  }
    317 
    318  // Initialize children with click expected.
    319  for (var name of elementsWithClick) {
    320    var element = document.createElement(name);
    321    legendA.appendChild(element);
    322    element.addEventListener("click", clickShouldHappenHandler7);
    323    sendMouseEvent({type:'click'}, element);
    324  }
    325 }
    326 
    327 function test8()
    328 {
    329  gHandled = 0;
    330  fieldset1.disabled = true;
    331  fieldset2.disabled = true;
    332 
    333  fieldset1.appendChild(legendA);
    334  legendA.appendChild(fieldset2);
    335  fieldset2.appendChild(legendB);
    336 
    337  // All elements should accept the click.
    338  for (var name of elementsPreventingClick) {
    339    var element = document.createElement(name);
    340    legendB.appendChild(element);
    341    element.addEventListener("click", clickShouldHappenHandler8);
    342    sendMouseEvent({type:'click'}, element);
    343  }
    344 
    345  // Initialize children with click expected.
    346  for (var name of elementsWithClick) {
    347    var element = document.createElement(name);
    348    legendB.appendChild(element);
    349    element.addEventListener("click", clickShouldHappenHandler8);
    350    sendMouseEvent({type:'click'}, element);
    351  }
    352 }
    353 
    354 SpecialPowers.pushPrefEnv({
    355  set: [["dom.forms.fieldset_disable_only_descendants.enabled", true]]
    356 }).then(() => {
    357  test1();
    358 })
    359 
    360 </script>
    361 </pre>
    362 </body>
    363 </html>