ui: Add initial plugin architecture

Builds on the existing track importer script to make it work more
'plugin' like. Rather than the plugin importing parts of the core the
plugin instead exposes a single function ('activate') which takes will
eventually take a 'plugin interface' which is how the plugin actually
extends the system.

As a first step towards that this:
- Creates a plugin registory
- Extends registries generally to support iteration
- Adds a (currently empty) activate() function to each track.
- Calls activate for every registered plugin at page load
- Updates tools/gen_ui_imports to generate code like:

import {pluginRegistry} from '../common/plugins';

import {activate as fooTrack} from '../tracks/foo_track';
import {activate as barTrack} from '../tracks/bar_track';

pluginRegistry.register({
  kind: 'fooTrack',
  activate: fooTrack,
});
pluginRegistry.register({
  kind: 'barTrack',
  activate: barTrack,
});


Change-Id: I475e4ee49642568ecc868e43904cf0d35557818e
26 files changed
tree: 7d61f7e8bddb6f0580e9dfe9eedc2bc183b5152a
  1. .github/
  2. bazel/
  3. build_overrides/
  4. buildtools/
  5. debian/
  6. docs/
  7. examples/
  8. gn/
  9. include/
  10. infra/
  11. protos/
  12. python/
  13. src/
  14. test/
  15. tools/
  16. ui/
  17. .clang-format
  18. .clang-tidy
  19. .gitattributes
  20. .gitignore
  21. .gn
  22. .style.yapf
  23. Android.bp
  24. Android.bp.extras
  25. BUILD
  26. BUILD.extras
  27. BUILD.gn
  28. CHANGELOG
  29. codereview.settings
  30. DIR_METADATA
  31. heapprofd.rc
  32. LICENSE
  33. meson.build
  34. METADATA
  35. MODULE_LICENSE_APACHE2
  36. OWNERS
  37. perfetto.rc
  38. PerfettoIntegrationTests.xml
  39. PRESUBMIT.py
  40. README.chromium
  41. README.md
  42. TEST_MAPPING
  43. traced_perf.rc
  44. WORKSPACE
README.md

Perfetto - System profiling, app tracing and trace analysis

Perfetto 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.