michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: 'use strict'; michael@0: michael@0: let chrome = require('chrome'); michael@0: michael@0: const FIXTURES_URL = module.uri.substr(0, module.uri.lastIndexOf('/') + 1) + michael@0: 'fixtures/chrome-worker/' michael@0: michael@0: exports['test addEventListener'] = function(assert, done) { michael@0: let uri = FIXTURES_URL + 'addEventListener.js'; michael@0: michael@0: let worker = new chrome.ChromeWorker(uri); michael@0: worker.addEventListener('message', function(event) { michael@0: assert.equal(event.data, 'Hello', 'message received'); michael@0: worker.terminate(); michael@0: done(); michael@0: }); michael@0: }; michael@0: michael@0: exports['test onmessage'] = function(assert, done) { michael@0: let uri = FIXTURES_URL + 'onmessage.js'; michael@0: michael@0: let worker = new chrome.ChromeWorker(uri); michael@0: worker.onmessage = function(event) { michael@0: assert.equal(event.data, 'ok', 'message received'); michael@0: worker.terminate(); michael@0: done(); michael@0: }; michael@0: worker.postMessage('ok'); michael@0: }; michael@0: michael@0: exports['test setTimeout'] = function(assert, done) { michael@0: let uri = FIXTURES_URL + 'setTimeout.js'; michael@0: michael@0: let worker = new chrome.ChromeWorker(uri); michael@0: worker.onmessage = function(event) { michael@0: assert.equal(event.data, 'ok', 'setTimeout fired'); michael@0: worker.terminate(); michael@0: done(); michael@0: }; michael@0: }; michael@0: michael@0: exports['test jsctypes'] = function(assert, done) { michael@0: let uri = FIXTURES_URL + 'jsctypes.js'; michael@0: michael@0: let worker = new chrome.ChromeWorker(uri); michael@0: worker.onmessage = function(event) { michael@0: assert.equal(event.data, 'function', 'ctypes.open is a function'); michael@0: worker.terminate(); michael@0: done(); michael@0: }; michael@0: }; michael@0: michael@0: exports['test XMLHttpRequest'] = function(assert, done) { michael@0: let uri = FIXTURES_URL + 'xhr.js'; michael@0: michael@0: let worker = new chrome.ChromeWorker(uri); michael@0: worker.onmessage = function(event) { michael@0: assert.equal(event.data, 'ok', 'XMLHttpRequest works'); michael@0: worker.terminate(); michael@0: done(); michael@0: }; michael@0: }; michael@0: michael@0: exports['test onerror'] = function(assert, done) { michael@0: let uri = FIXTURES_URL + 'onerror.js'; michael@0: michael@0: let worker = new chrome.ChromeWorker(uri); michael@0: worker.onerror = function(event) { michael@0: assert.equal(event.filename, uri, 'event reports the correct uri'); michael@0: assert.equal(event.lineno, 6, 'event reports the correct line number'); michael@0: assert.equal(event.target, worker, 'event reports the correct worker'); michael@0: assert.ok(event.message.match(/ok/), michael@0: 'event contains the exception message'); michael@0: // Call preventDefault in order to avoid being displayed in JS console. michael@0: event.preventDefault(); michael@0: worker.terminate(); michael@0: done(); michael@0: }; michael@0: }; michael@0: michael@0: require('sdk/test').run(exports);