# 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
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
