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

Unified Diff: runtime/bin/vmservice/observatory/lib/src/elements/service_ref.dart

Issue 483103003: Incoming references service request and UI. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: build Created 6 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 side-by-side diff with in-line comments
Download patch
Index: runtime/bin/vmservice/observatory/lib/src/elements/service_ref.dart
diff --git a/runtime/bin/vmservice/observatory/lib/src/elements/service_ref.dart b/runtime/bin/vmservice/observatory/lib/src/elements/service_ref.dart
index 5b6b1a1ed41893ba35820619f57bf1f309274556..bda75071d00c1772632e54a51ef2d1ab90805c84 100644
--- a/runtime/bin/vmservice/observatory/lib/src/elements/service_ref.dart
+++ b/runtime/bin/vmservice/observatory/lib/src/elements/service_ref.dart
@@ -4,6 +4,8 @@
library service_ref_element;
+import 'dart:html';
+import 'package:logging/logging.dart';
import 'package:polymer/polymer.dart';
import 'observatory_element.dart';
import 'package:observatory/service.dart';
@@ -54,3 +56,71 @@ class ServiceRefElement extends ObservatoryElement {
return name.isEmpty;
}
}
+
+
+@CustomTag('any-service-ref')
+class AnyServiceRefElement extends ObservatoryElement {
+ @published ServiceObject ref;
+ AnyServiceRefElement.created() : super.created();
+
+ Element _constructElementForRef() {
+ var type = ref.serviceType;
+ switch (type) {
+ case 'Class':
+ ServiceRefElement element = new Element.tag('class-ref');
+ element.ref = ref;
+ return element;
+ case 'Code':
+ ServiceRefElement element = new Element.tag('code-ref');
+ element.ref = ref;
+ return element;
+ case 'Field':
+ ServiceRefElement element = new Element.tag('field-ref');
+ element.ref = ref;
+ return element;
+ case 'Function':
+ ServiceRefElement element = new Element.tag('function-ref');
+ element.ref = ref;
+ return element;
+ case 'Library':
+ ServiceRefElement element = new Element.tag('library-ref');
+ element.ref = ref;
+ return element;
+ case 'Type':
+ case 'Array':
+ case 'Bool':
+ case 'Closure':
+ case 'Double':
+ case 'GrowableObjectArray':
+ case 'Instance':
+ case 'Smi':
+ case 'Mint':
+ case 'Bigint':
+ case 'String':
+ ServiceRefElement element = new Element.tag('instance-ref');
+ element.ref = ref;
+ return element;
+ default:
+ SpanElement element = new Element.tag('span');
+ element.text = "<<Unknown service ref: $ref>>";
+ return element;
+ }
+ }
+
+ refChanged(oldValue) {
+ // Remove the current view.
+ children.clear();
+ if (ref == null) {
+ Logger.root.info('Viewing null object.');
+ return;
+ }
+ var type = ref.serviceType;
+ var element = _constructElementForRef();
+ if (element == null) {
+ Logger.root.info('Unable to find a ref element for \'${type}\'');
+ return;
+ }
+ children.add(element);
+ Logger.root.info('Viewing object of \'${type}\'');
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698