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