[RPP] Introduce SyntheticEvents helper

Its purpose is to create and track all synthetic events made in the
trace engine. The reason being, we need to easily access made synthetic
events when deserializing event keys from modifications in a trace file.
At the moment this includes synthetic events created from
a raw trace events.

The helper is supposed to be called for every synthetic event to be
created, to ensure that all synthetic events are held in an accessible
place. To help enforce this, a branded type is introduced for synthetic
events. The helper receives a trace event and returns a synthetic event
with the branded type. The idea is that if a synthetic event is created
w/o the helper, a forced cast needs to be used to meet the branded
type, which would make the faulty synthetic event creation more evident.

So that synthetic events can be found easily from a key, they are stored
in an array indexed based on the position of the corresponding raw event
in the rawEvent array.

Because the helper is called by the trace handlers, it needs to be
set up before handlers are (and a new instance is created for each
trace).

Bug: 339163152
Change-Id: If88ee1d947e50890ab36703bf0d175b9acff0fe6
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/5575375
Commit-Queue: Andres Olivares <andoli@chromium.org>
Reviewed-by: Jack Franklin <jacktfranklin@chromium.org>
16 files changed
tree: 11fbed6ff3a7ac6cf37848a8d3fa0b808105a8bb
  1. .vscode/
  2. build_overrides/
  3. config/
  4. docs/
  5. extension-api/
  6. extensions/
  7. front_end/
  8. inspector_overlay/
  9. node_modules/
  10. scripts/
  11. test/
  12. third_party/
  13. v8/
  14. .clang-format
  15. .editorconfig
  16. .eslintignore
  17. .eslintrc.js
  18. .git-blame-ignore-revs
  19. .gitattributes
  20. .gitignore
  21. .gitmodules
  22. .gn
  23. .mailmap
  24. .npmignore
  25. .npmrc
  26. .style.yapf
  27. .stylelintignore
  28. .stylelintrc.json
  29. AUTHORS
  30. BUILD.gn
  31. codereview.settings
  32. DEPS
  33. LICENSE
  34. OWNERS
  35. package-lock.json
  36. package.json
  37. PRESUBMIT.py
  38. README.md
  39. tsconfig.json
  40. WATCHLISTS
README.md

Chrome DevTools frontend

npm package

The client-side of the Chrome DevTools, including all TypeScript & CSS to run the DevTools webapp.

Source code and documentation

The frontend is available on chromium.googlesource.com. Check out the project documentation for instructions to set up, use, and maintain a DevTools front-end checkout, as well as design guidelines, and architectural documentation.

Additional references

Source mirrors

DevTools frontend repository is mirrored on GitHub.

DevTools frontend is also available on NPM as the chrome-devtools-frontend package. It's not currently available via CJS or ES modules, so consuming this package in other tools may require some effort.

The version number of the npm package (e.g. 1.0.373466) refers to the Chromium commit position of latest frontend git commit. It's incremented with every Chromium commit, however the package is updated roughly daily.

Getting in touch