tor-browser

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

Event-dispatch-throwing.html (1387B)


      1 <!DOCTYPE html>
      2 <meta charset="UTF-8">
      3 <title>Throwing in event listeners</title>
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <div id="log"></div>
      7 <script>
      8 setup({allow_uncaught_exception:true})
      9 
     10 test(function() {
     11    var errorEvents = 0;
     12    window.onerror = this.step_func(function(e) {
     13        assert_equals(typeof e, 'string');
     14        ++errorEvents;
     15    });
     16 
     17    var element = document.createElement('div');
     18 
     19    element.addEventListener('click', function() {
     20        throw new Error('Error from only listener');
     21    });
     22 
     23    element.dispatchEvent(new Event('click'));
     24 
     25    assert_equals(errorEvents, 1);
     26 }, "Throwing in event listener with a single listeners");
     27 
     28 test(function() {
     29    var errorEvents = 0;
     30    window.onerror = this.step_func(function(e) {
     31        assert_equals(typeof e, 'string');
     32        ++errorEvents;
     33    });
     34 
     35    var element = document.createElement('div');
     36 
     37    var secondCalled = false;
     38 
     39    element.addEventListener('click', function() {
     40        throw new Error('Error from first listener');
     41    });
     42    element.addEventListener('click', this.step_func(function() {
     43        secondCalled = true;
     44    }), false);
     45 
     46    element.dispatchEvent(new Event('click'));
     47 
     48    assert_equals(errorEvents, 1);
     49    assert_true(secondCalled);
     50 }, "Throwing in event listener with multiple listeners");
     51 </script>