Show arguments for the linked slices in the debug slice detais panel.
Change-Id: Ic566f8337547d5ec7c8ac77d275bb1b0b5b28e36
diff --git a/ui/src/frontend/chrome_slice_details_tab.ts b/ui/src/frontend/chrome_slice_details_tab.ts
index 7f83b36..5311cb2 100644
--- a/ui/src/frontend/chrome_slice_details_tab.ts
+++ b/ui/src/frontend/chrome_slice_details_tab.ts
@@ -35,7 +35,7 @@
NewBottomTabArgs,
} from './bottom_tab';
import {FlowPoint, globals} from './globals';
-import {renderArguments} from './slice_args';
+import {hasArgs, renderArguments} from './slice_args';
import {renderDetails} from './slice_details';
import {getSlice, SliceDetails, SliceRef} from './sql/slice';
import {
@@ -288,7 +288,10 @@
private renderRhs(engine: EngineProxy, slice: SliceDetails): m.Children {
const precFlows = this.renderPrecedingFlows(slice);
const followingFlows = this.renderFollowingFlows(slice);
- const args = renderArguments(engine, slice);
+ const args = hasArgs(slice) &&
+ m(Section,
+ {title: 'Arguments'},
+ m(Tree, renderArguments(engine, slice)));
if (precFlows ?? followingFlows ?? args) {
return m(
GridLayoutColumn,
diff --git a/ui/src/frontend/slice_args.ts b/ui/src/frontend/slice_args.ts
index 70beacb..9e1798f 100644
--- a/ui/src/frontend/slice_args.ts
+++ b/ui/src/frontend/slice_args.ts
@@ -30,8 +30,7 @@
} from '../tracks/visualised_args';
import {Anchor} from '../widgets/anchor';
import {MenuItem, PopupMenu2} from '../widgets/menu';
-import {Section} from '../widgets/section';
-import {Tree, TreeNode} from '../widgets/tree';
+import {TreeNode} from '../widgets/tree';
import {addTab} from './bottom_tab';
import {globals} from './globals';
@@ -40,20 +39,21 @@
import {SqlTableTab} from './sql_table/tab';
import {SqlTables} from './sql_table/well_known_tables';
-// Renders slice arguments (key/value pairs) into a Tree widget.
+// Renders slice arguments (key/value pairs) as a subtree.
export function renderArguments(
engine: EngineProxy, slice: SliceDetails): m.Children {
if (slice.args && slice.args.length > 0) {
const tree = convertArgsToTree(slice.args);
- return m(
- Section,
- {title: 'Arguments'},
- m(Tree, renderArgTreeNodes(engine, tree)));
+ return renderArgTreeNodes(engine, tree);
} else {
return undefined;
}
}
+export function hasArgs(slice: SliceDetails): boolean {
+ return exists(slice.args) && slice.args.length > 0;
+}
+
function renderArgTreeNodes(
engine: EngineProxy, args: ArgNode<Arg>[]): m.Children {
return args.map((arg) => {
diff --git a/ui/src/tracks/chrome_scroll_jank/event_latency_details_panel.ts b/ui/src/tracks/chrome_scroll_jank/event_latency_details_panel.ts
index 5014d14..83a884c 100644
--- a/ui/src/tracks/chrome_scroll_jank/event_latency_details_panel.ts
+++ b/ui/src/tracks/chrome_scroll_jank/event_latency_details_panel.ts
@@ -171,7 +171,9 @@
m(GridLayout,
m(GridLayoutColumn,
renderDetails(slice),
- renderArguments(this.engine, slice)),
+ m(Section,
+ {title: 'Arguments'},
+ m(Tree, renderArguments(this.engine, slice)))),
m(GridLayoutColumn,
m(Section,
{title: 'Description'},
diff --git a/ui/src/tracks/debug/details_tab.ts b/ui/src/tracks/debug/details_tab.ts
index 3523f4f..5616a6b 100644
--- a/ui/src/tracks/debug/details_tab.ts
+++ b/ui/src/tracks/debug/details_tab.ts
@@ -24,6 +24,7 @@
import {
GenericSliceDetailsTabConfig,
} from '../../frontend/generic_slice_details_tab';
+import {hasArgs, renderArguments} from '../../frontend/slice_args';
import {
getSlice,
SliceDetails,
@@ -162,11 +163,24 @@
left: sliceRef(this.slice, 'Slice'),
right: '',
},
- renderTreeContents({
- 'Name': this.slice.name,
- 'Thread': getThreadName(this.slice.thread),
- 'Process': getProcessName(this.slice.process),
- }));
+ m(TreeNode, {
+ left: 'Name',
+ right: this.slice.name,
+ }),
+ m(TreeNode, {
+ left: 'Thread',
+ right: getThreadName(this.slice.thread),
+ }),
+ m(TreeNode, {
+ left: 'Process',
+ right: getProcessName(this.slice.process),
+ }),
+ hasArgs(this.slice) &&
+ m(TreeNode,
+ {
+ left: 'Args',
+ },
+ renderArguments(this.engine, this.slice)));
}