michael@0: /** michael@0: * Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/publicdomain/zero/1.0/ michael@0: */ michael@0: var seenScopeError; michael@0: onerror = function(message, filename, lineno) { michael@0: if (!seenScopeError) { michael@0: seenScopeError = true; michael@0: postMessage({ michael@0: type: "scope", michael@0: data: { message: message, filename: filename, lineno: lineno } michael@0: }); michael@0: return true; michael@0: } michael@0: }; michael@0: michael@0: onmessage = function(event) { michael@0: var workerId = parseInt(event.data); michael@0: michael@0: if (workerId > 1) { michael@0: var worker = new Worker("errorPropagation_worker.js"); michael@0: michael@0: worker.onmessage = function(event) { michael@0: postMessage(event.data); michael@0: }; michael@0: michael@0: var seenWorkerError; michael@0: worker.onerror = function(event) { michael@0: if (!seenWorkerError) { michael@0: seenWorkerError = true; michael@0: postMessage({ michael@0: type: "worker", michael@0: data: { michael@0: message: event.message, michael@0: filename: event.filename, michael@0: lineno: event.lineno michael@0: } michael@0: }); michael@0: event.preventDefault(); michael@0: } michael@0: }; michael@0: michael@0: worker.postMessage(workerId - 1); michael@0: return; michael@0: } michael@0: michael@0: var interval = setInterval(function() { michael@0: throw new Error("expectedError"); michael@0: }, 100); michael@0: };