tor-browser

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

event-handler-removal.window.js (4586B)


      1 let firstEventHandler;
      2 
      3 test(t => {
      4  var i = 0;
      5  firstEventHandler = t.unreached_func('First event handler.');
      6  var uncalled = "firstEventHandler();";
      7  var button = document.createElement('button');
      8  button.addEventListener('click', t.step_func(() => { assert_equals(++i, 1) }), false);
      9  button.setAttribute('onclick', uncalled);                             // event handler is activated here
     10  button.addEventListener('click', t.step_func(() => { assert_equals(++i, 2) }), false);
     11  button.onclick = null;                                                // but de-activated here
     12  button.addEventListener('click', t.step_func(() => { assert_equals(++i, 3) }), false);
     13  button.onclick = t.step_func(() => { assert_equals(++i, 4); });       // and re-activated here
     14  button.addEventListener('click', t.step_func(() => { assert_equals(++i, 5) }), false);
     15  button.click()
     16  assert_equals(button.getAttribute("onclick"), uncalled)
     17  assert_equals(i, 5);
     18 }, "Event handler set through content attribute should be removed when they are set to null.");
     19 
     20 let happened = 0;
     21 test(() => {
     22  var script = "happened++;";
     23  var button = document.createElement('button');
     24  button.setAttribute('onclick', script);                               // event handler is activated here
     25  button.onclick = null;                                                // but de-activated here
     26  assert_equals(button.getAttribute("onclick"), script)
     27  button.setAttribute('onclick', script);                               // and re-activated here
     28  button.click()
     29  assert_equals(happened, 1);
     30 }, "Event handler set through content attribute should be re-activated even if content is the same.");
     31 
     32 test(t => {
     33  var i = 0;
     34  firstEventHandler = t.unreached_func('First event handler.');
     35  var uncalled = "firstEventHandler();";
     36  var button = document.createElement('button');
     37  button.addEventListener('click', t.step_func(() => { assert_equals(++i, 1) }), false);
     38  button.setAttribute('onclick', uncalled);                             // event handler is activated here
     39  button.addEventListener('click', t.step_func(() => { assert_equals(++i, 2) }), false);
     40  button.removeAttribute('onclick');                                    // but de-activated here
     41  button.addEventListener('click', t.step_func(() => { assert_equals(++i, 3) }), false);
     42  button.onclick = t.step_func(() => { assert_equals(++i, 4); });       // and re-activated here
     43  button.addEventListener('click', t.step_func(() => { assert_equals(++i, 5) }), false);
     44  button.click()
     45  assert_equals(i, 5);
     46 }, "Event handler set through content attribute should be deactivated when the content attribute is removed.");
     47 test(t => {
     48  var i = 0;
     49  firstEventHandler = t.unreached_func('First event handler.');
     50  var uncalled = "firstEventHandler();";
     51  var button = document.createElement('button');
     52  button.addEventListener('click', t.step_func(() => { assert_equals(++i, 1) }), false);
     53  button.onclick = t.unreached_func('First event handler.');            // event handler is activated here
     54  button.addEventListener('click', t.step_func(() => { assert_equals(++i, 2) }), false);
     55  button.onclick = null;                                                // but de-activated here
     56  button.addEventListener('click', t.step_func(() => { assert_equals(++i, 3) }), false);
     57  button.onclick = t.step_func(() => { assert_equals(++i, 4); });       // and re-activated here
     58  button.addEventListener('click', t.step_func(() => { assert_equals(++i, 5) }), false);
     59  button.click()
     60  assert_equals(i, 5);
     61 }, "Event handler set through IDL should be deactivated when the IDL attribute is set to null.");
     62 test(t => {
     63  var i = 0;
     64  firstEventHandler = t.unreached_func('First event handler.');
     65  var uncalled = "firstEventHandler();";
     66  var button = document.createElement('button');
     67  button.addEventListener('click', t.step_func(() => { assert_equals(++i, 1) }), false);
     68  button.onclick = t.unreached_func('First event handler.');            // event handler is activated here
     69  button.addEventListener('click', t.step_func(() => { assert_equals(++i, 3) }), false);
     70  button.removeAttribute('onclick');                                    // and NOT de-activated here
     71  button.addEventListener('click', t.step_func(() => { assert_equals(++i, 4) }), false);
     72  button.onclick = t.step_func(() => { assert_equals(++i, 2); });
     73  button.addEventListener('click', t.step_func(() => { assert_equals(++i, 5) }), false);
     74  button.click()
     75  assert_equals(i, 5);
     76 }, "Event handler set through IDL should NOT be deactivated when the content attribute is removed.");