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

Side by Side Diff: runtime/observatory/lib/src/elements/retaining_path.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) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 import 'dart:html'; 5 import 'dart:html';
6 import 'dart:async'; 6 import 'dart:async';
7 import 'package:observatory/models.dart' as M; 7 import 'package:observatory/models.dart' as M;
8 import 'package:observatory/src/elements/curly_block.dart'; 8 import 'package:observatory/src/elements/curly_block.dart';
9 import 'package:observatory/src/elements/instance_ref.dart'; 9 import 'package:observatory/src/elements/instance_ref.dart';
10 import 'package:observatory/src/elements/helpers/any_ref.dart'; 10 import 'package:observatory/src/elements/helpers/any_ref.dart';
11 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart'; 11 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart';
12 import 'package:observatory/src/elements/helpers/tag.dart'; 12 import 'package:observatory/src/elements/helpers/tag.dart';
13 13
14 class RetainingPathElement extends HtmlElement implements Renderable { 14 class RetainingPathElement extends HtmlElement implements Renderable {
15 static const tag = const Tag<RetainingPathElement>('retaining-path', 15 static const tag = const Tag<RetainingPathElement>('retaining-path',
16 dependencies: const [CurlyBlockElement.tag, InstanceRefElement.tag]); 16 dependencies: const [CurlyBlockElement.tag, InstanceRefElement.tag]);
17 17
18 RenderingScheduler<RetainingPathElement> _r; 18 RenderingScheduler<RetainingPathElement> _r;
19 19
20 Stream<RenderedEvent<RetainingPathElement>> get onRendered => _r.onRendered; 20 Stream<RenderedEvent<RetainingPathElement>> get onRendered => _r.onRendered;
21 21
22 M.IsolateRef _isolate; 22 M.IsolateRef _isolate;
23 M.ObjectRef _object; 23 M.ObjectRef _object;
24 M.RetainingPathRepository _retainingPaths; 24 M.RetainingPathRepository _retainingPaths;
25 M.InstanceRepository _instances; 25 M.ObjectRepository _objects;
26 M.RetainingPath _path; 26 M.RetainingPath _path;
27 bool _expanded = false; 27 bool _expanded = false;
28 28
29 M.IsolateRef get isolate => _isolate; 29 M.IsolateRef get isolate => _isolate;
30 M.ObjectRef get object => _object; 30 M.ObjectRef get object => _object;
31 31
32 factory RetainingPathElement(M.IsolateRef isolate, M.ObjectRef object, 32 factory RetainingPathElement(M.IsolateRef isolate, M.ObjectRef object,
33 M.RetainingPathRepository retainingPaths, M.InstanceRepository instances, 33 M.RetainingPathRepository retainingPaths, M.ObjectRepository objects,
34 {RenderingQueue queue}) { 34 {RenderingQueue queue}) {
35 assert(isolate != null); 35 assert(isolate != null);
36 assert(object != null); 36 assert(object != null);
37 assert(retainingPaths != null); 37 assert(retainingPaths != null);
38 assert(instances != null); 38 assert(objects != null);
39 RetainingPathElement e = document.createElement(tag.name); 39 RetainingPathElement e = document.createElement(tag.name);
40 e._r = new RenderingScheduler(e, queue: queue); 40 e._r = new RenderingScheduler(e, queue: queue);
41 e._isolate = isolate; 41 e._isolate = isolate;
42 e._object = object; 42 e._object = object;
43 e._retainingPaths = retainingPaths; 43 e._retainingPaths = retainingPaths;
44 e._instances = instances; 44 e._objects = objects;
45 return e; 45 return e;
46 } 46 }
47 47
48 RetainingPathElement.created() : super.created(); 48 RetainingPathElement.created() : super.created();
49 49
50 @override 50 @override
51 void attached() { 51 void attached() {
52 super.attached(); 52 super.attached();
53 _r.enable(); 53 _r.enable();
54 } 54 }
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 98
99 Element _createItem(M.RetainingPathItem item, bool first) { 99 Element _createItem(M.RetainingPathItem item, bool first) {
100 final content = <Element>[]; 100 final content = <Element>[];
101 101
102 if (first) { 102 if (first) {
103 // No prefix. 103 // No prefix.
104 } else if (item.parentField != null) { 104 } else if (item.parentField != null) {
105 content.add(new SpanElement() 105 content.add(new SpanElement()
106 ..children = [ 106 ..children = [
107 new SpanElement()..text = 'retained by ', 107 new SpanElement()..text = 'retained by ',
108 anyRef(_isolate, item.parentField, _instances, queue: _r.queue), 108 anyRef(_isolate, item.parentField, _objects, queue: _r.queue),
109 new SpanElement()..text = ' of ', 109 new SpanElement()..text = ' of ',
110 ]); 110 ]);
111 } else if (item.parentListIndex != null) { 111 } else if (item.parentListIndex != null) {
112 content.add(new SpanElement() 112 content.add(new SpanElement()
113 ..text = 'retained by [ ${item.parentListIndex} ] of '); 113 ..text = 'retained by [ ${item.parentListIndex} ] of ');
114 } else if (item.parentWordOffset != null) { 114 } else if (item.parentWordOffset != null) {
115 content.add(new SpanElement() 115 content.add(new SpanElement()
116 ..text = 'retained by offset ${item.parentWordOffset} of '); 116 ..text = 'retained by offset ${item.parentWordOffset} of ');
117 } else { 117 } else {
118 content.add(new SpanElement()..text = 'retained by '); 118 content.add(new SpanElement()..text = 'retained by ');
119 } 119 }
120 120
121 content.add(anyRef(_isolate, item.source, _instances, queue: _r.queue)); 121 content.add(anyRef(_isolate, item.source, _objects, queue: _r.queue));
122 122
123 return new DivElement() 123 return new DivElement()
124 ..classes = ['indent'] 124 ..classes = ['indent']
125 ..children = content; 125 ..children = content;
126 } 126 }
127 127
128 Element _createGCRootItem() { 128 Element _createGCRootItem() {
129 return new DivElement() 129 return new DivElement()
130 ..classes = ['indent'] 130 ..classes = ['indent']
131 ..text = 'retained by a GC root'; 131 ..text = 'retained by a GC root';
132 } 132 }
133 } 133 }
OLDNEW
« no previous file with comments | « runtime/observatory/lib/src/elements/ports.dart ('k') | runtime/observatory/lib/src/elements/script_inset.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698