Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(162)

Unified Diff: runtime/lib/timer_patch.dart

Issue 12213092: Rework Timer interface. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address comments. Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/unittest/test/test_utils.dart ('k') | samples/chat/chat_server.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
}
« no previous file with comments | « pkg/unittest/test/test_utils.dart ('k') | samples/chat/chat_server.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698