@@ -452,7 +452,7 @@ void main() {
452
452
});
453
453
log ('onTurnDone(end)' );
454
454
};
455
- zone.defaultOnScheduleMicrotask = (microTaskFn) {
455
+ zone.onScheduleMicrotask = (microTaskFn) {
456
456
log ('onScheduleMicrotask(begin)' );
457
457
microtaskResult = microTaskFn ();
458
458
log ('onScheduleMicrotask(end)' );
@@ -478,7 +478,7 @@ void main() {
478
478
});
479
479
log ('onTurnDone(end)' );
480
480
};
481
- zone.defaultOnScheduleMicrotask = (microTaskFn) {
481
+ zone.onScheduleMicrotask = (microTaskFn) {
482
482
log ('onScheduleMicrotask(begin)' );
483
483
microTaskFn ();
484
484
log ('onScheduleMicrotask(end)' );
@@ -500,7 +500,7 @@ void main() {
500
500
zone.onTurnDone = () {
501
501
log ('onTurnDone' );
502
502
};
503
- zone.defaultOnScheduleMicrotask = (microTaskFn) {
503
+ zone.onScheduleMicrotask = (microTaskFn) {
504
504
log ('onScheduleMicrotask(begin)' );
505
505
microTaskFn ();
506
506
log ('onScheduleMicrotask(end)' );
@@ -528,7 +528,7 @@ void main() {
528
528
zone.onTurnDone = () {
529
529
log ('onTurnDone' );
530
530
};
531
- zone.defaultOnScheduleMicrotask = (microTaskFn) {
531
+ zone.onScheduleMicrotask = (microTaskFn) {
532
532
log ('onScheduleMicrotask(begin)' );
533
533
microTaskFn ();
534
534
log ('onScheduleMicrotask(end)' );
@@ -541,6 +541,36 @@ void main() {
541
541
' onScheduleMicrotask(end); run; onTurnDone' );
542
542
}));
543
543
544
+ iit ('should execute microtask scheduled outside the turn' , (Logger log) {
545
+ zone = new VmTurnZone ();
546
+
547
+ var taskToRun = null ;
548
+
549
+ zone.onTurnDone = () {
550
+ if (taskToRun != null ) taskToRun ();
551
+ taskToRun = null ;
552
+ log ('onTurnDone' );
553
+ };
554
+
555
+ zone.onScheduleMicrotask = (microTaskFn) {
556
+ log ('onScheduleMicrotask' );
557
+ taskToRun = microTaskFn;
558
+ };
559
+
560
+ var completer;
561
+ zone.run (() {
562
+ completer = new Completer ();
563
+ completer.future.then ((x) => log ('future' ));
564
+ log ('first' );
565
+ });
566
+ completer.complete ();
567
+
568
+ expect (log).toEqual ([
569
+ 'first' , 'onTurnDone' ,
570
+ 'onScheduleMicrotask' , 'future' , 'onTurnDone'
571
+ ]);
572
+ });
573
+
544
574
});
545
575
});
546
576
}
0 commit comments