1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88
   89
   90
   91
   92
   93
   94
   95
   96
   97
   98
   99
  100
  101
  102
  103
  104
  105
  106
  107
  108
  109
  110
  111
  112
  113
  114
  115
  116
  117
  118
  119
  120
  121
  122
  123
  124
  125
  126
  127
  128
  129
  130
  131
  132
  133
  134
  135
  136
  137
  138
  139
  140
  141
  142
  143
  144
  145
  146
  147
  148

content / DEPS [blame]

# Do NOT add chrome to the list below. We shouldn't be including files
# from src/chrome in src/content.
include_rules = [
  # The subdirectories in content/ will manually allow their own include
  # directories in content/ so we disallow all of them.
  "-content",
  "+content/app/strings/grit",  # For generated headers
  "+content/common",
  "+content/grit",
  "+content/public/common",
  "+content/public/test",
  "+content/services/auction_worklet/public",
  "+content/test",
  "+blink/public/resources/grit",
  "+cc",

  "-components",
  # Content can depend on components that are:
  #   1) related to the implementation of the web platform, or,
  #   2) shared code between third_party/blink and content
  # It should not depend on chrome features or implementation details, i.e. the
  # original components/ directories which was code split out from chrome/ to be
  # shared with iOS. This includes, but isn't limited to, browser features such
  # as autofill or extensions, and chrome implementation details such as
  # settings, packaging details, installation or crash reporting.

  "+components/app_launch_prefetch",
  "+components/attribution_reporting",
  "+components/browsing_topics/common",
  "+components/content_settings/core/common",
  "+components/input",
  "+components/memory_pressure",
  # components/performance_manager sits between chrome/ and content/, except for
  # the mojo interfaces it exposes to content/ and third_party/blink/.
  "+components/performance_manager/public/mojom",
  "+components/services/filesystem",
  "+components/services/font/public",
  "+components/services/font_data/public",
  "+components/startup_metric_utils",
  "+components/variations",
  "+components/value_store",

  "+crypto",
  "+grit/blink_resources.h",

  "+dbus",
  "+gpu",
  "+media",
  "+mojo/core/embedder",
  "+mojo/public",
  "+net",
  "+ppapi",
  "+printing",
  "+sandbox",
  "+services/proxy_resolver/public/mojom",
  "+services/service_manager/zygote",
  "+skia",

  # In general, content/ should not rely on google_apis, since URLs
  # and access tokens should usually be provided by the
  # embedder.
  #
  # There are a couple of specific parts of content that are excepted
  # from this rule, e.g. content/browser/speech/DEPS. These are cases of
  # implementations that are strongly tied to Google servers, i.e. we
  # don't expect alternate implementations to be provided by the
  # embedder.
  "-google_apis",

  # Don't allow inclusion of these other libs we shouldn't be calling directly.
  "-v8",
  "-tools",

  # Allow inclusion of third-party code:
  "+third_party/angle",
  "+third_party/boringssl/src/include",
  "+third_party/flac",
  "+third_party/mozilla",
  "+third_party/ocmock",
  "+third_party/re2",
  "+third_party/skia",
  "+third_party/sqlite",
  "+third_party/khronos",
  "+third_party/webrtc",
  "+third_party/webrtc_overrides",
  "+third_party/zlib/google",
  "+third_party/blink/public",

  "+ui/accelerated_widget_mac",
  "+ui/accessibility",
  "+ui/android",
  # Aura is analogous to Win32 or a Gtk, so it is allowed.
  "+ui/aura",
  "+ui/base",
  "+ui/color",
  "+ui/compositor",
  "+ui/display",
  "+ui/events",
  "+ui/gfx",
  "+ui/gl",
  "+ui/latency",
  "+ui/native_theme",
  "+ui/resources/grit/ui_resources.h",
  "+ui/shell_dialogs",
  "+ui/snapshot",
  "+ui/strings/grit/ui_strings.h",
  "+ui/surface",
  "+ui/touch_selection",
  "+ui/webui/resources/grit/webui_resources.h",
  "+ui/webui/resources/grit/webui_resources_map.h",
  "+ui/wm",
  # Content knows about grd files, but the specifics of how to get a resource
  # given its id is left to the embedder.
  "-ui/base/l10n",
  "-ui/base/resource",
  # These files aren't related to grd, so they're fine.
  "+ui/base/l10n/l10n_util_android.h",
  "+ui/base/l10n/l10n_util_win.h",
  "+ui/base/resource/resource_scale_factor.h",

  # Content shouldn't depend on views. While we technically don't need this
  # line, since the top level DEPS doesn't allow it, we add it to make this
  # explicit.
  "-ui/views",

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

  # For generated JNI includes.
  "+content/public/android/common_jni",
  "+content/public/android/content_jni_headers",
  "+content/public/android/content_main_dex_jni",
  "+content/public/android/jar_jni",
]

specific_include_rules = {
  ".*_browsertest[a-z_]*\.(cc|h|mm)": [
    # content -> content/shell dependency is disallowed, except browser tests.
    "+content/shell/browser",
    "+content/shell/common",
  ],
  "content_(features|switches).h": [
    # content -> tools dependency is disallowed, except buildflags for switches.
    "+tools/v8_context_snapshot/buildflags.h",
  ],
}

new_usages_require_review = True