[email protected] | 82428884 | 2014-06-20 05:26:59 | [diff] [blame] | 1 | # Use of this source code is governed by a BSD-style license that can be |
| 2 | # found in the LICENSE file. |
| 3 | |
Yuta Hijikata | 1455a2a | 2020-11-12 09:04:06 | [diff] [blame] | 4 | import("//build/config/chromeos/ui_mode.gni") |
Scott Violet | c8240b0 | 2018-03-08 22:03:59 | [diff] [blame] | 5 | import("//extensions/buildflags/buildflags.gni") |
qsr | fb5251d1 | 2015-01-21 15:57:22 | [diff] [blame] | 6 | import("//testing/test.gni") |
[email protected] | 82428884 | 2014-06-20 05:26:59 | [diff] [blame] | 7 | import("//tools/grit/grit_rule.gni") |
[email protected] | 5842610c | 2014-08-07 03:35:18 | [diff] [blame] | 8 | import("//tools/grit/repack.gni") |
James Cook | ab78ff8 | 2018-12-19 18:23:21 | [diff] [blame] | 9 | import("//ui/base/ui_features.gni") |
[email protected] | 82428884 | 2014-06-20 05:26:59 | [diff] [blame] | 10 | |
Devlin Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame^] | 11 | assert(enable_extensions || enable_desktop_android_extensions) |
Devlin Cronin | c7d760ca | 2022-02-05 00:20:55 | [diff] [blame] | 12 | |
Devlin Cronin | bc0972b | 2022-01-18 23:01:59 | [diff] [blame] | 13 | if (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 Gans | 01e97eb2 | 2021-08-26 21:39:40 | [diff] [blame] | 22 | ] |
Fabrice de Gans | e329deb | 2021-08-25 23:02:49 | [diff] [blame] | 23 | } |
[email protected] | 5842610c | 2014-08-07 03:35:18 | [diff] [blame] | 24 | } |
rockot | ea9df2a | 2015-01-22 20:26:36 | [diff] [blame] | 25 | |
Devlin Cronin | bc0972b | 2022-01-18 23:01:59 | [diff] [blame] | 26 | # Used by targets that compile into the implementation. |
| 27 | config("component_implementation") { |
| 28 | defines = [ "EXTENSIONS_COMPONENT_IMPLEMENTATION" ] |
rockot | ea9df2a | 2015-01-22 20:26:36 | [diff] [blame] | 29 | } |
brettw | 39355da | 2015-07-11 00:20:51 | [diff] [blame] | 30 | |
Devlin Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame^] | 31 | # TODO(https://crbug.com/356905053): Gradually include more of these sources |
| 32 | # in the desktop-android build. |
| 33 | if (enable_extensions) { |
| 34 | group("extensions_resources") { |
| 35 | public_deps = [ |
| 36 | ":extensions_browser_resources", |
| 37 | ":extensions_renderer_resources", |
| 38 | ":extensions_resources_grd", |
Bastian Kersting | 5de0fde | 2023-04-03 18:00:59 | [diff] [blame] | 39 | ] |
| 40 | } |
brettw | 39355da | 2015-07-11 00:20:51 | [diff] [blame] | 41 | |
Devlin Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame^] | 42 | grit("extensions_resources_grd") { |
| 43 | source = "extensions_resources.grd" |
| 44 | outputs = [ |
| 45 | "grit/extensions_resources.h", |
| 46 | "extensions_resources.pak", |
| 47 | ] |
| 48 | } |
Devlin Cronin | bc0972b | 2022-01-18 23:01:59 | [diff] [blame] | 49 | |
Devlin Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame^] | 50 | 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 Cronin | bc0972b | 2022-01-18 23:01:59 | [diff] [blame] | 60 | |
Devlin Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame^] | 61 | 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 Cronin | bc0972b | 2022-01-18 23:01:59 | [diff] [blame] | 71 | |
Devlin Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame^] | 72 | deps = [ |
| 73 | "//extensions/common:mojom_js", |
| 74 | "//extensions/common/api:mojom_js", |
| 75 | "//services/device/public/mojom:mojom_js", |
| 76 | ] |
| 77 | } |
Devlin Cronin | bc0972b | 2022-01-18 23:01:59 | [diff] [blame] | 78 | |
Devlin Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame^] | 79 | 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 Cronin | bc0972b | 2022-01-18 23:01:59 | [diff] [blame] | 156 | |
Devlin Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame^] | 157 | 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 Cronin | bc0972b | 2022-01-18 23:01:59 | [diff] [blame] | 189 | |
Devlin Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame^] | 190 | # 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 Cronin | bc0972b | 2022-01-18 23:01:59 | [diff] [blame] | 196 | |
Devlin Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame^] | 197 | 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 Cronin | bc0972b | 2022-01-18 23:01:59 | [diff] [blame] | 380 | } |
brettw | 39355da | 2015-07-11 00:20:51 | [diff] [blame] | 381 | } |