Bug 1288768 - Better error reporting for network errors in workers

This commit is contained in:
janekptacijarabaci 2018-04-04 21:36:41 +02:00 • committed by Roy Tam
commit 6509b677d3
8 changed files with 7 additions and 22 deletions

View file

@ -23,11 +23,8 @@
); );
worker.onerror = function(error) { worker.onerror = function(error) {
var msg = error.message; // this means CSP blocked it
if (msg.match(/^NetworkError/) || msg.match(/Failed to load worker script/)) { var msg = !("message" in error) ? "blocked" : e.message;
// this means CSP blocked it
msg = "blocked";
}
window.parent.postMessage({id:page_id, message:msg}, 'http://mochi.test:8888'); window.parent.postMessage({id:page_id, message:msg}, 'http://mochi.test:8888');
error.preventDefault(); error.preventDefault();
}; };

View file

@ -53,9 +53,6 @@ function testWorker([mime, shouldLoad]) {
}; };
worker.onerror = (error) => { worker.onerror = (error) => {
ok(!shouldLoad, `worker with wrong mime '${mime}' should be blocked`); ok(!shouldLoad, `worker with wrong mime '${mime}' should be blocked`);
let msg = error.message;
ok(msg.match(/^NetworkError/) || msg.match(/Failed to load worker script/),
"should gets correct error message");
error.preventDefault(); error.preventDefault();
resolve(); resolve();
} }
@ -74,9 +71,6 @@ function testWorkerImportScripts([mime, shouldLoad]) {
}; };
worker.onerror = (error) => { worker.onerror = (error) => {
ok(!shouldLoad, `worker/importScripts with wrong mime '${mime}' should be blocked`); ok(!shouldLoad, `worker/importScripts with wrong mime '${mime}' should be blocked`);
let msg = error.message;
ok(msg.match(/^NetworkError/) || msg.match(/Failed to load worker script/),
"should gets correct error message");
error.preventDefault(); error.preventDefault();
resolve(); resolve();
} }

View file

@ -25,7 +25,6 @@ Tests of DOM Worker Threads
worker.onerror = function(event) { worker.onerror = function(event) {
is(event.target, worker); is(event.target, worker);
is(event.message, 'NetworkError: Failed to load worker script at "nonexistent_worker.js"');
event.preventDefault(); event.preventDefault();
SimpleTest.finish(); SimpleTest.finish();
}; };

View file

@ -25,7 +25,6 @@ function test(script) {
worker.onerror = function(event) { worker.onerror = function(event) {
is(event.target, worker); is(event.target, worker);
ok(event.message.startsWith("NetworkError: Failed to load worker script"))
event.preventDefault(); event.preventDefault();
runTests(); runTests();
}; };

View file

@ -13,15 +13,13 @@
<script class="testbody" type="text/javascript"> <script class="testbody" type="text/javascript">
"use strict"; "use strict";
var loadErrorMessage = 'SecurityError: Failed to load worker script at "about:blank"';
function nextTest() { function nextTest() {
(function(){ (function(){
function workerfunc() { function workerfunc() {
var subworker = new Worker("about:blank"); var subworker = new Worker("about:blank");
subworker.onerror = function(e) { subworker.onerror = function(e) {
e.preventDefault(); e.preventDefault();
postMessage(e.message); postMessage("ERROR");
} }
} }
var b = new Blob([workerfunc+'workerfunc();']); var b = new Blob([workerfunc+'workerfunc();']);
@ -37,7 +35,7 @@ function nextTest() {
return; return;
} }
w.onmessage = function(e) { w.onmessage = function(e) {
is(e.data, loadErrorMessage, is(e.data, "ERROR",
"Should catch the error when loading inner script"); "Should catch the error when loading inner script");
if (++i < 2) callworker(i); if (++i < 2) callworker(i);
else SimpleTest.finish(); else SimpleTest.finish();
@ -54,8 +52,6 @@ try {
var worker = new Worker("about:blank"); var worker = new Worker("about:blank");
worker.onerror = function(e) { worker.onerror = function(e) {
e.preventDefault(); e.preventDefault();
is(e.message, loadErrorMessage,
"Should get the right error from the toplevel script");
nextTest(); nextTest();
} }

View file

@ -8,7 +8,7 @@ async_test(function(t) {
try { try {
var w = new Worker("ftp://example.org/support/WorkerBasic.js"); var w = new Worker("ftp://example.org/support/WorkerBasic.js");
w.onerror = t.step_func_done(function(e) { w.onerror = t.step_func_done(function(e) {
assert_true(e instanceof ErrorEvent); assert_true(e instanceof Event);
}); });
} catch (e) { } catch (e) {
t.step_func_done(function(e) { assert_true(true); }); t.step_func_done(function(e) { assert_true(true); });

View file

@ -16,7 +16,7 @@ function testSharedWorkerHelper(t, script) {
try { try {
var worker = new SharedWorker(script, ''); var worker = new SharedWorker(script, '');
worker.onerror = t.step_func_done(function(e) { worker.onerror = t.step_func_done(function(e) {
assert_true(e instanceof ErrorEvent); assert_true(e instanceof Event);
}); });
} catch (e) { } catch (e) {
t.step_func_done(function(e) { assert_true(true); }); t.step_func_done(function(e) { assert_true(true); });

View file

@ -14,7 +14,7 @@ function testSharedWorkerHelper(t, script) {
try { try {
var worker = new SharedWorker(script, ''); var worker = new SharedWorker(script, '');
worker.onerror = t.step_func_done(function(e) { worker.onerror = t.step_func_done(function(e) {
assert_true(e instanceof ErrorEvent); assert_true(e instanceof Event);
}); });
} catch (e) { } catch (e) {
t.step_func_done(function(e) { assert_true(true); }); t.step_func_done(function(e) { assert_true(true); });