# src/content is a large and complex component. In general, files should be in
# subdirectories that have specific owners who are the experts in reviewing that
# code. Top level content/OWNERS are reviewers who are qualified to review
# changes across all of content and are responsible for its architecture. They
# will defer to subdirectory owners as needed. For more information about owner
# responsibilities as well as how to become a top-level owner, please see
# //content/README.md#content-owners.
#
# For public questions directed to OWNERS, you can send email
# to content-owners@chromium.org.

set noparent
# NOTE: keep this in sync with global-owners-override@chromium.org owners
# by emailing lsc-policy@chromium.org when this list changes.
alexmos@chromium.org
arthursonzogni@chromium.org
avi@chromium.org
clamy@chromium.org
creis@chromium.org
dgozman@chromium.org
dtapuska@chromium.org
kinuko@chromium.org
nasko@chromium.org
rakina@chromium.org
# NOTE: keep this in sync with global-owners-override@chromium.org owners
# by emailing lsc-policy@chromium.org when this list changes.

# per-file rules:

# For threading and startup/shutdown sequences
# gab@chromium.org (see per-file rules in subdirectories)

# This is for the common case of adding or renaming files. If you're doing
# structural changes, please get a review from a reviewer in this file.
per-file BUILD.gn=*

per-file content_resources.grd=file://ui/webui/PLATFORM_OWNERS
per-file dev_ui_content_resources.grd=file://ui/webui/PLATFORM_OWNERS

# The remaining rules are for platform-specific implementation changes.
# Do NOT add other per-file changes as they would also apply to public/.

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

# For Mac-specific changes:
per-file ..._mac.*=ellyjones@chromium.org
per-file ..._mac.*=mark@chromium.org
per-file ..._mac_*=ellyjones@chromium.org
per-file ..._mac_*=mark@chromium.org
per-file ....mm=ellyjones@chromium.org
per-file ....mm=mark@chromium.org

# Translation artifacts:
per-file ....xtb=file://tools/translation/TRANSLATION_OWNERS
