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

Side by Side Diff: runtime/observatory/lib/src/elements/unlinkedcall_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 UnlinkedCallViewElement extends HtmlElement implements Renderable {
23 static const tag = const Tag<UnlinkedCallViewElement>('unlinkedcall-view',
24 dependencies: const [
25 CurlyBlockElement.tag,
26 NavTopMenuElement.tag,
27 NavVMMenuElement.tag,
28 NavIsolateMenuElement.tag,
29 NavRefreshElement.tag,
30 NavNotifyElement.tag,
31 ObjectCommonElement.tag,
32 ViewFooterElement.tag
33 ]);
34
35 RenderingScheduler<UnlinkedCallViewElement> _r;
36
37 Stream<RenderedEvent<UnlinkedCallViewElement>> get onRendered =>
38 _r.onRendered;
39
40 M.VM _vm;
41 M.IsolateRef _isolate;
42 M.EventRepository _events;
43 M.NotificationRepository _notifications;
44 M.UnlinkedCall _unlinkedcall;
45 M.UnlinkedCallRepository _unlinkedcalls;
46 M.RetainedSizeRepository _retainedSizes;
47 M.ReachableSizeRepository _reachableSizes;
48 M.InboundReferencesRepository _references;
49 M.RetainingPathRepository _retainingPaths;
50 M.InstanceRepository _instances;
51
52 M.VMRef get vm => _vm;
53 M.IsolateRef get isolate => _isolate;
54 M.NotificationRepository get notifications => _notifications;
55 M.UnlinkedCall get unlinkedcall => _unlinkedcall;
56
57 factory UnlinkedCallViewElement(
58 M.VM vm,
59 M.IsolateRef isolate,
60 M.UnlinkedCall unlinkedcall,
61 M.EventRepository events,
62 M.NotificationRepository notifications,
63 M.UnlinkedCallRepository unlinkedcalls,
64 M.RetainedSizeRepository retainedSizes,
65 M.ReachableSizeRepository reachableSizes,
66 M.InboundReferencesRepository references,
67 M.RetainingPathRepository retainingPaths,
68 M.InstanceRepository instances,
69 {RenderingQueue queue}) {
70 assert(vm != null);
71 assert(isolate != null);
72 assert(events != null);
73 assert(notifications != null);
74 assert(unlinkedcall != null);
75 assert(unlinkedcalls != null);
76 assert(retainedSizes != null);
77 assert(reachableSizes != null);
78 assert(references != null);
79 assert(retainingPaths != null);
80 assert(instances != null);
81 UnlinkedCallViewElement e = document.createElement(tag.name);
82 e._r = new RenderingScheduler(e, queue: queue);
83 e._vm = vm;
84 e._isolate = isolate;
85 e._events = events;
86 e._notifications = notifications;
87 e._unlinkedcall = unlinkedcall;
88 e._unlinkedcalls = unlinkedcalls;
89 e._retainedSizes = retainedSizes;
90 e._reachableSizes = reachableSizes;
91 e._references = references;
92 e._retainingPaths = retainingPaths;
93 e._instances = instances;
94 return e;
95 }
96
97 UnlinkedCallViewElement.created() : super.created();
98
99 @override
100 attached() {
101 super.attached();
102 _r.enable();
103 }
104
105 @override
106 detached() {
107 super.detached();
108 _r.disable(notify: true);
109 children = [];
110 }
111
112 void render() {
113 children = [
114 navBar([
115 new NavTopMenuElement(queue: _r.queue),
116 new NavVMMenuElement(_vm, _events, queue: _r.queue),
117 new NavIsolateMenuElement(_isolate, _events, queue: _r.queue),
118 navMenu('unlinkedcall'),
119 new NavRefreshElement(queue: _r.queue)
120 ..onRefresh.listen((e) async {
121 e.element.disabled = true;
122 _unlinkedcall =
123 await _unlinkedcalls.get(_isolate, _unlinkedcall.id);
124 _r.dirty();
125 }),
126 new NavNotifyElement(_notifications, queue: _r.queue)
127 ]),
128 new DivElement()
129 ..classes = ['content-centered-big']
130 ..children = [
131 new HeadingElement.h2()..text = 'UnlinkedCall',
132 new HRElement(),
133 new ObjectCommonElement(_isolate, _unlinkedcall, _retainedSizes,
134 _reachableSizes, _references, _retainingPaths, _instances,
135 queue: _r.queue),
136 new DivElement()
137 ..classes = ['memberList']
138 ..children = [
139 new DivElement()
140 ..classes = ['memberItem']
141 ..children = [
142 new DivElement()
143 ..classes = ['memberName']
144 ..text = 'selector',
145 new DivElement()
146 ..classes = ['memberName']
147 ..text = _unlinkedcall.selector
148 ],
149 new DivElement()
150 ..classes = ['memberItem']
151 ..children = [
152 new DivElement()
153 ..classes = ['memberName']
154 ..text = 'argumentsDescriptor',
155 new DivElement()
156 ..classes = ['memberName']
157 ..children = [
158 _unlinkedcall.argumentsDescriptor == null
159 ? (new SpanElement()..text = '<none>')
160 : anyRef(_isolate, _unlinkedcall.argumentsDescriptor,
161 _instances,
162 queue: _r.queue)
163 ]
164 ]
165 ],
166 new HRElement(),
167 new ViewFooterElement(queue: _r.queue)
168 ]
169 ];
170 }
171 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698