blob: 77da549756e941d721eced5d055176f6eca89dce [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")
Dave Tapuskaf6180312024-11-06 23:45:295import("//components/guest_view/buildflags/buildflags.gni")
Scott Violetc8240b02018-03-08 22:03:596import("//extensions/buildflags/buildflags.gni")
qsrfb5251d12015-01-21 15:57:227import("//testing/test.gni")
[email protected]824288842014-06-20 05:26:598import("//tools/grit/grit_rule.gni")
[email protected]5842610c2014-08-07 03:35:189import("//tools/grit/repack.gni")
James Cookab78ff82018-12-19 18:23:2110import("//ui/base/ui_features.gni")
[email protected]824288842014-06-20 05:26:5911
Devlin Cronin86a7109f2024-08-19 18:42:4212assert(enable_extensions_core)
James Cookaf3ddc32025-06-26 22:37:1813assert(!is_fuchsia)
Devlin Croninc7d760ca2022-02-05 00:20:5514
Dave Tapuskaf6180312024-11-06 23:45:2915# If enable_extensions is true then enable_guest_view must also be true.
16assert(!enable_extensions || enable_guest_view)
17
Devlin Croninbc0972b2022-01-18 23:01:5918if (is_component_build) {
19 component("extensions") {
20 visibility = [
21 "//extensions/common:common_constants",
22 "//extensions/common:export",
Salma Elmahallawyf217bab2024-12-19 17:51:3223 "//extensions/common:extension_features",
Devlin Croninbc0972b2022-01-18 23:01:5924 ]
25 public_deps = [
26 "//extensions/common:constants_impl",
27 "//extensions/common:export_impl",
Fabrice de Gans01e97eb22021-08-26 21:39:4028 ]
Fabrice de Ganse329deb2021-08-25 23:02:4929 }
[email protected]5842610c2014-08-07 03:35:1830}
rockotea9df2a2015-01-22 20:26:3631
Devlin Croninbc0972b2022-01-18 23:01:5932# Used by targets that compile into the implementation.
33config("component_implementation") {
34 defines = [ "EXTENSIONS_COMPONENT_IMPLEMENTATION" ]
rockotea9df2a2015-01-22 20:26:3635}
brettw39355da2015-07-11 00:20:5136
Devlin Cronin68e139d2024-08-09 16:16:0037group("extensions_resources") {
38 public_deps = [
39 ":extensions_browser_resources",
40 ":extensions_renderer_resources",
41 ":extensions_resources_grd",
42 ]
43}
44
45grit("extensions_resources_grd") {
46 source = "extensions_resources.grd"
47 outputs = [
48 "grit/extensions_resources.h",
49 "extensions_resources.pak",
50 ]
51}
52
53grit("extensions_browser_resources") {
54 source = "browser/resources/extensions_browser_resources.grd"
55 outputs = [
56 "grit/extensions_browser_resources.h",
57 "grit/extensions_browser_resources_map.cc",
58 "grit/extensions_browser_resources_map.h",
59 "extensions_browser_resources_100_percent.pak",
60 "extensions_browser_resources_200_percent.pak",
61 ]
62}
63
64grit("extensions_renderer_resources") {
65 source = "renderer/resources/extensions_renderer_resources.grd"
66 outputs = [
67 "grit/extensions_renderer_resources.h",
68 "extensions_renderer_resources.pak",
69 ]
70 grit_flags = [
71 "-E",
72 "mojom_root=" + rebase_path(root_gen_dir, root_build_dir),
73 ]
74
75 deps = [
76 "//extensions/common:mojom_js",
77 "//extensions/common/api:mojom_js",
78 "//services/device/public/mojom:mojom_js",
79 ]
80}
81
Devlin Cronin564fee72024-08-14 23:41:1082static_library("test_support") {
83 testonly = true
84 sources = [
85 "browser/api/declarative/test_rules_registry.cc",
86 "browser/api/declarative/test_rules_registry.h",
Jenny Zhang92961f37d2024-10-11 21:58:1987 "browser/api/storage/settings_test_util.cc",
88 "browser/api/storage/settings_test_util.h",
Devlin Cronin564fee72024-08-14 23:41:1089 "browser/api_test_utils.cc",
90 "browser/api_test_utils.h",
91 "browser/api_unittest.cc",
92 "browser/api_unittest.h",
93 "browser/content_verifier/test_utils.cc",
94 "browser/content_verifier/test_utils.h",
95 "browser/extension_error_test_util.cc",
96 "browser/extension_error_test_util.h",
97 "browser/extensions_test.cc",
98 "browser/extensions_test.h",
99 "browser/mock_extension_system.cc",
100 "browser/mock_extension_system.h",
101 "browser/mock_external_provider.cc",
102 "browser/mock_external_provider.h",
103 "browser/scoped_ignore_content_verifier_for_test.cc",
104 "browser/scoped_ignore_content_verifier_for_test.h",
105 "browser/test_event_router.cc",
106 "browser/test_event_router.h",
107 "browser/test_extension_registry_observer.cc",
108 "browser/test_extension_registry_observer.h",
109 "browser/test_extensions_browser_client.cc",
110 "browser/test_extensions_browser_client.h",
111 "browser/test_image_loader.cc",
112 "browser/test_image_loader.h",
113 "browser/test_management_policy.cc",
114 "browser/test_management_policy.h",
James Cookcf0e0642025-05-22 17:23:47115 "browser/test_runtime_api_delegate.cc",
116 "browser/test_runtime_api_delegate.h",
Devlin Cronin564fee72024-08-14 23:41:10117 "common/extension_builder.cc",
118 "common/extension_builder.h",
119 "common/manifest_test.cc",
120 "common/manifest_test.h",
121 "common/permissions/mock_manifest_permission.cc",
122 "common/permissions/mock_manifest_permission.h",
123 "common/permissions/permission_message_test_util.cc",
124 "common/permissions/permission_message_test_util.h",
125 "common/scoped_testing_manifest_handler_registry.cc",
126 "common/scoped_testing_manifest_handler_registry.h",
127 "renderer/test_extensions_renderer_client.cc",
128 "renderer/test_extensions_renderer_client.h",
129 "test/extension_background_page_waiter.cc",
130 "test/extension_background_page_waiter.h",
131 "test/extension_state_tester.cc",
132 "test/extension_state_tester.h",
133 "test/extension_test_message_listener.cc",
134 "test/extension_test_message_listener.h",
135 "test/extension_test_notification_observer.cc",
136 "test/extension_test_notification_observer.h",
137 "test/flakiness_test_util.h",
138 "test/logging_timer.cc",
139 "test/logging_timer.h",
140 "test/permissions_manager_waiter.cc",
141 "test/permissions_manager_waiter.h",
142 "test/result_catcher.cc",
143 "test/result_catcher.h",
144 "test/test_content_script_load_waiter.cc",
145 "test/test_content_script_load_waiter.h",
146 "test/test_context_data.cc",
147 "test/test_context_data.h",
148 "test/test_extension_dir.cc",
149 "test/test_extension_dir.h",
150 "test/test_extensions_client.cc",
151 "test/test_extensions_client.h",
152 "test/test_permission_message_provider.cc",
153 "test/test_permission_message_provider.h",
154 ]
155
156 deps = [
157 ":extensions_resources",
158 "//base",
159 "//build:chromeos_buildflags",
160 "//chrome/common:buildflags",
161 "//components/crx_file",
162 "//components/keyed_service/content",
163 "//components/pref_registry",
164 "//components/prefs:test_support",
165 "//components/sync_preferences:test_support",
166 "//components/update_client",
167 "//components/user_prefs",
168 "//content/public/common",
169 "//content/test:test_support",
Ellyda0cead32025-07-02 19:03:22170 "//crypto:test_support",
Devlin Cronin564fee72024-08-14 23:41:10171 "//extensions/browser",
172 "//extensions/browser:test_support",
173 "//extensions/browser/api",
174 "//extensions/browser/api/storage:settings_namespace",
175 "//extensions/browser/updater",
176 "//extensions/common",
177 "//extensions/common:core_api_provider",
178 "//extensions/common/api",
179 "//extensions/common/api:extensions_features",
180 "//extensions/renderer",
181 "//net:test_support",
182 "//services/network/public/mojom",
183 "//testing/gmock",
184 "//testing/gtest",
185 "//third_party/cld_3/src/src:cld_3",
186 "//third_party/zlib/google:zip",
187 ]
188
189 if (enable_platform_apps) {
190 sources += [
191 "browser/app_window/test_app_window_contents.cc",
192 "browser/app_window/test_app_window_contents.h",
193 ]
194 }
195
196 if (enable_guest_view) {
197 sources += [
198 "browser/guest_view/mime_handler_view/test_mime_handler_view_guest.cc",
199 "browser/guest_view/mime_handler_view/test_mime_handler_view_guest.h",
200 ]
201
202 deps += [ "//components/guest_view/browser:test_support" ]
203 }
204
Devlin Cronin564fee72024-08-14 23:41:10205 # Generally, //extensions should not depend on //chromeos. However, a number
206 # of the APIs and the extensions shell already do. We should try to avoid
207 # expanding these dependencies.
David Bertoni5691b7c2024-10-29 23:02:38208 if (is_chromeos) {
Devlin Cronin564fee72024-08-14 23:41:10209 deps += [ "//chromeos/ash/components/login/login_state" ]
210 }
211
Devlin Cronin564fee72024-08-14 23:41:10212 public_deps = [ "//content/public/browser" ]
Claudio DeSouzafe4cc282025-07-17 14:03:38213
214 # TODO(crbug.com/40031409): Fix code that adds exit-time destructors and
215 # enable the diagnostic by removing this line.
216 configs += [ "//build/config/compiler:no_exit_time_destructors" ]
Devlin Cronin564fee72024-08-14 23:41:10217}
218
Jenny Zhangd890b3e2024-09-11 17:29:37219repack("shell_and_test_pak") {
220 testonly = true
Devlin Cronin204a6572024-08-08 16:29:55221
Jenny Zhangd890b3e2024-09-11 17:29:37222 sources = [
223 "$root_gen_dir/content/content_resources.pak",
224 "$root_gen_dir/content/shell/shell_resources.pak",
225 "$root_gen_dir/extensions/extensions_browser_resources_100_percent.pak",
226 "$root_gen_dir/extensions/extensions_renderer_resources.pak",
227 "$root_gen_dir/extensions/extensions_resources.pak",
228 "$root_gen_dir/extensions/strings/extensions_strings_en-US.pak",
229 "$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak",
230 "$root_gen_dir/third_party/blink/public/resources/blink_resources.pak",
231 "$root_gen_dir/third_party/blink/public/resources/blink_scaled_resources_100_percent.pak",
232 "$root_gen_dir/third_party/blink/public/strings/blink_strings_en-US.pak",
Yichen29b717572025-07-25 13:29:01233 "$root_gen_dir/ui/resources/ui_lottie_resources.pak",
Jenny Zhangd890b3e2024-09-11 17:29:37234 "$root_gen_dir/ui/resources/ui_resources_100_percent.pak",
235 "$root_gen_dir/ui/strings/app_locale_settings_en-US.pak",
236 "$root_gen_dir/ui/strings/ax_strings_en-US.pak",
237 "$root_gen_dir/ui/strings/ui_strings_en-US.pak",
238 ]
239
240 output = "$root_out_dir/extensions_shell_and_test.pak"
241
242 deps = [
243 ":extensions_resources",
244 "//content:content_resources",
245 "//content/shell:resources",
246 "//extensions/strings",
247 "//mojo/public/js:resources",
248 "//third_party/blink/public:resources",
249 "//third_party/blink/public:scaled_resources_100_percent",
250 "//third_party/blink/public/strings",
251 "//ui/resources",
252 "//ui/strings",
253 ]
254
255 # The following resources are not used by desktop-android build.
256 if (enable_extensions) {
257 sources += [
Devlin Cronin204a6572024-08-08 16:29:55258 "$root_gen_dir/content/browser/devtools/devtools_resources.pak",
Devlin Cronin204a6572024-08-08 16:29:55259 "$root_gen_dir/device/bluetooth/strings/bluetooth_strings_en-US.pak",
Devlin Cronin204a6572024-08-08 16:29:55260 "$root_gen_dir/extensions/shell/app_shell_resources.pak",
Devlin Cronin204a6572024-08-08 16:29:55261 ]
262
Jenny Zhangd890b3e2024-09-11 17:29:37263 deps += [
Devlin Cronin204a6572024-08-08 16:29:55264 "//content/browser/devtools:devtools_resources",
Devlin Cronin204a6572024-08-08 16:29:55265 "//device/bluetooth/strings",
266 "//extensions/shell:resources",
Jenny Zhangd890b3e2024-09-11 17:29:37267 ]
268 }
269}
270
271test("extensions_unittests") {
272 use_xvfb = use_xvfb_in_this_config
273
274 sources = [
275 "test/extensions_unittests_main.cc",
276 "test/flakiness_test_util_test.cc",
277 "test/logging_timer_unittest.cc",
278 ]
279
280 data = [
281 "test/data/",
282 "//chrome/test/data/extensions/",
283 "$root_out_dir/content_shell.pak",
284 "$root_out_dir/extensions_shell_and_test.pak",
285 ]
286
287 deps = [
288 ":shell_and_test_pak",
289 ":test_support",
290 "//base/test:test_support",
291 "//build:android_buildflags",
292 "//content/public/common",
293 "//content/test:test_support",
Jenny Zhangf7454002024-09-19 21:43:50294 "//extensions/browser:unit_tests",
Jenny Zhangd890b3e2024-09-11 17:29:37295 "//extensions/common",
296 "//extensions/common:unit_tests",
Jenny Zhanga215923b2024-09-12 17:12:41297 "//extensions/renderer:unit_tests",
Jenny Zhangd890b3e2024-09-11 17:29:37298 "//services/data_decoder/public/cpp:test_support",
299 "//services/service_manager/public/cpp/test:test_support",
300 "//ui/gl:test_support",
301 ]
302
303 data_deps = [
304 "//testing/buildbot/filters:extensions_unittests_filters",
305 "//third_party/angle:includes",
306 ]
307
308 if (is_chromeos) {
309 deps += [
310 "//chrome/browser/chromeos/extensions/telemetry/api:extensions_unittests",
Devlin Cronin204a6572024-08-08 16:29:55311 ]
312 }
313
Jenny Zhangd890b3e2024-09-11 17:29:37314 if (is_android) {
315 deps += [
Jenny Zhangf7454002024-09-19 21:43:50316 "//content/public/android:content_full_java",
Jenny Zhangd890b3e2024-09-11 17:29:37317 "//gin:v8_snapshot_assets",
318 "//services/data_decoder/public/cpp/android:safe_json_java",
319 "//ui/android:ui_full_java",
Devlin Cronin204a6572024-08-08 16:29:55320 ]
Jenny Zhangd890b3e2024-09-11 17:29:37321 }
Devlin Cronin204a6572024-08-08 16:29:55322
Jenny Zhangd890b3e2024-09-11 17:29:37323 # TODO(https://crbug.com/356905053): Gradually include more of these sources
324 # in the desktop-android build.
325 if (enable_extensions) {
Jenny Zhangf7454002024-09-19 21:43:50326 deps += [ "//extensions/shell:unit_tests" ]
Devlin Cronin204a6572024-08-08 16:29:55327 }
Jenny Zhangd890b3e2024-09-11 17:29:37328}
Devlin Cronin204a6572024-08-08 16:29:55329
Jenny Zhangd890b3e2024-09-11 17:29:37330if (enable_extensions) {
331 # Browser tests are not currently supported in desktop-android builds.
Devlin Cronin204a6572024-08-08 16:29:55332 test("extensions_browsertests") {
333 use_xvfb = use_xvfb_in_this_config
334
335 data = [
336 "//extensions/test/data/",
337 "//net/tools/testserver/",
338 "//third_party/pywebsocket3/src/mod_pywebsocket/",
339 "$root_out_dir/extensions_shell_and_test.pak",
340 ]
341
342 deps = [
343 "//extensions/browser:browser_tests",
344 "//extensions/renderer:browser_tests",
345 "//extensions/shell:browser_tests",
346 ]
347
348 data_deps = [ "//third_party/angle:includes" ]
349 }
brettw39355da2015-07-11 00:20:51350}