include_rules = [
  "+apps",
  "+cc/paint",
  "+chrome/android/chrome_jni_headers",
  "+chrome/android/features/autofill_assistant/jni_headers",
  "+chrome/android/public/profiles/jni_headers",
  "+chrome/app",
  "+chrome/chrome_watcher",
  "+chrome/credential_provider/common",
  "+chrome/grit",
  "+chrome/install_static",
  "+chrome/installer/util",
  "+chrome/notification_helper/notification_helper_constants.h",
  "+chrome/services/app_service/public/mojom",
  "+chrome/services/cups_ipp_parser/public",
  "+chrome/services/cups_proxy",
  "+chrome/services/diagnosticsd/public",
  "+chrome/services/file_util/public",
  "+chrome/services/media_gallery_util/public",
  "+chrome/services/printing/public",
  "+chrome/services/removable_storage_writer/public",
  "+chrome/services/util_win/public",
  "+chrome/services/wifi_util_win/public",
  "+chromeos",
  "+components",

# Use identity_manager.h instead of the below files;
  # see https://groups.google.com/a/chromium.org/d/msg/chromium-dev/dgFLuxqZt1o/iEqkyoQQBwAJ for help and info.
  "-components/signin/core/browser/account_fetcher_service.h",
  "-components/signin/core/browser/account_info_fetcher.h",
  "-components/signin/core/browser/account_tracker_service.h",
  "-components/signin/core/browser/child_account_info_fetcher_android.h",
  "-components/signin/core/browser/fake_profile_oauth2_token_service.h",
  "-components/signin/core/browser/gaia_cookie_manager_service.h",
  "-components/signin/core/browser/oauth2_token_service_delegate_android.h",
  "-components/signin/core/browser/oauth2_multilogin_helper.h",
  "-components/signin/core/browser/oauth2_multilogin_token_fetcher.h",
  "-components/signin/core/browser/primary_account_manager.h",
  "-components/signin/core/browser/primary_account_policy_manager.h",
  "-components/signin/core/browser/profile_oauth2_token_service.h",
  "-components/signin/core/browser/profile_oauth2_token_service_delegate_chromeos.h",
  "-components/signin/core/browser/ubertoken_fetcher_impl.h",

  "+content/public/browser",
  "+content/public/common",
  "+courgette",
  "+device/base",
  "+device/bluetooth",
  "+device/fido",
  "+device/gamepad/public/cpp",
  "+device/vr/buildflags/buildflags.h",
  "+device/vr/public",
  "+extensions/browser",
  "+extensions/common",
  "+extensions/components/javascript_dialog_extensions_client",
  "+extensions/buildflags",
  "+extensions/grit",
  "+extensions/test",
  "+google/cacheinvalidation",  # Sync invalidation API protobuf files.
  "+google_apis",
  "+google_update",
  "+installer_util_strings",  # For generated headers
  "+mash/public/mojom",
  "+media/media_buildflags.h",
  "+media/audio", # For media audio hang monitor.
  "+media/base",  # For media switches
  "+media/capabilities", # For InMemoryVideoDecodeStatsDB
  "+media/cdm/cdm_paths.h",
  "+media/capture",
  "+media/midi",  # For midi switches
  "+media/mojo",  # For mojo media services.
  "+media/renderers",
  "+media/webrtc",  # For webrtc media switches.
  "+ppapi/c",  # For various types.
  "+ppapi/host",
  "+ppapi/proxy",
  "+ppapi/shared_impl",
  "+rlz",
  "+sandbox/win/src",  # The path doesn't say it, but this is the Windows sandbox.
  "+services/audio/public",
  "+services/content/simple_browser",
  "+services/data_decoder/public",
  "+services/device/public",
  "+services/identity/public",
  "+services/image_annotation/public",
  "+services/media_session/public",
  "+services/metrics/metrics_mojo_service.h",
  "+services/metrics/public",
  "+services/network/cert_verifier_with_trust_anchors.h",
  "+services/network/cert_verify_proc_chromeos.h",
  "+services/network/ignore_errors_cert_verifier.h",
  "+services/network/network_service.h",
  "+services/network/public",
  "+services/network/test",
  "+services/network/trial_comparison_cert_verifier_mojo.h",
  "+services/network/url_request_context_owner.h",
  "+services/network/url_request_context_builder_mojo.h",
  "+services/preferences/public/cpp",
  "+services/preferences/public/mojom",
  "+services/proxy_resolver",  # Android runs the packaged proxy resolver
                               # service in process and needs impl access.
  "+services/proxy_resolver/public/mojom",
  "+services/resource_coordinator/public/cpp",
  "+services/resource_coordinator/public/mojom",
  "+services/shape_detection/public/mojom",
  "+services/strings",
  "+services/tracing/public/cpp",
  "+services/video_capture/public",
  "+services/viz/public",
  "+services/viz/privileged",
  "+skia/ext",
  "+third_party/boringssl/src/include",
  "+third_party/crashpad",
  "+third_party/cros_system_api",
  "+third_party/metrics_proto",
  "+third_party/widevine/cdm/buildflags.h",
  "+third_party/widevine/cdm/widevine_cdm_common.h",

  # Code under //ash runs out-of-process in mash so it must be accessed via mojo
  # interfaces in //ash/public/interfaces. See //ash/README.md.
  "-ash",
  "+ash/public",
  "+ash/keyboard/ui/public",
  "+ash/keyboard/ui/grit",
  "+ash/keyboard/ui/public",
  "+ash/keyboard/ui/resources",
  "+ash/components/shortcut_viewer",

  # The message center should only be accessed through
  # //chrome/browser/notifications.
  "-ui/message_center",
  "+ui/message_center/public",

  # chrome only needs switches from cc. All usage of the compositor is from
  # content. Definitely don't include generic stuff from cc/base here, if this
  # is needed these files need to move to base/
  "+cc/base/switches.h",

  # Unsafe to use from //chrome, see http://goo.gl/QQG5wo
  "-content/public/test/test_browser_context.h",

  "+storage/browser",
  "+storage/common",

  "-chrome/browser/ui/views",
  "+chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.h",
  "+chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h",
  "+chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.h",
  "+chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux_x11.h",
  "+chrome/browser/ui/views/extensions/request_file_system_dialog_view.h",
  "+chrome/browser/ui/views/try_chrome_dialog_win/try_chrome_dialog.h",

  # Ensure that only the public interface of performance_manager gets used.
  "-chrome/browser/performance_manager",
  "+chrome/browser/performance_manager/public",
  "+chrome/browser/performance_manager/chrome_browser_main_extra_parts_performance_manager.h",
  "+chrome/browser/performance_manager/chrome_content_browser_client_performance_manager_part.h",
  "+chrome/browser/performance_manager/performance_manager.h",
  "+chrome/browser/performance_manager/performance_manager_tab_helper.h",

  # Explicitly disallow using SyncMessageFilter to prevent browser from
  # sending synchronous IPC messages on non-UI threads.
  "-ipc/ipc_sync_message_filter.h",

  # Allows in-process use of NetworkService for URLRequestContext configuration.
  # Should be removed once the actual network service ships.
  "+content/public/network",

  # Other libraries.
  "+libxml",
  "+third_party/google_toolbox_for_mac/src",
  "+third_party/icu/source/common/unicode",
  "+third_party/icu/source/i18n/unicode",
  "+third_party/leveldatabase",
  "+third_party/libxml",
  "+third_party/mozilla",     # Mozilla interface headers.
  "+third_party/ocmock/gtest_support.h",
  "+third_party/protobuf/src/google/protobuf",
  "+third_party/re2",
  "+third_party/smhasher",
  "+third_party/sqlite",
  "+third_party/zlib",

  # No inclusion of WebKit from the browser, other than the ones in
  # WebKit/public/{mojom,common}, or the ones that are strictly enum/POD,
  # header-only types, and some selected common code.
  "-third_party/blink",
  "+third_party/blink/public/common",
  "+third_party/blink/public/mojom",
  "+third_party/blink/public/platform/web_cache.h",
  "+third_party/blink/public/platform/web_loading_behavior_flag.h",
  "+third_party/blink/public/platform/web_gesture_event.h",
  "+third_party/blink/public/platform/web_input_event.h",
  "+third_party/blink/public/platform/web_mouse_event.h",
  "+third_party/blink/public/platform/web_mouse_wheel_event.h",
  "+third_party/blink/public/platform/web_touch_event.h",
  "+third_party/blink/public/platform/web_security_style.h",
  "+third_party/blink/public/platform/web_speech_synthesis_constants.h",
  "+third_party/blink/public/platform/web_sudden_termination_disabler_type.h",
  "+third_party/blink/public/platform/modules/notifications/web_notification_constants.h",
  "+third_party/blink/public/public_buildflags.h",
  "+third_party/blink/public/web/web_context_menu_data.h",
  "+third_party/blink/public/web/web_fullscreen_options.h",
  "+third_party/blink/public/web/web_media_player_action.h",
  "+third_party/blink/public/web/web_plugin_action.h",
  "+third_party/blink/public/web/web_presentation_receiver_flags.h",
  "+third_party/blink/public/web/web_text_direction.h",
  "+third_party/blink/public/web/web_triggering_event_info.h",
]

