Chromium Code Reviews| 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..f449cbd05b6a4c3d1cad03da815b0221be296ce4 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('service-ref-downcast') |
|
Cutch
2014/08/21 20:08:55
Rename service-ref to be service-ref-common or ser
|
| +class ServiceRefDowncastElement extends ObservatoryElement { |
| + @published ServiceObject ref; |
| + ServiceRefDowncastElement.created() : super.created(); |
| + |
| + ObservatoryElement _constructElementForRef() { |
| + var type = ref.serviceType; |
| + switch (type) { |
| + case 'Class': |
| + ClassRefElement element = new Element.tag('class-ref'); |
| + element.ref = ref; |
| + return element; |
| + case 'Code': |
| + CodeRefElement element = new Element.tag('code-ref'); |
| + element.ref = ref; |
| + return element; |
| + case 'Field': |
| + FieldRefElement element = new Element.tag('field-ref'); |
| + element.ref = ref; |
| + return element; |
| + case 'Function': |
| + FunctionRefElement element = new Element.tag('function-ref'); |
| + element.ref = ref; |
| + return element; |
| + case 'Library': |
| + LibraryRefElement 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': |
| + InstanceRefElement element = new Element.tag('instance-ref'); |
| + element.ref = ref; |
| + return element; |
| + default: |
| + Element 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}\''); |
| + } |
| +} |