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

Unified Diff: runtime/bin/vmservice/client/lib/src/elements/isolate_summary.dart

Issue 271153002: Add pause/resume for isolates in vmservice/observatory. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: gen js Created 6 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: runtime/bin/vmservice/client/lib/src/elements/isolate_summary.dart
diff --git a/runtime/bin/vmservice/client/lib/src/elements/isolate_summary.dart b/runtime/bin/vmservice/client/lib/src/elements/isolate_summary.dart
index 56baabf4989eac6d049c8870dedf070d4d5424f1..7054ba18b5c549cf77f36e62bcfe44e7b43cc93d 100644
--- a/runtime/bin/vmservice/client/lib/src/elements/isolate_summary.dart
+++ b/runtime/bin/vmservice/client/lib/src/elements/isolate_summary.dart
@@ -4,12 +4,104 @@
library isolate_summary_element;
+import 'dart:async';
+import 'dart:html';
+import 'observatory_element.dart';
+import 'package:observatory/app.dart';
import 'package:observatory/service.dart';
+import 'package:logging/logging.dart';
import 'package:polymer/polymer.dart';
-import 'observatory_element.dart';
@CustomTag('isolate-summary')
class IsolateSummaryElement extends ObservatoryElement {
IsolateSummaryElement.created() : super.created();
+
+ @published Isolate isolate;
+}
+
+@CustomTag('isolate-run-state')
+class IsolateRunStateElement extends ObservatoryElement {
+ IsolateRunStateElement.created() : super.created();
+
+ @published Isolate isolate;
+
+ Future pause(_) {
+ return isolate.get("debug/pause").then((result) {
+ // TODO(turnidge): Instead of asserting here, handle errors
+ // properly.
+ assert(result.serviceType == 'Success');
+ return isolate.reload();
+ });
+ }
+
+ Future resume(_) {
+ return isolate.get("debug/resume").then((result) {
+ // TODO(turnidge): Instead of asserting here, handle errors
+ // properly.
+ assert(result.serviceType == 'Success');
+ return isolate.reload();
+ });
+ }
+}
+
+@CustomTag('isolate-location')
+class IsolateLocationElement extends ObservatoryElement {
+ IsolateLocationElement.created() : super.created();
+
+ @published Isolate isolate;
+}
+
+@CustomTag('isolate-shared-summary')
+class IsolateSharedSummaryElement extends ObservatoryElement {
+ IsolateSharedSummaryElement.created() : super.created();
+
@published Isolate isolate;
}
+
+class CounterChart {
+ var _table = new DataTable();
+ var _chart;
+
+ void update(Map counters) {
+ if (_table.columns == 0) {
+ // Initialize.
+ _table.addColumn('string', 'Name');
+ _table.addColumn('number', 'Value');
+ }
+ _table.clearRows();
+ for (var key in counters.keys) {
+ var value = double.parse(counters[key].split('%')[0]);
+ _table.addRow([key, value]);
+ }
+ }
+
+ void draw(var element) {
+ if (_chart == null) {
+ assert(element != null);
+ _chart = new Chart('PieChart', element);
+ }
+ _chart.draw(_table);
+ }
+}
+
+@CustomTag('isolate-counter-chart')
+class IsolateCounterChartElement extends ObservatoryElement {
+ IsolateCounterChartElement.created() : super.created();
+
+ @published ObservableMap counters;
+ CounterChart chart = new CounterChart();
+
+ void countersChanged(oldValue) {
+ if (counters == null) {
+ return;
+ }
+ chart.update(counters);
+ var element = shadowRoot.querySelector('#counterPieChart');
+ if (element != null) {
+ chart.draw(element);
+ }
+ }
+}
+
+
+

Powered by Google App Engine
This is Rietveld 408576698