Index: runtime/observatory/lib/src/elements/vm_connect.dart |
diff --git a/runtime/observatory/lib/src/elements/vm_connect.dart b/runtime/observatory/lib/src/elements/vm_connect.dart |
index 7323d685fed7d0954eae883e5205ff5b22064808..5b60c073047d27f94b097aa12df276e1ae550f57 100644 |
--- a/runtime/observatory/lib/src/elements/vm_connect.dart |
+++ b/runtime/observatory/lib/src/elements/vm_connect.dart |
@@ -4,11 +4,14 @@ |
library vm_connect_element; |
+import 'dart:convert'; |
import 'dart:html'; |
-import 'package:polymer/polymer.dart'; |
+ |
import 'observatory_element.dart'; |
import 'package:observatory/app.dart'; |
+import 'package:observatory/elements.dart'; |
import 'package:observatory/service_html.dart'; |
+import 'package:polymer/polymer.dart'; |
void _connectToVM(ObservatoryApplication app, WebSocketVMTarget target) { |
app.vm = new WebSocketVM(target); |
@@ -20,13 +23,6 @@ class VMConnectTargetElement extends ObservatoryElement { |
VMConnectTargetElement.created() : super.created(); |
- bool get isChromeTarget { |
- if (target == null) { |
- return false; |
- } |
- return target.chrome; |
- } |
- |
bool get isCurrentTarget { |
if (app.vm == null) { |
return false; |
@@ -58,12 +54,8 @@ class VMConnectTargetElement extends ObservatoryElement { |
@CustomTag('vm-connect') |
class VMConnectElement extends ObservatoryElement { |
@published String standaloneVmAddress = ''; |
- @published String chromiumAddress = 'localhost:9222'; |
- @observable ObservableList<WebSocketVMTarget> chromeTargets = |
- new ObservableList<WebSocketVMTarget>(); |
VMConnectElement.created() : super.created() { |
- pollPeriod = new Duration(seconds: 1); |
} |
void _connect(WebSocketVMTarget target) { |
@@ -71,8 +63,11 @@ class VMConnectElement extends ObservatoryElement { |
app.locationManager.go('#/vm'); |
} |
- void onPoll() { |
- _refreshTabs(); |
+ @override |
+ void attached() { |
+ super.attached(); |
+ var fileInput = shadowRoot.querySelector('#crashDumpFile'); |
+ fileInput.onChange.listen(_onCrashDumpFileChange); |
} |
String _normalizeStandaloneAddress(String networkAddress) { |
@@ -85,33 +80,24 @@ class VMConnectElement extends ObservatoryElement { |
void connectStandalone(Event e, var detail, Node target) { |
// Prevent any form action. |
e.preventDefault(); |
+ if (standaloneVmAddress == null) { |
+ return; |
+ } |
+ if (standaloneVmAddress.isEmpty) { |
+ return; |
+ } |
var targetAddress = _normalizeStandaloneAddress(standaloneVmAddress); |
var target = app.targets.findOrMake(targetAddress); |
_connect(target); |
} |
- void getTabs(Event e, var detail, Node target) { |
- // Prevent any form action. |
- e.preventDefault(); |
- _refreshTabs(); |
- } |
- |
- void _refreshTabs() { |
- ChromiumTargetLister.fetch(chromiumAddress).then((targets) { |
- chromeTargets.clear(); |
- if (targets == null) { |
- return; |
- } |
- for (var i = 0; i < targets.length; i++) { |
- if (targets[i].networkAddress == null) { |
- // Don't add targets that don't have a network address. |
- // This happens when a tab has devtools open! |
- continue; |
- } |
- chromeTargets.add(targets[i]); |
- } |
- }).catchError((e) { |
- chromeTargets.clear(); |
+ _onCrashDumpFileChange(e) { |
+ var fileInput = shadowRoot.querySelector('#crashDumpFile'); |
+ var reader = new FileReader(); |
+ reader.readAsText(fileInput.files[0]); |
+ reader.onLoad.listen((_) { |
+ var crashDump = JSON.decode(reader.result); |
+ app.loadCrashDump(crashDump); |
}); |
} |
} |