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

Unified Diff: runtime/observatory/tests/service/test_helper.dart

Issue 1241673003: Async-step, first cut. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 5 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 side-by-side diff with in-line comments
Download patch
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;
}
+ }
});
});

Powered by Google App Engine
This is Rietveld 408576698