<?xml version="1.0"?> <!-- Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ --> <window title="Test for WorkerDebuggerGlobalScope.reportError" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" onload="test();"> <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/> <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"/> <script type="application/javascript" src="dom_worker_helper.js"/> <script type="application/javascript"> <![CDATA[ const WORKER_URL = "WorkerDebuggerGlobalScope.reportError_worker.js"; const CHILD_WORKER_URL = "WorkerDebuggerGlobalScope.reportError_childWorker.js"; const DEBUGGER_URL = BASE_URL + "WorkerDebuggerGlobalScope.reportError_debugger.js"; function test() { Task.spawn(function* () { SimpleTest.waitForExplicitFinish(); info("Create a worker that creates a child worker, wait for their " + "debuggers to be registered, and initialize them."); let promise = waitForMultiple([ waitForRegister(WORKER_URL, DEBUGGER_URL), waitForRegister(CHILD_WORKER_URL, DEBUGGER_URL) ]); let worker = new Worker(WORKER_URL); let [dbg, childDbg] = yield promise; worker.onmessage = function () { ok(false, "Debugger error events should not be fired at workers."); }; info("Send a request to the worker debugger. This should cause the " + "worker debugger to report an error."); promise = waitForDebuggerError(dbg); dbg.postMessage("report"); let error = yield promise; is(error.fileName, DEBUGGER_URL, "fileName should be name of file from which error is reported."); is(error.lineNumber, 6, "lineNumber should be line number from which error is reported."); is(error.message, "reported", "message should be reported."); info("Send a request to the worker debugger. This should cause the " + "worker debugger to throw an error."); promise = waitForDebuggerError(dbg); dbg.postMessage("throw"); error = yield promise; is(error.fileName, DEBUGGER_URL, "fileName should be name of file from which error is thrown"); is(error.lineNumber, 9, "lineNumber should be line number from which error is thrown"); is(error.message, "Error: thrown", "message should be Error: thrown"); info("Send a reqeust to the child worker debugger. This should cause " + "the child worker debugger to report an error."); promise = waitForDebuggerError(childDbg); childDbg.postMessage("report"); error = yield promise; is(error.fileName, DEBUGGER_URL, "fileName should be name of file from which error is reported."); is(error.lineNumber, 6, "lineNumber should be line number from which error is reported."); is(error.message, "reported", "message should be reported."); info("Send a message to the child worker debugger. This should cause " + "the child worker debugger to throw an error."); promise = waitForDebuggerError(childDbg); childDbg.postMessage("throw"); error = yield promise; is(error.fileName, DEBUGGER_URL, "fileName should be name of file from which error is thrown"); is(error.lineNumber, 9, "lineNumber should be line number from which error is thrown"); is(error.message, "Error: thrown", "message should be Error: thrown"); SimpleTest.finish(); }); } ]]> </script> <body xmlns="http://www.w3.org/1999/xhtml"> <p id="display"></p> <div id="content" style="display:none;"></div> <pre id="test"></pre> </body> <label id="test-result"/> </window>