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

Unified Diff: runtime/observatory/lib/src/elements/debugger.dart

Issue 1217823009: Make VM event streams look like real dart streams. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Polish 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/lib/src/elements/debugger.dart
diff --git a/runtime/observatory/lib/src/elements/debugger.dart b/runtime/observatory/lib/src/elements/debugger.dart
index 2fc89dac77b1d6d5fd4c2cd6224696cc08fa890a..ef5e25bdc8531bd143ed7db230aa2e1dd9a6d950 100644
--- a/runtime/observatory/lib/src/elements/debugger.dart
+++ b/runtime/observatory/lib/src/elements/debugger.dart
@@ -7,7 +7,6 @@ library debugger_page_element;
import 'dart:async';
import 'dart:html';
import 'observatory_element.dart';
-import 'package:observatory/app.dart';
import 'package:observatory/cli.dart';
import 'package:observatory/debugger.dart';
import 'package:observatory/service.dart';
@@ -920,10 +919,8 @@ class ObservatoryDebugger extends Debugger {
pending.add(lib.load());
}
}
+
Future.wait(pending).then((_) {
- if (_subscription == null) {
- _subscription = vm.events.stream.listen(_onEvent);
- }
_refreshStack(isolate.pauseEvent).then((_) {
reportStatus();
});
@@ -948,7 +945,6 @@ class ObservatoryDebugger extends Debugger {
}
Isolate get isolate => _isolate;
Isolate _isolate;
- var _subscription;
void init() {
console.newline();
@@ -1080,7 +1076,7 @@ class ObservatoryDebugger extends Debugger {
});
}
- void _onEvent(ServiceEvent event) {
+ void onEvent(ServiceEvent event) {
switch(event.kind) {
case ServiceEvent.kIsolateStart:
{
@@ -1226,7 +1222,6 @@ class ObservatoryDebugger extends Debugger {
@CustomTag('debugger-page')
class DebuggerPageElement extends ObservatoryElement {
- @published ObservatoryApplication app;
@published Isolate isolate;
isolateChanged(oldValue) {
@@ -1240,6 +1235,9 @@ class DebuggerPageElement extends ObservatoryElement {
debugger.page = this;
}
+ Future<StreamSubscription> _isolateSubscriptionFuture;
+ Future<StreamSubscription> _debugSubscriptionFuture;
+
@override
void attached() {
super.attached();
@@ -1267,6 +1265,22 @@ class DebuggerPageElement extends ObservatoryElement {
debugger.input = $['commandline'];
debugger.input.debugger = debugger;
debugger.init();
+
+ _isolateSubscriptionFuture =
+ app.vm.getIsolateEventStream().then((stream) {
+ return stream.listen(debugger.onEvent);
+ });
+ _debugSubscriptionFuture =
+ app.vm.getDebugEventStream().then((stream) {
+ return stream.listen(debugger.onEvent);
+ });
+ }
+
+ @override
+ void detached() {
+ _isolateSubscriptionFuture.then((subscription) => subscription.cancel());
Cutch 2015/07/07 23:16:09 Bracket with `if (_isolateSubscriptionFuture != nu
turnidge 2015/07/08 20:23:39 Done.
+ _debugSubscriptionFuture.then((subscription) => subscription.cancel());
+ super.detached();
}
}

Powered by Google App Engine
This is Rietveld 408576698