Index: runtime/observatory/lib/src/elements/stack_trace_tree_config.dart |
diff --git a/runtime/observatory/lib/src/elements/stack_trace_tree_config.dart b/runtime/observatory/lib/src/elements/stack_trace_tree_config.dart |
index 1e9e239de0cb62a611a031fa8d2a529aae2d3852..def0b64be3f5bf6ecebb0f8bba37fd225d3a05b0 100644 |
--- a/runtime/observatory/lib/src/elements/stack_trace_tree_config.dart |
+++ b/runtime/observatory/lib/src/elements/stack_trace_tree_config.dart |
@@ -161,6 +161,14 @@ class StackTraceTreeConfigElement extends HtmlElement implements Renderable { |
return members; |
} |
+ String get modeDescription { |
+ if (_mode == ProfileTreeMode.function) { |
+ return 'Inlined frames expanded.'; |
+ } else { |
+ return 'Inlined frames not expanded.'; |
+ } |
+ } |
+ |
List<Element> _createModeSelect() { |
var s; |
return [ |
@@ -174,11 +182,22 @@ class StackTraceTreeConfigElement extends HtmlElement implements Renderable { |
}).toList(growable: false) |
..onChange.listen((_) { |
_mode = ProfileTreeMode.values[s.selectedIndex]; |
+ _r.dirty(); |
}) |
..onChange.map(_toEvent).listen(_triggerModeChange), |
+ new SpanElement() |
+ ..text = ' $modeDescription' |
]; |
} |
+ String get directionDescription { |
+ if (_direction == M.ProfileTreeDirection.inclusive) { |
+ return 'Tree is rooted at "main". Child nodes are callees.'; |
+ } else { |
+ return 'Tree is rooted at top-of-stack. Child nodes are callers.'; |
+ } |
+ } |
+ |
List<Element> _createDirectionSelect() { |
var s; |
return [ |
@@ -193,12 +212,11 @@ class StackTraceTreeConfigElement extends HtmlElement implements Renderable { |
}).toList(growable: false) |
..onChange.listen((_) { |
_direction = M.ProfileTreeDirection.values[s.selectedIndex]; |
+ _r.dirty(); |
}) |
..onChange.map(_toEvent).listen(_triggerDirectionChange), |
new SpanElement() |
- ..text = 'Tree is rooted at ' + |
- (_direction == 'Down' ? '"main"' : 'function / code') + |
- '. Child nodes are callers.' |
+ ..text = ' $directionDescription' |
]; |
} |