Index: runtime/observatory/lib/src/elements/instance_ref.dart |
diff --git a/runtime/observatory/lib/src/elements/instance_ref.dart b/runtime/observatory/lib/src/elements/instance_ref.dart |
index 1e1df2dd1c85dd047f6af0938dc3be5a262ffd1e..7bbf3aebbb0c0d6094fd499f2398ce43fcef7b9b 100644 |
--- a/runtime/observatory/lib/src/elements/instance_ref.dart |
+++ b/runtime/observatory/lib/src/elements/instance_ref.dart |
@@ -14,7 +14,8 @@ import 'package:observatory/src/elements/helpers/uris.dart'; |
import 'package:observatory/utils.dart'; |
class InstanceRefElement extends HtmlElement implements Renderable { |
- static const tag = const Tag<InstanceRefElement>('instance-ref'); |
+ static const tag = const Tag<InstanceRefElement>('instance-ref', |
+ dependencies: const [CurlyBlockElement.tag]); |
RenderingScheduler<InstanceRefElement> _r; |
@@ -22,24 +23,24 @@ class InstanceRefElement extends HtmlElement implements Renderable { |
M.IsolateRef _isolate; |
M.InstanceRef _instance; |
- M.InstanceRepository _instances; |
+ M.ObjectRepository _objects; |
M.Instance _loadedInstance; |
bool _expanded = false; |
M.IsolateRef get isolate => _isolate; |
M.InstanceRef get instance => _instance; |
- factory InstanceRefElement(M.IsolateRef isolate, M.InstanceRef instance, |
- M.InstanceRepository instances, |
+ factory InstanceRefElement( |
+ M.IsolateRef isolate, M.InstanceRef instance, M.ObjectRepository objects, |
{RenderingQueue queue}) { |
assert(isolate != null); |
assert(instance != null); |
- assert(instances != null); |
+ assert(objects != null); |
InstanceRefElement e = document.createElement(tag.name); |
e._r = new RenderingScheduler(e, queue: queue); |
e._isolate = isolate; |
e._instance = instance; |
- e._instances = instances; |
+ e._objects = objects; |
return e; |
} |
@@ -85,7 +86,7 @@ class InstanceRefElement extends HtmlElement implements Renderable { |
} |
Future _refresh() async { |
- _loadedInstance = await _instances.get(_isolate, _instance.id); |
+ _loadedInstance = await _objects.get(_isolate, _instance.id); |
_r.dirty(); |
} |
@@ -98,7 +99,7 @@ class InstanceRefElement extends HtmlElement implements Renderable { |
button.onClick.listen((_) async { |
button.disabled = true; |
_loadedInstance = |
- await _instances.get(_isolate, _instance.id, count: count * 2); |
+ await _objects.get(_isolate, _instance.id, count: count * 2); |
_r.dirty(); |
}); |
return [button]; |
@@ -209,6 +210,7 @@ class InstanceRefElement extends HtmlElement implements Renderable { |
bool _hasValue() { |
switch (_instance.kind) { |
+ case M.InstanceKind.closure: |
case M.InstanceKind.plainInstance: |
case M.InstanceKind.mirrorReference: |
case M.InstanceKind.stackTrace: |
@@ -241,14 +243,29 @@ class InstanceRefElement extends HtmlElement implements Renderable { |
return [new SpanElement()..text = 'Loading...']; |
} |
switch (_instance.kind) { |
+ case M.InstanceKind.closure: |
+ return [ |
+ new DivElement() |
+ ..children = [ |
+ new SpanElement()..text = 'function = ', |
+ anyRef(_isolate, _loadedInstance.closureFunction, _objects, |
+ queue: _r.queue) |
+ ], |
+ new DivElement() |
+ ..children = [ |
+ new SpanElement()..text = 'context = ', |
+ anyRef(_isolate, _loadedInstance.closureContext, _objects, |
+ queue: _r.queue) |
+ ], |
+ ]; |
case M.InstanceKind.plainInstance: |
return _loadedInstance.fields |
.map((f) => new DivElement() |
..children = [ |
- new FieldRefElement(_isolate, f.decl, _instances, |
+ new FieldRefElement(_isolate, f.decl, _objects, |
queue: _r.queue), |
new SpanElement()..text = ' = ', |
- anyRef(_isolate, f.value, _instances, queue: _r.queue) |
+ anyRef(_isolate, f.value, _objects, queue: _r.queue) |
]) |
.toList(); |
case M.InstanceKind.list: |
@@ -257,7 +274,7 @@ class InstanceRefElement extends HtmlElement implements Renderable { |
.map((element) => new DivElement() |
..children = [ |
new SpanElement()..text = '[ ${index++} ] : ', |
- anyRef(_isolate, element, _instances, queue: _r.queue) |
+ anyRef(_isolate, element, _objects, queue: _r.queue) |
]) |
.toList() |
..addAll(_createShowMoreButton()); |
@@ -266,9 +283,9 @@ class InstanceRefElement extends HtmlElement implements Renderable { |
.map((association) => new DivElement() |
..children = [ |
new SpanElement()..text = '[ ', |
- anyRef(_isolate, association.key, _instances, queue: _r.queue), |
+ anyRef(_isolate, association.key, _objects, queue: _r.queue), |
new SpanElement()..text = ' ] : ', |
- anyRef(_isolate, association.value, _instances, queue: _r.queue) |
+ anyRef(_isolate, association.value, _objects, queue: _r.queue) |
]) |
.toList() |
..addAll(_createShowMoreButton()); |
@@ -294,8 +311,7 @@ class InstanceRefElement extends HtmlElement implements Renderable { |
case M.InstanceKind.mirrorReference: |
return [ |
new SpanElement()..text = '<referent> : ', |
- new InstanceRefElement(_isolate, _loadedInstance.referent, _instances, |
- queue: _r.queue) |
+ anyRef(_isolate, _loadedInstance.referent, _objects, queue: _r.queue) |
]; |
case M.InstanceKind.stackTrace: |
return [ |
@@ -306,11 +322,11 @@ class InstanceRefElement extends HtmlElement implements Renderable { |
case M.InstanceKind.weakProperty: |
return [ |
new SpanElement()..text = '<key> : ', |
- new InstanceRefElement(_isolate, _loadedInstance.key, _instances, |
+ new InstanceRefElement(_isolate, _loadedInstance.key, _objects, |
queue: _r.queue), |
new BRElement(), |
new SpanElement()..text = '<value> : ', |
- new InstanceRefElement(_isolate, _loadedInstance.value, _instances, |
+ new InstanceRefElement(_isolate, _loadedInstance.value, _objects, |
queue: _r.queue), |
]; |
default: |