ui: Implement track object model API
- Introduce the Track/Group/Workspace object model API.
- This allows nested groups (including headless groups) and paves the
way for workspaces.
- Use it for creating tracks, replacing the current state model.
- Rename trackKey -> trackUri everywhere to make it clear that URIs
are being used, as the new track nodes have no key value any more
and are purely identified using their URI.
- Add a the group name prefixed to the front of pinned tracks to add
some context to pinned tracks.
- All thread tracks are now contained within headless groups within
their parent process tracks.
Change-Id: I73c59f0eef3075c8d6bbceab5b7eb024315b5122Perfetto is a production-grade open-source stack for performance instrumentation and trace analysis. It offers services and libraries and for recording system-level and app-level traces, native + java heap profiling, a library for analyzing traces using SQL and a web-based UI to visualize and explore multi-GB traces.
See https://perfetto.dev/docs or the /docs/ directory for documentation.