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; |
} |
+ } |
}); |
}); |