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

Side by Side Diff: runtime/observatory/lib/src/elements/class_view.dart

Issue 2873013004: Omnibus Observatory UI fixes: (Closed)
Patch Set: Created 3 years, 7 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) 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 library class_view_element; 5 library class_view_element;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:html'; 8 import 'dart:html';
9 import 'package:observatory/models.dart' as M; 9 import 'package:observatory/models.dart' as M;
10 import 'package:observatory/src/elements/class_allocation_profile.dart'; 10 import 'package:observatory/src/elements/class_allocation_profile.dart';
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 M.Class _cls; 67 M.Class _cls;
68 M.ClassRepository _classes; 68 M.ClassRepository _classes;
69 M.RetainedSizeRepository _retainedSizes; 69 M.RetainedSizeRepository _retainedSizes;
70 M.ReachableSizeRepository _reachableSizes; 70 M.ReachableSizeRepository _reachableSizes;
71 M.InboundReferencesRepository _references; 71 M.InboundReferencesRepository _references;
72 M.RetainingPathRepository _retainingPaths; 72 M.RetainingPathRepository _retainingPaths;
73 M.StronglyReachableInstancesRepository _stronglyReachableInstances; 73 M.StronglyReachableInstancesRepository _stronglyReachableInstances;
74 M.TopRetainingInstancesRepository _topRetainedInstances; 74 M.TopRetainingInstancesRepository _topRetainedInstances;
75 M.FieldRepository _fields; 75 M.FieldRepository _fields;
76 M.ScriptRepository _scripts; 76 M.ScriptRepository _scripts;
77 M.InstanceRepository _instances; 77 M.ObjectRepository _objects;
78 M.EvalRepository _eval; 78 M.EvalRepository _eval;
79 M.ClassSampleProfileRepository _profiles; 79 M.ClassSampleProfileRepository _profiles;
80 Iterable<M.Field> _classFields; 80 Iterable<M.Field> _classFields;
81 81
82 M.VMRef get vm => _vm; 82 M.VMRef get vm => _vm;
83 M.IsolateRef get isolate => _isolate; 83 M.IsolateRef get isolate => _isolate;
84 M.NotificationRepository get notifications => _notifications; 84 M.NotificationRepository get notifications => _notifications;
85 M.Class get cls => _cls; 85 M.Class get cls => _cls;
86 86
87 factory ClassViewElement( 87 factory ClassViewElement(
88 M.VM vm, 88 M.VM vm,
89 M.IsolateRef isolate, 89 M.IsolateRef isolate,
90 M.Class cls, 90 M.Class cls,
91 M.EventRepository events, 91 M.EventRepository events,
92 M.NotificationRepository notifications, 92 M.NotificationRepository notifications,
93 M.ClassRepository classes, 93 M.ClassRepository classes,
94 M.RetainedSizeRepository retainedSizes, 94 M.RetainedSizeRepository retainedSizes,
95 M.ReachableSizeRepository reachableSizes, 95 M.ReachableSizeRepository reachableSizes,
96 M.InboundReferencesRepository references, 96 M.InboundReferencesRepository references,
97 M.RetainingPathRepository retainingPaths, 97 M.RetainingPathRepository retainingPaths,
98 M.FieldRepository fields, 98 M.FieldRepository fields,
99 M.ScriptRepository scripts, 99 M.ScriptRepository scripts,
100 M.InstanceRepository instances, 100 M.ObjectRepository objects,
101 M.EvalRepository eval, 101 M.EvalRepository eval,
102 M.StronglyReachableInstancesRepository stronglyReachable, 102 M.StronglyReachableInstancesRepository stronglyReachable,
103 M.TopRetainingInstancesRepository topRetained, 103 M.TopRetainingInstancesRepository topRetained,
104 M.ClassSampleProfileRepository profiles, 104 M.ClassSampleProfileRepository profiles,
105 {RenderingQueue queue}) { 105 {RenderingQueue queue}) {
106 assert(vm != null); 106 assert(vm != null);
107 assert(isolate != null); 107 assert(isolate != null);
108 assert(events != null); 108 assert(events != null);
109 assert(notifications != null); 109 assert(notifications != null);
110 assert(cls != null); 110 assert(cls != null);
111 assert(classes != null); 111 assert(classes != null);
112 assert(retainedSizes != null); 112 assert(retainedSizes != null);
113 assert(reachableSizes != null); 113 assert(reachableSizes != null);
114 assert(references != null); 114 assert(references != null);
115 assert(retainingPaths != null); 115 assert(retainingPaths != null);
116 assert(fields != null); 116 assert(fields != null);
117 assert(scripts != null); 117 assert(scripts != null);
118 assert(instances != null); 118 assert(objects != null);
119 assert(eval != null); 119 assert(eval != null);
120 assert(stronglyReachable != null); 120 assert(stronglyReachable != null);
121 assert(topRetained != null); 121 assert(topRetained != null);
122 assert(profiles != null); 122 assert(profiles != null);
123 ClassViewElement e = document.createElement(tag.name); 123 ClassViewElement e = document.createElement(tag.name);
124 e._r = new RenderingScheduler(e, queue: queue); 124 e._r = new RenderingScheduler(e, queue: queue);
125 e._vm = vm; 125 e._vm = vm;
126 e._isolate = isolate; 126 e._isolate = isolate;
127 e._events = events; 127 e._events = events;
128 e._notifications = notifications; 128 e._notifications = notifications;
129 e._cls = cls; 129 e._cls = cls;
130 e._classes = classes; 130 e._classes = classes;
131 e._retainedSizes = retainedSizes; 131 e._retainedSizes = retainedSizes;
132 e._reachableSizes = reachableSizes; 132 e._reachableSizes = reachableSizes;
133 e._references = references; 133 e._references = references;
134 e._retainingPaths = retainingPaths; 134 e._retainingPaths = retainingPaths;
135 e._fields = fields; 135 e._fields = fields;
136 e._scripts = scripts; 136 e._scripts = scripts;
137 e._instances = instances; 137 e._objects = objects;
138 e._eval = eval; 138 e._eval = eval;
139 e._stronglyReachableInstances = stronglyReachable; 139 e._stronglyReachableInstances = stronglyReachable;
140 e._topRetainedInstances = topRetained; 140 e._topRetainedInstances = topRetained;
141 e._profiles = profiles; 141 e._profiles = profiles;
142 return e; 142 return e;
143 } 143 }
144 144
145 ClassViewElement.created() : super.created(); 145 ClassViewElement.created() : super.created();
146 146
147 @override 147 @override
(...skipping 10 matching lines...) Expand all
158 children = []; 158 children = [];
159 } 159 }
160 160
161 ObjectCommonElement _common; 161 ObjectCommonElement _common;
162 ClassInstancesElement _classInstances; 162 ClassInstancesElement _classInstances;
163 bool _loadProfile = false; 163 bool _loadProfile = false;
164 164
165 void render() { 165 void render() {
166 _common = _common ?? 166 _common = _common ??
167 new ObjectCommonElement(_isolate, _cls, _retainedSizes, _reachableSizes, 167 new ObjectCommonElement(_isolate, _cls, _retainedSizes, _reachableSizes,
168 _references, _retainingPaths, _instances, 168 _references, _retainingPaths, _objects,
169 queue: _r.queue); 169 queue: _r.queue);
170 _classInstances = _classInstances ?? 170 _classInstances = _classInstances ??
171 new ClassInstancesElement( 171 new ClassInstancesElement(
172 _isolate, 172 _isolate,
173 _cls, 173 _cls,
174 _retainedSizes, 174 _retainedSizes,
175 _reachableSizes, 175 _reachableSizes,
176 _stronglyReachableInstances, 176 _stronglyReachableInstances,
177 _topRetainedInstances, 177 _topRetainedInstances,
178 _instances, 178 _objects,
179 queue: _r.queue); 179 queue: _r.queue);
180 var header = ''; 180 var header = '';
181 if (_cls.isAbstract) { 181 if (_cls.isAbstract) {
182 header += 'abstract '; 182 header += 'abstract ';
183 } 183 }
184 if (_cls.isPatch) { 184 if (_cls.isPatch) {
185 header += 'patch '; 185 header += 'patch ';
186 } 186 }
187 children = [ 187 children = [
188 navBar([ 188 navBar([
(...skipping 30 matching lines...) Expand all
219 ..classes = ['memberList'] 219 ..classes = ['memberList']
220 ..children = _createMembers(), 220 ..children = _createMembers(),
221 new DivElement() 221 new DivElement()
222 ..children = _cls.error == null 222 ..children = _cls.error == null
223 ? const [] 223 ? const []
224 : [ 224 : [
225 new HRElement(), 225 new HRElement(),
226 new ErrorRefElement(_cls.error, queue: _r.queue) 226 new ErrorRefElement(_cls.error, queue: _r.queue)
227 ], 227 ],
228 new HRElement(), 228 new HRElement(),
229 new EvalBoxElement(_isolate, _cls, _instances, _eval, 229 new EvalBoxElement(_isolate, _cls, _objects, _eval, queue: _r.queue),
230 queue: _r.queue),
231 new HRElement(), 230 new HRElement(),
232 new HeadingElement.h2()..text = 'Fields & Functions', 231 new HeadingElement.h2()..text = 'Fields & Functions',
233 new DivElement() 232 new DivElement()
234 ..classes = ['memberList'] 233 ..classes = ['memberList']
235 ..children = _createElements(), 234 ..children = _createElements(),
236 new HRElement(), 235 new HRElement(),
237 new HeadingElement.h2()..text = 'Instances', 236 new HeadingElement.h2()..text = 'Instances',
238 new DivElement() 237 new DivElement()
239 ..children = _cls.hasAllocations ? [_classInstances] : const [], 238 ..children = _cls.hasAllocations ? [_classInstances] : const [],
240 new HRElement(), 239 new HRElement(),
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 ? [ 274 ? [
276 new ClassAllocationProfileElement(_isolate, _cls, _profiles, 275 new ClassAllocationProfileElement(_isolate, _cls, _profiles,
277 queue: _r.queue) 276 queue: _r.queue)
278 ] 277 ]
279 : const [], 278 : const [],
280 new DivElement() 279 new DivElement()
281 ..children = _cls.location != null 280 ..children = _cls.location != null
282 ? [ 281 ? [
283 new HRElement(), 282 new HRElement(),
284 new SourceInsetElement( 283 new SourceInsetElement(
285 _isolate, _cls.location, _scripts, _instances, _events, 284 _isolate, _cls.location, _scripts, _objects, _events,
286 queue: _r.queue) 285 queue: _r.queue)
287 ] 286 ]
288 : const [], 287 : const [],
289 new HRElement(), 288 new HRElement(),
290 new ViewFooterElement(queue: _r.queue) 289 new ViewFooterElement(queue: _r.queue)
291 ] 290 ]
292 ]; 291 ];
293 } 292 }
294 293
295 bool _fieldsExpanded; 294 bool _fieldsExpanded;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 if (_cls.superType != null) { 342 if (_cls.superType != null) {
344 members.add(new DivElement() 343 members.add(new DivElement()
345 ..classes = ['memberItem'] 344 ..classes = ['memberItem']
346 ..children = [ 345 ..children = [
347 new DivElement() 346 new DivElement()
348 ..classes = ['memberName'] 347 ..classes = ['memberName']
349 ..text = 'supertype', 348 ..text = 'supertype',
350 new DivElement() 349 new DivElement()
351 ..classes = ['memberValue'] 350 ..classes = ['memberValue']
352 ..children = [ 351 ..children = [
353 new InstanceRefElement(_isolate, _cls.superType, _instances, 352 new InstanceRefElement(_isolate, _cls.superType, _objects,
354 queue: _r.queue) 353 queue: _r.queue)
355 ] 354 ]
356 ]); 355 ]);
357 } 356 }
358 if (cls.mixin != null) { 357 if (cls.mixin != null) {
359 members.add(new DivElement() 358 members.add(new DivElement()
360 ..classes = ['memberItem'] 359 ..classes = ['memberItem']
361 ..children = [ 360 ..children = [
362 new DivElement() 361 new DivElement()
363 ..classes = ['memberName'] 362 ..classes = ['memberName']
364 ..text = 'mixin', 363 ..text = 'mixin',
365 new DivElement() 364 new DivElement()
366 ..classes = ['memberValue'] 365 ..classes = ['memberValue']
367 ..children = [ 366 ..children = [
368 new InstanceRefElement(_isolate, _cls.mixin, _instances, 367 new InstanceRefElement(_isolate, _cls.mixin, _objects,
369 queue: _r.queue) 368 queue: _r.queue)
370 ] 369 ]
371 ]); 370 ]);
372 } 371 }
373 if (_cls.subclasses.length > 0) { 372 if (_cls.subclasses.length > 0) {
374 members.add(new DivElement() 373 members.add(new DivElement()
375 ..classes = ['memberItem'] 374 ..classes = ['memberItem']
376 ..children = [ 375 ..children = [
377 new DivElement() 376 new DivElement()
378 ..classes = ['memberName'] 377 ..classes = ['memberName']
(...skipping 16 matching lines...) Expand all
395 members.add(new DivElement() 394 members.add(new DivElement()
396 ..classes = ['memberItem'] 395 ..classes = ['memberItem']
397 ..children = [ 396 ..children = [
398 new DivElement() 397 new DivElement()
399 ..classes = ['memberName'] 398 ..classes = ['memberName']
400 ..text = 'implements', 399 ..text = 'implements',
401 new DivElement() 400 new DivElement()
402 ..classes = ['memberValue'] 401 ..classes = ['memberValue']
403 ..children = (_cls.interfaces 402 ..children = (_cls.interfaces
404 .expand((interf) => [ 403 .expand((interf) => [
405 new InstanceRefElement(_isolate, interf, _instances, 404 new InstanceRefElement(_isolate, interf, _objects,
406 queue: _r.queue), 405 queue: _r.queue),
407 new SpanElement()..text = ', ' 406 new SpanElement()..text = ', '
408 ]) 407 ])
409 .toList() 408 .toList()
410 ..removeLast()) 409 ..removeLast())
411 ]); 410 ]);
412 } 411 }
413 if (_cls.name != _cls.vmName) { 412 if (_cls.name != _cls.vmName) {
414 members.add(new DivElement() 413 members.add(new DivElement()
415 ..classes = ['memberItem'] 414 ..classes = ['memberItem']
(...skipping 28 matching lines...) Expand all
444 ..content = [ 443 ..content = [
445 new DivElement() 444 new DivElement()
446 ..classes = ['memberList'] 445 ..classes = ['memberList']
447 ..children = (fields 446 ..children = (fields
448 .map((f) => new DivElement() 447 .map((f) => new DivElement()
449 ..classes = ['memberItem'] 448 ..classes = ['memberItem']
450 ..children = [ 449 ..children = [
451 new DivElement() 450 new DivElement()
452 ..classes = ['memberName'] 451 ..classes = ['memberName']
453 ..children = [ 452 ..children = [
454 new FieldRefElement(_isolate, f, _instances, 453 new FieldRefElement(_isolate, f, _objects,
455 queue: _r.queue) 454 queue: _r.queue)
456 ], 455 ],
457 new DivElement() 456 new DivElement()
458 ..classes = ['memberValue'] 457 ..classes = ['memberValue']
459 ..children = f.staticValue == null 458 ..children = f.staticValue == null
460 ? const [] 459 ? const []
461 : [ 460 : [
462 anyRef( 461 anyRef(_isolate, f.staticValue, _objects,
463 _isolate, f.staticValue, _instances,
464 queue: _r.queue) 462 queue: _r.queue)
465 ] 463 ]
466 ]) 464 ])
467 .toList()) 465 .toList())
468 ] 466 ]
469 ] 467 ]
470 ]); 468 ]);
471 } 469 }
472 470
473 if (_cls.functions.isNotEmpty) { 471 if (_cls.functions.isNotEmpty) {
(...skipping 29 matching lines...) Expand all
503 await _loadAdditionalData(); 501 await _loadAdditionalData();
504 _r.dirty(); 502 _r.dirty();
505 } 503 }
506 504
507 Future _loadAdditionalData() async { 505 Future _loadAdditionalData() async {
508 _classFields = 506 _classFields =
509 await Future.wait(_cls.fields.map((f) => _fields.get(_isolate, f.id))); 507 await Future.wait(_cls.fields.map((f) => _fields.get(_isolate, f.id)));
510 _r.dirty(); 508 _r.dirty();
511 } 509 }
512 } 510 }
OLDNEW
« no previous file with comments | « runtime/observatory/lib/src/elements/class_instances.dart ('k') | runtime/observatory/lib/src/elements/code_view.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698