specific_include_rules = {
  "ash_service_registry\.cc": [
    "+ash/ash_service.h",
  ],
  "platform_util_mac.mm": [
    # The following is used to forward methods to an NSWindow in another
    # process, via the views::Widget API.
    "+ui/views/widget/widget.h",
  ],
  # TODO(mash): Fix. https://crbug.com/768439, https://crbug.com/768395.
  "exo_parts\.cc": [
    "+ash/shell.h",
  ],
  # TODO(mash): Remove. http://crbug.com/678705
  "fullscreen_chromeos\.cc": [
    "+ash/root_window_controller.h",
    "+ash/shell.h",
  ],
  # TODO(estade): the message center is initialized and shut down here, but it
  # should be the responsibility of code in chrome/browser/notifications/
  "browser_process_impl.cc": [
    "+ui/message_center/message_center.h",
  ],
  # To share values of UMA enums between product code and tests.
  "translate_manager_browsertest.cc": [
    "+services/network/initiator_lock_compatibility.h",
  ],
  "input_method_manager_impl.cc": [
    "+ash/keyboard/ui/keyboard_controller.h",
  ],
  "chrome_browsing_data_remover_delegate_unittest.cc": [
    "+services/network/network_context.h",
    "+services/network/network_service.h",
  ],
}
