/* * worker_helper.js * bug 764234 tests */ function runTestInWorker(files) { function workerRun() { var tests = []; var asserts; test = function (func, msg) { asserts = []; tests.push({ asserts, msg }); }; assert_equals = function (result, expected, msg) { asserts.push(["assert_equals", result, expected, msg]); }; assert_true = function (condition, msg) { asserts.push(["assert_true", condition, msg]); }; assert_unreached = function (condition, msg) { asserts.push(["assert_unreached", condition, msg]); }; onmessage = function (event) { importScripts.apply(self, event.data); runTest(); postMessage(tests); }; } var url = URL.createObjectURL( new Blob([runTest.toString(), "\n\n", "(", workerRun.toString(), ")();"]) ); var worker = new Worker(url); var base = location.toString().replace(/\/[^\/]*$/, "/"); worker.postMessage( files.map(function (f) { return base + f; }) ); worker.onmessage = function (event) { URL.revokeObjectURL(url); event.data.forEach(function (t) { test(function () { t.asserts.forEach(function (a) { func = a.shift(); self[func].apply(self, a); }); }, "worker " + t.msg); }); done(); }; }