# About src/base:
#
# Chromium is a very mature project, most things that are generally useful are
# already here, and that things not here aren't generally useful.
#
# Base is pulled into many projects. For example, various ChromeOS daemons. So
# the bar for adding stuff is that it must have demonstrated wide
# applicability. Prefer to add things closer to where they're used (i.e. "not
# base"), and pull into base only when needed.  In a project our size,
# sometimes even duplication is OK and inevitable.
#
# Adding a new logging macro DPVELOG_NE is not more clear than just
# writing the stuff you want to log in a regular logging statement, even
# if it makes your calling code longer. Just add it to your own code.
#
# If the code in question does not need to be used inside base, but will have
# multiple consumers across the codebase, consider placing it in a new directory
# under components/ instead.

ajwong@chromium.org
danakj@chromium.org
dcheng@chromium.org
fdoray@chromium.org
gab@chromium.org
kylechar@chromium.org
mark@chromium.org
thakis@chromium.org
thestig@chromium.org

# For Bind/Callback:
per-file bind*=tzik@chromium.org
per-file callback*=tzik@chromium.org

# For Android-specific changes:
per-file *android*=file://base/android/OWNERS
per-file BUILD.gn=file://base/android/OWNERS

# For Fuchsia-specific changes:
per-file *_fuchsia*=file://build/fuchsia/OWNERS

# For FeatureList API:
per-file feature_list*=asvitkine@chromium.org
per-file feature_list*=isherman@chromium.org

# Restricted since rand_util.h also backs the cryptographically secure RNG.
per-file rand_util*=set noparent
per-file rand_util*=file://ipc/SECURITY_OWNERS

# For TCMalloc tests:
per-file security_unittest.cc=jln@chromium.org

# For Value:
per-file values*=jdoerrie@chromium.org

# COMPONENT: Internals>Core
