Chromium Code Reviews| Index: runtime/observatory/tests/service/test_helper.dart |
| diff --git a/runtime/observatory/tests/service/test_helper.dart b/runtime/observatory/tests/service/test_helper.dart |
| index 8ff0b253878d157626367658ccfcfb9ce534a2cc..7016fb66027fe2f8d894915c8b87908ebe169dce 100644 |
| --- a/runtime/observatory/tests/service/test_helper.dart |
| +++ b/runtime/observatory/tests/service/test_helper.dart |
| @@ -155,26 +155,35 @@ Future processServiceEvents(VM vm, |
| } |
| -Future<Isolate> hasStoppedAtBreakpoint(Isolate isolate) async { |
| - await isolate.reload(); // Might have missed pauseEvent. |
| - |
| - if ((isolate.pauseEvent != null) && |
| - (isolate.pauseEvent.kind == ServiceEvent.kPauseBreakpoint)) { |
| - // Already waiting at a breakpoint. |
| - print('Breakpoint reached'); |
| - return new Future.value(isolate); |
| - } |
| - |
| +Future<Isolate> hasStoppedAtBreakpoint(Isolate isolate) { |
|
Cutch
2015/07/15 17:04:23
why remove async?
why switch from using await to u
|
| // Set up a listener to wait for breakpoint events. |
| Completer completer = new Completer(); |
| isolate.vm.getEventStream(VM.kDebugStream).then((stream) { |
| var subscription; |
| subscription = stream.listen((ServiceEvent event) { |
| + print("Event: $event"); |
| if (event.kind == ServiceEvent.kPauseBreakpoint) { |
| print('Breakpoint reached'); |
| subscription.cancel(); |
| - completer.complete(); |
| + if (completer != null) { |
| + completer.complete(isolate); |
| + completer = null; |
| + } |
| + } |
| + }); |
| + |
| + // Pause may have happened before we subscribed. |
| + isolate.reload().then((_) { |
| + if ((isolate.pauseEvent != null) && |
| + (isolate.pauseEvent.kind == ServiceEvent.kPauseBreakpoint)) { |
| + // Already waiting at a breakpoint. |
| + print('Breakpoint reached'); |
| + subscription.cancel(); |
| + if (completer != null) { |
| + completer.complete(isolate); |
| + completer = null; |
| } |
| + } |
| }); |
| }); |