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

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

Issue 2989083002: Add memory-dashboard page to Observatory (Closed)
Patch Set: Addressed CL comments Created 3 years, 4 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
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 final _allocationProfileRepository = new AllocationProfileRepository(); 7 final _allocationProfileRepository = new AllocationProfileRepository();
8 final _breakpointRepository = new BreakpointRepository(); 8 final _breakpointRepository = new BreakpointRepository();
9 final _classRepository = new ClassRepository(); 9 final _classRepository = new ClassRepository();
10 final _classSampleProfileRepository = new ClassSampleProfileRepository(); 10 final _classSampleProfileRepository = new ClassSampleProfileRepository();
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 var isolateId = uri.queryParameters['isolateId']; 98 var isolateId = uri.queryParameters['isolateId'];
99 return app.vm.getIsolate(isolateId).then((isolate) { 99 return app.vm.getIsolate(isolateId).then((isolate) {
100 if (isolate == null) { 100 if (isolate == null) {
101 throw new IsolateNotFound(isolateId); 101 throw new IsolateNotFound(isolateId);
102 } 102 }
103 return isolate; 103 return isolate;
104 }); 104 });
105 } 105 }
106 106
107 EditorRepository getEditor(Uri uri) { 107 EditorRepository getEditor(Uri uri) {
108 var editor = uri.queryParameters['editor']; 108 final editor = uri.queryParameters['editor'];
109 if (editor != null) { 109 return new EditorRepository(app.vm, editor: editor);
110 return new EditorRepository(editor);
111 }
112 return null; 110 return null;
113 } 111 }
114 112
115 bool canVisit(Uri uri) => uri.path == path; 113 bool canVisit(Uri uri) => uri.path == path;
116 } 114 }
117 115
118 /// A [SimplePage] matches a single uri path and displays a single element. 116 /// A [SimplePage] matches a single uri path and displays a single element.
119 class SimplePage extends MatchingPage { 117 class SimplePage extends MatchingPage {
120 final String elementTagName; 118 final String elementTagName;
121 SimplePage(String path, this.elementTagName, app) : super(path, app); 119 SimplePage(String path, this.elementTagName, app) : super(path, app);
(...skipping 570 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 } 690 }
693 } 691 }
694 692
695 class MemoryDashboardPage extends MatchingPage { 693 class MemoryDashboardPage extends MatchingPage {
696 MemoryDashboardPage(app) : super('memory-dashboard', app); 694 MemoryDashboardPage(app) : super('memory-dashboard', app);
697 695
698 final DivElement container = new DivElement(); 696 final DivElement container = new DivElement();
699 697
700 void _visit(Uri uri) { 698 void _visit(Uri uri) {
701 super._visit(uri); 699 super._visit(uri);
702 getIsolate(uri).then((isolate) { 700 if (app.vm == null) {
701 Logger.root.severe('MemoryDashboard has no VM');
702 // Reroute to vm-connect.
703 app.locationManager.go(Uris.vmConnect());
704 return;
705 }
706 final editor = getEditor(uri);
707 app.vm.reload().then((VM vm) async {
708 // Preload all isolates to avoid sorting problems.
709 await Future.wait(vm.isolates.map((i) => i.load()));
703 container.children = [ 710 container.children = [
704 new MemoryDashboardElement(isolate.vm, isolate, app.events, 711 new MemoryDashboardElement(vm, new IsolateRepository(vm), editor,
705 app.notifications, _allocationProfileRepository, getEditor(uri), 712 _allocationProfileRepository, app.events, app.notifications,
706 queue: app.queue) 713 queue: app.queue)
707 ]; 714 ];
715 }).catchError((e, stack) {
716 Logger.root.severe('MemoryDashboard visit error: $e');
717 // Reroute to vm-connect.
718 app.locationManager.go(Uris.vmConnect());
708 }); 719 });
709 } 720 }
710 721
711 void onInstall() { 722 void onInstall() {
712 if (element == null) { 723 if (element == null) {
713 element = container; 724 element = container;
714 } 725 }
715 app.startGCEventListener(); 726 app.startGCEventListener();
716 } 727 }
717 728
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
953 element = new TimelinePageElement(app.vm, app.events, app.notifications, 964 element = new TimelinePageElement(app.vm, app.events, app.notifications,
954 queue: app.queue); 965 queue: app.queue);
955 } 966 }
956 967
957 void _visit(Uri uri) { 968 void _visit(Uri uri) {
958 assert(canVisit(uri)); 969 assert(canVisit(uri));
959 } 970 }
960 971
961 bool canVisit(Uri uri) => uri.path == 'timeline'; 972 bool canVisit(Uri uri) => uri.path == 'timeline';
962 } 973 }
OLDNEW
« no previous file with comments | « runtime/observatory/lib/elements.dart ('k') | runtime/observatory/lib/src/elements/css/shared.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698