Skip to content

Commit c6894f2

Browse files
authored
Display correct unit in Stack Chart tooltips for size profiles. (#5658)
1 parent fd1456d commit c6894f2

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

src/components/stack-chart/Canvas.tsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { withChartViewport, type Viewport } from '../shared/chart/Viewport';
88
import { ChartCanvas } from '../shared/chart/Canvas';
99
import { FastFillStyle } from '../../utils';
1010
import TextMeasurement from '../../utils/text-measurement';
11-
import { formatMilliseconds } from '../../utils/format-numbers';
11+
import { formatMilliseconds, formatBytes } from '../../utils/format-numbers';
1212
import { bisectionLeft, bisectionRight } from '../../utils/bisect';
1313
import type {
1414
updatePreviewSelection,
@@ -36,6 +36,7 @@ import type {
3636
Marker,
3737
InnerWindowID,
3838
Page,
39+
TimelineUnit,
3940
} from 'firefox-profiler/types';
4041
import type { CallNodeInfo } from 'firefox-profiler/profile-logic/call-node-info';
4142

@@ -77,6 +78,7 @@ type OwnProps = {
7778
readonly marginLeft: CssPixels;
7879
readonly displayStackType: boolean;
7980
readonly useStackChartSameWidths: boolean;
81+
readonly timelineUnit: TimelineUnit;
8082
};
8183

8284
type Props = Readonly<
@@ -617,6 +619,12 @@ class StackChartCanvasImpl extends React.PureComponent<Props> {
617619
const duration =
618620
timing.end[stackTimingIndex] - timing.start[stackTimingIndex];
619621

622+
const { timelineUnit } = this.props;
623+
const durationText =
624+
timelineUnit === 'bytes'
625+
? formatBytes(duration)
626+
: formatMilliseconds(duration);
627+
620628
return (
621629
<TooltipCallNode
622630
thread={thread}
@@ -628,7 +636,7 @@ class StackChartCanvasImpl extends React.PureComponent<Props> {
628636
categories={categories}
629637
// The stack chart doesn't support other call tree summary types.
630638
callTreeSummaryStrategy="timing"
631-
durationText={formatMilliseconds(duration)}
639+
durationText={durationText}
632640
displayStackType={displayStackType}
633641
/>
634642
);

src/components/stack-chart/index.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
getCategories,
1818
getInnerWindowIDToPageMap,
1919
getProfileUsesMultipleStackTypes,
20+
getProfileTimelineUnit,
2021
} from '../../selectors/profile';
2122
import {
2223
getStackChartSameWidths,
@@ -55,6 +56,7 @@ import type {
5556
ThreadsKey,
5657
InnerWindowID,
5758
Page,
59+
TimelineUnit,
5860
} from 'firefox-profiler/types';
5961
import type { CallNodeInfo } from 'firefox-profiler/profile-logic/call-node-info';
6062

@@ -84,6 +86,7 @@ type StateProps = {
8486
readonly displayStackType: boolean;
8587
readonly hasFilteredCtssSamples: boolean;
8688
readonly useStackChartSameWidths: boolean;
89+
readonly timelineUnit: TimelineUnit;
8790
};
8891

8992
type DispatchProps = {
@@ -223,6 +226,7 @@ class StackChartImpl extends React.PureComponent<Props> {
223226
displayStackType,
224227
hasFilteredCtssSamples,
225228
useStackChartSameWidths,
229+
timelineUnit,
226230
} = this.props;
227231

228232
const maxViewportHeight = combinedTimingRows.length * STACK_FRAME_HEIGHT;
@@ -282,6 +286,7 @@ class StackChartImpl extends React.PureComponent<Props> {
282286
marginLeft: TIMELINE_MARGIN_LEFT,
283287
displayStackType: displayStackType,
284288
useStackChartSameWidths,
289+
timelineUnit,
285290
}}
286291
/>
287292
</div>
@@ -324,6 +329,7 @@ export const StackChart = explicitConnect<{}, StateProps, DispatchProps>({
324329
hasFilteredCtssSamples:
325330
selectedThreadSelectors.getHasFilteredCtssSamples(state),
326331
useStackChartSameWidths: getStackChartSameWidths(state),
332+
timelineUnit: getProfileTimelineUnit(state),
327333
};
328334
},
329335
mapDispatchToProps: {

0 commit comments

Comments
 (0)