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

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

Issue 2283263002: Converted Observatory script-view element (Closed)
Patch Set: 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 script_view_element; 5 library script_view;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'observatory_element.dart'; 8 import 'dart:html';
9 import 'package:observatory/elements.dart'; 9 import 'package:observatory/models.dart' as M;
10 import 'package:observatory/service.dart'; 10 import 'package:observatory/src/elements/context_ref.dart';
11 import 'package:polymer/polymer.dart'; 11 import 'package:observatory/src/elements/curly_block.dart';
12 12 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart';
13 /// Displays an Script response. 13 import 'package:observatory/src/elements/helpers/tag.dart';
14 @CustomTag('script-view') 14 import 'package:observatory/src/elements/nav/bar.dart';
15 class ScriptViewElement extends ObservatoryElement { 15 import 'package:observatory/src/elements/nav/isolate_menu.dart';
16 @published Script script; 16 import 'package:observatory/src/elements/nav/library_menu.dart';
17 import 'package:observatory/src/elements/nav/menu.dart';
18 import 'package:observatory/src/elements/nav/notify.dart';
19 import 'package:observatory/src/elements/nav/refresh.dart';
20 import 'package:observatory/src/elements/nav/top_menu.dart';
21 import 'package:observatory/src/elements/nav/vm_menu.dart';
22 import 'package:observatory/src/elements/object_common.dart';
23 import 'package:observatory/src/elements/script_inset.dart';
24 import 'package:observatory/src/elements/view_footer.dart';
25
26 class ScriptViewElement extends HtmlElement implements Renderable {
27 static const tag = const Tag<ScriptViewElement>('script-view',
28 dependencies: const [
29 ContextRefElement.tag,
30 CurlyBlockElement.tag,
31 NavBarElement.tag,
32 NavTopMenuElement.tag,
33 NavVMMenuElement.tag,
34 NavIsolateMenuElement.tag,
35 NavLibraryMenuElement.tag,
36 NavMenuElement.tag,
37 NavRefreshElement.tag,
38 NavNotifyElement.tag,
39 ObjectCommonElement.tag,
40 ScriptInsetElement.tag,
41 ViewFooterElement.tag
42 ]);
43
44 RenderingScheduler<ScriptViewElement> _r;
45
46 Stream<RenderedEvent<ScriptViewElement>> get onRendered =>
47 _r.onRendered;
48
49 M.VM _vm;
50 M.IsolateRef _isolate;
51 M.EventRepository _events;
52 M.NotificationRepository _notifications;
53 M.Script _script;
54 M.ScriptRepository _scripts;
55 M.RetainedSizeRepository _retainedSizes;
56 M.ReachableSizeRepository _reachableSizes;
57 M.InboundReferencesRepository _references;
58 M.RetainingPathRepository _retainingPaths;
59 M.InstanceRepository _instances;
60 int _pos;
61
62
63 M.VMRef get vm => _vm;
64 M.IsolateRef get isolate => _isolate;
65 M.NotificationRepository get notifications => _notifications;
66 M.Script get script => _script;
67
68 factory ScriptViewElement(M.VM vm, M.IsolateRef isolate,
69 M.Script script,
70 M.EventRepository events,
71 M.NotificationRepository notifications,
72 M.ScriptRepository scripts,
73 M.RetainedSizeRepository retainedSizes,
74 M.ReachableSizeRepository reachableSizes,
75 M.InboundReferencesRepository references,
76 M.RetainingPathRepository retainingPaths,
77 M.InstanceRepository instances,
78 {int pos, RenderingQueue queue}) {
79 assert(vm != null);
80 assert(isolate != null);
81 assert(events != null);
82 assert(notifications != null);
83 assert(script != null);
84 assert(scripts != null);
85 assert(retainedSizes != null);
86 assert(reachableSizes != null);
87 assert(references != null);
88 assert(retainingPaths != null);
89 assert(instances != null);
90 ScriptViewElement e = document.createElement(tag.name);
91 e._r = new RenderingScheduler(e, queue: queue);
92 e._vm = vm;
93 e._isolate = isolate;
94 e._events = events;
95 e._notifications = notifications;
96 e._script = script;
97 e._scripts = scripts;
98 e._retainedSizes = retainedSizes;
99 e._reachableSizes = reachableSizes;
100 e._references = references;
101 e._retainingPaths = retainingPaths;
102 e._instances = instances;
103 e._pos = pos;
104 return e;
105 }
17 106
18 ScriptViewElement.created() : super.created(); 107 ScriptViewElement.created() : super.created();
19 108
20 Future refresh() { 109 @override
21 return script.reload(); 110 attached() {
111 super.attached();
112 _r.enable();
113 }
114
115 @override
116 detached() {
117 super.detached();
118 _r.disable(notify: true);
119 children = [];
120 }
121
122 void render() {
123 children = [
124 new NavBarElement(queue: _r.queue)
125 ..children = [
126 new NavTopMenuElement(queue: _r.queue),
127 new NavVMMenuElement(_vm, _events, queue: _r.queue),
128 new NavIsolateMenuElement(_isolate, _events, queue: _r.queue),
129 new NavLibraryMenuElement(_isolate, _script.library, queue: _r.queue),
130 new NavMenuElement('object', last: true, queue: _r.queue),
131 new NavRefreshElement(queue: _r.queue)
132 ..onRefresh.listen((e) async {
133 e.element.disabled = true;
134 _script = await _scripts.get(_isolate, _script.id);
135 _r.dirty();
136 }),
137 new NavNotifyElement(_notifications, queue: _r.queue)
138 ],
139 new DivElement()..classes = const ['content-centered-big']
140 ..children = [
141 new HeadingElement.h2()..text = 'Megamorphic Cache',
rmacnak 2016/08/29 17:35:29 Script ${script.name}
cbernaschina 2016/08/29 18:06:38 Done.
142 new HRElement(),
143 new ObjectCommonElement(_isolate, _script, _retainedSizes,
144 _reachableSizes, _references, _retainingPaths,
145 _instances, queue: _r.queue),
146 new BRElement(),
147 new DivElement()..classes = ['memberList']
148 ..children = [
149 new DivElement()..classes = ['memberItem']
150 ..children = [
151 new DivElement()..classes = ['memberName']
152 ..text = 'load time',
153 new DivElement()..classes = ['memberName']
154 ..text = '${_script.loadTime}'
155 ],
156 ],
157 new HRElement(),
158 new ScriptInsetElement(_isolate, _script, _scripts, _instances,
159 _events, currentPos: _pos, queue: _r.queue),
160 new ViewFooterElement(queue: _r.queue)
161 ]
162 ];
22 } 163 }
23 } 164 }
165
166 /*
rmacnak 2016/08/29 17:35:28 Remove
cbernaschina 2016/08/29 18:06:38 Done.
167 <polymer-element name="script-view">
168 <template>
169 <link rel="stylesheet" href="css/shared.css">
170 <nav-bar>
171 <top-nav-menu></top-nav-menu>
172 <vm-nav-menu vm="{{ script.isolate.vm }}"></vm-nav-menu>
173 <isolate-nav-menu isolate="{{ script.isolate }}"></isolate-nav-menu>
174 <library-nav-menu library="{{ script.library }}"></library-nav-menu>
175 <nav-menu link="{{ makeLink('/inspect', script) }}" anchor="{{ script.name } }" last="{{ true }}"></nav-menu>
176 <nav-refresh callback="{{ refresh }}"></nav-refresh>
177 <nav-notify notifications="{{ app.notifications }}"></nav-notify>
178 </nav-bar>
179
180 <div class="content-centered-big">
181 <h1>script {{ script.name }}</h1>
182 <object-common object="{{ script }}"></object-common>
183 <br>
184
185 <div class="memberList">
186 <div class="memberItem">
187 <div class="memberName">loaded at</div>
188 <div class="memberValue">{{ script.loadTime.toString() }}</div>
189 </div>
190 </div>
191
192 <hr>
193 <script-inset id="scriptInset" script="{{ script }}"
194 currentPos="{{ app.locationManager.internalArguments['pos'] | parseInt }}">
195 </script-inset>
196 </div>
197
198 <view-footer></view-footer>
199 </template>
200 </polymer-element>
201 */
OLDNEW
« no previous file with comments | « runtime/observatory/lib/src/app/page.dart ('k') | runtime/observatory/lib/src/elements/script_view.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698