|  | // 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:async_helper/async_minitest.dart'; | 
|  | 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); | 
|  | }); | 
|  | } |