| 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}\'');
|
| + }
|
| +}
|
|
|