Index: dart/lib/isolate/timer.dart |
diff --git a/dart/lib/isolate/timer.dart b/dart/lib/isolate/timer.dart |
index 76f98a1c2cd610ed00ffdbb84d6a6c1b65be3363..a90c2d000aacb2265752f44bd54354e8ce848316 100644 |
--- a/dart/lib/isolate/timer.dart |
+++ b/dart/lib/isolate/timer.dart |
@@ -2,23 +2,35 @@ |
// 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. |
-interface Timer default _TimerFactory { |
+abstract class Timer { |
/** |
* Creates a new timer. The [callback] callback is invoked after |
* [milliSeconds] milliseconds. |
*/ |
- Timer(int milliSeconds, void callback(Timer timer)); |
+ factory Timer(int milliSeconds, void callback(Timer timer)) { |
+ if (_factory == null) { |
+ throw new UnsupportedOperationException("Timer interface not supported."); |
+ } |
+ return _factory(milliSeconds, callback, false); |
+ } |
/** |
* Creates a new repeating timer. The [callback] is invoked every |
* [milliSeconds] millisecond until cancelled. |
*/ |
- Timer.repeating(int milliSeconds, void callback(Timer timer)); |
+ factory Timer.repeating(int milliSeconds, void callback(Timer timer)) { |
+ if (_factory == null) { |
+ throw new UnsupportedOperationException("Timer interface not supported."); |
+ } |
+ return _factory(milliSeconds, callback, true); |
+ } |
/** |
* Cancels the timer. |
*/ |
void cancel(); |
+ |
+ static _TimerFactoryClosure _factory; |
} |
// TODO(ajohnsen): Patch timer once we have support for patching named |
@@ -28,26 +40,6 @@ typedef Timer _TimerFactoryClosure(int milliSeconds, |
void callback(Timer timer), |
bool repeating); |
-// _TimerFactory provides a hook which allows various implementations of this |
-// library to provide a concrete class for the Timer interface. |
-class _TimerFactory { |
- factory Timer(int milliSeconds, void callback(Timer timer)) { |
- if (_factory == null) { |
- throw new UnsupportedOperationException("Timer interface not supported."); |
- } |
- return _factory(milliSeconds, callback, false); |
- } |
- |
- factory Timer.repeating(int milliSeconds, void callback(Timer timer)) { |
- if (_factory == null) { |
- throw new UnsupportedOperationException("Timer interface not supported."); |
- } |
- return _factory(milliSeconds, callback, true); |
- } |
- |
- static _TimerFactoryClosure _factory; |
-} |
- |
void _setTimerFactoryClosure(_TimerFactoryClosure closure) { |
- _TimerFactory._factory = closure; |
+ Timer._factory = closure; |
} |