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

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

Issue 2167053002: Converted Observatory nav-notify element (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Added tests Created 4 years, 5 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) 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
3 // BSD-style license that can be found in the LICENSE file.
4
5 import 'dart:html';
6 import 'dart:async';
7 import 'package:observatory/models.dart' as M;
8 import 'package:observatory/src/elements/helpers/tag.dart';
9 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart';
10
11 class EventDeleteEvent{
12 final M.Event event;
13 EventDeleteEvent(this.event);
14 }
15
16 class NavNotifyEventElement extends HtmlElement implements Renderable {
17 static const tag = const Tag<NavNotifyEventElement>('nav-event');
18
19 RenderingScheduler _r;
20
21 Stream<RenderedEvent<NavNotifyEventElement>> get onRendered => _r.onRendered;
22
23 final StreamController<EventDeleteEvent> _onDelete =
24 new StreamController<EventDeleteEvent>.broadcast();
25 Stream<EventDeleteEvent> get onDelete => _onDelete.stream;
26
27 M.Event _event;
28 M.Event get event => _event;
29
30 factory NavNotifyEventElement(M.Event event, {RenderingQueue queue}) {
31 assert(event != null);
32 NavNotifyEventElement e = document.createElement(tag.name);
33 e._r = new RenderingScheduler(e, queue: queue);
34 e._event = event;
35 return e;
36 }
37
38 NavNotifyEventElement.created() : super.created();
39
40 @override
41 void attached() {
42 super.attached();
43 _r.enable();
44 }
45
46 @override
47 void detached() {
48 super.detached();
49 children = [];
50 _r.disable(notify: true);
51 }
52
53 void render() {
54 children = [];
55 List<Element> content;
56 if (event is M.PauseStartEvent) {
57 content = _managePauseStartEvent(event as M.PauseStartEvent);
58 } else if (event is M.PauseExitEvent) {
59 content = _managePauseExitEvent(event as M.PauseExitEvent);
60 } else if (event is M.PauseBreakpointEvent) {
61 content = _managePauseBreakpointEvent(event as M.PauseBreakpointEvent);
62 } else if (event is M.PauseInterruptedEvent) {
63 content = _managePauseInterruptedEvent(event as M.PauseInterruptedEvent);
64 } else if (event is M.PauseExceptionEvent) {
65 content = _managePauseExceptionEvent(event as M.PauseExceptionEvent);
66 } else if (event is M.NoneEvent) {
67 content = _manageNoneEvent(event as M.NoneEvent);
68 } else if (event is M.ConnectionClosedEvent) {
69 content = _manageConnectionClosedEvent(event as M.ConnectionClosedEvent);
70 } else if (event is M.InspectEvent) {
71 content = _manageInspectEvent(event as M.InspectEvent);
72 } else if (event is M.IsolateReloadEvent) {
73 content = _manageIsolateReloadEvent(event as M.IsolateReloadEvent);
74 } else {
75 return;
76 }
77 children = [
78 new DivElement()
79 ..children = []
80 ..children.addAll(content)
81 ..children.add(new ButtonElement()..innerHtml = '&times;'
82 ..onClick.map(_toEvent).listen(_delete))
83 ];
84 }
85
86 static List<Element> _managePauseStartEvent(M.PauseStartEvent event) {
87 return [
88 new SpanElement()..text = 'Isolate ',
89 new AnchorElement(
90 href: '#/inspect?isolateId=${Uri.encodeComponent(event.isolate.id)}')
91 ..text = event.isolate.name,
92 new SpanElement()..text = ' is paused at isolate start',
93 new BRElement(), new BRElement(), new SpanElement()..text = '[',
94 new AnchorElement(
95 href: '#/debugger?isolateId=${Uri.encodeComponent(event.isolate.id)}')
96 ..text = 'debug',
97 new SpanElement()..text = ']'
98 ];
99 }
100
101 static List<Element> _managePauseExitEvent(M.PauseExitEvent event) {
102 return [
103 new SpanElement()..text = 'Isolate ',
104 new AnchorElement(
105 href: '#/inspect?isolateId=${Uri.encodeComponent(event.isolate.id)}')
106 ..text = event.isolate.name,
107 new SpanElement()..text = ' is paused at isolate exit',
108 new BRElement(), new BRElement(), new SpanElement()..text = '[',
109 new AnchorElement(
110 href: '#/debugger?isolateId=${Uri.encodeComponent(event.isolate.id)}')
111 ..text = 'debug',
112 new SpanElement()..text = ']'
113 ];
114 }
115
116 static List<Element> _managePauseBreakpointEvent(M.PauseBreakpointEvent event) {
117 String message = ' is paused';
118 if (event.breakpoint != null) {
119 message += ' at breakpoint ${event.breakpoint.number}';
120 }
121 return [
122 new SpanElement()..text = 'Isolate ',
123 new AnchorElement(
124 href: '#/inspect?isolateId=${Uri.encodeComponent(event.isolate.id)}')
125 ..text = event.isolate.name,
126 new SpanElement()
127 ..text = message,
128 new BRElement(), new BRElement(), new SpanElement()..text = '[',
129 new AnchorElement(
130 href: '#/debugger?isolateId=${Uri.encodeComponent(event.isolate.id)}')
131 ..text = 'debug',
132 new SpanElement()..text = ']'
133 ];
134 }
135
136 static List<Element> _managePauseInterruptedEvent(M.PauseInterruptedEvent even t) {
137 return [
138 new SpanElement()..text = 'Isolate ',
139 new AnchorElement(
140 href: '#/inspect?isolateId=${Uri.encodeComponent(event.isolate.id)}')
141 ..text = event.isolate.name,
142 new SpanElement()
143 ..text = ' is paused',
144 new BRElement(), new BRElement(), new SpanElement()..text = '[',
145 new AnchorElement(
146 href: '#/debugger?isolateId=${Uri.encodeComponent(event.isolate.id)}')
147 ..text = 'debug',
148 new SpanElement()..text = ']'
149 ];
150 }
151
152 static List<Element> _managePauseExceptionEvent(M.PauseExceptionEvent event) {
153 return [
154 new SpanElement()..text = 'Isolate ',
155 new AnchorElement(
156 href: '#/inspect?isolateId=${Uri.encodeComponent(event.isolate.id)}')
157 ..text = event.isolate.name,
158 new SpanElement()
159 ..text = ' is paused due to exception',
160 new BRElement(), new BRElement(), new SpanElement()..text = '[',
161 new AnchorElement(
162 href: '#/debugger?isolateId=${Uri.encodeComponent(event.isolate.id)}')
163 ..text = 'debug',
164 new SpanElement()..text = ']'
165 ];
166 }
167
168 static List<Element> _manageNoneEvent(M.NoneEvent event) {
169 return [
170 new SpanElement()..text = 'Isolate ',
171 new AnchorElement(
172 href: '#/inspect?isolateId=${Uri.encodeComponent(event.isolate.id)}')
173 ..text = event.isolate.name,
174 new SpanElement()
175 ..text = ' is paused',
176 new BRElement(), new BRElement(), new SpanElement()..text = '[',
177 new AnchorElement(
178 href: '#/debugger?isolateId=${Uri.encodeComponent(event.isolate.id)}')
179 ..text = 'debug',
180 new SpanElement()..text = ']'
181 ];
182 }
183
184 static List<Element> _manageConnectionClosedEvent(M.ConnectionClosedEvent even t) {
185 return [
186 new SpanElement()..text = 'Disconnected from VM: ${event.reason}',
187 new BRElement(), new BRElement(), new SpanElement()..text = '[',
188 new AnchorElement(href: '#/vm-connect')..text = 'Connect to a VM',
189 new SpanElement()..text = ']'
190 ];
191 }
192
193 static List<Element> _manageInspectEvent(M.InspectEvent event) {
194 return [
195 new SpanElement()..text = 'Inspect ',
196 // TODO(cbernaschina) add InstanceRefElement back.
197 //new InstanceRefElement()..instance = event.inspectee
198 ];
199 }
200
201 static List<Element> _manageIsolateReloadEvent(M.IsolateReloadEvent event) {
202 if (event.error != null) {
203 return [
204 new SpanElement()..text = 'Isolate reload failed:',
205 new BRElement(), new BRElement(),
206 new DivElement()
207 ..classes = ["indent", "error"]
208 ..text = event.error.message.toString()
209 ];
210 } else {
211 return [new SpanElement()..text = 'Isolate reload'];
212 }
213 }
214
215 EventDeleteEvent _toEvent(_) {
216 return new EventDeleteEvent(_event);
217 }
218
219 void _delete(EventDeleteEvent e) {
220 _onDelete.add(e);
221 }
222
223 void delete() {
224 _onDelete.add(new EventDeleteEvent(_event));
225 }
226 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698