tor-browser

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

event-handler-spec-example.window.js (2887B)


      1 var objects = [{}, function() {}, new Number(42), new String()];
      2 var primitives = [42, null, undefined, ""];
      3 var firstEventHandler;
      4 objects.forEach(function(object) {
      5  test(t => {
      6    var i = 0;
      7    firstEventHandler = t.unreached_func('First event handler.');
      8    var uncalled = "firstEventHandler();";
      9    var button = document.createElement('button');
     10    button.onclick = object; // event handler listener is registered here
     11    assert_equals(button.onclick, object);
     12    button.addEventListener('click', t.step_func(() => { assert_equals(++i, 2) }), false);
     13    button.setAttribute('onclick', uncalled);
     14    button.addEventListener('click', t.step_func(() => { assert_equals(++i, 3) }), false);
     15    button.onclick = t.step_func(() => { assert_equals(++i, 1); });
     16    button.addEventListener('click', t.step_func(() => { assert_equals(++i, 4) }), false);
     17    button.click()
     18    assert_equals(button.getAttribute("onclick"), uncalled)
     19    assert_equals(i, 4);
     20  }, "Event handler listeners should be registered when they are first set to an object value " +
     21     "(" + format_value(object) + ").");
     22 });
     23 primitives.forEach(function(primitive) {
     24  test(t => {
     25    var i = 0;
     26    firstEventHandler = t.unreached_func('First event handler.');
     27    var uncalled = "firstEventHandler();";
     28    var button = document.createElement('button');
     29    button.onclick = primitive;
     30    assert_equals(button.onclick, null);
     31    button.addEventListener('click', t.step_func(() => { assert_equals(++i, 1) }), false);
     32    button.setAttribute('onclick', uncalled); // event handler listener is registered here
     33    button.addEventListener('click', t.step_func(() => { assert_equals(++i, 3) }), false);
     34    button.onclick = t.step_func(() => { assert_equals(++i, 2); });
     35    button.addEventListener('click', t.step_func(() => { assert_equals(++i, 4) }), false);
     36    button.click()
     37    assert_equals(button.getAttribute("onclick"), uncalled)
     38    assert_equals(i, 4);
     39  }, "Event handler listeners should be registered when they are first set to an object value " +
     40     "(" + format_value(primitive) + ").");
     41 });
     42 test(t => {
     43  var i = 0;
     44  firstEventHandler = t.unreached_func('First event handler.');
     45  var uncalled = "firstEventHandler();";
     46  var button = document.createElement('button');
     47  button.addEventListener('click', t.step_func(() => { assert_equals(++i, 1) }), false);
     48  button.setAttribute('onclick', uncalled); // event handler listener is registered here
     49  button.addEventListener('click', t.step_func(() => { assert_equals(++i, 3) }), false);
     50  button.onclick = t.step_func(() => { assert_equals(++i, 2); });
     51  button.addEventListener('click', t.step_func(() => { assert_equals(++i, 4) }), false);
     52  button.click()
     53  assert_equals(button.getAttribute("onclick"), uncalled)
     54  assert_equals(i, 4);
     55 }, "Event handler listeners should be registered when they are first set to an object value.");