OLD | NEW |
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/src/elements/helpers/tag.dart'; | 12 import 'package:observatory/src/elements/helpers/tag.dart'; |
12 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart'; | 13 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart'; |
13 import 'package:observatory/src/elements/helpers/nav_bar.dart'; | 14 import 'package:observatory/src/elements/helpers/nav_bar.dart'; |
14 import 'package:observatory/src/elements/nav/notify.dart'; | 15 import 'package:observatory/src/elements/nav/notify.dart'; |
15 import 'package:observatory/src/elements/nav/top_menu.dart'; | 16 import 'package:observatory/src/elements/nav/top_menu.dart'; |
16 import 'package:observatory/src/elements/view_footer.dart'; | 17 import 'package:observatory/src/elements/view_footer.dart'; |
17 import 'package:observatory/src/elements/vm_connect_target.dart'; | 18 import 'package:observatory/src/elements/vm_connect_target.dart'; |
18 | 19 |
19 typedef void CrashDumpLoadCallback(Map dump); | 20 typedef void CrashDumpLoadCallback(Map dump); |
20 | 21 |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 new DivElement() | 87 new DivElement() |
87 ..classes = ['flex-row'] | 88 ..classes = ['flex-row'] |
88 ..children = [ | 89 ..children = [ |
89 new DivElement() | 90 new DivElement() |
90 ..classes = ['flex-item-40-percent'] | 91 ..classes = ['flex-item-40-percent'] |
91 ..children = [ | 92 ..children = [ |
92 new HeadingElement.h2()..text = 'WebSocket', | 93 new HeadingElement.h2()..text = 'WebSocket', |
93 new BRElement(), | 94 new BRElement(), |
94 new UListElement() | 95 new UListElement() |
95 ..children = _targets.list().map((target) { | 96 ..children = _targets.list().map((target) { |
| 97 final ObservatoryApplication app = |
| 98 ObservatoryApplication.app; |
| 99 final bool current = app.isConnectedVMTarget(target); |
96 return new LIElement() | 100 return new LIElement() |
97 ..children = [new VMConnectTargetElement(target, | 101 ..children = [new VMConnectTargetElement(target, |
98 current: target == _targets.current, queue: _r.queue) | 102 current: current, queue: _r.queue) |
99 ..onConnect.listen(_connect) | 103 ..onConnect.listen(_connect) |
100 ..onDelete.listen(_delete) | 104 ..onDelete.listen(_delete) |
101 ]; | 105 ]; |
102 }).toList(), | 106 }).toList(), |
103 new HRElement(), | 107 new HRElement(), |
104 new FormElement() | 108 new FormElement() |
105 ..autocomplete = 'on' | 109 ..autocomplete = 'on' |
106 ..children = [ | 110 ..children = [ |
107 _createAddressBox(), | 111 _createAddressBox(), |
108 new SpanElement()..text = ' ', | 112 new SpanElement()..text = ' ', |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 var crashDump = JSON.decode(reader.result); | 167 var crashDump = JSON.decode(reader.result); |
164 _loadDump(crashDump); | 168 _loadDump(crashDump); |
165 }); | 169 }); |
166 }); | 170 }); |
167 return e; | 171 return e; |
168 } | 172 } |
169 void _create() { | 173 void _create() { |
170 if (_address == null || _address.isEmpty) return; | 174 if (_address == null || _address.isEmpty) return; |
171 _targets.add(_normalizeStandaloneAddress(_address)); | 175 _targets.add(_normalizeStandaloneAddress(_address)); |
172 } | 176 } |
173 void _connect(TargetEvent e) => _targets.setCurrent(e.target); | 177 void _connect(TargetEvent e) { |
| 178 _targets.setCurrent(e.target); |
| 179 } |
174 void _delete(TargetEvent e) => _targets.delete(e.target); | 180 void _delete(TargetEvent e) => _targets.delete(e.target); |
175 | 181 |
176 static String _normalizeStandaloneAddress(String networkAddress) { | 182 static String _normalizeStandaloneAddress(String networkAddress) { |
177 if (networkAddress.startsWith('ws://')) { | 183 if (!networkAddress.startsWith('http') && !networkAddress.startsWith('ws'))
{ |
| 184 networkAddress = 'http://$networkAddress'; |
| 185 } |
| 186 try { |
| 187 Uri uri = Uri.parse(networkAddress); |
| 188 print('returning ${uri.host} ${uri.port}'); |
| 189 return 'ws://${uri.host}:${uri.port}/ws'; |
| 190 } catch (e) { |
| 191 print('caught exception with: $networkAddress -- $e'); |
178 return networkAddress; | 192 return networkAddress; |
179 } | 193 } |
180 return 'ws://${networkAddress}/ws'; | |
181 } | 194 } |
182 } | 195 } |
OLD | NEW |