Merge the v53.0 release into Sokatoa fork#167
Merged
Conversation
) Fixes google#3342 ---- In Korean locales it is not unusual that the platform default encoding on Windows is the EUC-KR codepage, so on these and other systems that don't default to UTF-8, it would help to have any build script that loads UTF-8 files make that explicit in their code. Signed-off-by: Christian W. Damus <cdamus.ext@eclipsesource.com>
Grid QoL improvements: - Stable, resizable, auto-sizable column widths with sensible defaults. - Columns can be user-resized by dragging on the column handle. - A sensible initial size is decided as soon as we have some data based on measuring the cells in place. - Column widths are stable and persist over various operations such as filtering, sorting, et al. - Right click context menus in data cells rather than triple dot menu saving valuable real estate and avoiding awkward gaps in the layout. - Header cell buttons are now removed entirely from the layout when hidden, saving valuable real estate. - Virtual scrolling and dynamic data loading now supported at the Grid level. - The old VirtualTable widget has been removed in favor of Grid. - PivotTable now uses virtual scrolling to improve performance. - DataGrid now uses virtual scrolling also to improve performance, but also in order to support pivoting in the future as the grouping UX would be very awkward with pagination.
Adding boolean dimension type to metric summary spec Bug: 436528777
While other tab's state is preserved when switching tabs, the 'Current Selection' tab was left out, so switching away from it would cause it to lose state. This patch fixes this, allowing the current selection tab's state to be preserved including the currently selected sub-tab in aggregations. Fixes: https://buganizer.corp.google.com/issues/453942809 Note: This fix doesn't persist state between sub-tabs in the current selection tab. This is a different issue, and will be fixed in a followup.
Copybara import from Chromium: proto and stdlib changes - 2bc115ddc4ad0bec0fe31094a4f1b9a5cc286b26 Add per-priority task queues to NetworkServiceTaskScheduler by Hayato Ito <hayato@chromium.org> COPYBARA_IMPORT=Project import generated by Copybara. GitOrigin-RevId: 2bc115ddc4ad0bec0fe31094a4f1b9a5cc286b26 Co-authored-by: Perfetto Team <copybara-servicebot@google.com>
All sub tabs of the current selection tab are rendered, but only the active one is visible. This persists DOM state between tab-flips, and follows how the rest of the UI works: e.g. tabs, pages
Copybara import from Chromium: proto and stdlib changes - bfc7b89ebfb9972f9ba8c514296ce90e357d4eb0 Sync feature protos. by Googler <noreply@google.com> COPYBARA_IMPORT=Project import generated by Copybara. GitOrigin-RevId: bfc7b89ebfb9972f9ba8c514296ce90e357d4eb0 Co-authored-by: Perfetto Team <copybara-servicebot@google.com>
This patch makes the following changes to Grid's virtual scrolling: - Reduce layzerization overhead by adding `will-change: transform` to the block of rows that moves up and down the slider when scrolling. - Tuned the grid virtual scrolling overdraw bounds. - Added scroll velocity compensation to offset the loaded rows a little in the direction of scroll, proportionally to how fast the user is scrolling. Fixes: https://b.corp.google.com/issues/453940632
If RESET RPC is called, it will cause a new TP instance to be allocated which means the signal handler is holding onto a totally invalid instance of TP leading to a UAF and a crash. Instead, keep track of the actual active TP inside the RPC instead.
It's bad design to have this as a global when it's possible that we invalidate it and create new instances (see google#3348). Remove to reduce the chances of a mistake like this happening again
Redactor started failing when it encountered this perf sample.
packet {
sequence_flags: 2
timestamp: 252557484253
timestamp_clock_id: 6
perf_sample {
cpu: 0
kernel_records_lost: 12
}
trusted_uid: 9999
trusted_packet_sequence_id: 6
trusted_pid: 11706
}
This code modifies redactor so that it skips the sample instead of
making redactor bail out and fail.
…d_yarn group across 1 directory (google#3360) Bumps the npm_and_yarn group with 1 update in the /ui directory: [tar-fs](https://github.com/mafintosh/tar-fs). Updates `tar-fs` from 3.0.9 to 3.1.1 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/mafintosh/tar-fs/commit/0aa57de79eb58a5206992c979a7fd5c4df85e07c"><code>0aa57de</code></a> 3.1.1</li> <li><a href="https://github.com/mafintosh/tar-fs/commit/0bd54cdf06da2b7b5b95cd4b062c9f4e0a8c4e09"><code>0bd54cd</code></a> expand check</li> <li><a href="https://github.com/mafintosh/tar-fs/commit/cb1c571fba8ec6dd56340f55dcd5d284372a8249"><code>cb1c571</code></a> 3.1.0</li> <li><a href="https://github.com/mafintosh/tar-fs/commit/374460e9973a5ac5655b7f21a84dfa9b64da5d78"><code>374460e</code></a> add optional disablement of symlink validation (<a href="https://redirect.github.com/mafintosh/tar-fs/issues/119">#119</a>)</li> <li><a href="https://github.com/mafintosh/tar-fs/commit/5bfe6dfb9d26436829ec6a6400eca3a030d4757a"><code>5bfe6df</code></a> 3.0.10</li> <li><a href="https://github.com/mafintosh/tar-fs/commit/63e12f94740afa9ba87f91c1a530ad91548ba3a9"><code>63e12f9</code></a> bare support</li> <li>See full diff in <a href="https://github.com/mafintosh/tar-fs/compare/v3.0.9...v3.1.1">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/google/perfetto/network/alerts). </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Remove a lot of obsolete logic, that just stayed there since different implementations of QueryBuilder: - Ports rendering - Separate styling for blocks and single nodes - A lot of small cleanups here and there Remove materialisation as maintaining this code was costly at this stage of the project. Consolidate he nodes creation logic: NodeBox is responsible for what should be inside the node, the colours and buttons regarding one node. NodeBlock has multiple NodeBoxes, SingleNode has one, and they are responsible for handling the borders and special behaviours regarding each type of graph object. NodeContainer is responsible for state management and drag and drop logic.
* Remove O(n^2) behaviour when building dictionaries * Lots of unnecessary allocations which would be terrible for performance when doing conversion on lots of rows.
For example on Windows.
```
../../src/trace_processor/trace_processor_shell.cc(2076,17): error: unused variable 'g_rpc_for_signal_handler' [-Werror,-Wunused-variable]
2076 | static Rpc* g_rpc_for_signal_handler = &rpc;
| ^~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
```
- Fix bug where select boxes can show the incorrect value - Form validation on required fields when empty, which prohibits invalid values from being passed to the debug track factory. - Add a `--None--` value to optional selects rather than showing blank, which makes it more obvious that this feature is disabled (i.e. for arg_set_id & pivot) - Disable submit button if form is invalid - Add cancel button <img width="308" height="298" alt="image" src="https://github.com/user-attachments/assets/4144182c-4e04-4759-87a0-57d96de4a27e" /> Fixes: https://b.corp.google.com/issues/453748356
This is perfectly valid to have in a string. We were being too zealous and rejecting the string. Also fix a critical bug in ScanString for HasEscapes when the escape was *not* the last escape in the string. Fixes: google#3361
This PR enables/fixes direct links to flags, plugins and settings. E.g.: - #!/flags/<myFlagId> - #!/plugins/<myPluginId> - #!/settings/<mySettingId> When entered into the URL bar manually or by clicking a link, the UI will load then scroll to the referenced entity and highlight it. This PR also adds: - A link button to each entity that changes the URL bar to the appropriate link so that it may be copied and shared easily. - Add the entity id under the title for convenience. ## Screenshot <img width="931" height="611" alt="image" src="https://github.com/user-attachments/assets/1a824e1c-4829-4d86-8ad4-30ed18c85b63" />
Copybara import from Chromium: proto and stdlib changes - f134af426c876bedffdf55825316a1f5d2edb15b Sync feature protos. by Googler <noreply@google.com> COPYBARA_IMPORT=Project import generated by Copybara. GitOrigin-RevId: f134af426c876bedffdf55825316a1f5d2edb15b Co-authored-by: Perfetto Team <copybara-servicebot@google.com>
…oogle#3355) In the case where the SMA was >50% full, we were accidentally spamming the task running with FlushPendingCommitDataRequests calls. There's no point in doing this as one call to this basically does the same as n calls. However, it does cause a bunch of CPU usage in various processes using the SDK (traced_probes, surfaceflinger) unnecessarily Remove this excessive spamming of the task runner by only posting the task once to the queue. Any future calls are simply ignored. We put this behind an Android flag to incrementally roll out this change.
…oogle#3374) google#3355 fixes the case for normal flush scheduling but didn't properly handle shared memory emulation. It's very likely that shared memory emulation is hitting a *very* similar pattern of `UpdateCommitDataRequest` being called many times in a loop without yielding to the task runner. Therefore, speculatively apply the same fix assuming that the same issue is being hit in that context as well. It also has the benefit of keeping the two codepaths very similar which is good to reduce the amount of unique conditions we need to think about here.
Tea has been renamed to Mint. This change is to update the UI to rename to use the Mint name.
Add support for perf samples in trace redactor which in turn allows for call stack collection of all the hardware and sw counters currently supported with linux.perf collection
1. Add a highlight to the cell when right clicked. 2. Fix italicized nulls from getting clipped by the bounds of the cell container.
Changes the order of columns in Android Logs view to follow the same format as `adb logcat`. This columns order is also used by many other tools, so imho would be great to match it here as well Screenshot with the change: <img width="1694" height="336" alt="image" src="https://github.com/user-attachments/assets/43bf11a6-fe3c-480c-bf98-45847c4b06ff" /> Sample `adb logcat` output: ``` 10-22 15:49:51.390 9265 9680 E ServiceManager: error in isDeclared 10-22 15:49:51.390 9265 9680 E ServiceManager: java.lang.SecurityException: SELinux denied for service. 10-22 15:49:51.390 9265 9680 E ServiceManager: at android.os.Parcel.createExceptionOrNull(Parcel.java:3372) ```
Sorry, as part of google#3373 I forgot to update the cell order in the rows 😓 Attaching screenshot with the fix: <img width="1776" height="328" alt="image" src="https://github.com/user-attachments/assets/56b83b56-cad4-49da-958b-aa7f30dedab6" />
Adds an action to organize tracks using the ' -> ' separator.
For example, tracks with names:
```
- Foo -> Bar -> Track1
- Foo -> Bar -> Track2
- Foo -> Track3
```
Will be reorganized into:
```
- Foo
- Bar
- Track1
- Track2
- Track3
```
Sample:
<img width="577" height="256" alt="image"
src="https://github.com/user-attachments/assets/cabf1f19-ce55-43e7-a19d-0a6cf080e1de"
/>
Mark the perfetto_winscope-lite proto library as host_supported to use it from host-side tests.
Copybara import from Chromium: proto and stdlib changes - 8d7515b24d9e713790419d67279d4a9078e80a49 Stop TrafficStats APIs from triggering Chromium startup. by Chidera Olibie <colibie@google.com> COPYBARA_IMPORT=Project import generated by Copybara. GitOrigin-RevId: 8d7515b24d9e713790419d67279d4a9078e80a49 Co-authored-by: Perfetto Team <copybara-servicebot@google.com>
## Summary - Improved UX for query builder nodes by consolidating controls in the node details view - Replaced `MultiselectInput` with `PopupMultiSelect` for better user experience in aggregation and sort nodes - Added glob matching support for SWITCH/CASE columns on string types in modifyColumnsNode - Made limit/offset and sort controls only from the node level - Interval intersect `filter unfinished intervals` is opt out
Why:
Often, for the sake of the IntervalIntersect, you might want to only use
the subset of your columns or rename some columns to id, ts and dur.
Adds the ability to insert column selection (ModifyColumns) nodes at
specific input ports of IntervalIntersect nodes, along with refactoring
to properly initialize node actions. Th
# Changes
Feature: Column selection for interval intersect inputs
- Adds a new "Pick columns" button (with view_column icon) next to each
input source in the IntervalIntersect node UI
- Introduces onInsertModifyColumnsNode(portIndex) action to the
NodeActions interface
- Implements handleInsertModifyColumnsNode() which:
- Creates a ModifyColumns node
- Inserts it between the input node and the IntervalIntersect node at
the specified port
- Rewires connections appropriately
- Selects the newly created node
# Refactoring: Deduplicated action initialization
- Extracts action creation into createNodeActions() method to eliminate
code duplication
- Adds ensureNodeActions() to lazily initialize actions for nodes
(crucial for nodes from imported state)
- Introduces initializedNodes Set to track which nodes have been
initialized
- Updates node creation flow to use centralized action initialization
- Ensures all nodes get actions initialized during rendering (handles
imported state edge case)
# Improvement: Query formatting
- Updates queryToRun() to add blank lines between SQL modules/preambles
and the main query
- Improves readability of generated SQL in the query preview
- Adds unit tests verifying the formatting behavior
…retain sharpness (google#3634) A recent PR added `will-change: transform;` to the NodeGraph content container. This was a mistake as it doesn't improve performance, but has the side effect of rasterizing the nodes at 100% zoom which results in ugly pixelation when zoomed. Before: <img width="591" height="363" alt="image" src="https://github.com/user-attachments/assets/0d96136c-fd37-49b0-8b9c-98050bd07399" /> After: <img width="583" height="405" alt="image" src="https://github.com/user-attachments/assets/bf32697d-cd1a-4bf2-90dc-9cd215f1d26d" />
Fix: when writing the query and reexecuting for the second time with different set of columns, the new columns would not be fetched and propagated further
1. Column Alias Handling - Issue: Child nodes couldn't use aliased column names from ModifyColumnsNode - Fix: Modified newColumnInfo() in column_info.ts to replace both top-level name and column.name with the aliased name - Test: Added test "aggregation node can group by aliased column from modify columns node" 2. Interval Intersect Filter Initialization - Issue: "Filter unfinished intervals" checkbox appeared checked but filter wasn't actually applied until toggling - Fix: Modified IntervalIntersectNode constructor and onPrevNodesUpdated() to initialize filterNegativeDur array with explicit true values - Test: Added test "interval intersect node initializes filter to true by default" 3. Node Deletion with InputNodes - Issue: Unable to delete ModifyColumnsNode when it has inputNodes connections - Fix: Modified handleDeleteNode() in explore_page.ts to collect nodes from inputNodes array in addition to prevNode/prevNodes 4. Automatic Connection on Docking - Issue: Docking nodes didn't automatically create connections - Fix: Modified onDock callback in graph.ts to call addConnection() when nodes are docked 5. Aggregation Query Re-execution on Keystroke - Issue: Typing in aggregation node fields caused queries to re-run on every letter (bad performance) - Fix: Migrated aggregation editor to use Form widget with submit/cancel pattern - queries only execute when "Apply" is clicked 6. Form Widget Validation - Issue: Form didn't properly validate/disable Apply button for incomplete aggregations - Fix: Added required: true and validation: () => validateAggregation(agg) to Form widget, plus required attributes on Select widgets 7. Aggregation Placeholder Naming Cleanup - Issue: Column names used "agg_" prefix (e.g., "agg_sum") and showed invalid placeholders - Fix: Cleaned up placeholderNewColumnName() to remove "agg_" prefix and show better defaults (e.g., "duration_sum" instead of "agg_sum")
Modification nodes (like Aggregation node or Modify Columns) can now be added from the graph, without parent node - in an invalid state
…le#3637) Before: <img width="428" height="243" alt="image" src="https://github.com/user-attachments/assets/d3906e88-985e-43f1-8d0b-571be69ac0e8" /> After: <img width="482" height="301" alt="image" src="https://github.com/user-attachments/assets/726834d4-519e-4977-ac3b-312ef499ad94" />
Also adds rust formatting support as it demonstrates how to use the installed toolchain.
- Make new nodes start their auto-placement search in the center of the viewport, rather than have their top left corner in the center. - Fix a bug where the incomplete nodes were not being passed properly to the auto placement function in the NodeGraph demo, so nodes were often being placed overlapping.
This ftrace event reports counter events in Pixel firmware. This ftrace event is only on Pixel kernels and is not upstream. Bug: 386832373 Test: Verified FWTP counter tracepoints may be collected with Perfetto and displayed with traceconv.
And update .gitignore to reflect this
For android-graphics/sokatoa#4184. Signed-off-by: Christian W. Damus <cdamus.ext@eclipsesource.com>
Signed-off-by: Christian W. Damus <cdamus.ext@eclipsesource.com>
Signed-off-by: Christian W. Damus <cdamus.ext@eclipsesource.com>
ALevansSamsung
approved these changes
Dec 18, 2025
wpaul-samsung
approved these changes
Dec 18, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
For android-graphics/sokatoa#4184.