|
1 <!DOCTYPE html> |
|
2 <meta charset=utf-8> |
|
3 <title>Test for error events being ErrorEvent</title> |
|
4 <script src="/resources/testharness.js"></script> |
|
5 <script src="/resources/testharnessreport.js"></script> |
|
6 <div id="log"></div> |
|
7 <script> |
|
8 var errorEvent; |
|
9 var file; |
|
10 var line; |
|
11 var msg; |
|
12 var column; |
|
13 var error; |
|
14 window.addEventListener("error", function errorListener(e) { |
|
15 window.removeEventListener("error", errorListener); |
|
16 errorEvent = e; |
|
17 }); |
|
18 var oldOnerror = window.onerror; |
|
19 window.onerror = function(message, filename, lineno, columnno, errorObject) { |
|
20 window.onerror = oldOnerror; |
|
21 file = filename; |
|
22 line = lineno; |
|
23 msg = message; |
|
24 column = columnno; |
|
25 error = errorObject; |
|
26 } |
|
27 var thrown = new Error("hello"); |
|
28 throw thrown; |
|
29 </script> |
|
30 <script> |
|
31 generate_tests(assert_equals, [ |
|
32 [ "Event filename", errorEvent.filename, location.href ], |
|
33 [ "Callback filename", file, location.href ], |
|
34 [ "Event line number", errorEvent.lineno, 27 ], |
|
35 [ "Callback line number", line, 27 ], |
|
36 [ "Event message", errorEvent.message, "Error: hello" ], |
|
37 [ "Callback message", msg, "Error: hello" ], |
|
38 [ "Event error-object", errorEvent.error, thrown], |
|
39 [ "Callback error-object", error, thrown ], |
|
40 [ "Event column", errorEvent.colno, 6 ], // Sadly not correct right now |
|
41 [ "Callback column", column, 6 ] |
|
42 ]); |
|
43 </script> |
|
44 <script> |
|
45 var workerLocation = location.protocol + "//" + location.host + |
|
46 location.pathname.replace("test_error_events.html", "error_event_worker.js"); |
|
47 var eventFileTest = async_test("Worker event filename"); |
|
48 var eventLineTest = async_test("Worker event line number"); |
|
49 var eventMessageTest = async_test("Worker event message"); |
|
50 var callbackFileTest = async_test("Worker callback filename"); |
|
51 var callbackLineTest = async_test("Worker callback line number"); |
|
52 var callbackMessageTest = async_test("Worker callback message"); |
|
53 var w = new Worker("error_event_worker.js"); |
|
54 w.addEventListener("message", function(msg) { |
|
55 if (msg.data.type == "event") { |
|
56 eventFileTest.step(function() { assert_equals(msg.data.filename, workerLocation); }); |
|
57 eventFileTest.done(); |
|
58 eventLineTest.step(function() { assert_equals(msg.data.lineno, 15); }); |
|
59 eventLineTest.done(); |
|
60 eventMessageTest.step(function() { assert_equals(msg.data.message, "Error: workerhello"); }); |
|
61 eventMessageTest.done(); |
|
62 } else { |
|
63 callbackFileTest.step(function() { assert_equals(msg.data.filename, workerLocation); }); |
|
64 callbackFileTest.done(); |
|
65 callbackLineTest.step(function() { assert_equals(msg.data.lineno, 15); }); |
|
66 callbackLineTest.done(); |
|
67 callbackMessageTest.step(function() { assert_equals(msg.data.message, "Error: workerhello"); }); |
|
68 callbackMessageTest.done(); |
|
69 } |
|
70 }); |
|
71 </script> |