michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: Components.utils.import("resource://gre/modules/Promise.jsm"); michael@0: michael@0: let WORKER_SOURCE_URI = "chrome://test_lz4/content/worker_lz4.js"; michael@0: do_load_manifest("data/chrome.manifest"); michael@0: michael@0: function run_test() { michael@0: run_next_test(); michael@0: } michael@0: michael@0: michael@0: add_task(function() { michael@0: let worker = new ChromeWorker(WORKER_SOURCE_URI); michael@0: let deferred = Promise.defer(); michael@0: worker.onmessage = function(event) { michael@0: let data = event.data; michael@0: switch (data.kind) { michael@0: case "do_check_true": michael@0: try { michael@0: do_check_true(data.args[0]); michael@0: } catch (ex) { michael@0: // Ignore errors michael@0: } michael@0: return; michael@0: case "do_test_complete": michael@0: deferred.resolve(); michael@0: worker.terminate(); michael@0: break; michael@0: case "do_print": michael@0: do_print(data.args[0]); michael@0: } michael@0: }; michael@0: worker.onerror = function(event) { michael@0: let error = new Error(event.message, event.filename, event.lineno); michael@0: worker.terminate(); michael@0: deferred.reject(error); michael@0: }; michael@0: worker.postMessage("START"); michael@0: return deferred.promise; michael@0: }); michael@0: