[go: nahoru, domu]

Share Cronet telemetry code between API and impl

IMPORTANT: this CL has breaking implications for downstream Cronet
release channels and requires dependency structure adjustments for
consumers (e.g. internal Google repo, Maven). The new "shared" JAR will
need to be shipped to consumers as a dependency of *both* API and impl
JARs.

This CL introduces a new Cronet distribution JAR,
"cronet_shared_java.jar", which holds code that is shared between all
Cronet code, i.e. the API *and* implementations. Such code is reusable
from anywhere inside the Cronet codebase.

The main distinction between "API" code and "shared" code is that
implementations do not necessarily ship with the API code. The textbook
example of that is the Cronet impl in Google Play Services, which uses
the API classes from the calling app instead of having its own copy.
In contrast, implementations always ship with shared code, such that if
the API code and impl code are loaded from different sources (which
implies potentially different build/version), each side will end up with
its own private copy of the shared classes, thus sidestepping any ABI
compatibility concerns. The downside is that references to these classes
can't cross the Cronet API/impl ABI boundary, but that's fine for what
we want to use this for.

Bug: b:313418339
Change-Id: I6d3293cdb41f4182c005c7176ba0ac49ce053c6d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5094199
Reviewed-by: Stefano Duo <stefanoduo@google.com>
Commit-Queue: Etienne Dechamps <edechamps@google.com>
Cr-Commit-Position: refs/heads/main@{#1259759}
6 files changed
tree: d645bc4248fc37a836258678cd8a80d46b47c005
  1. android_webview/
  2. apps/
  3. ash/
  4. base/
  5. build/
  6. build_overrides/
  7. buildtools/
  8. cc/
  9. chrome/
  10. chromecast/
  11. chromeos/
  12. codelabs/
  13. components/
  14. content/
  15. courgette/
  16. crypto/
  17. dbus/
  18. device/
  19. docs/
  20. extensions/
  21. fuchsia_web/
  22. gin/
  23. google_apis/
  24. google_update/
  25. gpu/
  26. headless/
  27. infra/
  28. ios/
  29. ipc/
  30. media/
  31. mojo/
  32. native_client_sdk/
  33. net/
  34. pdf/
  35. ppapi/
  36. printing/
  37. remoting/
  38. rlz/
  39. sandbox/
  40. services/
  41. skia/
  42. sql/
  43. storage/
  44. styleguide/
  45. testing/
  46. third_party/
  47. tools/
  48. ui/
  49. url/
  50. webkit/
  51. .clang-format
  52. .clang-tidy
  53. .clangd
  54. .eslintrc.js
  55. .git-blame-ignore-revs
  56. .gitallowed
  57. .gitattributes
  58. .gitignore
  59. .gitmodules
  60. .gn
  61. .mailmap
  62. .rustfmt.toml
  63. .vpython3
  64. .yapfignore
  65. ATL_OWNERS
  66. AUTHORS
  67. BUILD.gn
  68. CODE_OF_CONDUCT.md
  69. codereview.settings
  70. DEPS
  71. DIR_METADATA
  72. LICENSE
  73. LICENSE.chromium_os
  74. OWNERS
  75. PRESUBMIT.py
  76. PRESUBMIT_test.py
  77. PRESUBMIT_test_mocks.py
  78. README.md
  79. WATCHLISTS
README.md

Logo Chromium

Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.

The project's web site is https://www.chromium.org.

To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.

Documentation in the source is rooted in docs/README.md.

Learn how to Get Around the Chromium Source Code Directory Structure.

For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.

If you found a bug, please file it at https://crbug.com/new.