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

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

Issue 1013563002: CPU profile displayed in three tables with a tree (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: 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
« no previous file with comments | « no previous file | runtime/observatory/lib/src/app/location_manager.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
13 LocationManager get locationManager => _locationManager;
12 @observable Page currentPage; 14 @observable Page currentPage;
13 @observable final LocationManager locationManager;
14 VM _vm; 15 VM _vm;
15 VM get vm => _vm; 16 VM get vm => _vm;
16 set vm(VM vm) { 17 set vm(VM vm) {
17 if (_vm == vm) { 18 if (_vm == vm) {
18 // Do nothing. 19 // Do nothing.
19 return; 20 return;
20 } 21 }
21 if (_vm != null) { 22 if (_vm != null) {
22 // Disconnect from current VM. 23 // Disconnect from current VM.
23 notifications.clear(); 24 notifications.clear();
(...skipping 11 matching lines...) Expand all
35 } 36 }
36 final TargetManager targets; 37 final TargetManager targets;
37 @reflectable final ObservatoryApplicationElement rootElement; 38 @reflectable final ObservatoryApplicationElement rootElement;
38 39
39 TraceViewElement _traceView = null; 40 TraceViewElement _traceView = null;
40 41
41 @reflectable ServiceObject lastErrorOrException; 42 @reflectable ServiceObject lastErrorOrException;
42 @observable ObservableList<ServiceEvent> notifications = 43 @observable ObservableList<ServiceEvent> notifications =
43 new ObservableList<ServiceEvent>(); 44 new ObservableList<ServiceEvent>();
44 45
45 void _initOnce(bool chromium) { 46 void _initOnce() {
46 assert(app == null); 47 assert(app == null);
47 app = this; 48 app = this;
48 _registerPages(); 49 _registerPages();
49 Analytics.initialize(); 50 Analytics.initialize();
50 locationManager._init(this); 51 // Visit the current page.
52 locationManager._visit();
51 } 53 }
52 54
53 void removePauseEvents(Isolate isolate) { 55 void removePauseEvents(Isolate isolate) {
54 bool isPauseEvent(var event) { 56 bool isPauseEvent(var event) {
55 return (event.eventType == ServiceEvent.kPauseStart || 57 return (event.eventType == ServiceEvent.kPauseStart ||
56 event.eventType == ServiceEvent.kPauseExit || 58 event.eventType == ServiceEvent.kPauseExit ||
57 event.eventType == ServiceEvent.kPauseBreakpoint || 59 event.eventType == ServiceEvent.kPauseBreakpoint ||
58 event.eventType == ServiceEvent.kPauseInterrupted || 60 event.eventType == ServiceEvent.kPauseInterrupted ||
59 event.eventType == ServiceEvent.kPauseException); 61 event.eventType == ServiceEvent.kPauseException);
60 } 62 }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 } 100 }
99 } 101 }
100 102
101 void _registerPages() { 103 void _registerPages() {
102 _pageRegistry.add(new VMPage(this)); 104 _pageRegistry.add(new VMPage(this));
103 _pageRegistry.add(new FlagsPage(this)); 105 _pageRegistry.add(new FlagsPage(this));
104 _pageRegistry.add(new InspectPage(this)); 106 _pageRegistry.add(new InspectPage(this));
105 _pageRegistry.add(new ClassTreePage(this)); 107 _pageRegistry.add(new ClassTreePage(this));
106 _pageRegistry.add(new DebuggerPage(this)); 108 _pageRegistry.add(new DebuggerPage(this));
107 _pageRegistry.add(new CpuProfilerPage(this)); 109 _pageRegistry.add(new CpuProfilerPage(this));
110 _pageRegistry.add(new TableCpuProfilerPage(this));
108 _pageRegistry.add(new AllocationProfilerPage(this)); 111 _pageRegistry.add(new AllocationProfilerPage(this));
109 _pageRegistry.add(new HeapMapPage(this)); 112 _pageRegistry.add(new HeapMapPage(this));
110 _pageRegistry.add(new VMConnectPage(this)); 113 _pageRegistry.add(new VMConnectPage(this));
111 _pageRegistry.add(new ErrorViewPage(this)); 114 _pageRegistry.add(new ErrorViewPage(this));
112 _pageRegistry.add(new MetricsPage(this)); 115 _pageRegistry.add(new MetricsPage(this));
113 // Note that ErrorPage must be the last entry in the list as it is 116 // Note that ErrorPage must be the last entry in the list as it is
114 // the catch all. 117 // the catch all.
115 _pageRegistry.add(new ErrorPage(this)); 118 _pageRegistry.add(new ErrorPage(this));
116 } 119 }
117 120
118 void _onError(ServiceError error) { 121 void _onError(ServiceError error) {
119 lastErrorOrException = error; 122 lastErrorOrException = error;
120 _visit('error/', null); 123 _visit(Uri.parse('error/'), null);
121 } 124 }
122 125
123 void _onException(ServiceException exception) { 126 void _onException(ServiceException exception) {
124 lastErrorOrException = exception; 127 lastErrorOrException = exception;
125 if (exception.kind == 'NetworkException') { 128 if (exception.kind == 'NetworkException') {
126 // Got a network exception, visit the vm-connect page. 129 // Got a network exception, visit the vm-connect page.
127 this.vm = null; 130 this.vm = null;
128 locationManager.go(locationManager.makeLink('/vm-connect/')); 131 locationManager.go(locationManager.makeLink('/vm-connect/'));
129 } else { 132 } else {
130 _visit('error/', null); 133 _visit(Uri.parse('error/'), null);
131 } 134 }
132 } 135 }
133 136
134 void _visit(String url, String args) { 137 void _visit(Uri uri, Map internalArguments) {
135 var argsMap; 138 if (internalArguments['trace'] != null) {
136 if (args == null) { 139 var traceArg = internalArguments['trace'];
137 argsMap = {};
138 } else {
139 argsMap = Uri.splitQueryString(args);
140 }
141 if (argsMap['trace'] != null) {
142 var traceArg = argsMap['trace'];
143 if (traceArg == 'on') { 140 if (traceArg == 'on') {
144 Tracer.start(); 141 Tracer.start();
145 } else if (traceArg == 'off') { 142 } else if (traceArg == 'off') {
146 Tracer.stop(); 143 Tracer.stop();
147 } 144 }
148 } 145 }
149 if (Tracer.current != null) { 146 if (Tracer.current != null) {
150 Tracer.current.reset(); 147 Tracer.current.reset();
151 } 148 }
152 if (_traceView != null) { 149 if (_traceView != null) {
153 _traceView.tracer = Tracer.current; 150 _traceView.tracer = Tracer.current;
154 } 151 }
155 Uri uri = Uri.parse(url);
156 for (var i = 0; i < _pageRegistry.length; i++) { 152 for (var i = 0; i < _pageRegistry.length; i++) {
157 var page = _pageRegistry[i]; 153 var page = _pageRegistry[i];
158 if (page.canVisit(uri)) { 154 if (page.canVisit(uri)) {
159 _installPage(page); 155 _installPage(page);
160 page.visit(uri, argsMap); 156 page.visit(uri, internalArguments);
161 return; 157 return;
162 } 158 }
163 } 159 }
164 throw new FallThroughError(); 160 throw new FallThroughError();
165 } 161 }
166 162
167 /// Set the Observatory application page. 163 /// Set the Observatory application page.
168 void _installPage(Page page) { 164 void _installPage(Page page) {
169 assert(page != null); 165 assert(page != null);
170 if (currentPage == page) { 166 if (currentPage == page) {
(...skipping 18 matching lines...) Expand all
189 // Add tracing support. 185 // Add tracing support.
190 _traceView = new Element.tag('trace-view'); 186 _traceView = new Element.tag('trace-view');
191 _traceView.tracer = Tracer.current; 187 _traceView.tracer = Tracer.current;
192 rootElement.children.add(_traceView); 188 rootElement.children.add(_traceView);
193 189
194 // Remember page. 190 // Remember page.
195 currentPage = page; 191 currentPage = page;
196 } 192 }
197 193
198 ObservatoryApplication(this.rootElement) : 194 ObservatoryApplication(this.rootElement) :
199 locationManager = new HashLocationManager(),
200 targets = new TargetManager() { 195 targets = new TargetManager() {
196 _locationManager = new LocationManager(this);
201 vm = new WebSocketVM(targets.defaultTarget); 197 vm = new WebSocketVM(targets.defaultTarget);
202 _initOnce(false); 198 _initOnce();
203 } 199 }
204 200
205 void _removeDisconnectEvents() { 201 void _removeDisconnectEvents() {
206 notifications.removeWhere((oldEvent) { 202 notifications.removeWhere((oldEvent) {
207 return (oldEvent.eventType == ServiceEvent.kVMDisconnected); 203 return (oldEvent.eventType == ServiceEvent.kVMDisconnected);
208 }); 204 });
209 } 205 }
210 206
211 _vmConnected(VM vm) { 207 _vmConnected(VM vm) {
212 if (vm is WebSocketVM) { 208 if (vm is WebSocketVM) {
213 targets.add(vm.target); 209 targets.add(vm.target);
214 } 210 }
215 _removeDisconnectEvents(); 211 _removeDisconnectEvents();
216 } 212 }
217 213
218 _vmDisconnected(VM vm) { 214 _vmDisconnected(VM vm) {
219 if (this.vm != vm) { 215 if (this.vm != vm) {
220 // This disconnect event occured *after* a new VM was installed. 216 // This disconnect event occured *after* a new VM was installed.
221 return; 217 return;
222 } 218 }
223 this.vm = null; 219 this.vm = null;
224 notifications.add(new ServiceEvent.vmDisconencted()); 220 notifications.add(new ServiceEvent.vmDisconencted());
225 } 221 }
226 } 222 }
OLDNEW
« no previous file with comments | « no previous file | runtime/observatory/lib/src/app/location_manager.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698