Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
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>