| <!DOCTYPE html> |
| <meta charset="UTF-8"> |
| <title>Throwing in event listeners</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <div id="log"></div> |
| <script> |
| setup({allow_uncaught_exception:true}) |
| |
| test(function() { |
| var errorEvents = 0; |
| window.onerror = this.step_func(function(e) { |
| assert_equals(typeof e, 'string'); |
| ++errorEvents; |
| }); |
| |
| var element = document.createElement('div'); |
| |
| element.addEventListener('click', function() { |
| throw new Error('Error from only listener'); |
| }); |
| |
| element.dispatchEvent(new Event('click')); |
| |
| assert_equals(errorEvents, 1); |
| }, "Throwing in event listener with a single listeners"); |
| |
| test(function() { |
| var errorEvents = 0; |
| window.onerror = this.step_func(function(e) { |
| assert_equals(typeof e, 'string'); |
| ++errorEvents; |
| }); |
| |
| var element = document.createElement('div'); |
| |
| var secondCalled = false; |
| |
| element.addEventListener('click', function() { |
| throw new Error('Error from first listener'); |
| }); |
| element.addEventListener('click', this.step_func(function() { |
| secondCalled = true; |
| }), false); |
| |
| element.dispatchEvent(new Event('click')); |
| |
| assert_equals(errorEvents, 1); |
| assert_true(secondCalled); |
| }, "Throwing in event listener with multiple listeners"); |
| </script> |