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

Side by Side Diff: sdk/lib/async/zone.dart

Issue 1848933002: Add tasks to zones. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Don't run tasks twice.wq Created 4 years, 7 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 unified diff | Download patch
« no previous file with comments | « sdk/lib/async/timer.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of dart.async; 5 part of dart.async;
6 6
7 typedef dynamic ZoneCallback(); 7 typedef dynamic ZoneCallback();
8 typedef dynamic ZoneUnaryCallback(arg); 8 typedef dynamic ZoneUnaryCallback(arg);
9 typedef dynamic ZoneBinaryCallback(arg1, arg2); 9 typedef dynamic ZoneBinaryCallback(arg1, arg2);
10 10
11 typedef Object TaskCreate(TaskSpecification taskSpecification, Zone zone);
12 typedef void TaskCancel(Object task);
13 typedef void TaskRun(Object task, Object arg);
14
11 typedef dynamic HandleUncaughtErrorHandler( 15 typedef dynamic HandleUncaughtErrorHandler(
12 Zone self, ZoneDelegate parent, Zone zone, error, StackTrace stackTrace); 16 Zone self, ZoneDelegate parent, Zone zone, error, StackTrace stackTrace);
13 typedef dynamic RunHandler(Zone self, ZoneDelegate parent, Zone zone, f()); 17 typedef dynamic RunHandler(Zone self, ZoneDelegate parent, Zone zone, f());
14 typedef dynamic RunUnaryHandler( 18 typedef dynamic RunUnaryHandler(
15 Zone self, ZoneDelegate parent, Zone zone, f(arg), arg); 19 Zone self, ZoneDelegate parent, Zone zone, f(arg), arg);
16 typedef dynamic RunBinaryHandler( 20 typedef dynamic RunBinaryHandler(
17 Zone self, ZoneDelegate parent, Zone zone, f(arg1, arg2), arg1, arg2); 21 Zone self, ZoneDelegate parent, Zone zone, f(arg1, arg2), arg1, arg2);
18 typedef ZoneCallback RegisterCallbackHandler( 22 typedef ZoneCallback RegisterCallbackHandler(
19 Zone self, ZoneDelegate parent, Zone zone, f()); 23 Zone self, ZoneDelegate parent, Zone zone, f());
20 typedef ZoneUnaryCallback RegisterUnaryCallbackHandler( 24 typedef ZoneUnaryCallback RegisterUnaryCallbackHandler(
21 Zone self, ZoneDelegate parent, Zone zone, f(arg)); 25 Zone self, ZoneDelegate parent, Zone zone, f(arg));
22 typedef ZoneBinaryCallback RegisterBinaryCallbackHandler( 26 typedef ZoneBinaryCallback RegisterBinaryCallbackHandler(
23 Zone self, ZoneDelegate parent, Zone zone, f(arg1, arg2)); 27 Zone self, ZoneDelegate parent, Zone zone, f(arg1, arg2));
24 typedef AsyncError ErrorCallbackHandler(Zone self, ZoneDelegate parent, 28 typedef AsyncError ErrorCallbackHandler(Zone self, ZoneDelegate parent,
25 Zone zone, Object error, StackTrace stackTrace); 29 Zone zone, Object error, StackTrace stackTrace);
30 typedef Object CreateTaskHandler(Zone self, ZoneDelegate parent, Zone zone,
31 TaskSpecification taskSpecification, TaskCreate schedule);
32 typedef void CancelTaskHandler(Zone self, ZoneDelegate parent, Zone zone,
33 Object task, TaskCancel cancel);
34 typedef void RunTaskHandler(Zone self, ZoneDelegate parent, Zone zone,
35 Object task, Object arg1, TaskRun run);
Lasse Reichstein Nielsen 2016/05/20 22:01:36 Just noticed: I'd swap the run function and the ar
26 typedef void ScheduleMicrotaskHandler( 36 typedef void ScheduleMicrotaskHandler(
27 Zone self, ZoneDelegate parent, Zone zone, f()); 37 Zone self, ZoneDelegate parent, Zone zone, f());
28 typedef Timer CreateTimerHandler(
29 Zone self, ZoneDelegate parent, Zone zone, Duration duration, void f());
30 typedef Timer CreatePeriodicTimerHandler(
31 Zone self, ZoneDelegate parent, Zone zone,
32 Duration period, void f(Timer timer));
33 typedef void PrintHandler( 38 typedef void PrintHandler(
34 Zone self, ZoneDelegate parent, Zone zone, String line); 39 Zone self, ZoneDelegate parent, Zone zone, String line);
35 typedef Zone ForkHandler(Zone self, ZoneDelegate parent, Zone zone, 40 typedef Zone ForkHandler(Zone self, ZoneDelegate parent, Zone zone,
36 ZoneSpecification specification, 41 ZoneSpecification specification,
37 Map zoneValues); 42 Map zoneValues);
38 43
44 // Typedefs for deprecated methods.
45 typedef Timer CreateTimerHandler(
46 Zone self, ZoneDelegate parent, Zone zone, Duration duration, void f());
47 typedef Timer CreatePeriodicTimerHandler(
48 Zone self, ZoneDelegate parent, Zone zone,
49 Duration period, void f(Timer timer));
50
39 /** Pair of error and stack trace. Returned by [Zone.errorCallback]. */ 51 /** Pair of error and stack trace. Returned by [Zone.errorCallback]. */
40 class AsyncError implements Error { 52 class AsyncError implements Error {
41 final error; 53 final error;
42 final StackTrace stackTrace; 54 final StackTrace stackTrace;
43 55
44 AsyncError(this.error, this.stackTrace); 56 AsyncError(this.error, this.stackTrace);
45 57
46 String toString() => '$error'; 58 String toString() => '$error';
47 } 59 }
48 60
61 abstract class TaskSpecification {
62 /// Description of the task.
63 ///
64 /// This string is unused by the root-zone, but might be used for debugging,
65 /// and testing. As such, it should be relatively unique in its category.
66 String get name;
67
68 /// Whether the scheduled task triggers at most once.
69 ///
70 /// If the task is not a one-shot task, it may need to be canceled to prevent
71 /// further iterations of the task.
72 bool get isOneShot;
73 }
74
75 class _TimerTaskWrapper implements Timer {
76 final TimerTask _task;
77
78 _TimerTaskWrapper(this._task);
79
80 static _cancel(TimerTask task) {
81 task.timer.cancel();
82 }
83
84 void cancel() {
85 _task.zone.cancelTask(_task, _cancel);
86 }
87
88 bool get isActive => _task.timer.isActive;
89 }
90
91 abstract class TimerTask {
92 final Zone zone;
93 /// The native timer.
94 final Timer timer;
95
96 TimerTask(this.timer, this.zone);
97 }
98
99 class SingleShotTimerTask extends TimerTask {
100 final ZoneCallback callback;
101
102 SingleShotTimerTask(Timer timer, this.callback, Zone zone)
103 : super(timer, zone);
104 }
105
106 class PeriodicTimerTask extends TimerTask {
107 final ZoneUnaryCallback callback;
108
109 PeriodicTimerTask(Timer timer, this.callback, Zone zone)
110 : super(timer, zone);
111 }
112
113 class SingleShotTimerTaskSpecification implements TaskSpecification {
114 final Duration duration;
115 final ZoneCallback callback;
116
117 SingleShotTimerTaskSpecification(this.duration, void this.callback());
118
119 String get name => "Timer";
120 bool get isOneShot => true;
121 bool get isEventTask => false;
122 bool get isMacroTask => true;
123 }
124
125 class PeriodicTimerTaskSpecification implements TaskSpecification {
126 final Duration duration;
127 final ZoneUnaryCallback callback;
128
129 PeriodicTimerTaskSpecification(
130 this.duration, void this.callback(Timer timer));
131
132 String get name => "Periodic Timer";
133 bool get isOneShot => false;
134 bool get isEventTask => false;
135 bool get isMacroTask => true;
136 }
49 137
50 class _ZoneFunction { 138 class _ZoneFunction {
51 final _Zone zone; 139 final _Zone zone;
52 final Function function; 140 final Function function;
141
53 const _ZoneFunction(this.zone, this.function); 142 const _ZoneFunction(this.zone, this.function);
54 } 143 }
55 144
56 /** 145 /**
57 * This class provides the specification for a forked zone. 146 * This class provides the specification for a forked zone.
58 * 147 *
59 * When forking a new zone (see [Zone.fork]) one can override the default 148 * When forking a new zone (see [Zone.fork]) one can override the default
60 * behavior of the zone by providing callbacks. These callbacks must be 149 * behavior of the zone by providing callbacks. These callbacks must be
61 * given in an instance of this class. 150 * given in an instance of this class.
62 * 151 *
(...skipping 24 matching lines...) Expand all
87 ZoneCallback registerCallback( 176 ZoneCallback registerCallback(
88 Zone self, ZoneDelegate parent, Zone zone, f()), 177 Zone self, ZoneDelegate parent, Zone zone, f()),
89 ZoneUnaryCallback registerUnaryCallback( 178 ZoneUnaryCallback registerUnaryCallback(
90 Zone self, ZoneDelegate parent, Zone zone, f(arg)), 179 Zone self, ZoneDelegate parent, Zone zone, f(arg)),
91 ZoneBinaryCallback registerBinaryCallback( 180 ZoneBinaryCallback registerBinaryCallback(
92 Zone self, ZoneDelegate parent, Zone zone, f(arg1, arg2)), 181 Zone self, ZoneDelegate parent, Zone zone, f(arg1, arg2)),
93 AsyncError errorCallback(Zone self, ZoneDelegate parent, Zone zone, 182 AsyncError errorCallback(Zone self, ZoneDelegate parent, Zone zone,
94 Object error, StackTrace stackTrace), 183 Object error, StackTrace stackTrace),
95 void scheduleMicrotask( 184 void scheduleMicrotask(
96 Zone self, ZoneDelegate parent, Zone zone, f()), 185 Zone self, ZoneDelegate parent, Zone zone, f()),
186 Object createTask(Zone self, ZoneDelegate parent, Zone zone,
187 TaskSpecification taskSpecification, TaskCreate create),
188 void runTask(Zone self, ZoneDelegate parent, Zone zone, Object task,
189 Object arg, TaskRun run),
190 void cancelTask(Zone self, ZoneDelegate parent, Zone zone, Object task,
191 TaskCancel cancel),
192
193 void print(Zone self, ZoneDelegate parent, Zone zone, String line),
194 Zone fork(Zone self, ZoneDelegate parent, Zone zone,
195 ZoneSpecification specification, Map zoneValues),
196
197 @deprecated
97 Timer createTimer(Zone self, ZoneDelegate parent, Zone zone, 198 Timer createTimer(Zone self, ZoneDelegate parent, Zone zone,
98 Duration duration, void f()), 199 Duration duration, void f()),
200 @deprecated
99 Timer createPeriodicTimer(Zone self, ZoneDelegate parent, Zone zone, 201 Timer createPeriodicTimer(Zone self, ZoneDelegate parent, Zone zone,
100 Duration period, void f(Timer timer)), 202 Duration period, void f(Timer timer))
101 void print(Zone self, ZoneDelegate parent, Zone zone, String line),
102 Zone fork(Zone self, ZoneDelegate parent, Zone zone,
103 ZoneSpecification specification, Map zoneValues)
104 }) = _ZoneSpecification; 203 }) = _ZoneSpecification;
105 204
106 /** 205 /**
107 * Creates a specification from [other] with the provided handlers overriding 206 * Creates a specification from [other] with the provided handlers overriding
108 * the ones in [other]. 207 * the ones in [other].
109 */ 208 */
110 factory ZoneSpecification.from(ZoneSpecification other, { 209 factory ZoneSpecification.from(ZoneSpecification other, {
111 dynamic handleUncaughtError(Zone self, ZoneDelegate parent, Zone zone, 210 dynamic handleUncaughtError(Zone self, ZoneDelegate parent, Zone zone,
112 error, StackTrace stackTrace): null, 211 error, StackTrace stackTrace): null,
113 dynamic run(Zone self, ZoneDelegate parent, Zone zone, f()): null, 212 dynamic run(Zone self, ZoneDelegate parent, Zone zone, f()): null,
114 dynamic runUnary( 213 dynamic runUnary(
115 Zone self, ZoneDelegate parent, Zone zone, f(arg), arg): null, 214 Zone self, ZoneDelegate parent, Zone zone, f(arg), arg): null,
116 dynamic runBinary(Zone self, ZoneDelegate parent, Zone zone, 215 dynamic runBinary(Zone self, ZoneDelegate parent, Zone zone,
117 f(arg1, arg2), arg1, arg2): null, 216 f(arg1, arg2), arg1, arg2): null,
118 ZoneCallback registerCallback( 217 ZoneCallback registerCallback(
119 Zone self, ZoneDelegate parent, Zone zone, f()): null, 218 Zone self, ZoneDelegate parent, Zone zone, f()): null,
120 ZoneUnaryCallback registerUnaryCallback( 219 ZoneUnaryCallback registerUnaryCallback(
121 Zone self, ZoneDelegate parent, Zone zone, f(arg)): null, 220 Zone self, ZoneDelegate parent, Zone zone, f(arg)): null,
122 ZoneBinaryCallback registerBinaryCallback( 221 ZoneBinaryCallback registerBinaryCallback(
123 Zone self, ZoneDelegate parent, Zone zone, f(arg1, arg2)): null, 222 Zone self, ZoneDelegate parent, Zone zone, f(arg1, arg2)): null,
124 AsyncError errorCallback(Zone self, ZoneDelegate parent, Zone zone, 223 AsyncError errorCallback(Zone self, ZoneDelegate parent, Zone zone,
125 Object error, StackTrace stackTrace), 224 Object error, StackTrace stackTrace),
126 void scheduleMicrotask( 225 void scheduleMicrotask(
127 Zone self, ZoneDelegate parent, Zone zone, f()): null, 226 Zone self, ZoneDelegate parent, Zone zone, f()): null,
128 Timer createTimer(Zone self, ZoneDelegate parent, Zone zone, 227
129 Duration duration, void f()): null, 228 Object createTask(Zone self, ZoneDelegate parent, Zone zone,
130 Timer createPeriodicTimer(Zone self, ZoneDelegate parent, Zone zone, 229 TaskSpecification taskSpecification, TaskCreate create): null,
131 Duration period, void f(Timer timer)): null, 230 void runTask(Zone self, ZoneDelegate parent, Zone zone, Object task,
231 TaskRun run): null,
232 void cancelTask(Zone self, ZoneDelegate parent, Zone zone, Object task,
233 TaskCancel cancel): null,
234
132 void print(Zone self, ZoneDelegate parent, Zone zone, String line): null, 235 void print(Zone self, ZoneDelegate parent, Zone zone, String line): null,
133 Zone fork(Zone self, ZoneDelegate parent, Zone zone, 236 Zone fork(Zone self, ZoneDelegate parent, Zone zone,
134 ZoneSpecification specification, 237 ZoneSpecification specification,
135 Map zoneValues): null 238 Map zoneValues): null,
239
240 @deprecated
241 Timer createTimer(Zone self, ZoneDelegate parent, Zone zone,
242 Duration duration, void f()): null,
243 @deprecated
244 Timer createPeriodicTimer(Zone self, ZoneDelegate parent, Zone zone,
245 Duration period, void f(Timer timer)): null
136 }) { 246 }) {
137 return new ZoneSpecification( 247 return new ZoneSpecification(
138 handleUncaughtError: handleUncaughtError ?? other.handleUncaughtError, 248 handleUncaughtError: handleUncaughtError ?? other.handleUncaughtError,
139 run: run ?? other.run, 249 run: run ?? other.run,
140 runUnary: runUnary ?? other.runUnary, 250 runUnary: runUnary ?? other.runUnary,
141 runBinary: runBinary ?? other.runBinary, 251 runBinary: runBinary ?? other.runBinary,
142 registerCallback: registerCallback ?? other.registerCallback, 252 registerCallback: registerCallback ?? other.registerCallback,
143 registerUnaryCallback: registerUnaryCallback ?? 253 registerUnaryCallback: registerUnaryCallback ??
144 other.registerUnaryCallback, 254 other.registerUnaryCallback,
145 registerBinaryCallback: registerBinaryCallback ?? 255 registerBinaryCallback: registerBinaryCallback ??
146 other.registerBinaryCallback, 256 other.registerBinaryCallback,
147 errorCallback: errorCallback ?? other.errorCallback, 257 errorCallback: errorCallback ?? other.errorCallback,
258
259 createTask: createTask ?? other.createTask,
260 runTask: runTask ?? other.runTask,
261 cancelTask: cancelTask ?? other.cancelTask,
262 print : print ?? other.print,
263 fork: fork ?? other.fork,
148 scheduleMicrotask: scheduleMicrotask ?? other.scheduleMicrotask, 264 scheduleMicrotask: scheduleMicrotask ?? other.scheduleMicrotask,
149 createTimer : createTimer ?? other.createTimer, 265 createTimer : createTimer ?? other.createTimer,
150 createPeriodicTimer: createPeriodicTimer ?? other.createPeriodicTimer, 266 createPeriodicTimer: createPeriodicTimer ?? other.createPeriodicTimer);
151 print : print ?? other.print,
152 fork: fork ?? other.fork);
153 } 267 }
154 268
155 HandleUncaughtErrorHandler get handleUncaughtError; 269 HandleUncaughtErrorHandler get handleUncaughtError;
156 RunHandler get run; 270 RunHandler get run;
157 RunUnaryHandler get runUnary; 271 RunUnaryHandler get runUnary;
158 RunBinaryHandler get runBinary; 272 RunBinaryHandler get runBinary;
159 RegisterCallbackHandler get registerCallback; 273 RegisterCallbackHandler get registerCallback;
160 RegisterUnaryCallbackHandler get registerUnaryCallback; 274 RegisterUnaryCallbackHandler get registerUnaryCallback;
161 RegisterBinaryCallbackHandler get registerBinaryCallback; 275 RegisterBinaryCallbackHandler get registerBinaryCallback;
162 ErrorCallbackHandler get errorCallback; 276 ErrorCallbackHandler get errorCallback;
163 ScheduleMicrotaskHandler get scheduleMicrotask; 277 ScheduleMicrotaskHandler get scheduleMicrotask;
164 CreateTimerHandler get createTimer; 278 CreateTaskHandler get createTask;
165 CreatePeriodicTimerHandler get createPeriodicTimer; 279 RunTaskHandler get runTask;
280 CancelTaskHandler get cancelTask;
166 PrintHandler get print; 281 PrintHandler get print;
167 ForkHandler get fork; 282 ForkHandler get fork;
283
284 @deprecated
285 CreateTimerHandler get createTimer;
286 @deprecated
287 CreatePeriodicTimerHandler get createPeriodicTimer;
168 } 288 }
169 289
170 /** 290 /**
171 * Internal [ZoneSpecification] class. 291 * Internal [ZoneSpecification] class.
172 * 292 *
173 * The implementation wants to rely on the fact that the getters cannot change 293 * The implementation wants to rely on the fact that the getters cannot change
174 * dynamically. We thus require users to go through the redirecting 294 * dynamically. We thus require users to go through the redirecting
175 * [ZoneSpecification] constructor which instantiates this class. 295 * [ZoneSpecification] constructor which instantiates this class.
176 */ 296 */
177 class _ZoneSpecification implements ZoneSpecification { 297 class _ZoneSpecification implements ZoneSpecification {
178 const _ZoneSpecification({ 298 const _ZoneSpecification({
179 this.handleUncaughtError: null, 299 this.handleUncaughtError: null,
180 this.run: null, 300 this.run: null,
181 this.runUnary: null, 301 this.runUnary: null,
182 this.runBinary: null, 302 this.runBinary: null,
183 this.registerCallback: null, 303 this.registerCallback: null,
184 this.registerUnaryCallback: null, 304 this.registerUnaryCallback: null,
185 this.registerBinaryCallback: null, 305 this.registerBinaryCallback: null,
186 this.errorCallback: null, 306 this.errorCallback: null,
187 this.scheduleMicrotask: null, 307 this.scheduleMicrotask: null,
308 this.createTask: null,
309 this.runTask: null,
310 this.cancelTask: null,
311 this.print: null,
312 this.fork: null,
313 @deprecated
188 this.createTimer: null, 314 this.createTimer: null,
189 this.createPeriodicTimer: null, 315 @deprecated
190 this.print: null, 316 this.createPeriodicTimer: null
191 this.fork: null
192 }); 317 });
193 318
194 final HandleUncaughtErrorHandler handleUncaughtError; 319 final HandleUncaughtErrorHandler handleUncaughtError;
195 final RunHandler run; 320 final RunHandler run;
196 final RunUnaryHandler runUnary; 321 final RunUnaryHandler runUnary;
197 final RunBinaryHandler runBinary; 322 final RunBinaryHandler runBinary;
198 final RegisterCallbackHandler registerCallback; 323 final RegisterCallbackHandler registerCallback;
199 final RegisterUnaryCallbackHandler registerUnaryCallback; 324 final RegisterUnaryCallbackHandler registerUnaryCallback;
200 final RegisterBinaryCallbackHandler registerBinaryCallback; 325 final RegisterBinaryCallbackHandler registerBinaryCallback;
201 final ErrorCallbackHandler errorCallback; 326 final ErrorCallbackHandler errorCallback;
202 final ScheduleMicrotaskHandler scheduleMicrotask; 327 final ScheduleMicrotaskHandler scheduleMicrotask;
203 final CreateTimerHandler createTimer; 328 final CreateTaskHandler createTask;
204 final CreatePeriodicTimerHandler createPeriodicTimer; 329 final RunTaskHandler runTask;
330 final CancelTaskHandler cancelTask;
205 final PrintHandler print; 331 final PrintHandler print;
206 final ForkHandler fork; 332 final ForkHandler fork;
333
334 @deprecated
335 final CreateTimerHandler createTimer;
336 @deprecated
337 final CreatePeriodicTimerHandler createPeriodicTimer;
207 } 338 }
208 339
209 /** 340 /**
210 * This class wraps zones for delegation. 341 * This class wraps zones for delegation.
211 * 342 *
212 * When forwarding to parent zones one can't just invoke the parent zone's 343 * When forwarding to parent zones one can't just invoke the parent zone's
213 * exposed functions (like [Zone.run]), but one needs to provide more 344 * exposed functions (like [Zone.run]), but one needs to provide more
214 * information (like the zone the `run` was initiated). Zone callbacks thus 345 * information (like the zone the `run` was initiated). Zone callbacks thus
215 * receive more information including this [ZoneDelegate] class. When delegating 346 * receive more information including this [ZoneDelegate] class. When delegating
216 * to the parent zone one should go through the given instance instead of 347 * to the parent zone one should go through the given instance instead of
217 * directly invoking the parent zone. 348 * directly invoking the parent zone.
218 */ 349 */
219 abstract class ZoneDelegate { 350 abstract class ZoneDelegate {
220 dynamic handleUncaughtError(Zone zone, error, StackTrace stackTrace); 351 dynamic handleUncaughtError(Zone zone, error, StackTrace stackTrace);
221 dynamic run(Zone zone, f()); 352 dynamic run(Zone zone, f());
222 dynamic runUnary(Zone zone, f(arg), arg); 353 dynamic runUnary(Zone zone, f(arg), arg);
223 dynamic runBinary(Zone zone, f(arg1, arg2), arg1, arg2); 354 dynamic runBinary(Zone zone, f(arg1, arg2), arg1, arg2);
224 ZoneCallback registerCallback(Zone zone, f()); 355 ZoneCallback registerCallback(Zone zone, f());
225 ZoneUnaryCallback registerUnaryCallback(Zone zone, f(arg)); 356 ZoneUnaryCallback registerUnaryCallback(Zone zone, f(arg));
226 ZoneBinaryCallback registerBinaryCallback(Zone zone, f(arg1, arg2)); 357 ZoneBinaryCallback registerBinaryCallback(Zone zone, f(arg1, arg2));
227 AsyncError errorCallback(Zone zone, Object error, StackTrace stackTrace); 358 AsyncError errorCallback(Zone zone, Object error, StackTrace stackTrace);
228 void scheduleMicrotask(Zone zone, f()); 359 void scheduleMicrotask(Zone zone, f());
229 Timer createTimer(Zone zone, Duration duration, void f()); 360 Object createTask(Zone zone, TaskSpecification task, TaskCreate schedule);
230 Timer createPeriodicTimer(Zone zone, Duration period, void f(Timer timer)); 361 void runTask(Zone zone, Object task, Object arg, TaskRun run);
362 void cancelTask(Zone zone, Object task, TaskCancel cancel);
231 void print(Zone zone, String line); 363 void print(Zone zone, String line);
232 Zone fork(Zone zone, ZoneSpecification specification, Map zoneValues); 364 Zone fork(Zone zone, ZoneSpecification specification, Map zoneValues);
365
366 @deprecated
367 Timer createTimer(Zone zone, Duration duration, void f());
368 @deprecated
369 Timer createPeriodicTimer(Zone zone, Duration period, void f(Timer timer));
233 } 370 }
234 371
235 /** 372 /**
236 * A Zone represents the asynchronous version of a dynamic extent. Asynchronous 373 * A Zone represents the asynchronous version of a dynamic extent. Asynchronous
237 * callbacks are executed in the zone they have been queued in. For example, 374 * callbacks are executed in the zone they have been queued in. For example,
238 * the callback of a `future.then` is executed in the same zone as the one where 375 * the callback of a `future.then` is executed in the same zone as the one where
239 * the `then` was invoked. 376 * the `then` was invoked.
240 */ 377 */
241 abstract class Zone { 378 abstract class Zone {
242 // Private constructor so that it is not possible instantiate a Zone class. 379 // Private constructor so that it is not possible instantiate a Zone class.
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
406 * the new pair of error and stack trace. 543 * the new pair of error and stack trace.
407 * If the [AsyncError.error] is `null`, it is replaced by a [NullThrownError]. 544 * If the [AsyncError.error] is `null`, it is replaced by a [NullThrownError].
408 */ 545 */
409 AsyncError errorCallback(Object error, StackTrace stackTrace); 546 AsyncError errorCallback(Object error, StackTrace stackTrace);
410 547
411 /** 548 /**
412 * Runs [f] asynchronously in this zone. 549 * Runs [f] asynchronously in this zone.
413 */ 550 */
414 void scheduleMicrotask(void f()); 551 void scheduleMicrotask(void f());
415 552
553 Object createTask(TaskSpecification task, TaskCreate create);
554 void runTask(Object task, Object arg1, TaskRun run);
555 void cancelTask(Object task, TaskCancel cancel);
556
416 /** 557 /**
417 * Creates a Timer where the callback is executed in this zone. 558 * Creates a Timer where the callback is executed in this zone.
418 */ 559 */
560 @deprecated
419 Timer createTimer(Duration duration, void callback()); 561 Timer createTimer(Duration duration, void callback());
420 562
421 /** 563 /**
422 * Creates a periodic Timer where the callback is executed in this zone. 564 * Creates a periodic Timer where the callback is executed in this zone.
423 */ 565 */
566 @deprecated
424 Timer createPeriodicTimer(Duration period, void callback(Timer timer)); 567 Timer createPeriodicTimer(Duration period, void callback(Timer timer));
425 568
426 /** 569 /**
427 * Prints the given [line]. 570 * Prints the given [line].
428 */ 571 */
429 void print(String line); 572 void print(String line);
430 573
431 /** 574 /**
432 * Call to enter the Zone. 575 * Call to enter the Zone.
433 * 576 *
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 error, stackTrace); 679 error, stackTrace);
537 } 680 }
538 681
539 void scheduleMicrotask(Zone zone, f()) { 682 void scheduleMicrotask(Zone zone, f()) {
540 _ZoneFunction implementation = _delegationTarget._scheduleMicrotask; 683 _ZoneFunction implementation = _delegationTarget._scheduleMicrotask;
541 _Zone implZone = implementation.zone; 684 _Zone implZone = implementation.zone;
542 ScheduleMicrotaskHandler handler = implementation.function; 685 ScheduleMicrotaskHandler handler = implementation.function;
543 handler(implZone, _parentDelegate(implZone), zone, f); 686 handler(implZone, _parentDelegate(implZone), zone, f);
544 } 687 }
545 688
546 Timer createTimer(Zone zone, Duration duration, void f()) { 689 Object createTask(Zone zone, TaskSpecification task, TaskCreate create) {
547 _ZoneFunction implementation = _delegationTarget._createTimer; 690 _ZoneFunction implementation = _delegationTarget._createTask;
548 _Zone implZone = implementation.zone; 691 _Zone implZone = implementation.zone;
549 CreateTimerHandler handler = implementation.function; 692 CreateTaskHandler handler = implementation.function;
550 return handler(implZone, _parentDelegate(implZone), zone, duration, f); 693 return handler(implZone, _parentDelegate(implZone), zone, task, create);
551 } 694 }
552 695
553 Timer createPeriodicTimer(Zone zone, Duration period, void f(Timer timer)) { 696 void runTask(Zone zone, Object task, Object arg, TaskRun run) {
554 _ZoneFunction implementation = _delegationTarget._createPeriodicTimer; 697 _ZoneFunction implementation = _delegationTarget._runTask;
555 _Zone implZone = implementation.zone; 698 _Zone implZone = implementation.zone;
556 CreatePeriodicTimerHandler handler = implementation.function; 699 RunTaskHandler handler = implementation.function;
557 return handler(implZone, _parentDelegate(implZone), zone, period, f); 700 handler(implZone, _parentDelegate(implZone), zone, task, arg, run);
701 }
702
703 void cancelTask(Zone zone, Object task, TaskCancel cancel) {
704 _ZoneFunction implementation = _delegationTarget._cancelTask;
705 _Zone implZone = implementation.zone;
706 CancelTaskHandler handler = implementation.function;
707 handler(implZone, _parentDelegate(implZone), zone, task, cancel);
558 } 708 }
559 709
560 void print(Zone zone, String line) { 710 void print(Zone zone, String line) {
561 _ZoneFunction implementation = _delegationTarget._print; 711 _ZoneFunction implementation = _delegationTarget._print;
562 _Zone implZone = implementation.zone; 712 _Zone implZone = implementation.zone;
563 PrintHandler handler = implementation.function; 713 PrintHandler handler = implementation.function;
564 handler(implZone, _parentDelegate(implZone), zone, line); 714 handler(implZone, _parentDelegate(implZone), zone, line);
565 } 715 }
566 716
567 Zone fork(Zone zone, ZoneSpecification specification, 717 Zone fork(Zone zone, ZoneSpecification specification,
568 Map zoneValues) { 718 Map zoneValues) {
569 _ZoneFunction implementation = _delegationTarget._fork; 719 _ZoneFunction implementation = _delegationTarget._fork;
570 _Zone implZone = implementation.zone; 720 _Zone implZone = implementation.zone;
571 ForkHandler handler = implementation.function; 721 ForkHandler handler = implementation.function;
572 return handler( 722 return handler(
573 implZone, _parentDelegate(implZone), zone, specification, zoneValues); 723 implZone, _parentDelegate(implZone), zone, specification, zoneValues);
574 } 724 }
725
726 @deprecated
727 Timer createTimer(Zone zone, Duration duration, void f()) {
728 _ZoneFunction implementation = _delegationTarget._createTimer;
729 _Zone implZone = implementation.zone;
730 CreateTimerHandler handler = implementation.function;
731 return handler(implZone, _parentDelegate(implZone), zone, duration, f);
732 }
733
734 @deprecated
735 Timer createPeriodicTimer(Zone zone, Duration period, void f(Timer timer)) {
736 _ZoneFunction implementation = _delegationTarget._createPeriodicTimer;
737 _Zone implZone = implementation.zone;
738 CreatePeriodicTimerHandler handler = implementation.function;
739 return handler(implZone, _parentDelegate(implZone), zone, period, f);
740 }
575 } 741 }
576 742
577 743
578 /** 744 /**
579 * Base class for Zone implementations. 745 * Base class for Zone implementations.
580 */ 746 */
581 abstract class _Zone implements Zone { 747 abstract class _Zone implements Zone {
582 const _Zone(); 748 const _Zone();
583 749
584 _ZoneFunction get _runUnary; 750 _ZoneFunction get _runUnary;
585 _ZoneFunction get _run; 751 _ZoneFunction get _run;
586 _ZoneFunction get _runBinary; 752 _ZoneFunction get _runBinary;
587 _ZoneFunction get _registerCallback; 753 _ZoneFunction get _registerCallback;
588 _ZoneFunction get _registerUnaryCallback; 754 _ZoneFunction get _registerUnaryCallback;
589 _ZoneFunction get _registerBinaryCallback; 755 _ZoneFunction get _registerBinaryCallback;
590 _ZoneFunction get _errorCallback; 756 _ZoneFunction get _errorCallback;
591 _ZoneFunction get _scheduleMicrotask; 757 _ZoneFunction get _scheduleMicrotask;
592 _ZoneFunction get _createTimer; 758 _ZoneFunction get _createTask;
593 _ZoneFunction get _createPeriodicTimer; 759 _ZoneFunction get _runTask;
760 _ZoneFunction get _cancelTask;
594 _ZoneFunction get _print; 761 _ZoneFunction get _print;
595 _ZoneFunction get _fork; 762 _ZoneFunction get _fork;
596 _ZoneFunction get _handleUncaughtError; 763 _ZoneFunction get _handleUncaughtError;
764
765 @deprecated
766 _ZoneFunction get _createTimer;
767 @deprecated
768 _ZoneFunction get _createPeriodicTimer;
769
597 _Zone get parent; 770 _Zone get parent;
598 _ZoneDelegate get _delegate; 771 _ZoneDelegate get _delegate;
599 Map get _map; 772 Map get _map;
600 773
601 bool inSameErrorZone(Zone otherZone) { 774 bool inSameErrorZone(Zone otherZone) {
602 return identical(this, otherZone) || 775 return identical(this, otherZone) ||
603 identical(errorZone, otherZone.errorZone); 776 identical(errorZone, otherZone.errorZone);
604 } 777 }
605 } 778 }
606 779
607 class _CustomZone extends _Zone { 780 class _CustomZone extends _Zone {
608 // The actual zone and implementation of each of these 781 // The actual zone and implementation of each of these
609 // inheritable zone functions. 782 // inheritable zone functions.
610 _ZoneFunction _runUnary; 783 _ZoneFunction _runUnary;
611 _ZoneFunction _run; 784 _ZoneFunction _run;
612 _ZoneFunction _runBinary; 785 _ZoneFunction _runBinary;
613 _ZoneFunction _registerCallback; 786 _ZoneFunction _registerCallback;
614 _ZoneFunction _registerUnaryCallback; 787 _ZoneFunction _registerUnaryCallback;
615 _ZoneFunction _registerBinaryCallback; 788 _ZoneFunction _registerBinaryCallback;
616 _ZoneFunction _errorCallback; 789 _ZoneFunction _errorCallback;
617 _ZoneFunction _scheduleMicrotask; 790 _ZoneFunction _scheduleMicrotask;
618 _ZoneFunction _createTimer; 791 _ZoneFunction _createTask;
619 _ZoneFunction _createPeriodicTimer; 792 _ZoneFunction _runTask;
793 _ZoneFunction _cancelTask;
620 _ZoneFunction _print; 794 _ZoneFunction _print;
621 _ZoneFunction _fork; 795 _ZoneFunction _fork;
622 _ZoneFunction _handleUncaughtError; 796 _ZoneFunction _handleUncaughtError;
623 797
798 @deprecated
799 _ZoneFunction _createTimer;
800 @deprecated
801 _ZoneFunction _createPeriodicTimer;
802
624 // A cached delegate to this zone. 803 // A cached delegate to this zone.
625 ZoneDelegate _delegateCache; 804 ZoneDelegate _delegateCache;
626 805
627 /// The parent zone. 806 /// The parent zone.
628 final _Zone parent; 807 final _Zone parent;
629 808
630 /// The zone's scoped value declaration map. 809 /// The zone's scoped value declaration map.
631 /// 810 ///
632 /// This is always a [HashMap]. 811 /// This is always a [HashMap].
633 final Map _map; 812 final Map _map;
(...skipping 25 matching lines...) Expand all
659 : parent._registerUnaryCallback; 838 : parent._registerUnaryCallback;
660 _registerBinaryCallback = (specification.registerBinaryCallback != null) 839 _registerBinaryCallback = (specification.registerBinaryCallback != null)
661 ? new _ZoneFunction(this, specification.registerBinaryCallback) 840 ? new _ZoneFunction(this, specification.registerBinaryCallback)
662 : parent._registerBinaryCallback; 841 : parent._registerBinaryCallback;
663 _errorCallback = (specification.errorCallback != null) 842 _errorCallback = (specification.errorCallback != null)
664 ? new _ZoneFunction(this, specification.errorCallback) 843 ? new _ZoneFunction(this, specification.errorCallback)
665 : parent._errorCallback; 844 : parent._errorCallback;
666 _scheduleMicrotask = (specification.scheduleMicrotask != null) 845 _scheduleMicrotask = (specification.scheduleMicrotask != null)
667 ? new _ZoneFunction(this, specification.scheduleMicrotask) 846 ? new _ZoneFunction(this, specification.scheduleMicrotask)
668 : parent._scheduleMicrotask; 847 : parent._scheduleMicrotask;
669 _createTimer = (specification.createTimer != null) 848 _createTask = (specification.createTask != null)
670 ? new _ZoneFunction(this, specification.createTimer) 849 ? new _ZoneFunction(this, specification.createTask)
671 : parent._createTimer; 850 : parent._createTask;
672 _createPeriodicTimer = (specification.createPeriodicTimer != null) 851 _runTask = (specification.runTask != null)
673 ? new _ZoneFunction(this, specification.createPeriodicTimer) 852 ? new _ZoneFunction(this, specification.runTask)
674 : parent._createPeriodicTimer; 853 : parent._runTask;
854 _cancelTask = (specification.cancelTask != null)
855 ? new _ZoneFunction(this, specification.runTask)
856 : parent._cancelTask;
675 _print = (specification.print != null) 857 _print = (specification.print != null)
676 ? new _ZoneFunction(this, specification.print) 858 ? new _ZoneFunction(this, specification.print)
677 : parent._print; 859 : parent._print;
678 _fork = (specification.fork != null) 860 _fork = (specification.fork != null)
679 ? new _ZoneFunction(this, specification.fork) 861 ? new _ZoneFunction(this, specification.fork)
680 : parent._fork; 862 : parent._fork;
681 _handleUncaughtError = (specification.handleUncaughtError != null) 863 _handleUncaughtError = (specification.handleUncaughtError != null)
682 ? new _ZoneFunction(this, specification.handleUncaughtError) 864 ? new _ZoneFunction(this, specification.handleUncaughtError)
683 : parent._handleUncaughtError; 865 : parent._handleUncaughtError;
866
867 // Deprecated fields.
868 _createTimer = (specification.createTimer != null)
869 ? new _ZoneFunction(this, specification.createTimer)
870 : parent._createTimer;
871 _createPeriodicTimer = (specification.createPeriodicTimer != null)
872 ? new _ZoneFunction(this, specification.createPeriodicTimer)
873 : parent._createPeriodicTimer;
684 } 874 }
685 875
686 /** 876 /**
687 * The closest error-handling zone. 877 * The closest error-handling zone.
688 * 878 *
689 * Returns `this` if `this` has an error-handler. Otherwise returns the 879 * Returns `this` if `this` has an error-handler. Otherwise returns the
690 * parent's error-zone. 880 * parent's error-zone.
691 */ 881 */
692 Zone get errorZone => _handleUncaughtError.zone; 882 Zone get errorZone => _handleUncaughtError.zone;
693 883
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
840 ErrorCallbackHandler handler = implementation.function; 1030 ErrorCallbackHandler handler = implementation.function;
841 return handler( 1031 return handler(
842 implementationZone, parentDelegate, this, error, stackTrace); 1032 implementationZone, parentDelegate, this, error, stackTrace);
843 } 1033 }
844 1034
845 void scheduleMicrotask(void f()) { 1035 void scheduleMicrotask(void f()) {
846 _ZoneFunction implementation = this._scheduleMicrotask; 1036 _ZoneFunction implementation = this._scheduleMicrotask;
847 assert(implementation != null); 1037 assert(implementation != null);
848 ZoneDelegate parentDelegate = _parentDelegate(implementation.zone); 1038 ZoneDelegate parentDelegate = _parentDelegate(implementation.zone);
849 ScheduleMicrotaskHandler handler = implementation.function; 1039 ScheduleMicrotaskHandler handler = implementation.function;
850 return handler(implementation.zone, parentDelegate, this, f); 1040 handler(implementation.zone, parentDelegate, this, f);
851 } 1041 }
852 1042
1043 Object createTask(TaskSpecification task, TaskCreate create) {
1044 _ZoneFunction implementation = this._createTask;
1045 ZoneDelegate parentDelegate = _parentDelegate(implementation.zone);
1046 CreateTaskHandler handler = implementation.function;
1047 return handler(implementation.zone, parentDelegate, this, task, create);
1048 }
1049
1050 void runTask(Object task, Object arg1, TaskRun run) {
1051 _ZoneFunction implementation = this._runTask;
1052 ZoneDelegate parentDelegate = _parentDelegate(implementation.zone);
1053 RunTaskHandler handler = implementation.function;
1054 handler(implementation.zone, parentDelegate, this, task, arg1, run);
1055 }
1056
1057 void cancelTask(Object task, TaskCancel cancel) {
1058 _ZoneFunction implementation = this._cancelTask;
1059 ZoneDelegate parentDelegate = _parentDelegate(implementation.zone);
1060 CancelTaskHandler handler = implementation.function;
1061 handler(implementation.zone, parentDelegate, this, task, cancel);
1062 }
1063
1064 void print(String line) {
1065 _ZoneFunction implementation = this._print;
1066 assert(implementation != null);
1067 ZoneDelegate parentDelegate = _parentDelegate(implementation.zone);
1068 PrintHandler handler = implementation.function;
1069 return handler(implementation.zone, parentDelegate, this, line);
1070 }
1071
1072 @deprecated
853 Timer createTimer(Duration duration, void f()) { 1073 Timer createTimer(Duration duration, void f()) {
854 _ZoneFunction implementation = this._createTimer; 1074 _ZoneFunction implementation = this._createTimer;
855 assert(implementation != null); 1075 assert(implementation != null);
856 ZoneDelegate parentDelegate = _parentDelegate(implementation.zone); 1076 ZoneDelegate parentDelegate = _parentDelegate(implementation.zone);
857 CreateTimerHandler handler = implementation.function; 1077 CreateTimerHandler handler = implementation.function;
858 return handler(implementation.zone, parentDelegate, this, duration, f); 1078 return handler(implementation.zone, parentDelegate, this, duration, f);
859 } 1079 }
860 1080
1081 @deprecated
861 Timer createPeriodicTimer(Duration duration, void f(Timer timer)) { 1082 Timer createPeriodicTimer(Duration duration, void f(Timer timer)) {
862 _ZoneFunction implementation = this._createPeriodicTimer; 1083 _ZoneFunction implementation = this._createPeriodicTimer;
863 assert(implementation != null); 1084 assert(implementation != null);
864 ZoneDelegate parentDelegate = _parentDelegate(implementation.zone); 1085 ZoneDelegate parentDelegate = _parentDelegate(implementation.zone);
865 CreatePeriodicTimerHandler handler = implementation.function; 1086 CreatePeriodicTimerHandler handler = implementation.function;
866 return handler( 1087 return handler(
867 implementation.zone, parentDelegate, this, duration, f); 1088 implementation.zone, parentDelegate, this, duration, f);
868 } 1089 }
869
870 void print(String line) {
871 _ZoneFunction implementation = this._print;
872 assert(implementation != null);
873 ZoneDelegate parentDelegate = _parentDelegate(implementation.zone);
874 PrintHandler handler = implementation.function;
875 return handler(implementation.zone, parentDelegate, this, line);
876 }
877 } 1090 }
878 1091
879 void _rootHandleUncaughtError( 1092 void _rootHandleUncaughtError(
880 Zone self, ZoneDelegate parent, Zone zone, error, StackTrace stackTrace) { 1093 Zone self, ZoneDelegate parent, Zone zone, error, StackTrace stackTrace) {
881 _schedulePriorityAsyncCallback(() { 1094 _schedulePriorityAsyncCallback(() {
882 if (error == null) error = new NullThrownError(); 1095 if (error == null) error = new NullThrownError();
883 if (stackTrace == null) throw error; 1096 if (stackTrace == null) throw error;
884 _rethrow(error, stackTrace); 1097 _rethrow(error, stackTrace);
885 }); 1098 });
886 } 1099 }
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
942 void _rootScheduleMicrotask(Zone self, ZoneDelegate parent, Zone zone, f()) { 1155 void _rootScheduleMicrotask(Zone self, ZoneDelegate parent, Zone zone, f()) {
943 if (!identical(_ROOT_ZONE, zone)) { 1156 if (!identical(_ROOT_ZONE, zone)) {
944 bool hasErrorHandler = !_ROOT_ZONE.inSameErrorZone(zone); 1157 bool hasErrorHandler = !_ROOT_ZONE.inSameErrorZone(zone);
945 f = zone.bindCallback(f, runGuarded: hasErrorHandler); 1158 f = zone.bindCallback(f, runGuarded: hasErrorHandler);
946 // Use root zone as event zone if the function is already bound. 1159 // Use root zone as event zone if the function is already bound.
947 zone = _ROOT_ZONE; 1160 zone = _ROOT_ZONE;
948 } 1161 }
949 _scheduleAsyncCallback(f); 1162 _scheduleAsyncCallback(f);
950 } 1163 }
951 1164
1165 Object _rootcreateTask(Zone self, ZoneDelegate parent, Zone zone,
1166 TaskSpecification taskSpecification, TaskCreate create) {
1167 return create(taskSpecification, zone);
1168 }
1169
1170 void _rootRunTask(Zone self, ZoneDelegate parent, Zone zone, Object task,
1171 Object arg, TaskRun run) {
1172 if (Zone._current == zone) {
1173 run(task, arg);
1174 return;
1175 }
1176
1177 Zone old = Zone._enter(zone);
1178 try {
1179 run(task, arg);
1180 } finally {
1181 Zone._leave(old);
1182 }
1183 }
1184
1185 void _rootCancelTask(Zone self, ZoneDelegate parent, Zone zone, Object task,
1186 TaskCancel cancel) {
1187 cancel(task);
1188 }
1189
952 Timer _rootCreateTimer(Zone self, ZoneDelegate parent, Zone zone, 1190 Timer _rootCreateTimer(Zone self, ZoneDelegate parent, Zone zone,
953 Duration duration, void callback()) { 1191 Duration duration, void callback()) {
954 if (!identical(_ROOT_ZONE, zone)) { 1192 return new Timer._task(zone, duration, callback);
955 callback = zone.bindCallback(callback);
956 }
957 return Timer._createTimer(duration, callback);
958 } 1193 }
959 1194
960 Timer _rootCreatePeriodicTimer( 1195 Timer _rootCreatePeriodicTimer(
961 Zone self, ZoneDelegate parent, Zone zone, 1196 Zone self, ZoneDelegate parent, Zone zone,
962 Duration duration, void callback(Timer timer)) { 1197 Duration duration, void callback(Timer timer)) {
963 if (!identical(_ROOT_ZONE, zone)) { 1198 return new Timer._periodicTask(zone, duration, callback);
964 callback = zone.bindUnaryCallback(callback);
965 }
966 return Timer._createPeriodicTimer(duration, callback);
967 } 1199 }
968 1200
969 void _rootPrint(Zone self, ZoneDelegate parent, Zone zone, String line) { 1201 void _rootPrint(Zone self, ZoneDelegate parent, Zone zone, String line) {
970 printToConsole(line); 1202 printToConsole(line);
971 } 1203 }
972 1204
973 void _printToZone(String line) { 1205 void _printToZone(String line) {
974 Zone.current.print(line); 1206 Zone.current.print(line);
975 } 1207 }
976 1208
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1013 _ZoneFunction get _registerCallback => 1245 _ZoneFunction get _registerCallback =>
1014 const _ZoneFunction(_ROOT_ZONE, _rootRegisterCallback); 1246 const _ZoneFunction(_ROOT_ZONE, _rootRegisterCallback);
1015 _ZoneFunction get _registerUnaryCallback => 1247 _ZoneFunction get _registerUnaryCallback =>
1016 const _ZoneFunction(_ROOT_ZONE, _rootRegisterUnaryCallback); 1248 const _ZoneFunction(_ROOT_ZONE, _rootRegisterUnaryCallback);
1017 _ZoneFunction get _registerBinaryCallback => 1249 _ZoneFunction get _registerBinaryCallback =>
1018 const _ZoneFunction(_ROOT_ZONE, _rootRegisterBinaryCallback); 1250 const _ZoneFunction(_ROOT_ZONE, _rootRegisterBinaryCallback);
1019 _ZoneFunction get _errorCallback => 1251 _ZoneFunction get _errorCallback =>
1020 const _ZoneFunction(_ROOT_ZONE, _rootErrorCallback); 1252 const _ZoneFunction(_ROOT_ZONE, _rootErrorCallback);
1021 _ZoneFunction get _scheduleMicrotask => 1253 _ZoneFunction get _scheduleMicrotask =>
1022 const _ZoneFunction(_ROOT_ZONE, _rootScheduleMicrotask); 1254 const _ZoneFunction(_ROOT_ZONE, _rootScheduleMicrotask);
1023 _ZoneFunction get _createTimer => 1255 _ZoneFunction get _createTask =>
1024 const _ZoneFunction(_ROOT_ZONE, _rootCreateTimer); 1256 const _ZoneFunction(_ROOT_ZONE, _rootcreateTask);
1025 _ZoneFunction get _createPeriodicTimer => 1257 _ZoneFunction get _runTask =>
1026 const _ZoneFunction(_ROOT_ZONE, _rootCreatePeriodicTimer); 1258 const _ZoneFunction(_ROOT_ZONE, _rootRunTask);
1259 _ZoneFunction get _cancelTask =>
1260 const _ZoneFunction(_ROOT_ZONE, _rootCancelTask);
1027 _ZoneFunction get _print => 1261 _ZoneFunction get _print =>
1028 const _ZoneFunction(_ROOT_ZONE, _rootPrint); 1262 const _ZoneFunction(_ROOT_ZONE, _rootPrint);
1029 _ZoneFunction get _fork => 1263 _ZoneFunction get _fork =>
1030 const _ZoneFunction(_ROOT_ZONE, _rootFork); 1264 const _ZoneFunction(_ROOT_ZONE, _rootFork);
1031 _ZoneFunction get _handleUncaughtError => 1265 _ZoneFunction get _handleUncaughtError =>
1032 const _ZoneFunction(_ROOT_ZONE, _rootHandleUncaughtError); 1266 const _ZoneFunction(_ROOT_ZONE, _rootHandleUncaughtError);
1033 1267
1268 @deprecated
1269 _ZoneFunction get _createTimer =>
1270 const _ZoneFunction(_ROOT_ZONE, _rootCreateTimer);
1271 @deprecated
1272 _ZoneFunction get _createPeriodicTimer =>
1273 const _ZoneFunction(_ROOT_ZONE, _rootCreatePeriodicTimer);
1274
1034 // The parent zone. 1275 // The parent zone.
1035 _Zone get parent => null; 1276 _Zone get parent => null;
1036 1277
1037 /// The zone's scoped value declaration map. 1278 /// The zone's scoped value declaration map.
1038 /// 1279 ///
1039 /// This is always a [HashMap]. 1280 /// This is always a [HashMap].
1040 Map get _map => _rootMap; 1281 Map get _map => _rootMap;
1041 1282
1042 static Map _rootMap = new HashMap(); 1283 static Map _rootMap = new HashMap();
1043 1284
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
1148 ZoneUnaryCallback registerUnaryCallback(f(arg)) => f; 1389 ZoneUnaryCallback registerUnaryCallback(f(arg)) => f;
1149 1390
1150 ZoneBinaryCallback registerBinaryCallback(f(arg1, arg2)) => f; 1391 ZoneBinaryCallback registerBinaryCallback(f(arg1, arg2)) => f;
1151 1392
1152 AsyncError errorCallback(Object error, StackTrace stackTrace) => null; 1393 AsyncError errorCallback(Object error, StackTrace stackTrace) => null;
1153 1394
1154 void scheduleMicrotask(void f()) { 1395 void scheduleMicrotask(void f()) {
1155 _rootScheduleMicrotask(null, null, this, f); 1396 _rootScheduleMicrotask(null, null, this, f);
1156 } 1397 }
1157 1398
1399 Object createTask(TaskSpecification task, TaskCreate create) {
1400 return _rootcreateTask(null, null, this, task, create);
1401 }
1402
1403 void runTask(Object task, Object arg, TaskRun run) {
1404 _rootRunTask(null, null, this, task, arg, run);
1405 }
1406
1407 void cancelTask(Object task, TaskCancel cancel) {
1408 _rootCancelTask(null, null, this, task, cancel);
1409 }
1410
1158 Timer createTimer(Duration duration, void f()) { 1411 Timer createTimer(Duration duration, void f()) {
1159 return Timer._createTimer(duration, f); 1412 return Timer._createTimer(duration, f);
1160 } 1413 }
1161 1414
1162 Timer createPeriodicTimer(Duration duration, void f(Timer timer)) { 1415 Timer createPeriodicTimer(Duration duration, void f(Timer timer)) {
1163 return Timer._createPeriodicTimer(duration, f); 1416 return Timer._createPeriodicTimer(duration, f);
1164 } 1417 }
1165 1418
1166 void print(String line) { 1419 void print(String line) {
1167 printToConsole(line); 1420 printToConsole(line);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1226 handleUncaughtError: errorHandler); 1479 handleUncaughtError: errorHandler);
1227 } 1480 }
1228 Zone zone = Zone.current.fork(specification: zoneSpecification, 1481 Zone zone = Zone.current.fork(specification: zoneSpecification,
1229 zoneValues: zoneValues); 1482 zoneValues: zoneValues);
1230 if (onError != null) { 1483 if (onError != null) {
1231 return zone.runGuarded(body); 1484 return zone.runGuarded(body);
1232 } else { 1485 } else {
1233 return zone.run(body); 1486 return zone.run(body);
1234 } 1487 }
1235 } 1488 }
OLDNEW
« no previous file with comments | « sdk/lib/async/timer.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698