| Index: tests/html/async_test.dart
|
| diff --git a/tests/html/async_test.dart b/tests/html/async_test.dart
|
| index 616258cd17dbd607711a83d11d2be774843a361c..a0d99fbf94ccf3666812ea0f592f820dd7bd1c42 100644
|
| --- a/tests/html/async_test.dart
|
| +++ b/tests/html/async_test.dart
|
| @@ -7,61 +7,61 @@ import 'dart:async';
|
| import 'dart:isolate';
|
| import 'dart:html';
|
|
|
| -oneshotTimerIsolate() {
|
| - port.receive((msg, replyTo) {
|
| - expect(msg, 'START');
|
| - new Timer(const Duration(milliseconds: 10), () {
|
| - replyTo.send('DONE');
|
| - });
|
| - });
|
| -}
|
| -
|
| -periodicTimerIsolate() {
|
| - port.receive((msg, replyTo) {
|
| - expect(msg, 'START');
|
| - int counter = 0;
|
| - new Timer.periodic(const Duration(milliseconds: 10), (timer) {
|
| - if (counter == 3) {
|
| - counter = 1024;
|
| - timer.cancel();
|
| - // Wait some more time to be sure callback won't be invoked any
|
| - // more.
|
| - new Timer(const Duration(milliseconds: 30), () {
|
| - replyTo.send('DONE');
|
| - });
|
| - return;
|
| - }
|
| - assert(counter < 3);
|
| - counter++;
|
| - });
|
| +oneshotTimerIsolate(message) {
|
| + var command = message[0];
|
| + var replyTo = message[1];
|
| + expect(command, 'START');
|
| + new Timer(const Duration(milliseconds: 10), () {
|
| + replyTo.send('DONE');
|
| });
|
| }
|
|
|
| -cancellingIsolate() {
|
| - port.receive((msg, replyTo) {
|
| - expect(msg, 'START');
|
| - bool shot = false;
|
| - var oneshot;
|
| - var periodic;
|
| - periodic = new Timer.periodic(const Duration(milliseconds: 10), (timer) {
|
| - expect(shot, isFalse);
|
| - shot = true;
|
| - expect(timer, same(periodic));
|
| - periodic.cancel();
|
| - oneshot.cancel();
|
| - // Wait some more time to be sure callbacks won't be invoked any
|
| +periodicTimerIsolate(message) {
|
| + var command = message[0];
|
| + var replyTo = message[1];
|
| + expect(command, 'START');
|
| + int counter = 0;
|
| + new Timer.periodic(const Duration(milliseconds: 10), (timer) {
|
| + if (counter == 3) {
|
| + counter = 1024;
|
| + timer.cancel();
|
| + // Wait some more time to be sure callback won't be invoked any
|
| // more.
|
| - new Timer(const Duration(milliseconds: 50), () {
|
| + new Timer(const Duration(milliseconds: 30), () {
|
| replyTo.send('DONE');
|
| });
|
| + return;
|
| + }
|
| + assert(counter < 3);
|
| + counter++;
|
| + });
|
| +}
|
| +
|
| +cancellingIsolate(message) {
|
| + var command = message[0];
|
| + var replyTo = message[1];
|
| + expect(command, 'START');
|
| + bool shot = false;
|
| + var oneshot;
|
| + var periodic;
|
| + periodic = new Timer.periodic(const Duration(milliseconds: 10), (timer) {
|
| + expect(shot, isFalse);
|
| + shot = true;
|
| + expect(timer, same(periodic));
|
| + periodic.cancel();
|
| + oneshot.cancel();
|
| + // Wait some more time to be sure callbacks won't be invoked any
|
| + // more.
|
| + new Timer(const Duration(milliseconds: 50), () {
|
| + replyTo.send('DONE');
|
| });
|
| - // We launch the oneshot timer after the periodic timer. Otherwise a
|
| - // (very long) context switch could make this test flaky: assume the
|
| - // oneshot timer is created first and then there is a 30ms context switch.
|
| - // when the periodic timer is scheduled it would execute after the oneshot.
|
| - oneshot = new Timer(const Duration(milliseconds: 30), () {
|
| - fail('Should never be invoked');
|
| - });
|
| + });
|
| + // We launch the oneshot timer after the periodic timer. Otherwise a
|
| + // (very long) context switch could make this test flaky: assume the
|
| + // oneshot timer is created first and then there is a 30ms context switch.
|
| + // when the periodic timer is scheduled it would execute after the oneshot.
|
| + oneshot = new Timer(const Duration(milliseconds: 30), () {
|
| + fail('Should never be invoked');
|
| });
|
| }
|
|
|
| @@ -69,15 +69,21 @@ main() {
|
| useHtmlConfiguration();
|
|
|
| test('one shot timer in pure isolate', () {
|
| - expect(spawnFunction(oneshotTimerIsolate).call('START'),
|
| - completion('DONE'));
|
| + var response = new ReceivePort();
|
| + var remote = Isolate.spawn(oneshotTimerIsolate,
|
| + ['START', response.sendPort]);
|
| + expect(remote.then((_) => response.first), completion('DONE'));
|
| });
|
| test('periodic timer in pure isolate', () {
|
| - expect(spawnFunction(periodicTimerIsolate).call('START'),
|
| - completion('DONE'));
|
| + var response = new ReceivePort();
|
| + var remote = Isolate.spawn(periodicTimerIsolate,
|
| + ['START', response.sendPort]);
|
| + expect(remote.then((_) => response.first), completion('DONE'));
|
| });
|
| test('cancellation in pure isolate', () {
|
| - expect(spawnFunction(cancellingIsolate).call('START'),
|
| - completion('DONE'));
|
| + var response = new ReceivePort();
|
| + var remote = Isolate.spawn(cancellingIsolate,
|
| + ['START', response.sendPort]);
|
| + expect(remote.then((_) => response.first), completion('DONE'));
|
| });
|
| }
|
|
|