Skip to content

Add a basic function list panel - #6403

Open
mstange wants to merge 6 commits into
firefox-devtools:mainfrom
mstange:push-qoptmxwlqtrm
Open

mstange wants to merge 6 commits into
firefox-devtools:mainfrom
mstange:push-qoptmxwlqtrm

Conversation

@mstange

@mstange mstange commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Main | Deploy preview

This PR adds a "Function List" panel. In this PR this is only the plain list and doesn't have caller / callee trees or flame graphs yet; see #5233 for a full demo with those included.

@mstange
mstange requested a review from canova October 19, 2026 22:16
@mstange
mstange requested a review from a team as a code owner October 19, 2026 22:16
@codecov

codecov Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 82.81573% with 83 lines in your changes missing coverage. Please review.
✅ Project coverage is 84.78%. Comparing base (7892c63) to head (1ccc6ef).
⚠️ Report is 4 commits behind head on main.

Files with missing lines Patch % Lines
src/components/shared/FunctionListContextMenu.tsx 78.52% 31 Missing and 1 partial ⚠️
src/components/calltree/FunctionList.tsx 72.30% 18 Missing ⚠️
src/reducers/url-state.ts 73.17% 11 Missing ⚠️
src/app-logic/url-handling.ts 84.61% 6 Missing ⚠️
src/components/calltree/columns.ts 71.42% 6 Missing ⚠️
src/actions/profile-view.ts 92.15% 4 Missing ⚠️
src/components/timeline/TrackThread.tsx 50.00% 1 Missing and 1 partial ⚠️
src/reducers/profile-view.ts 92.00% 2 Missing ⚠️
src/profile-logic/symbolication.ts 80.00% 1 Missing ⚠️
src/selectors/per-thread/stack-sample.ts 92.85% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #6403      +/-   ##
==========================================
- Coverage   84.78%   84.78%   -0.01%     
==========================================
  Files         358      361       +3     
  Lines       38946    39413     +467     
  Branches    11019    11179     +160     
==========================================
+ Hits        33022    33415     +393     
- Misses       5488     5560      +72     
- Partials      436      438       +2     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Add a new "Function List" tab which shows a flat, sortable list of functions
rather than a tree. Selection is per-function instead of per-call-node, so
this adds a per-thread selected function to the URL state, along with the
URL handling, reducers and selectors that go with it.

Selecting a function replaces the current history entry instead of pushing a
new one. Otherwise, holding the down arrow key in the list would flood the
back/forward history and get rate-limited by the browser.
The call tree's context menu operates on a call node path, which the function
list does not have. Add a sibling menu that operates on a function index
instead. The menu items are described by a data table rather than repeated
JSX, because the same set of transforms is about to be reused by more than one
view.
These are the same single-key shortcuts the call tree context menu offers
(m, f, S, c, C, r, R, d), applied to the selected function.
When the function list tab is active, the activity graph should highlight
every sample whose stack contains the selected function, rather than the
samples belonging to a selected call node.
Clicking a sample already selects the corresponding self call node. When the
function list tab is active, also select that call node's function so the
click has an effect there too.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants