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: // Worker must be loaded from a chrome:// uri, not a file:// michael@0: // uri, so we first need to load it. michael@0: let WORKER_SOURCE_URI = "chrome://workers/content/worker.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: function talk_with_worker(worker) { michael@0: let deferred = Promise.defer(); michael@0: worker.onmessage = function(event) { michael@0: let success = true; michael@0: if (event.data == "OK") { michael@0: deferred.resolve(); michael@0: } else { michael@0: success = false; michael@0: deferred.reject(event); michael@0: } michael@0: do_check_true(success); michael@0: worker.terminate(); 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: michael@0: michael@0: add_task(function test_chrome_worker() { michael@0: return talk_with_worker(new ChromeWorker(WORKER_SOURCE_URI)); michael@0: }); michael@0: michael@0: add_task(function test_worker() { michael@0: return talk_with_worker(new Worker(WORKER_SOURCE_URI)); michael@0: });