ui: a plugin is forever (and is deterministic)

Get rid of the disable-plugins-at-runtime feature. It's a mixture
of pure utopia and unnecessary complexity:
- Why would a user disable a plugin? Probably because it crashed or
  is too slow during trace load. In both cases, runtime disablement
  is useless. If the trace loaded... it's too late. If it crashes,
  the app is in a broken state.
- Handling plugin disablement at runtime is extremely complicated.
  In a GC-ed language it's impossible to guarrantee that some object
  is really destroyed. Plugins can outlive their disablement in
  bazilion ways (by attaching DOM handlers, scheduling promises,
  passing a refernce to a piece of themselves to some other part of
  the UI). Supporting this properly would require intensive auditing.
  This is more likely to cause more bugs in practice.
- Also remove randomization of plugins. It makes tests flakier and
  harder to reason about (I hit this while trying to add more tests)
  especially when there are things we don't care about, like relative
  order of tracks added with the same sortIndex.


Change-Id: I6a19483a6d09a15069349d0d4ac41878afe7cf05
10 files changed
tree: ab193fb12f69b0b6de4800ee4f4a572a2d45b26b
  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. third_party/
  16. tools/
  17. ui/
  18. .bazelignore
  19. .bazelrc
  20. .clang-format
  21. .clang-tidy
  22. .git-blame-ignore-revs
  23. .gitattributes
  24. .gitignore
  25. .gn
  26. .style.yapf
  27. Android.bp
  28. Android.bp.extras
  29. BUILD
  30. BUILD.extras
  31. BUILD.gn
  32. CHANGELOG
  33. codereview.settings
  34. DIR_METADATA
  35. heapprofd.rc
  36. LICENSE
  37. meson.build
  38. METADATA
  39. MODULE_LICENSE_APACHE2
  40. OWNERS
  41. perfetto.rc
  42. PerfettoIntegrationTests.xml
  43. persistent_cfg.pbtxt
  44. PRESUBMIT.py
  45. README.chromium
  46. README.md
  47. TEST_MAPPING
  48. traced_perf.rc
  49. WATCHLISTS
  50. 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.