X Tutup
Skip to content

Commit 3593d85

Browse files
committed
fix: remove deprecated zone API usage in testability
Closes #5084
1 parent 6133f2c commit 3593d85

File tree

2 files changed

+24
-19
lines changed

2 files changed

+24
-19
lines changed

modules/angular2/src/core/testability/testability.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {Map, MapWrapper, ListWrapper} from 'angular2/src/core/facade/collection'
44
import {CONST, CONST_EXPR} from 'angular2/src/core/facade/lang';
55
import {BaseException, WrappedException} from 'angular2/src/core/facade/exceptions';
66
import {NgZone} from '../zone/ng_zone';
7-
import {PromiseWrapper} from 'angular2/src/core/facade/async';
7+
import {PromiseWrapper, ObservableWrapper} from 'angular2/src/core/facade/async';
88

99

1010
/**
@@ -24,11 +24,17 @@ export class Testability {
2424

2525
/** @internal */
2626
_watchAngularEvents(_ngZone: NgZone): void {
27-
_ngZone.overrideOnTurnStart(() => { this._isAngularEventPending = true; });
28-
_ngZone.overrideOnEventDone(() => {
29-
this._isAngularEventPending = false;
30-
this._runCallbacksIfReady();
31-
}, true);
27+
ObservableWrapper.subscribe(_ngZone.onTurnStart,
28+
(_) => { this._isAngularEventPending = true; });
29+
30+
_ngZone.runOutsideAngular(() => {
31+
ObservableWrapper.subscribe(_ngZone.onEventDone, (_) => {
32+
if (!_ngZone.hasPendingTimers) {
33+
this._isAngularEventPending = false;
34+
this._runCallbacksIfReady();
35+
}
36+
});
37+
});
3238
}
3339

3440
increasePendingRequestCount(): number {

modules/angular2/test/core/testability/testability_spec.ts

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,30 +14,29 @@ import {
1414
import {Testability} from 'angular2/src/core/testability/testability';
1515
import {NgZone} from 'angular2/src/core/zone/ng_zone';
1616
import {normalizeBlank} from 'angular2/src/core/facade/lang';
17-
import {PromiseWrapper} from 'angular2/src/core/facade/async';
17+
import {PromiseWrapper, EventEmitter, ObservableWrapper} from 'angular2/src/core/facade/async';
1818

1919
// Schedules a microtasks (using a resolved promise .then())
2020
function microTask(fn: Function): void {
2121
PromiseWrapper.resolve(null).then((_) => { fn(); });
2222
}
2323

2424
class MockNgZone extends NgZone {
25-
_onTurnStart: () => void;
26-
_onEventDone: () => void;
25+
_onTurnStartStream: EventEmitter<any>;
26+
get onTurnStart() { return this._onTurnStartStream; }
2727

28-
constructor() { super({enableLongStackTrace: false}); }
28+
_onEventDoneStream: EventEmitter<any>;
29+
get onEventDone() { return this._onEventDoneStream; }
2930

30-
start(): void { this._onTurnStart(); }
31-
32-
finish(): void { this._onEventDone(); }
33-
34-
overrideOnTurnStart(onTurnStartFn: Function): void {
35-
this._onTurnStart = normalizeBlank(onTurnStartFn);
31+
constructor() {
32+
super({enableLongStackTrace: false});
33+
this._onTurnStartStream = new EventEmitter(false);
34+
this._onEventDoneStream = new EventEmitter(false);
3635
}
3736

38-
overrideOnEventDone(onEventDoneFn: Function, waitForAsync: boolean = false): void {
39-
this._onEventDone = normalizeBlank(onEventDoneFn);
40-
}
37+
start(): void { ObservableWrapper.callNext(this._onTurnStartStream, null); }
38+
39+
finish(): void { ObservableWrapper.callNext(this._onEventDoneStream, null); }
4140
}
4241

4342
export function main() {

0 commit comments

Comments
 (0)
X Tutup