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

Side by Side Diff: runtime/observatory/lib/src/app/application.dart

Issue 1093043004: Do not JSON encode the 'result' of a service rpc. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: code review Created 5 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of app; 5 part of app;
6 6
7 /// The observatory application. Instances of this are created and owned 7 /// The observatory application. Instances of this are created and owned
8 /// by the observatory_application custom element. 8 /// by the observatory_application custom element.
9 class ObservatoryApplication extends Observable { 9 class ObservatoryApplication extends Observable {
10 static ObservatoryApplication app; 10 static ObservatoryApplication app;
11 final _pageRegistry = new List<Page>(); 11 final _pageRegistry = new List<Page>();
12 LocationManager _locationManager; 12 LocationManager _locationManager;
13 LocationManager get locationManager => _locationManager; 13 LocationManager get locationManager => _locationManager;
14 @observable Page currentPage; 14 @observable Page currentPage;
15 VM _vm; 15 VM _vm;
16 VM get vm => _vm; 16 VM get vm => _vm;
17 set vm(VM vm) { 17 set vm(VM vm) {
18 if (_vm == vm) { 18 if (_vm == vm) {
19 // Do nothing. 19 // Do nothing.
20 return; 20 return;
21 } 21 }
22 if (_vm != null) { 22 if (_vm != null) {
23 // Disconnect from current VM. 23 // Disconnect from current VM.
24 notifications.clear(); 24 notifications.clear();
25 _vm.disconnect(); 25 _vm.disconnect();
26 } 26 }
27 if (vm != null) { 27 if (vm != null) {
28 Logger.root.info('Registering new VM callbacks'); 28 Logger.root.info('Registering new VM callbacks');
29 vm.onConnect.then(_vmConnected); 29
30 vm.onDisconnect.then(_vmDisconnected); 30 vm.onConnect.then((_) {
31 if (vm is WebSocketVM) {
32 targets.add(vm.target);
33 }
34 _removeDisconnectEvents();
35 });
36
37 vm.onDisconnect.then((String reason) {
38 if (this.vm != vm) {
39 // This disconnect event occured *after* a new VM was installed.
40 return;
41 }
42 notifications.add(new ServiceEvent.connectionClosed(reason));
43 });
44
31 vm.errors.stream.listen(_onError); 45 vm.errors.stream.listen(_onError);
32 vm.events.stream.listen(_onEvent); 46 vm.events.stream.listen(_onEvent);
33 vm.exceptions.stream.listen(_onException); 47 vm.exceptions.stream.listen(_onException);
34 } 48 }
35 _vm = vm; 49 _vm = vm;
36 } 50 }
37 final TargetManager targets; 51 final TargetManager targets;
38 @reflectable final ObservatoryApplicationElement rootElement; 52 @reflectable final ObservatoryApplicationElement rootElement;
39 53
40 TraceViewElement _traceView = null; 54 TraceViewElement _traceView = null;
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 _visit(Uri.parse('error/'), null); 137 _visit(Uri.parse('error/'), null);
124 } 138 }
125 139
126 void _onException(ServiceException exception) { 140 void _onException(ServiceException exception) {
127 lastErrorOrException = exception; 141 lastErrorOrException = exception;
128 if (exception.kind == 'NetworkException') { 142 if (exception.kind == 'NetworkException') {
129 // Got a network exception, visit the vm-connect page. 143 // Got a network exception, visit the vm-connect page.
130 this.vm = null; 144 this.vm = null;
131 locationManager.go(locationManager.makeLink('/vm-connect/')); 145 locationManager.go(locationManager.makeLink('/vm-connect/'));
132 } else { 146 } else {
133 _visit(Uri.parse('error/'), null); 147 _visit(Uri.parse('error/'), {});
134 } 148 }
135 } 149 }
136 150
137 void _visit(Uri uri, Map internalArguments) { 151 void _visit(Uri uri, Map internalArguments) {
138 if (internalArguments['trace'] != null) { 152 if (internalArguments['trace'] != null) {
139 var traceArg = internalArguments['trace']; 153 var traceArg = internalArguments['trace'];
140 if (traceArg == 'on') { 154 if (traceArg == 'on') {
141 Tracer.start(); 155 Tracer.start();
142 } else if (traceArg == 'off') { 156 } else if (traceArg == 'off') {
143 Tracer.stop(); 157 Tracer.stop();
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 207
194 ObservatoryApplication(this.rootElement) : 208 ObservatoryApplication(this.rootElement) :
195 targets = new TargetManager() { 209 targets = new TargetManager() {
196 _locationManager = new LocationManager(this); 210 _locationManager = new LocationManager(this);
197 vm = new WebSocketVM(targets.defaultTarget); 211 vm = new WebSocketVM(targets.defaultTarget);
198 _initOnce(); 212 _initOnce();
199 } 213 }
200 214
201 void _removeDisconnectEvents() { 215 void _removeDisconnectEvents() {
202 notifications.removeWhere((oldEvent) { 216 notifications.removeWhere((oldEvent) {
203 return (oldEvent.eventType == ServiceEvent.kVMDisconnected); 217 return (oldEvent.eventType == ServiceEvent.kConnectionClosed);
204 }); 218 });
205 } 219 }
206
207 _vmConnected(VM vm) {
208 if (vm is WebSocketVM) {
209 targets.add(vm.target);
210 }
211 _removeDisconnectEvents();
212 }
213
214 _vmDisconnected(VM vm) {
215 if (this.vm != vm) {
216 // This disconnect event occured *after* a new VM was installed.
217 return;
218 }
219 this.vm = null;
220 notifications.add(new ServiceEvent.vmDisconencted());
221 }
222 } 220 }
OLDNEW
« no previous file with comments | « runtime/observatory/lib/service_common.dart ('k') | runtime/observatory/lib/src/app/location_manager.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698