| Index: runtime/lib/timer_patch.dart
|
| diff --git a/runtime/lib/timer_patch.dart b/runtime/lib/timer_patch.dart
|
| index d27e4e88994504df4b199b2a7e9d973dfb1d58de..10249155da61ce0dff3c0c4a5f3f0b5630cf1965 100644
|
| --- a/runtime/lib/timer_patch.dart
|
| +++ b/runtime/lib/timer_patch.dart
|
| @@ -2,23 +2,40 @@
|
| // 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.
|
|
|
| +typedef void _TimerCallback0();
|
| +typedef void _TimerCallback1(Timer timer);
|
| +
|
| patch class Timer {
|
| - /* patch */ factory Timer(int milliseconds, void callback(Timer timer)) {
|
| + /* patch */ factory Timer(var duration, Function callback) {
|
| + // TODO(floitsch): remove these checks when we remove the deprecated
|
| + // millisecond argument and the 1-argument callback. Also remove
|
| + // the int-test below.
|
| + if (callback is! _TimerCallback0 && callback is! _TimerCallback1) {
|
| + throw new ArgumentError(callback);
|
| + }
|
| + int milliseconds = duration is int ? duration : duration.inMilliseconds;
|
| + if (milliseconds < 0) milliseconds = 0;
|
| + _TimerCallback1 oneArgumentCallback =
|
| + callback is _TimerCallback1 ? callback : (_) { callback(); };
|
| if (_TimerFactory._factory == null) {
|
| throw new UnsupportedError("Timer interface not supported.");
|
| }
|
| - return _TimerFactory._factory(milliseconds, callback, false);
|
| + return _TimerFactory._factory(milliseconds, oneArgumentCallback, false);
|
| }
|
|
|
| /**
|
| * Creates a new repeating timer. The [callback] is invoked every
|
| * [milliseconds] millisecond until cancelled.
|
| */
|
| - /* patch */ factory Timer.repeating(int milliseconds,
|
| + /* patch */ factory Timer.repeating(var duration,
|
| void callback(Timer timer)) {
|
| if (_TimerFactory._factory == null) {
|
| throw new UnsupportedError("Timer interface not supported.");
|
| }
|
| + // TODO(floitsch): remove this check when we remove the deprecated
|
| + // millisecond argument.
|
| + int milliseconds = duration is int ? duration : duration.inMilliseconds;
|
| + if (milliseconds < 0) milliseconds = 0;
|
| return _TimerFactory._factory(milliseconds, callback, true);
|
| }
|
| }
|
|
|