# If you're adding a new feature or modifying non-trivial amount of code
# in Network Service, please consider sharing the design idea/doc with
# network-service-dev@chromium.org beforehand.

cduvall@chromium.org
ericorth@chromium.org
falken@chromium.org
jam@chromium.org
kinuko@chromium.org
mmenke@chromium.org
morlovich@chromium.org
reillyg@chromium.org
rmcelrath@chromium.org
toyoshim@chromium.org
tsepez@chromium.org
yhirano@chromium.org

# Files and features related to component:Internals>Sandbox>SiteIsolation:
per-file cross_origin_read_blocking*=creis@chromium.org
per-file cross_origin_read_blocking*=lukasza@chromium.org
per-file sec_header_helpers*=creis@chromium.org
per-file sec_header_helpers*=lukasza@chromium.org
per-file sec_header_helpers*=mkwst@chromium.org

per-file expect_ct_reporter*=estark@chromium.org

per-file cert_verifier_with_trust_anchors*=file://chromeos/policy/OWNERS
per-file cert_verify_proc_chromeos*=file://chromeos/policy/OWNERS

per-file *_type_converter*.*=set noparent
per-file *_type_converter*.*=file://ipc/SECURITY_OWNERS

per-file network_sandbox_hook_linux.*.cc=file://sandbox/OWNERS
per-file network_sandbox_win.*=file://sandbox/win/OWNERS

per-file network_quality*=file://net/nqe/OWNERS

per-file BUILD.gn=file://net/nqe/OWNERS
per-file BUILD.gn=file://services/network/resource_scheduler/OWNERS

# Content Security Policy
per-file content_security_policy*=lfg@chromium.org
per-file content_security_policy*=nasko@chromium.org

# COMPONENT: Internals>Services>Network
