sdk: Support embedder-provided policy approving consumer connections

ChromeOS needs a way to deny (system) consumer connections when a
specific enterprise policy is set.

This patch adds a TracingPolicy object to InitTracingArgs which is
notified for each new consumer session, allowing the embedder to deny
them. Since Chrome can only check for this policy on a specific
thread, the approval can be asynchronous.

To support this, the SDK's ConsumerImpl object is created before the
service consumer connection is initialized. This works fine, because
subsequent interactions with the object already have to consider a
delayed service connection.

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