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

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

Issue 2271083002: Converted Observatory icdata-view element (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Updated observatory_sources.gypi Created 4 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) 2015, 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 icdata_view; 5 import 'dart:async';
6 import 'dart:html';
7 import 'package:observatory/models.dart' as M;
8 import 'package:observatory/src/elements/curly_block.dart';
9 import 'package:observatory/src/elements/helpers/any_ref.dart';
10 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart';
11 import 'package:observatory/src/elements/helpers/tag.dart';
12 import 'package:observatory/src/elements/nav/bar.dart';
13 import 'package:observatory/src/elements/nav/isolate_menu.dart';
14 import 'package:observatory/src/elements/nav/menu.dart';
15 import 'package:observatory/src/elements/nav/notify.dart';
16 import 'package:observatory/src/elements/nav/refresh.dart';
17 import 'package:observatory/src/elements/nav/top_menu.dart';
18 import 'package:observatory/src/elements/nav/vm_menu.dart';
19 import 'package:observatory/src/elements/object_common.dart';
20 import 'package:observatory/src/elements/view_footer.dart';
6 21
7 import 'dart:async'; 22 class ICDataViewElement extends HtmlElement implements Renderable {
8 import 'observatory_element.dart'; 23 static const tag = const Tag<ICDataViewElement>('icdata-view',
9 import 'package:observatory/service.dart'; 24 dependencies: const [
10 import 'package:polymer/polymer.dart'; 25 CurlyBlockElement.tag,
26 NavBarElement.tag,
27 NavTopMenuElement.tag,
28 NavVMMenuElement.tag,
29 NavIsolateMenuElement.tag,
30 NavMenuElement.tag,
31 NavRefreshElement.tag,
32 NavNotifyElement.tag,
33 ObjectCommonElement.tag,
34 ViewFooterElement.tag
35 ]);
11 36
12 @CustomTag('icdata-view') 37 RenderingScheduler<ICDataViewElement> _r;
13 class ICDataViewElement extends ObservatoryElement { 38
14 @published ICData icData; 39 Stream<RenderedEvent<ICDataViewElement>> get onRendered => _r.onRendered;
40
41 M.VM _vm;
42 M.IsolateRef _isolate;
43 M.EventRepository _events;
44 M.NotificationRepository _notifications;
45 M.ICData _icdata;
46 M.ICDataRepository _icdatas;
47 M.RetainedSizeRepository _retainedSizes;
48 M.ReachableSizeRepository _reachableSizes;
49 M.InboundReferencesRepository _references;
50 M.RetainingPathRepository _retainingPaths;
51 M.InstanceRepository _instances;
52
53
54 M.VMRef get vm => _vm;
55 M.IsolateRef get isolate => _isolate;
56 M.NotificationRepository get notifications => _notifications;
57 M.ICData get icdata => _icdata;
58
59 factory ICDataViewElement(M.VM vm, M.IsolateRef isolate, M.ICData icdata,
60 M.EventRepository events,
61 M.NotificationRepository notifications,
62 M.ICDataRepository icdatas,
63 M.RetainedSizeRepository retainedSizes,
64 M.ReachableSizeRepository reachableSizes,
65 M.InboundReferencesRepository references,
66 M.RetainingPathRepository retainingPaths,
67 M.InstanceRepository instances,
68 {RenderingQueue queue}) {
69 assert(vm != null);
70 assert(isolate != null);
71 assert(events != null);
72 assert(notifications != null);
73 assert(icdata != null);
74 assert(icdatas != null);
75 assert(retainedSizes != null);
76 assert(reachableSizes != null);
77 assert(references != null);
78 assert(retainingPaths != null);
79 assert(instances != null);
80 ICDataViewElement e = document.createElement(tag.name);
81 e._r = new RenderingScheduler(e, queue: queue);
82 e._vm = vm;
83 e._isolate = isolate;
84 e._events = events;
85 e._notifications = notifications;
86 e._icdata = icdata;
87 e._icdatas = icdatas;
88 e._retainedSizes = retainedSizes;
89 e._reachableSizes = reachableSizes;
90 e._references = references;
91 e._retainingPaths = retainingPaths;
92 e._instances = instances;
93 return e;
94 }
15 95
16 ICDataViewElement.created() : super.created(); 96 ICDataViewElement.created() : super.created();
17 97
18 Future refresh() { 98 @override
19 return icData.reload(); 99 attached() {
100 super.attached();
101 _r.enable();
102 }
103
104 @override
105 detached() {
106 super.detached();
107 _r.disable(notify: true);
108 children = [];
109 }
110
111 void render() {
112 children = [
113 new NavBarElement(queue: _r.queue)
114 ..children = [
115 new NavTopMenuElement(queue: _r.queue),
116 new NavVMMenuElement(_vm, _events, queue: _r.queue),
117 new NavIsolateMenuElement(_isolate, _events, queue: _r.queue),
118 new NavMenuElement('instance', last: true, queue: _r.queue),
119 new NavRefreshElement(queue: _r.queue)
120 ..onRefresh.listen((e) async {
121 e.element.disabled = true;
122 _icdata = await _icdatas.get(_isolate, _icdata.id);
123 _r.dirty();
124 }),
125 new NavNotifyElement(_notifications, queue: _r.queue)
126 ],
127
128 new DivElement()..classes = const ['content-centered-big']
129 ..children = [
130 new HeadingElement.h2()..text = 'Allocation Profile',
Cutch 2016/08/24 13:59:17 fix text
cbernaschina 2016/08/24 16:09:12 Done.
131 new HRElement(),
132 new ObjectCommonElement(_isolate, _icdata, _retainedSizes,
133 _reachableSizes, _references, _retainingPaths,
134 _instances, queue: _r.queue),
135 new DivElement()..classes = ['memberList']
136 ..children = [
137 new DivElement()..classes = ['memberItem']
138 ..children = [
139 new DivElement()..classes = ['memberName']
140 ..text = 'owner',
141 new DivElement()..classes = ['memberName']
142 ..children = [
143 _icdata.dartOwner == null
144 ? (new SpanElement()..text = '<none>')
145 : anyRef(_isolate, _icdata.dartOwner, _instances,
146 queue: _r.queue)
147 ]
148 ],
149 new DivElement()..classes = ['memberItem']
150 ..children = [
151 new DivElement()..classes = ['memberName']
152 ..text = 'argumentsDescriptor',
153 new DivElement()..classes = ['memberName']
154 ..children = [
155 _icdata.argumentsDescriptor == null
156 ? (new SpanElement()..text = '<none>')
157 : anyRef(_isolate, _icdata.argumentsDescriptor,
158 _instances, queue: _r.queue)
159 ]
160 ],
161 new DivElement()..classes = ['memberItem']
162 ..children = [
163 new DivElement()..classes = ['memberName']
164 ..text = 'entries',
165 new DivElement()..classes = ['memberName']
166 ..children = [
167 _icdata.entries == null
168 ? (new SpanElement()..text = '<none>')
169 : anyRef(_isolate, _icdata.entries, _instances,
170 queue: _r.queue)
171 ]
172 ]
173 ],
174 new ViewFooterElement(queue: _r.queue)
175 ]
176 ];
20 } 177 }
21 } 178 }
OLDNEW
« no previous file with comments | « runtime/observatory/lib/src/elements/context_view.dart ('k') | runtime/observatory/lib/src/elements/icdata_view.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698