// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. library worker_test; import 'package:expect/legacy/async_minitest.dart'; // ignore: deprecated_member_use import 'dart:html'; main() { var workerScript = '''postMessage('WorkerMessage');'''; test('unsupported', () { if (!Worker.supported) { expect(() => new Worker('worker.js'), throws); } else { new Worker('worker.js').onError.first.then( expectAsync((e) { // This event is expected, "worker.js" doesn't exist. But the event // *sometimes* propagates to window.onerror in Firefox which causes // this test to fail, so let's stop any further propagation: e.preventDefault(); e.stopImmediatePropagation(); }), ); } }); if (!Worker.supported) return; test('works', () { // Use Blob to make a local URL so we don't have to have a separate file. // This does not work on browsers using CSP (Content Security Policy). var blob = new Blob([workerScript], 'text/javascript'); var url = Url.createObjectUrl(blob); var worker = new Worker(url); var test = expectAsync((e) { expect(e.data, 'WorkerMessage'); }); worker.onMessage.first.then(test); }); }