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

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

Issue 2345023003: Use dartfmt on Observatory code (Closed)
Patch Set: merge Created 4 years, 3 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 15 matching lines...) Expand all
26 import 'package:observatory/src/elements/nav/notify.dart'; 26 import 'package:observatory/src/elements/nav/notify.dart';
27 import 'package:observatory/src/elements/nav/refresh.dart'; 27 import 'package:observatory/src/elements/nav/refresh.dart';
28 import 'package:observatory/src/elements/nav/top_menu.dart'; 28 import 'package:observatory/src/elements/nav/top_menu.dart';
29 import 'package:observatory/src/elements/nav/vm_menu.dart'; 29 import 'package:observatory/src/elements/nav/vm_menu.dart';
30 import 'package:observatory/src/elements/object_common.dart'; 30 import 'package:observatory/src/elements/object_common.dart';
31 import 'package:observatory/src/elements/source_inset.dart'; 31 import 'package:observatory/src/elements/source_inset.dart';
32 import 'package:observatory/src/elements/source_link.dart'; 32 import 'package:observatory/src/elements/source_link.dart';
33 import 'package:observatory/src/elements/view_footer.dart'; 33 import 'package:observatory/src/elements/view_footer.dart';
34 34
35 class ClassViewElement extends HtmlElement implements Renderable { 35 class ClassViewElement extends HtmlElement implements Renderable {
36 static const tag = const Tag<ClassViewElement>('class-view', 36 static const tag =
37 dependencies: const [ 37 const Tag<ClassViewElement>('class-view', dependencies: const [
38 ClassInstancesElement.tag, 38 ClassInstancesElement.tag,
39 ClassRefElement.tag, 39 ClassRefElement.tag,
40 CurlyBlockElement.tag, 40 CurlyBlockElement.tag,
41 ErrorRefElement.tag, 41 ErrorRefElement.tag,
42 EvalBoxElement.tag, 42 EvalBoxElement.tag,
43 FieldRefElement.tag, 43 FieldRefElement.tag,
44 FunctionRefElement.tag, 44 FunctionRefElement.tag,
45 InstanceRefElement.tag, 45 InstanceRefElement.tag,
46 LibraryRefElement.tag, 46 LibraryRefElement.tag,
47 NavClassMenuElement.tag, 47 NavClassMenuElement.tag,
48 NavTopMenuElement.tag, 48 NavTopMenuElement.tag,
49 NavVMMenuElement.tag, 49 NavVMMenuElement.tag,
50 NavIsolateMenuElement.tag, 50 NavIsolateMenuElement.tag,
51 NavRefreshElement.tag, 51 NavRefreshElement.tag,
52 NavNotifyElement.tag, 52 NavNotifyElement.tag,
53 ObjectCommonElement.tag, 53 ObjectCommonElement.tag,
54 SourceInsetElement.tag, 54 SourceInsetElement.tag,
55 SourceLinkElement.tag, 55 SourceLinkElement.tag,
56 ViewFooterElement.tag 56 ViewFooterElement.tag
57 ]); 57 ]);
58 58
59 RenderingScheduler<ClassViewElement> _r; 59 RenderingScheduler<ClassViewElement> _r;
60 60
61 Stream<RenderedEvent<ClassViewElement>> get onRendered => _r.onRendered; 61 Stream<RenderedEvent<ClassViewElement>> get onRendered => _r.onRendered;
62 62
63 M.VM _vm; 63 M.VM _vm;
64 M.IsolateRef _isolate; 64 M.IsolateRef _isolate;
65 M.EventRepository _events; 65 M.EventRepository _events;
66 M.NotificationRepository _notifications; 66 M.NotificationRepository _notifications;
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.InstanceRepository _instances;
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
83 M.VMRef get vm => _vm; 82 M.VMRef get vm => _vm;
84 M.IsolateRef get isolate => _isolate; 83 M.IsolateRef get isolate => _isolate;
85 M.NotificationRepository get notifications => _notifications; 84 M.NotificationRepository get notifications => _notifications;
86 M.Class get cls => _cls; 85 M.Class get cls => _cls;
87 86
88 factory ClassViewElement(M.VM vm, M.IsolateRef isolate, M.Class cls, 87 factory ClassViewElement(
89 M.EventRepository events, 88 M.VM vm,
90 M.NotificationRepository notifications, 89 M.IsolateRef isolate,
91 M.ClassRepository classes, 90 M.Class cls,
92 M.RetainedSizeRepository retainedSizes, 91 M.EventRepository events,
93 M.ReachableSizeRepository reachableSizes, 92 M.NotificationRepository notifications,
94 M.InboundReferencesRepository references, 93 M.ClassRepository classes,
95 M.RetainingPathRepository retainingPaths, 94 M.RetainedSizeRepository retainedSizes,
96 M.FieldRepository fields, 95 M.ReachableSizeRepository reachableSizes,
97 M.ScriptRepository scripts, 96 M.InboundReferencesRepository references,
98 M.InstanceRepository instances, 97 M.RetainingPathRepository retainingPaths,
99 M.EvalRepository eval, 98 M.FieldRepository fields,
100 M.StronglyReachableInstancesRepository stronglyReachable, 99 M.ScriptRepository scripts,
101 M.TopRetainingInstancesRepository topRetained, 100 M.InstanceRepository instances,
102 M.ClassSampleProfileRepository profiles, 101 M.EvalRepository eval,
103 {RenderingQueue queue}) { 102 M.StronglyReachableInstancesRepository stronglyReachable,
103 M.TopRetainingInstancesRepository topRetained,
104 M.ClassSampleProfileRepository profiles,
105 {RenderingQueue queue}) {
104 assert(vm != null); 106 assert(vm != null);
105 assert(isolate != null); 107 assert(isolate != null);
106 assert(events != null); 108 assert(events != null);
107 assert(notifications != null); 109 assert(notifications != null);
108 assert(cls != null); 110 assert(cls != null);
109 assert(classes != null); 111 assert(classes != null);
110 assert(retainedSizes != null); 112 assert(retainedSizes != null);
111 assert(reachableSizes != null); 113 assert(reachableSizes != null);
112 assert(references != null); 114 assert(references != null);
113 assert(retainingPaths != null); 115 assert(retainingPaths != null);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 super.detached(); 156 super.detached();
155 _r.disable(notify: true); 157 _r.disable(notify: true);
156 children = []; 158 children = [];
157 } 159 }
158 160
159 ObjectCommonElement _common; 161 ObjectCommonElement _common;
160 ClassInstancesElement _classInstances; 162 ClassInstancesElement _classInstances;
161 bool _loadProfile = false; 163 bool _loadProfile = false;
162 164
163 void render() { 165 void render() {
164 _common = _common ?? new ObjectCommonElement(_isolate, _cls, _retainedSizes, 166 _common = _common ??
165 _reachableSizes, _references, _retainingPaths, _instances, 167 new ObjectCommonElement(_isolate, _cls, _retainedSizes, _reachableSizes,
166 queue: _r.queue); 168 _references, _retainingPaths, _instances,
167 _classInstances = _classInstances ?? new ClassInstancesElement(_isolate, 169 queue: _r.queue);
168 _cls, _retainedSizes, _reachableSizes, _stronglyReachableInstances, 170 _classInstances = _classInstances ??
169 _topRetainedInstances, _instances, queue: _r.queue); 171 new ClassInstancesElement(
172 _isolate,
173 _cls,
174 _retainedSizes,
175 _reachableSizes,
176 _stronglyReachableInstances,
177 _topRetainedInstances,
178 _instances,
179 queue: _r.queue);
170 var header = ''; 180 var header = '';
171 if (_cls.isAbstract) { 181 if (_cls.isAbstract) {
172 header += 'abstract '; 182 header += 'abstract ';
173 } 183 }
174 if (_cls.isPatch) { 184 if (_cls.isPatch) {
175 header += 'patch '; 185 header += 'patch ';
176 } 186 }
177 children = [ 187 children = [
178 navBar([ 188 navBar([
179 new NavTopMenuElement(queue: _r.queue), 189 new NavTopMenuElement(queue: _r.queue),
180 new NavVMMenuElement(_vm, _events, queue: _r.queue), 190 new NavVMMenuElement(_vm, _events, queue: _r.queue),
181 new NavIsolateMenuElement(_isolate, _events, queue: _r.queue), 191 new NavIsolateMenuElement(_isolate, _events, queue: _r.queue),
182 new NavClassMenuElement(_isolate, _cls, queue: _r.queue), 192 new NavClassMenuElement(_isolate, _cls, queue: _r.queue),
183 new NavRefreshElement(label: 'Refresh Allocation Profile', 193 new NavRefreshElement(
184 queue: _r.queue) 194 label: 'Refresh Allocation Profile', queue: _r.queue)
185 ..onRefresh.listen((e) { 195 ..onRefresh.listen((e) {
186 e.element.disabled = true; 196 e.element.disabled = true;
187 _loadProfile = true; 197 _loadProfile = true;
188 _r.dirty(); 198 _r.dirty();
189 }), 199 }),
190 new NavRefreshElement(queue: _r.queue) 200 new NavRefreshElement(queue: _r.queue)
191 ..onRefresh.listen((e) { 201 ..onRefresh.listen((e) {
192 e.element.disabled = true; 202 e.element.disabled = true;
193 _common = null; 203 _common = null;
194 _classInstances = null; 204 _classInstances = null;
195 _fieldsExpanded = null; 205 _fieldsExpanded = null;
196 _functionsExpanded = null; 206 _functionsExpanded = null;
197 _refresh(); 207 _refresh();
198 }), 208 }),
199 new NavNotifyElement(_notifications, queue: _r.queue) 209 new NavNotifyElement(_notifications, queue: _r.queue)
200 ]), 210 ]),
201 new DivElement()..classes = ['content-centered-big'] 211 new DivElement()
212 ..classes = ['content-centered-big']
202 ..children = [ 213 ..children = [
203 new HeadingElement.h2()..text = '$header class ${_cls.name}', 214 new HeadingElement.h2()..text = '$header class ${_cls.name}',
204 new HRElement(), 215 new HRElement(),
205 _common, 216 _common,
206 new BRElement(), 217 new BRElement(),
207 new DivElement()..classes = ['memberList'] 218 new DivElement()
219 ..classes = ['memberList']
208 ..children = _createMembers(), 220 ..children = _createMembers(),
209 new DivElement() 221 new DivElement()
210 ..children = _cls.error == null 222 ..children = _cls.error == null
211 ? const [] 223 ? const []
212 : [ 224 : [
213 new HRElement(), 225 new HRElement(),
214 new ErrorRefElement(_cls.error, queue: _r.queue) 226 new ErrorRefElement(_cls.error, queue: _r.queue)
215 ], 227 ],
216 new HRElement(), 228 new HRElement(),
217 new EvalBoxElement(_isolate, _cls, _instances, _eval, 229 new EvalBoxElement(_isolate, _cls, _instances, _eval,
218 queue: _r.queue), 230 queue: _r.queue),
219 new HRElement(), 231 new HRElement(),
220 new HeadingElement.h2()..text = 'Fields & Functions', 232 new HeadingElement.h2()..text = 'Fields & Functions',
221 new DivElement()..classes = ['memberList'] 233 new DivElement()
234 ..classes = ['memberList']
222 ..children = _createElements(), 235 ..children = _createElements(),
223 new HRElement(), 236 new HRElement(),
224 new HeadingElement.h2()..text = 'Instances', 237 new HeadingElement.h2()..text = 'Instances',
225 new DivElement() 238 new DivElement()
226 ..children = _cls.hasAllocations 239 ..children = _cls.hasAllocations ? [_classInstances] : const [],
227 ? [_classInstances]
228 : const [],
229 new HRElement(), 240 new HRElement(),
230 new HeadingElement.h2()..text = 'Allocations', 241 new HeadingElement.h2()..text = 'Allocations',
231 new DivElement()..classes = ['memberList'] 242 new DivElement()
243 ..classes = ['memberList']
232 ..children = [ 244 ..children = [
233 new DivElement()..classes = ['memberName'] 245 new DivElement()
246 ..classes = ['memberName']
234 ..text = 'Tracing allocations? ', 247 ..text = 'Tracing allocations? ',
235 new DivElement()..classes = ['memberValue'] 248 new DivElement()
249 ..classes = ['memberValue']
236 ..children = _cls.traceAllocations 250 ..children = _cls.traceAllocations
237 ? [ 251 ? [
238 new SpanElement()..text = 'Yes ', 252 new SpanElement()..text = 'Yes ',
239 new ButtonElement()..text = 'disable' 253 new ButtonElement()
240 ..onClick.listen((e) async { 254 ..text = 'disable'
241 e.target.disabled = true; 255 ..onClick.listen((e) async {
242 await _profiles.disable(_isolate, _cls); 256 e.target.disabled = true;
243 _loadProfile = true; 257 await _profiles.disable(_isolate, _cls);
244 _refresh(); 258 _loadProfile = true;
245 }) 259 _refresh();
246 ] 260 })
247 : [ 261 ]
248 new SpanElement()..text = 'No ', 262 : [
249 new ButtonElement()..text = 'enable' 263 new SpanElement()..text = 'No ',
250 ..onClick.listen((e) async { 264 new ButtonElement()
251 e.target.disabled = true; 265 ..text = 'enable'
252 await _profiles.enable(_isolate, _cls); 266 ..onClick.listen((e) async {
253 _refresh(); 267 e.target.disabled = true;
254 }) 268 await _profiles.enable(_isolate, _cls);
255 ] 269 _refresh();
270 })
271 ]
256 ], 272 ],
257 new DivElement() 273 new DivElement()
258 ..children = _loadProfile 274 ..children = _loadProfile
259 ? [new ClassAllocationProfileElement(_isolate, _cls, _profiles, 275 ? [
260 queue: _r.queue)] 276 new ClassAllocationProfileElement(_isolate, _cls, _profiles,
261 : const [], 277 queue: _r.queue)
278 ]
279 : const [],
262 new DivElement() 280 new DivElement()
263 ..children = _cls.location != null 281 ..children = _cls.location != null
264 ? [new HRElement(), 282 ? [
265 new SourceInsetElement(_isolate, _cls.location, _scripts, 283 new HRElement(),
266 _instances, _events, queue: _r.queue)] 284 new SourceInsetElement(
267 : const [], 285 _isolate, _cls.location, _scripts, _instances, _events,
286 queue: _r.queue)
287 ]
288 : const [],
268 new HRElement(), 289 new HRElement(),
269 new ViewFooterElement(queue: _r.queue) 290 new ViewFooterElement(queue: _r.queue)
270 ] 291 ]
271 ]; 292 ];
272 } 293 }
273 294
274 bool _fieldsExpanded; 295 bool _fieldsExpanded;
275 bool _functionsExpanded; 296 bool _functionsExpanded;
276 297
277 List<Element> _createMembers() { 298 List<Element> _createMembers() {
278 final members = <Element>[]; 299 final members = <Element>[];
279 if (_cls.library != null) { 300 if (_cls.library != null) {
280 members.add( 301 members.add(new DivElement()
281 new DivElement()..classes = ['memberItem'] 302 ..classes = ['memberItem']
282 ..children = [ 303 ..children = [
283 new DivElement()..classes = ['memberName'] 304 new DivElement()
284 ..text = 'library', 305 ..classes = ['memberName']
285 new DivElement()..classes = ['memberValue'] 306 ..text = 'library',
286 ..children = [ 307 new DivElement()
287 new LibraryRefElement(_isolate, _cls.library, queue: _r.queue) 308 ..classes = ['memberValue']
288 ] 309 ..children = [
289 ] 310 new LibraryRefElement(_isolate, _cls.library, queue: _r.queue)
290 ); 311 ]
312 ]);
291 } 313 }
292 if (_cls.location != null) { 314 if (_cls.location != null) {
293 members.add( 315 members.add(new DivElement()
294 new DivElement()..classes = ['memberItem'] 316 ..classes = ['memberItem']
295 ..children = [ 317 ..children = [
296 new DivElement()..classes = ['memberName'] 318 new DivElement()
297 ..text = 'script', 319 ..classes = ['memberName']
298 new DivElement()..classes = ['memberValue'] 320 ..text = 'script',
299 ..children = [ 321 new DivElement()
300 new SourceLinkElement(_isolate, _cls.location, _scripts, 322 ..classes = ['memberValue']
301 queue: _r.queue) 323 ..children = [
302 ] 324 new SourceLinkElement(_isolate, _cls.location, _scripts,
303 ] 325 queue: _r.queue)
304 ); 326 ]
327 ]);
305 } 328 }
306 if (_cls.superclass != null) { 329 if (_cls.superclass != null) {
307 members.add( 330 members.add(new DivElement()
308 new DivElement()..classes = ['memberItem'] 331 ..classes = ['memberItem']
309 ..children = [ 332 ..children = [
310 new DivElement()..classes = ['memberName'] 333 new DivElement()
311 ..text = 'superclass', 334 ..classes = ['memberName']
312 new DivElement()..classes = ['memberValue'] 335 ..text = 'superclass',
313 ..children = [ 336 new DivElement()
314 new ClassRefElement(_isolate, _cls.superclass, queue: _r.queue) 337 ..classes = ['memberValue']
315 ] 338 ..children = [
316 ] 339 new ClassRefElement(_isolate, _cls.superclass, queue: _r.queue)
317 ); 340 ]
341 ]);
318 } 342 }
319 if (_cls.superType != null) { 343 if (_cls.superType != null) {
320 members.add( 344 members.add(new DivElement()
321 new DivElement()..classes = ['memberItem'] 345 ..classes = ['memberItem']
322 ..children = [ 346 ..children = [
323 new DivElement()..classes = ['memberName'] 347 new DivElement()
324 ..text = 'supertype', 348 ..classes = ['memberName']
325 new DivElement()..classes = ['memberValue'] 349 ..text = 'supertype',
326 ..children = [ 350 new DivElement()
327 new InstanceRefElement(_isolate, _cls.superType, _instances, 351 ..classes = ['memberValue']
328 queue: _r.queue) 352 ..children = [
329 ] 353 new InstanceRefElement(_isolate, _cls.superType, _instances,
330 ] 354 queue: _r.queue)
331 ); 355 ]
356 ]);
332 } 357 }
333 if (cls.mixin != null) { 358 if (cls.mixin != null) {
334 members.add( 359 members.add(new DivElement()
335 new DivElement()..classes = ['memberItem'] 360 ..classes = ['memberItem']
336 ..children = [ 361 ..children = [
337 new DivElement()..classes = ['memberName'] 362 new DivElement()
338 ..text = 'mixin', 363 ..classes = ['memberName']
339 new DivElement()..classes = ['memberValue'] 364 ..text = 'mixin',
340 ..children = [ 365 new DivElement()
341 new InstanceRefElement(_isolate, _cls.mixin, _instances, 366 ..classes = ['memberValue']
342 queue: _r.queue) 367 ..children = [
343 ] 368 new InstanceRefElement(_isolate, _cls.mixin, _instances,
344 ] 369 queue: _r.queue)
345 ); 370 ]
371 ]);
346 } 372 }
347 if (_cls.subclasses.length > 0) { 373 if (_cls.subclasses.length > 0) {
348 members.add( 374 members.add(new DivElement()
349 new DivElement()..classes = ['memberItem'] 375 ..classes = ['memberItem']
350 ..children = [ 376 ..children = [
351 new DivElement()..classes = ['memberName'] 377 new DivElement()
352 ..text = 'extended by', 378 ..classes = ['memberName']
353 new DivElement()..classes = ['memberValue'] 379 ..text = 'extended by',
354 ..children = (_cls.subclasses.expand((subcls) => [ 380 new DivElement()
355 new ClassRefElement(_isolate, subcls, queue: _r.queue), 381 ..classes = ['memberValue']
356 new SpanElement()..text = ', ' 382 ..children = (_cls.subclasses
357 ]).toList()..removeLast()) 383 .expand((subcls) => [
358 ] 384 new ClassRefElement(_isolate, subcls, queue: _r.queue),
359 ); 385 new SpanElement()..text = ', '
386 ])
387 .toList()..removeLast())
388 ]);
360 } 389 }
361 390
362 members.add(new BRElement()); 391 members.add(new BRElement());
363 392
364 if (_cls.interfaces.length > 0) { 393 if (_cls.interfaces.length > 0) {
365 members.add( 394 members.add(new DivElement()
366 new DivElement()..classes = ['memberItem'] 395 ..classes = ['memberItem']
367 ..children = [ 396 ..children = [
368 new DivElement()..classes = ['memberName'] 397 new DivElement()
369 ..text = 'implements', 398 ..classes = ['memberName']
370 new DivElement()..classes = ['memberValue'] 399 ..text = 'implements',
371 ..children = (_cls.interfaces.expand((interf) => [ 400 new DivElement()
372 new InstanceRefElement(_isolate, interf, _instances, 401 ..classes = ['memberValue']
373 queue: _r.queue), 402 ..children = (_cls.interfaces
374 new SpanElement()..text = ', ' 403 .expand((interf) => [
375 ]).toList()..removeLast()) 404 new InstanceRefElement(_isolate, interf, _instances,
376 ] 405 queue: _r.queue),
377 ); 406 new SpanElement()..text = ', '
407 ])
408 .toList()..removeLast())
409 ]);
378 } 410 }
379 if (_cls.name != _cls.vmName) { 411 if (_cls.name != _cls.vmName) {
380 members.add( 412 members.add(new DivElement()
381 new DivElement()..classes = ['memberItem'] 413 ..classes = ['memberItem']
382 ..children = [ 414 ..children = [
383 new DivElement()..classes = ['memberName'] 415 new DivElement()
384 ..text = 'vm name', 416 ..classes = ['memberName']
385 new DivElement()..classes = ['memberValue'] 417 ..text = 'vm name',
386 ..text = '${_cls.vmName}' 418 new DivElement()
387 ] 419 ..classes = ['memberValue']
388 ); 420 ..text = '${_cls.vmName}'
421 ]);
389 } 422 }
390 return members; 423 return members;
391 } 424 }
392 425
393 List<Element> _createElements() { 426 List<Element> _createElements() {
394 final members = <Element>[]; 427 final members = <Element>[];
395 if (_classFields != null && _classFields.isNotEmpty) { 428 if (_classFields != null && _classFields.isNotEmpty) {
396 final fields = _classFields.toList(); 429 final fields = _classFields.toList();
397 _fieldsExpanded = _fieldsExpanded ?? (fields.length <= 8); 430 _fieldsExpanded = _fieldsExpanded ?? (fields.length <= 8);
398 members.add( 431 members.add(new DivElement()
399 new DivElement()..classes = ['memberItem'] 432 ..classes = ['memberItem']
400 ..children = [ 433 ..children = [
401 new DivElement()..classes = ['memberName'] 434 new DivElement()
402 ..text = 'fields ${fields.length}', 435 ..classes = ['memberName']
403 new DivElement()..classes = ['memberValue'] 436 ..text = 'fields ${fields.length}',
404 ..children =[ 437 new DivElement()
405 new CurlyBlockElement(expanded: _fieldsExpanded) 438 ..classes = ['memberValue']
406 ..onToggle.listen((e) => _fieldsExpanded = e.control.expanded) 439 ..children = [
407 ..content = [ 440 new CurlyBlockElement(expanded: _fieldsExpanded)
408 new DivElement()..classes = ['memberList'] 441 ..onToggle.listen((e) => _fieldsExpanded = e.control.expanded)
409 ..children = (fields.map((f) => 442 ..content = [
410 new DivElement()..classes = ['memberItem'] 443 new DivElement()
444 ..classes = ['memberList']
445 ..children = (fields
446 .map((f) => new DivElement()
447 ..classes = ['memberItem']
411 ..children = [ 448 ..children = [
412 new DivElement()..classes = ['memberName'] 449 new DivElement()
413 ..children =[ 450 ..classes = ['memberName']
451 ..children = [
414 new FieldRefElement(_isolate, f, _instances, 452 new FieldRefElement(_isolate, f, _instances,
415 queue: _r.queue) 453 queue: _r.queue)
416 ], 454 ],
417 new DivElement()..classes = ['memberValue'] 455 new DivElement()
456 ..classes = ['memberValue']
418 ..children = f.staticValue == null 457 ..children = f.staticValue == null
419 ? const [] 458 ? const []
420 : [ 459 : [
421 anyRef(_isolate, f.staticValue, _instances, 460 anyRef(
422 queue: _r.queue) 461 _isolate, f.staticValue, _instances,
423 ] 462 queue: _r.queue)
424 ] 463 ]
425 ).toList()) 464 ])
426 ] 465 .toList())
427 ] 466 ]
428 ] 467 ]
429 ); 468 ]);
430 } 469 }
431 470
432 if (_cls.functions.isNotEmpty) { 471 if (_cls.functions.isNotEmpty) {
433 final functions = _cls.functions.toList(); 472 final functions = _cls.functions.toList();
434 _functionsExpanded = _functionsExpanded ?? (functions.length <= 8); 473 _functionsExpanded = _functionsExpanded ?? (functions.length <= 8);
435 members.add( 474 members.add(new DivElement()
436 new DivElement()..classes = ['memberItem'] 475 ..classes = ['memberItem']
437 ..children = [ 476 ..children = [
438 new DivElement()..classes = ['memberName'] 477 new DivElement()
439 ..text = 'functions (${functions.length})', 478 ..classes = ['memberName']
440 new DivElement()..classes = ['memberValue'] 479 ..text = 'functions (${functions.length})',
441 ..children =[ 480 new DivElement()
442 new CurlyBlockElement(expanded: _functionsExpanded) 481 ..classes = ['memberValue']
443 ..onToggle.listen((e) => 482 ..children = [
444 _functionsExpanded = e.control.expanded) 483 new CurlyBlockElement(expanded: _functionsExpanded)
445 ..content = (functions.map((f) => 484 ..onToggle
446 new DivElement()..classes = ['indent'] 485 .listen((e) => _functionsExpanded = e.control.expanded)
486 ..content = (functions
487 .map((f) => new DivElement()
488 ..classes = ['indent']
447 ..children = [ 489 ..children = [
448 new FunctionRefElement(_isolate, f, queue: _r.queue) 490 new FunctionRefElement(_isolate, f, queue: _r.queue)
449 ] 491 ])
450 ).toList()) 492 .toList())
451 ] 493 ]
452 ] 494 ]);
453 );
454 } 495 }
455 return members; 496 return members;
456 } 497 }
457 498
458 Future _refresh() async { 499 Future _refresh() async {
459 _cls = await _classes.get(_isolate, _cls.id); 500 _cls = await _classes.get(_isolate, _cls.id);
460 await _loadAdditionalData(); 501 await _loadAdditionalData();
461 _r.dirty(); 502 _r.dirty();
462 } 503 }
463 504
464 Future _loadAdditionalData() async { 505 Future _loadAdditionalData() async {
465 _classFields = await Future.wait(_cls.fields.map((f) 506 _classFields =
466 => _fields.get(_isolate, f.id))); 507 await Future.wait(_cls.fields.map((f) => _fields.get(_isolate, f.id)));
467 _r.dirty(); 508 _r.dirty();
468 } 509 }
469 } 510 }
OLDNEW
« no previous file with comments | « runtime/observatory/lib/src/elements/class_tree.dart ('k') | runtime/observatory/lib/src/elements/code_ref.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698