1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/workers/test/errorPropagation_worker.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,50 @@ 1.4 +/** 1.5 + * Any copyright is dedicated to the Public Domain. 1.6 + * http://creativecommons.org/publicdomain/zero/1.0/ 1.7 + */ 1.8 +var seenScopeError; 1.9 +onerror = function(message, filename, lineno) { 1.10 + if (!seenScopeError) { 1.11 + seenScopeError = true; 1.12 + postMessage({ 1.13 + type: "scope", 1.14 + data: { message: message, filename: filename, lineno: lineno } 1.15 + }); 1.16 + return true; 1.17 + } 1.18 +}; 1.19 + 1.20 +onmessage = function(event) { 1.21 + var workerId = parseInt(event.data); 1.22 + 1.23 + if (workerId > 1) { 1.24 + var worker = new Worker("errorPropagation_worker.js"); 1.25 + 1.26 + worker.onmessage = function(event) { 1.27 + postMessage(event.data); 1.28 + }; 1.29 + 1.30 + var seenWorkerError; 1.31 + worker.onerror = function(event) { 1.32 + if (!seenWorkerError) { 1.33 + seenWorkerError = true; 1.34 + postMessage({ 1.35 + type: "worker", 1.36 + data: { 1.37 + message: event.message, 1.38 + filename: event.filename, 1.39 + lineno: event.lineno 1.40 + } 1.41 + }); 1.42 + event.preventDefault(); 1.43 + } 1.44 + }; 1.45 + 1.46 + worker.postMessage(workerId - 1); 1.47 + return; 1.48 + } 1.49 + 1.50 + var interval = setInterval(function() { 1.51 + throw new Error("expectedError"); 1.52 + }, 100); 1.53 +};