chromium/third_party/ipcz/src/standalone/README.md

Standalone Support
====

This directory serves as a home for minimal polyfill of some common APIs within
Chromium, `//base` in particular. This allows the ipcz implementation to depend
on a small subset of the Chromium tree when building against Chromium, but to
still build and behave as expected when used as a standalone library.

Currently only a subset of logging macros, and stack trace symbolization are
polyfilled here. Internal ipcz code which includes `util/log.h` will get
Chromium's `base/logging.h` definitions when building as part of Chromium; when
building standalone, this will instead include `standalone/base/logging.h`.

Similarly, inclusion of `util/stack_trace.h` exposes the ipcz::StackTrace type.
For Chromium builds this is merely an alias for `base::debug::StackTrace` in
`base/debug/stack_trace.h`. In standalone builds, the implementation comes from
`standalone/base/` and is built around Abseil's stack tracing and symbolization.

Any additional polyfill in this directory should be added sparingly and with
careful consideration of maintenance costs, since the vast majority of the
Chromium tree does not expose stable APIs. Log macros, for example, have been
extremely consistent over the lifetime of the Chromium project and are likely to
to remain that way, so they're a reasonably good fit here.