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

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

Issue 2438613002: Provide an API to dart:developer to control the web server hosting the Service Protocol (Closed)
Patch Set: CHANGELOG.md merge and fatal error Created 4 years, 1 month 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/app.dart'; 11 import 'package:observatory/app.dart';
12 import 'package:observatory/src/elements/helpers/tag.dart'; 12 import 'package:observatory/src/elements/helpers/tag.dart';
13 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart'; 13 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart';
14 import 'package:observatory/src/elements/helpers/nav_bar.dart'; 14 import 'package:observatory/src/elements/helpers/nav_bar.dart';
15 import 'package:observatory/src/elements/helpers/uris.dart';
15 import 'package:observatory/src/elements/nav/notify.dart'; 16 import 'package:observatory/src/elements/nav/notify.dart';
16 import 'package:observatory/src/elements/nav/top_menu.dart'; 17 import 'package:observatory/src/elements/nav/top_menu.dart';
17 import 'package:observatory/src/elements/view_footer.dart'; 18 import 'package:observatory/src/elements/view_footer.dart';
18 import 'package:observatory/src/elements/vm_connect_target.dart'; 19 import 'package:observatory/src/elements/vm_connect_target.dart';
19 20
20 typedef void CrashDumpLoadCallback(Map dump); 21 typedef void CrashDumpLoadCallback(Map dump);
21 22
22 class VMConnectElement extends HtmlElement implements Renderable { 23 class VMConnectElement extends HtmlElement implements Renderable {
23 static const tag = 24 static const tag =
24 const Tag<VMConnectElement>('vm-connect', dependencies: const [ 25 const Tag<VMConnectElement>('vm-connect', dependencies: const [
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 new FormElement() 113 new FormElement()
113 ..autocomplete = 'on' 114 ..autocomplete = 'on'
114 ..children = [ 115 ..children = [
115 _createAddressBox(), 116 _createAddressBox(),
116 new SpanElement()..text = ' ', 117 new SpanElement()..text = ' ',
117 new ButtonElement() 118 new ButtonElement()
118 ..classes = ['vm_connect'] 119 ..classes = ['vm_connect']
119 ..text = 'Connect' 120 ..text = 'Connect'
120 ..onClick.listen((e) { 121 ..onClick.listen((e) {
121 e.preventDefault(); 122 e.preventDefault();
122 _create(); 123 _createAndConnect();
123 }), 124 }),
124 ], 125 ],
125 new BRElement(), 126 new BRElement(),
126 new PreElement() 127 new PreElement()
127 ..classes = ['well'] 128 ..classes = ['well']
128 ..text = 'Run Standalone with: \'--observe\'', 129 ..text = 'Run Standalone with: \'--observe\'',
129 ], 130 ],
130 new DivElement()..classes = ['flex-item-20-percent'], 131 new DivElement()..classes = ['flex-item-20-percent'],
131 new DivElement() 132 new DivElement()
132 ..classes = ['flex-item-40-percent'] 133 ..classes = ['flex-item-40-percent']
(...skipping 10 matching lines...) Expand all
143 ] 144 ]
144 ], 145 ],
145 ], 146 ],
146 new ViewFooterElement(queue: _r.queue) 147 new ViewFooterElement(queue: _r.queue)
147 ]; 148 ];
148 } 149 }
149 150
150 TextInputElement _createAddressBox() { 151 TextInputElement _createAddressBox() {
151 var textbox = new TextInputElement() 152 var textbox = new TextInputElement()
152 ..classes = ['textbox'] 153 ..classes = ['textbox']
153 ..placeholder = '127.0.0.1:8181' 154 ..placeholder = 'http://127.0.0.1:8181/...'
154 ..value = _address 155 ..value = _address
155 ..onKeyUp.where((e) => e.key == '\n').listen((e) { 156 ..onKeyUp.where((e) => e.key == '\n').listen((e) {
156 e.preventDefault(); 157 e.preventDefault();
157 _create(); 158 _createAndConnect();
158 }); 159 });
159 textbox.onInput.listen((e) { 160 textbox.onInput.listen((e) {
160 _address = textbox.value; 161 _address = textbox.value;
161 }); 162 });
162 return textbox; 163 return textbox;
163 } 164 }
164 165
165 FileUploadInputElement _createCrushDumpLoader() { 166 FileUploadInputElement _createCrushDumpLoader() {
166 FileUploadInputElement e = new FileUploadInputElement() 167 FileUploadInputElement e = new FileUploadInputElement()
167 ..id = 'crashDumpFile'; 168 ..id = 'crashDumpFile';
168 e.onChange.listen((_) { 169 e.onChange.listen((_) {
169 var reader = new FileReader(); 170 var reader = new FileReader();
170 reader.readAsText(e.files[0]); 171 reader.readAsText(e.files[0]);
171 reader.onLoad.listen((_) { 172 reader.onLoad.listen((_) {
172 var crashDump = JSON.decode(reader.result); 173 var crashDump = JSON.decode(reader.result);
173 _loadDump(crashDump); 174 _loadDump(crashDump);
174 }); 175 });
175 }); 176 });
176 return e; 177 return e;
177 } 178 }
178 179
179 void _create() { 180 void _createAndConnect() {
180 if (_address == null || _address.isEmpty) return; 181 if (_address == null || _address.isEmpty) return;
181 _targets.add(_normalizeStandaloneAddress(_address)); 182 String normalizedNetworkAddress = _normalizeStandaloneAddress(_address);
183 _targets.add(normalizedNetworkAddress);
184 var target = _targets.find(normalizedNetworkAddress);
185 assert(target != null);
186 _targets.setCurrent(target);
187 ObservatoryApplication.app.locationManager.go(Uris.vm());
182 } 188 }
183 189
184 void _connect(TargetEvent e) { 190 void _connect(TargetEvent e) {
185 _targets.setCurrent(e.target); 191 _targets.setCurrent(e.target);
186 } 192 }
187 193
188 void _delete(TargetEvent e) => _targets.delete(e.target); 194 void _delete(TargetEvent e) => _targets.delete(e.target);
189 195
190 static String _normalizeStandaloneAddress(String networkAddress) { 196 static String _normalizeStandaloneAddress(String networkAddress) {
191 if (!networkAddress.startsWith('http') && 197 if (!networkAddress.startsWith('http') &&
192 !networkAddress.startsWith('ws')) { 198 !networkAddress.startsWith('ws')) {
193 networkAddress = 'http://$networkAddress'; 199 networkAddress = 'http://$networkAddress';
194 } 200 }
195 try { 201 try {
196 Uri uri = Uri.parse(networkAddress); 202 Uri uri = Uri.parse(networkAddress);
197 print('returning ${uri.host} ${uri.port}'); 203 return 'ws://${uri.authority}${uri.path}ws';
198 return 'ws://${uri.host}:${uri.port}/ws';
199 } catch (e) { 204 } catch (e) {
200 print('caught exception with: $networkAddress -- $e'); 205 print('caught exception with: $networkAddress -- $e');
201 return networkAddress; 206 return networkAddress;
202 } 207 }
203 } 208 }
204 } 209 }
OLDNEW
« no previous file with comments | « runtime/observatory/lib/src/app/application.dart ('k') | runtime/observatory/lib/src/repositories/target.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698