Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / fast / workers / resources / onerror-test.js
blob66e981ffa087ec1ccbf084ea5cdf3d88d1b74d34
1 function stripURL(url) {
2     if (url.match(/^blob:/))
3         return "[blob: URL]";
4     return url ? url.match( /[^\/]+\/?$/ )[0] : url;
7 function checkErrorEvent(errorEvent, obj) {
8     window.errorEvent = errorEvent;
9     shouldBeEqualToString('errorEvent.message', obj.message);
10     shouldBeEqualToString('stripURL(errorEvent.filename)', obj.filename);
11     shouldBe('errorEvent.lineno', '' + obj.lineno);
12     shouldBe('errorEvent.colno', '' + obj.colno);
14     // The spec says the error property for worker-generated errors is always initialized to null
15     // outside the worker: http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#runtime-script-errors-0
16     shouldBeNull('errorEvent.error');
19 function checkPostMessage(obj) {
20     window.postMessageCallback = function (e) {
21         if (e.data.done)
22             return;
23         debug("\nWorker-level onerror handler triggered:");
24         checkErrorEvent(e.data, obj);
25     };
28 var errorsSeen = 0;
29 function checkErrorEventInHandler(error, returnValue) {
30     var worker = buildInlineWorker();
31     worker.onerror = function (e) {
32         debug("\nPage-level worker.onerror handler triggered:");
33         window.errorEvent = e;
34         var obj = error;
35         if (error.length)
36             obj = error[errorsSeen++];
38         checkErrorEvent(e, obj);
40         if (!error.length || error.length == errorsSeen)
41             finishJSTest();
43         return returnValue;
44     };
47 function checkErrorEventInListener(error, preventDefault) {
48     var worker = buildInlineWorker();
49     worker.addEventListener('error', function (e) {
50         debug("\nPage-level worker 'error' event listener triggered:");
51         var obj = error;
52         if (error.length)
53             obj = error[errorsSeen++];
55         checkErrorEvent(e, obj);
57         if (!error.length || error.length == errorsSeen)
58             finishJSTest();
60         if (preventDefault)
61             e.preventDefault();
62     });
65 function errorEventHandlerShouldNotFire() {
66     var worker = buildInlineWorker();
67     worker.onerror = function (e) {
68         testFailed("'worker.onerror' should not have been called.");
69     };
72 function buildInlineWorker() {
73     var script = document.getElementById('workerCode').innerText;
74     var blob = new Blob([script], {type: 'text/javascript'});
75     var worker = new Worker(URL.createObjectURL(blob));
77     if (window.postMessageCallback)
78         worker.addEventListener('message', postMessageCallback);
79     worker.addEventListener('message', function (e) {
80         if (e.data.done)
81             return finishJSTest();
82     });
84     return worker;
87 window.jsTestIsAsync = true;