| Index: runtime/observatory/lib/src/elements/cpu_profile.dart
|
| diff --git a/runtime/observatory/lib/src/elements/cpu_profile.dart b/runtime/observatory/lib/src/elements/cpu_profile.dart
|
| index 6f74bbc2db792e703bffe0a627fae71223911493..2c8125c06a695ea506f5bd5f504b96e153c5f20a 100644
|
| --- a/runtime/observatory/lib/src/elements/cpu_profile.dart
|
| +++ b/runtime/observatory/lib/src/elements/cpu_profile.dart
|
| @@ -588,6 +588,7 @@ class FunctionCallTreeNodeRow extends VirtualTreeRow {
|
| }
|
|
|
| void onRender(DivElement rowDiv) {
|
| + rowDiv.children.add(makeGap(ems:0.1));
|
| rowDiv.children.add(
|
| makeText(totalPercent, toolTip: 'global % on stack'));
|
| rowDiv.children.add(makeGap());
|
| @@ -640,6 +641,7 @@ class CodeCallTreeNodeRow extends VirtualTreeRow {
|
| }
|
|
|
| void onRender(DivElement rowDiv) {
|
| + rowDiv.children.add(makeGap(ems:0.1));
|
| rowDiv.children.add(
|
| makeText(totalPercent, toolTip: 'global % on stack'));
|
| rowDiv.children.add(makeGap());
|
| @@ -709,9 +711,8 @@ class CpuProfileElement extends ObservatoryElement {
|
| var applySize = (e) {
|
| Rectangle rect = e.getBoundingClientRect();
|
| final totalHeight = window.innerHeight;
|
| - final top = rect.top;
|
| final bottomMargin = 200;
|
| - final mainHeight = totalHeight - top - bottomMargin;
|
| + final mainHeight = totalHeight - bottomMargin;
|
| e.style.setProperty('height', '${mainHeight}px');
|
| };
|
| HtmlElement e2 = $['cpuProfileVirtualTree'];
|
| @@ -1272,11 +1273,22 @@ class CpuProfileVirtualTreeElement extends ObservatoryElement {
|
| ProfileTreeMode mode = ProfileTreeMode.Function;
|
| CpuProfile profile;
|
| VirtualTree virtualTree;
|
| - FunctionCallTreeNodeFilter functionFilter;
|
| + CallTreeNodeFilter filter;
|
| + StreamSubscription _resizeSubscription;
|
| @observable bool show = true;
|
|
|
| CpuProfileVirtualTreeElement.created() : super.created();
|
|
|
| + attached() {
|
| + super.attached();
|
| + _resizeSubscription = window.onResize.listen((_) => _updateSize());
|
| + }
|
| +
|
| + detached() {
|
| + super.detached();
|
| + _resizeSubscription?.cancel();
|
| + }
|
| +
|
| void render() {
|
| _updateView();
|
| }
|
| @@ -1288,6 +1300,7 @@ class CpuProfileVirtualTreeElement extends ObservatoryElement {
|
| }
|
|
|
| void _updateView() {
|
| + _updateSize();
|
| virtualTree?.clear();
|
| virtualTree?.uninstall();
|
| virtualTree = null;
|
| @@ -1301,6 +1314,13 @@ class CpuProfileVirtualTreeElement extends ObservatoryElement {
|
| virtualTree?.refresh();
|
| }
|
|
|
| + void _updateSize() {
|
| + var treeBody = shadowRoot.querySelector('#tree');
|
| + assert(treeBody != null);
|
| + int windowHeight = window.innerHeight - 32;
|
| + treeBody.style.height = '${windowHeight}px';
|
| + }
|
| +
|
| void _buildFunctionTree(bool exclusive) {
|
| var treeBody = shadowRoot.querySelector('#tree');
|
| assert(treeBody != null);
|
| @@ -1312,8 +1332,8 @@ class CpuProfileVirtualTreeElement extends ObservatoryElement {
|
| if (tree == null) {
|
| return;
|
| }
|
| - if (functionFilter != null) {
|
| - tree = tree.filtered(functionFilter);
|
| + if (filter != null) {
|
| + tree = tree.filtered(filter);
|
| }
|
| for (var child in tree.root.children) {
|
| virtualTree.rows.add(
|
| @@ -1335,6 +1355,9 @@ class CpuProfileVirtualTreeElement extends ObservatoryElement {
|
| if (tree == null) {
|
| return;
|
| }
|
| + if (filter != null) {
|
| + tree = tree.filtered(filter);
|
| + }
|
| for (var child in tree.root.children) {
|
| virtualTree.rows.add(
|
| new CodeCallTreeNodeRow(virtualTree, 0, profile, child));
|
| @@ -1352,7 +1375,7 @@ class CpuProfileTreeElement extends ObservatoryElement {
|
| CpuProfile profile;
|
| TableTree codeTree;
|
| TableTree functionTree;
|
| - FunctionCallTreeNodeFilter functionFilter;
|
| + CallTreeNodeFilter functionFilter;
|
| @observable bool show = true;
|
|
|
| CpuProfileTreeElement.created() : super.created();
|
|
|