blob: cf481a00bba6726d604b4ee6c097401983b75ed8 [file] [log] [blame]
[email protected]824288842014-06-20 05:26:591# Use of this source code is governed by a BSD-style license that can be
2# found in the LICENSE file.
3
Yuta Hijikata1455a2a2020-11-12 09:04:064import("//build/config/chromeos/ui_mode.gni")
Scott Violetc8240b02018-03-08 22:03:595import("//extensions/buildflags/buildflags.gni")
qsrfb5251d12015-01-21 15:57:226import("//testing/test.gni")
[email protected]824288842014-06-20 05:26:597import("//tools/grit/grit_rule.gni")
[email protected]5842610c2014-08-07 03:35:188import("//tools/grit/repack.gni")
James Cookab78ff82018-12-19 18:23:219import("//ui/base/ui_features.gni")
[email protected]824288842014-06-20 05:26:5910
Devlin Cronin204a6572024-08-08 16:29:5511assert(enable_extensions || enable_desktop_android_extensions)
Devlin Croninc7d760ca2022-02-05 00:20:5512
Devlin Croninbc0972b2022-01-18 23:01:5913if (is_component_build) {
14 component("extensions") {
15 visibility = [
16 "//extensions/common:common_constants",
17 "//extensions/common:export",
18 ]
19 public_deps = [
20 "//extensions/common:constants_impl",
21 "//extensions/common:export_impl",
Fabrice de Gans01e97eb22021-08-26 21:39:4022 ]
Fabrice de Ganse329deb2021-08-25 23:02:4923 }
[email protected]5842610c2014-08-07 03:35:1824}
rockotea9df2a2015-01-22 20:26:3625
Devlin Croninbc0972b2022-01-18 23:01:5926# Used by targets that compile into the implementation.
27config("component_implementation") {
28 defines = [ "EXTENSIONS_COMPONENT_IMPLEMENTATION" ]
rockotea9df2a2015-01-22 20:26:3629}
brettw39355da2015-07-11 00:20:5130
Devlin Cronin204a6572024-08-08 16:29:5531# TODO(https://crbug.com/356905053): Gradually include more of these sources
32# in the desktop-android build.
33if (enable_extensions) {
34 group("extensions_resources") {
35 public_deps = [
36 ":extensions_browser_resources",
37 ":extensions_renderer_resources",
38 ":extensions_resources_grd",
Bastian Kersting5de0fde2023-04-03 18:00:5939 ]
40 }
brettw39355da2015-07-11 00:20:5141
Devlin Cronin204a6572024-08-08 16:29:5542 grit("extensions_resources_grd") {
43 source = "extensions_resources.grd"
44 outputs = [
45 "grit/extensions_resources.h",
46 "extensions_resources.pak",
47 ]
48 }
Devlin Croninbc0972b2022-01-18 23:01:5949
Devlin Cronin204a6572024-08-08 16:29:5550 grit("extensions_browser_resources") {
51 source = "browser/resources/extensions_browser_resources.grd"
52 outputs = [
53 "grit/extensions_browser_resources.h",
54 "grit/extensions_browser_resources_map.cc",
55 "grit/extensions_browser_resources_map.h",
56 "extensions_browser_resources_100_percent.pak",
57 "extensions_browser_resources_200_percent.pak",
58 ]
59 }
Devlin Croninbc0972b2022-01-18 23:01:5960
Devlin Cronin204a6572024-08-08 16:29:5561 grit("extensions_renderer_resources") {
62 source = "renderer/resources/extensions_renderer_resources.grd"
63 outputs = [
64 "grit/extensions_renderer_resources.h",
65 "extensions_renderer_resources.pak",
66 ]
67 grit_flags = [
68 "-E",
69 "mojom_root=" + rebase_path(root_gen_dir, root_build_dir),
70 ]
Devlin Croninbc0972b2022-01-18 23:01:5971
Devlin Cronin204a6572024-08-08 16:29:5572 deps = [
73 "//extensions/common:mojom_js",
74 "//extensions/common/api:mojom_js",
75 "//services/device/public/mojom:mojom_js",
76 ]
77 }
Devlin Croninbc0972b2022-01-18 23:01:5978
Devlin Cronin204a6572024-08-08 16:29:5579 static_library("test_support") {
80 testonly = true
81 sources = [
82 "browser/api/declarative/test_rules_registry.cc",
83 "browser/api/declarative/test_rules_registry.h",
84 "browser/api/storage/settings_test_util.cc",
85 "browser/api/storage/settings_test_util.h",
86 "browser/api_test_utils.cc",
87 "browser/api_test_utils.h",
88 "browser/api_unittest.cc",
89 "browser/api_unittest.h",
90 "browser/app_window/test_app_window_contents.cc",
91 "browser/app_window/test_app_window_contents.h",
92 "browser/content_verifier/test_utils.cc",
93 "browser/content_verifier/test_utils.h",
94 "browser/extension_error_test_util.cc",
95 "browser/extension_error_test_util.h",
96 "browser/extensions_test.cc",
97 "browser/extensions_test.h",
98 "browser/guest_view/mime_handler_view/test_mime_handler_view_guest.cc",
99 "browser/guest_view/mime_handler_view/test_mime_handler_view_guest.h",
100 "browser/mock_extension_system.cc",
101 "browser/mock_extension_system.h",
102 "browser/mock_external_provider.cc",
103 "browser/mock_external_provider.h",
104 "browser/scoped_ignore_content_verifier_for_test.cc",
105 "browser/scoped_ignore_content_verifier_for_test.h",
106 "browser/test_event_router.cc",
107 "browser/test_event_router.h",
108 "browser/test_extension_registry_observer.cc",
109 "browser/test_extension_registry_observer.h",
110 "browser/test_extensions_browser_client.cc",
111 "browser/test_extensions_browser_client.h",
112 "browser/test_image_loader.cc",
113 "browser/test_image_loader.h",
114 "browser/test_management_policy.cc",
115 "browser/test_management_policy.h",
116 "browser/test_runtime_api_delegate.cc",
117 "browser/test_runtime_api_delegate.h",
118 "common/extension_builder.cc",
119 "common/extension_builder.h",
120 "common/manifest_test.cc",
121 "common/manifest_test.h",
122 "common/permissions/mock_manifest_permission.cc",
123 "common/permissions/mock_manifest_permission.h",
124 "common/permissions/permission_message_test_util.cc",
125 "common/permissions/permission_message_test_util.h",
126 "common/scoped_testing_manifest_handler_registry.cc",
127 "common/scoped_testing_manifest_handler_registry.h",
128 "renderer/test_extensions_renderer_client.cc",
129 "renderer/test_extensions_renderer_client.h",
130 "test/extension_background_page_waiter.cc",
131 "test/extension_background_page_waiter.h",
132 "test/extension_state_tester.cc",
133 "test/extension_state_tester.h",
134 "test/extension_test_message_listener.cc",
135 "test/extension_test_message_listener.h",
136 "test/extension_test_notification_observer.cc",
137 "test/extension_test_notification_observer.h",
138 "test/flakiness_test_util.h",
139 "test/logging_timer.cc",
140 "test/logging_timer.h",
141 "test/permissions_manager_waiter.cc",
142 "test/permissions_manager_waiter.h",
143 "test/result_catcher.cc",
144 "test/result_catcher.h",
145 "test/test_content_script_load_waiter.cc",
146 "test/test_content_script_load_waiter.h",
147 "test/test_context_data.cc",
148 "test/test_context_data.h",
149 "test/test_extension_dir.cc",
150 "test/test_extension_dir.h",
151 "test/test_extensions_client.cc",
152 "test/test_extensions_client.h",
153 "test/test_permission_message_provider.cc",
154 "test/test_permission_message_provider.h",
155 ]
Devlin Croninbc0972b2022-01-18 23:01:59156
Devlin Cronin204a6572024-08-08 16:29:55157 deps = [
158 ":extensions_resources",
159 "//base",
160 "//build:chromeos_buildflags",
161 "//chrome/common:buildflags",
162 "//components/crx_file",
163 "//components/guest_view/browser:test_support",
164 "//components/keyed_service/content",
165 "//components/pref_registry",
166 "//components/prefs:test_support",
167 "//components/sync_preferences:test_support",
168 "//components/update_client",
169 "//components/user_prefs",
170 "//content/public/common",
171 "//content/test:test_support",
172 "//extensions/browser",
173 "//extensions/browser:test_support",
174 "//extensions/browser/api",
175 "//extensions/browser/api/storage:settings_namespace",
176 "//extensions/browser/updater",
177 "//extensions/common",
178 "//extensions/common:core_api_provider",
179 "//extensions/common/api",
180 "//extensions/common/api:extensions_features",
181 "//extensions/renderer",
182 "//net:test_support",
183 "//services/network/public/mojom",
184 "//testing/gmock",
185 "//testing/gtest",
186 "//third_party/cld_3/src/src:cld_3",
187 "//third_party/zlib/google:zip",
188 ]
Devlin Croninbc0972b2022-01-18 23:01:59189
Devlin Cronin204a6572024-08-08 16:29:55190 # Generally, //extensions should not depend on //chromeos. However, a number
191 # of the APIs and the extensions shell already do. We should try to avoid
192 # expanding these dependencies.
193 if (is_chromeos_ash) {
194 deps += [ "//chromeos/ash/components/login/login_state" ]
195 }
Devlin Croninbc0972b2022-01-18 23:01:59196
Devlin Cronin204a6572024-08-08 16:29:55197 if (is_chromeos_lacros) {
198 deps += [ "//chromeos/lacros:test_support" ]
199 }
200
201 public_deps = [ "//content/public/browser" ]
202 }
203
204 repack("shell_and_test_pak") {
205 testonly = true
206
207 sources = [
208 "$root_gen_dir/content/browser/devtools/devtools_resources.pak",
209 "$root_gen_dir/content/content_resources.pak",
210 "$root_gen_dir/content/shell/shell_resources.pak",
211 "$root_gen_dir/device/bluetooth/strings/bluetooth_strings_en-US.pak",
212 "$root_gen_dir/extensions/extensions_browser_resources_100_percent.pak",
213 "$root_gen_dir/extensions/extensions_renderer_resources.pak",
214 "$root_gen_dir/extensions/extensions_resources.pak",
215 "$root_gen_dir/extensions/shell/app_shell_resources.pak",
216 "$root_gen_dir/extensions/strings/extensions_strings_en-US.pak",
217 "$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak",
218 "$root_gen_dir/third_party/blink/public/resources/blink_resources.pak",
219 "$root_gen_dir/third_party/blink/public/resources/blink_scaled_resources_100_percent.pak",
220 "$root_gen_dir/third_party/blink/public/strings/blink_strings_en-US.pak",
221 "$root_gen_dir/ui/resources/ui_resources_100_percent.pak",
222 "$root_gen_dir/ui/strings/app_locale_settings_en-US.pak",
223 "$root_gen_dir/ui/strings/ax_strings_en-US.pak",
224 "$root_gen_dir/ui/strings/ui_strings_en-US.pak",
225 ]
226
227 output = "$root_out_dir/extensions_shell_and_test.pak"
228
229 deps = [
230 ":extensions_resources",
231 "//content:content_resources",
232 "//content/browser/devtools:devtools_resources",
233 "//content/shell:resources",
234 "//device/bluetooth/strings",
235 "//extensions/shell:resources",
236 "//extensions/strings",
237 "//mojo/public/js:resources",
238 "//third_party/blink/public:resources",
239 "//third_party/blink/public:scaled_resources_100_percent",
240 "//third_party/blink/public/strings",
241 "//ui/resources",
242 "//ui/strings",
243 ]
244 }
245
246 test("extensions_unittests") {
247 use_xvfb = use_xvfb_in_this_config
248
249 sources = [
250 "test/extensions_unittests_main.cc",
251 "test/flakiness_test_util_test.cc",
252 "test/logging_timer_unittest.cc",
253 ]
254
255 data = [
256 "test/data/",
257 "//chrome/test/data/extensions/",
258 "$root_out_dir/content_shell.pak",
259 "$root_out_dir/extensions_shell_and_test.pak",
260 ]
261
262 deps = [
263 ":extensions_resources",
264 ":shell_and_test_pak",
265 ":test_support",
266 "//base/test:test_support",
267 "//content/public/common",
268 "//content/test:test_support",
269 "//extensions/browser:unit_tests",
270 "//extensions/common",
271 "//extensions/common:unit_tests",
272 "//extensions/renderer:unit_tests",
273 "//extensions/shell:unit_tests",
274 "//services/data_decoder/public/cpp:test_support",
275 "//services/service_manager/public/cpp/test:test_support",
276 "//ui/gl:test_support",
277 ]
278
279 data_deps = [
280 "//testing/buildbot/filters:extensions_unittests_filters",
281 "//third_party/angle:includes",
282 ]
283
284 if (is_chromeos) {
285 deps += [ "//chrome/browser/chromeos/extensions/telemetry/api:extensions_unittests" ]
286 }
287 }
288
289 test("extensions_browsertests") {
290 use_xvfb = use_xvfb_in_this_config
291
292 data = [
293 "//extensions/test/data/",
294 "//net/tools/testserver/",
295 "//third_party/pywebsocket3/src/mod_pywebsocket/",
296 "$root_out_dir/extensions_shell_and_test.pak",
297 ]
298
299 deps = [
300 "//extensions/browser:browser_tests",
301 "//extensions/renderer:browser_tests",
302 "//extensions/shell:browser_tests",
303 ]
304
305 data_deps = [ "//third_party/angle:includes" ]
306 }
307
308 # TODO(rockot) bug 505926: These should be moved to extensions_browsertests but have
309 # old dependencies on chrome files. The chrome dependencies should be removed
310 # and these moved to the extensions_browsertests target. Currently, we solve
311 # the problem by making this a source set and linking it into
312 # //chrome/test:browser_tests.
313 source_set("chrome_extensions_browsertests_sources") {
314 testonly = true
315 sources = [
316 "browser/api/app_window/app_window_apitest.cc",
317 "browser/api/bluetooth/bluetooth_apitest.cc",
318 "browser/api/bluetooth/bluetooth_private_apitest.cc",
319 "browser/api/serial/serial_apitest.cc",
320 "browser/api/usb/usb_manual_apitest.cc",
321 "browser/app_window/app_window_browsertest.cc",
322 ]
323
324 defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
325
326 # These are the deps from browser_tests minus some internal Chrome ones that
327 # aren't allowed to be included here and that aren't needed.
328 deps = [
329 "//base",
330 "//base:i18n",
331 "//base/test:test_support",
332 "//build:chromeos_buildflags",
333 "//chrome/browser",
334 "//chrome/common/extensions/api",
335 "//chrome/renderer",
336 "//chrome/test:test_support",
337 "//components/autofill/content/browser:risk_proto",
338 "//components/autofill/content/renderer:test_support",
339 "//components/captive_portal/core:test_support",
340 "//components/dom_distiller/content/browser",
341 "//components/dom_distiller/core:test_support",
342 "//components/guest_view/browser:test_support",
343 "//components/javascript_dialogs",
344 "//components/resources",
345 "//components/strings",
346 "//components/sync",
347 "//components/sync:test_support",
348 "//components/translate/core/common",
349 "//crypto:test_support",
350 "//device/bluetooth:mocks",
351 "//extensions/browser/api/bluetooth",
352 "//extensions/common/api",
353 "//extensions/renderer",
354 "//google_apis:test_support",
355 "//media:test_support",
356 "//net",
357 "//net:test_support",
358 "//skia",
359 "//testing/gmock",
360 "//testing/gtest",
361 "//testing/perf",
362 "//third_party/blink/public:blink",
363 "//third_party/icu",
364 "//third_party/leveldatabase",
365 "//third_party/libaddressinput",
366 "//third_party/webrtc_overrides:webrtc_component",
367 "//third_party/widevine/cdm:headers",
368 "//ui/accessibility:test_support",
369 "//ui/base:test_support",
370 "//ui/base/idle:test_support",
371 "//ui/compositor:test_support",
372 "//ui/resources",
373 "//ui/web_dialogs:test_support",
374 "//v8",
375 ]
376
377 if (is_chromeos_ash) {
378 deps += [ "//components/user_manager:test_support" ]
379 }
Devlin Croninbc0972b2022-01-18 23:01:59380 }
brettw39355da2015-07-11 00:20:51381}