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

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

Issue 2742333007: Add Observatory support for UnlinkedCall, SingleTargetCache and SubtypeTestCache. (Closed)
Patch Set: . Created 3 years, 9 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
(Empty)
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
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.
4
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/nav_bar.dart';
11 import 'package:observatory/src/elements/helpers/nav_menu.dart';
12 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart';
13 import 'package:observatory/src/elements/helpers/tag.dart';
14 import 'package:observatory/src/elements/nav/isolate_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';
21
22 class SingleTargetCacheViewElement extends HtmlElement implements Renderable {
23 static const tag = const Tag<SingleTargetCacheViewElement>(
24 'singletargetcache-view',
25 dependencies: const [
26 CurlyBlockElement.tag,
27 NavTopMenuElement.tag,
28 NavVMMenuElement.tag,
29 NavIsolateMenuElement.tag,
30 NavRefreshElement.tag,
31 NavNotifyElement.tag,
32 ObjectCommonElement.tag,
33 ViewFooterElement.tag
34 ]);
35
36 RenderingScheduler<SingleTargetCacheViewElement> _r;
37
38 Stream<RenderedEvent<SingleTargetCacheViewElement>> get onRendered =>
39 _r.onRendered;
40
41 M.VM _vm;
42 M.IsolateRef _isolate;
43 M.EventRepository _events;
44 M.NotificationRepository _notifications;
45 M.SingleTargetCache _singleTargetCache;
46 M.SingleTargetCacheRepository _singleTargetCaches;
47 M.RetainedSizeRepository _retainedSizes;
48 M.ReachableSizeRepository _reachableSizes;
49 M.InboundReferencesRepository _references;
50 M.RetainingPathRepository _retainingPaths;
51 M.InstanceRepository _instances;
52
53 M.VMRef get vm => _vm;
54 M.IsolateRef get isolate => _isolate;
55 M.NotificationRepository get notifications => _notifications;
56 M.SingleTargetCache get singleTargetCache => _singleTargetCache;
57
58 factory SingleTargetCacheViewElement(
59 M.VM vm,
60 M.IsolateRef isolate,
61 M.SingleTargetCache singleTargetCache,
62 M.EventRepository events,
63 M.NotificationRepository notifications,
64 M.SingleTargetCacheRepository singleTargetCaches,
65 M.RetainedSizeRepository retainedSizes,
66 M.ReachableSizeRepository reachableSizes,
67 M.InboundReferencesRepository references,
68 M.RetainingPathRepository retainingPaths,
69 M.InstanceRepository instances,
70 {RenderingQueue queue}) {
71 assert(vm != null);
72 assert(isolate != null);
73 assert(events != null);
74 assert(notifications != null);
75 assert(singleTargetCache != null);
76 assert(singleTargetCaches != null);
77 assert(retainedSizes != null);
78 assert(reachableSizes != null);
79 assert(references != null);
80 assert(retainingPaths != null);
81 assert(instances != null);
82 SingleTargetCacheViewElement e = document.createElement(tag.name);
83 e._r = new RenderingScheduler(e, queue: queue);
84 e._vm = vm;
85 e._isolate = isolate;
86 e._events = events;
87 e._notifications = notifications;
88 e._singleTargetCache = singleTargetCache;
89 e._singleTargetCaches = singleTargetCaches;
90 e._retainedSizes = retainedSizes;
91 e._reachableSizes = reachableSizes;
92 e._references = references;
93 e._retainingPaths = retainingPaths;
94 e._instances = instances;
95 return e;
96 }
97
98 SingleTargetCacheViewElement.created() : super.created();
99
100 @override
101 attached() {
102 super.attached();
103 _r.enable();
104 }
105
106 @override
107 detached() {
108 super.detached();
109 _r.disable(notify: true);
110 children = [];
111 }
112
113 void render() {
114 children = [
115 navBar([
116 new NavTopMenuElement(queue: _r.queue),
117 new NavVMMenuElement(_vm, _events, queue: _r.queue),
118 new NavIsolateMenuElement(_isolate, _events, queue: _r.queue),
119 navMenu('singleTargetCache'),
120 new NavRefreshElement(queue: _r.queue)
121 ..onRefresh.listen((e) async {
122 e.element.disabled = true;
123 _singleTargetCache =
124 await _singleTargetCaches.get(_isolate, _singleTargetCache.id);
125 _r.dirty();
126 }),
127 new NavNotifyElement(_notifications, queue: _r.queue)
128 ]),
129 new DivElement()
130 ..classes = ['content-centered-big']
131 ..children = [
132 new HeadingElement.h2()..text = 'SingleTargetCache',
133 new HRElement(),
134 new ObjectCommonElement(_isolate, _singleTargetCache, _retainedSizes,
135 _reachableSizes, _references, _retainingPaths, _instances,
136 queue: _r.queue),
137 new DivElement()
138 ..classes = ['memberList']
139 ..children = [
140 new DivElement()
141 ..classes = ['memberItem']
142 ..children = [
143 new DivElement()
144 ..classes = ['memberName']
145 ..text = 'target',
146 new DivElement()
147 ..classes = ['memberName']
148 ..children = [
149 anyRef(_isolate, _singleTargetCache.target, _instances,
150 queue: _r.queue)
151 ]
152 ],
153 new DivElement()
154 ..classes = ['memberItem']
155 ..children = [
156 new DivElement()
157 ..classes = ['memberName']
158 ..text = 'lowerLimit',
159 new DivElement()
160 ..classes = ['memberName']
161 ..children = [
162 new SpanElement()
163 ..text = _singleTargetCache.lowerLimit.toString()
164 ]
165 ],
166 new DivElement()
167 ..classes = ['memberItem']
168 ..children = [
169 new DivElement()
170 ..classes = ['memberName']
171 ..text = 'upperLimit',
172 new DivElement()
173 ..classes = ['memberName']
174 ..children = [
175 new SpanElement()
176 ..text = _singleTargetCache.upperLimit.toString()
177 ]
178 ]
179 ],
180 new HRElement(),
181 new ViewFooterElement(queue: _r.queue)
182 ]
183 ];
184 }
185 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698