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

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

Issue 2211603002: Centralized event streams (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Updated observatory_sources 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) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 vm_connect_element; 5 library vm_connect_element;
6 6
7 import 'dart:html'; 7 import 'dart:html';
8 import 'dart:async'; 8 import 'dart:async';
9 import 'dart:convert'; 9 import 'dart:convert';
10 import 'package:observatory/models.dart' as M; 10 import 'package:observatory/models.dart' as M;
11 import 'package:observatory/src/elements/helpers/tag.dart'; 11 import 'package:observatory/src/elements/helpers/tag.dart';
12 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart'; 12 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart';
13 import 'package:observatory/src/elements/nav/bar.dart'; 13 import 'package:observatory/src/elements/nav/bar.dart';
14 import 'package:observatory/src/elements/nav/notify.dart'; 14 import 'package:observatory/src/elements/nav/notify.dart';
15 import 'package:observatory/src/elements/nav/top_menu.dart'; 15 import 'package:observatory/src/elements/nav/top_menu.dart';
16 import 'package:observatory/src/elements/view_footer.dart'; 16 import 'package:observatory/src/elements/view_footer.dart';
17 import 'package:observatory/src/elements/vm_connect_target.dart'; 17 import 'package:observatory/src/elements/vm_connect_target.dart';
18 18
19 typedef void CrashDumpLoadCallback(Map dump);
20
19 class VMConnectElement extends HtmlElement implements Renderable{ 21 class VMConnectElement extends HtmlElement implements Renderable{
20 static const tag = const Tag<VMConnectElement>('vm-connect', 22 static const tag = const Tag<VMConnectElement>('vm-connect',
21 dependencies: const [NavBarElement.tag, 23 dependencies: const [NavBarElement.tag,
22 NavTopMenuElement.tag, 24 NavTopMenuElement.tag,
23 NavNotifyElement.tag, 25 NavNotifyElement.tag,
24 ViewFooterElement.tag, 26 ViewFooterElement.tag,
25 VMConnectTargetElement.tag]); 27 VMConnectTargetElement.tag]);
26 28
27 RenderingScheduler _r; 29 RenderingScheduler _r;
28 30
29 Stream<RenderedEvent<VMConnectElement>> get onRendered => _r.onRendered; 31 Stream<RenderedEvent<VMConnectElement>> get onRendered => _r.onRendered;
30 32
31 M.CrashDumpRepository _dump; 33 CrashDumpLoadCallback _loadDump;
32 M.NotificationRepository _notifications; 34 M.NotificationRepository _notifications;
33 M.TargetRepository _targets; 35 M.TargetRepository _targets;
34 StreamSubscription _targetsSubscription; 36 StreamSubscription _targetsSubscription;
35 37
36 String _address; 38 String _address;
37 39
38 factory VMConnectElement(M.TargetRepository targets, 40 factory VMConnectElement(M.TargetRepository targets,
39 M.CrashDumpRepository dump, 41 CrashDumpLoadCallback loadDump,
40 M.NotificationRepository notifications, 42 M.NotificationRepository notifications,
41 {String address: '', RenderingQueue queue}) { 43 {String address: '', RenderingQueue queue}) {
42 assert(address != null); 44 assert(address != null);
43 assert(dump != null); 45 assert(loadDump != null);
44 assert(notifications != null); 46 assert(notifications != null);
45 assert(targets != null); 47 assert(targets != null);
46 VMConnectElement e = document.createElement(tag.name); 48 VMConnectElement e = document.createElement(tag.name);
47 e._r = new RenderingScheduler(e, queue: queue); 49 e._r = new RenderingScheduler(e, queue: queue);
48 e._address = address; 50 e._address = address;
49 e._dump = dump; 51 e._loadDump = loadDump;
50 e._notifications = notifications; 52 e._notifications = notifications;
51 e._targets = targets; 53 e._targets = targets;
52 return e; 54 return e;
53 } 55 }
54 56
55 VMConnectElement.created() : super.created(); 57 VMConnectElement.created() : super.created();
56 58
57 @override 59 @override
58 void attached() { 60 void attached() {
59 super.attached(); _r.enable(); 61 super.attached(); _r.enable();
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 } 151 }
150 152
151 FileUploadInputElement _createCrushDumpLoader() { 153 FileUploadInputElement _createCrushDumpLoader() {
152 FileUploadInputElement e = new FileUploadInputElement() 154 FileUploadInputElement e = new FileUploadInputElement()
153 ..id = 'crashDumpFile'; 155 ..id = 'crashDumpFile';
154 e.onChange.listen((_) { 156 e.onChange.listen((_) {
155 var reader = new FileReader(); 157 var reader = new FileReader();
156 reader.readAsText(e.files[0]); 158 reader.readAsText(e.files[0]);
157 reader.onLoad.listen((_) { 159 reader.onLoad.listen((_) {
158 var crashDump = JSON.decode(reader.result); 160 var crashDump = JSON.decode(reader.result);
159 _dump.load(crashDump); 161 _loadDump(crashDump);
160 }); 162 });
161 }); 163 });
162 return e; 164 return e;
163 } 165 }
164 void _create() { 166 void _create() {
165 if (_address == null || _address.isEmpty) return; 167 if (_address == null || _address.isEmpty) return;
166 _targets.add(_normalizeStandaloneAddress(_address)); 168 _targets.add(_normalizeStandaloneAddress(_address));
167 } 169 }
168 void _connect(TargetEvent e) => _targets.setCurrent(e.target); 170 void _connect(TargetEvent e) => _targets.setCurrent(e.target);
169 void _delete(TargetEvent e) => _targets.delete(e.target); 171 void _delete(TargetEvent e) => _targets.delete(e.target);
170 172
171 static String _normalizeStandaloneAddress(String networkAddress) { 173 static String _normalizeStandaloneAddress(String networkAddress) {
172 if (networkAddress.startsWith('ws://')) { 174 if (networkAddress.startsWith('ws://')) {
173 return networkAddress; 175 return networkAddress;
174 } 176 }
175 return 'ws://${networkAddress}/ws'; 177 return 'ws://${networkAddress}/ws';
176 } 178 }
177 } 179 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698