[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") |
Dave Tapuska | f618031 | 2024-11-06 23:45:29 | [diff] [blame] | 5 | import("//components/guest_view/buildflags/buildflags.gni") |
Scott Violet | c8240b0 | 2018-03-08 22:03:59 | [diff] [blame] | 6 | import("//extensions/buildflags/buildflags.gni") |
qsr | fb5251d1 | 2015-01-21 15:57:22 | [diff] [blame] | 7 | import("//testing/test.gni") |
[email protected] | 82428884 | 2014-06-20 05:26:59 | [diff] [blame] | 8 | import("//tools/grit/grit_rule.gni") |
[email protected] | 5842610c | 2014-08-07 03:35:18 | [diff] [blame] | 9 | import("//tools/grit/repack.gni") |
James Cook | ab78ff8 | 2018-12-19 18:23:21 | [diff] [blame] | 10 | import("//ui/base/ui_features.gni") |
[email protected] | 82428884 | 2014-06-20 05:26:59 | [diff] [blame] | 11 | |
Devlin Cronin | 86a7109f | 2024-08-19 18:42:42 | [diff] [blame] | 12 | assert(enable_extensions_core) |
James Cook | af3ddc3 | 2025-06-26 22:37:18 | [diff] [blame] | 13 | assert(!is_fuchsia) |
Devlin Cronin | c7d760ca | 2022-02-05 00:20:55 | [diff] [blame] | 14 | |
Dave Tapuska | f618031 | 2024-11-06 23:45:29 | [diff] [blame] | 15 | # If enable_extensions is true then enable_guest_view must also be true. |
| 16 | assert(!enable_extensions || enable_guest_view) |
| 17 | |
Devlin Cronin | bc0972b | 2022-01-18 23:01:59 | [diff] [blame] | 18 | if (is_component_build) { |
| 19 | component("extensions") { |
| 20 | visibility = [ |
| 21 | "//extensions/common:common_constants", |
| 22 | "//extensions/common:export", |
Salma Elmahallawy | f217bab | 2024-12-19 17:51:32 | [diff] [blame] | 23 | "//extensions/common:extension_features", |
Devlin Cronin | bc0972b | 2022-01-18 23:01:59 | [diff] [blame] | 24 | ] |
| 25 | public_deps = [ |
| 26 | "//extensions/common:constants_impl", |
| 27 | "//extensions/common:export_impl", |
Fabrice de Gans | 01e97eb2 | 2021-08-26 21:39:40 | [diff] [blame] | 28 | ] |
Fabrice de Gans | e329deb | 2021-08-25 23:02:49 | [diff] [blame] | 29 | } |
[email protected] | 5842610c | 2014-08-07 03:35:18 | [diff] [blame] | 30 | } |
rockot | ea9df2a | 2015-01-22 20:26:36 | [diff] [blame] | 31 | |
Devlin Cronin | bc0972b | 2022-01-18 23:01:59 | [diff] [blame] | 32 | # Used by targets that compile into the implementation. |
| 33 | config("component_implementation") { |
| 34 | defines = [ "EXTENSIONS_COMPONENT_IMPLEMENTATION" ] |
rockot | ea9df2a | 2015-01-22 20:26:36 | [diff] [blame] | 35 | } |
brettw | 39355da | 2015-07-11 00:20:51 | [diff] [blame] | 36 | |
Devlin Cronin | 68e139d | 2024-08-09 16:16:00 | [diff] [blame] | 37 | group("extensions_resources") { |
| 38 | public_deps = [ |
| 39 | ":extensions_browser_resources", |
| 40 | ":extensions_renderer_resources", |
| 41 | ":extensions_resources_grd", |
| 42 | ] |
| 43 | } |
| 44 | |
| 45 | grit("extensions_resources_grd") { |
| 46 | source = "extensions_resources.grd" |
| 47 | outputs = [ |
| 48 | "grit/extensions_resources.h", |
| 49 | "extensions_resources.pak", |
| 50 | ] |
| 51 | } |
| 52 | |
| 53 | grit("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 | |
| 64 | grit("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 Cronin | 564fee7 | 2024-08-14 23:41:10 | [diff] [blame] | 82 | static_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 Zhang | 92961f37d | 2024-10-11 21:58:19 | [diff] [blame] | 87 | "browser/api/storage/settings_test_util.cc", |
| 88 | "browser/api/storage/settings_test_util.h", |
Devlin Cronin | 564fee7 | 2024-08-14 23:41:10 | [diff] [blame] | 89 | "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 Cook | cf0e064 | 2025-05-22 17:23:47 | [diff] [blame] | 115 | "browser/test_runtime_api_delegate.cc", |
| 116 | "browser/test_runtime_api_delegate.h", |
Devlin Cronin | 564fee7 | 2024-08-14 23:41:10 | [diff] [blame] | 117 | "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", |
Elly | da0cead3 | 2025-07-02 19:03:22 | [diff] [blame] | 170 | "//crypto:test_support", |
Devlin Cronin | 564fee7 | 2024-08-14 23:41:10 | [diff] [blame] | 171 | "//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 Cronin | 564fee7 | 2024-08-14 23:41:10 | [diff] [blame] | 205 | # 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 Bertoni | 5691b7c | 2024-10-29 23:02:38 | [diff] [blame] | 208 | if (is_chromeos) { |
Devlin Cronin | 564fee7 | 2024-08-14 23:41:10 | [diff] [blame] | 209 | deps += [ "//chromeos/ash/components/login/login_state" ] |
| 210 | } |
| 211 | |
Devlin Cronin | 564fee7 | 2024-08-14 23:41:10 | [diff] [blame] | 212 | public_deps = [ "//content/public/browser" ] |
Claudio DeSouza | fe4cc28 | 2025-07-17 14:03:38 | [diff] [blame] | 213 | |
| 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 Cronin | 564fee7 | 2024-08-14 23:41:10 | [diff] [blame] | 217 | } |
| 218 | |
Jenny Zhang | d890b3e | 2024-09-11 17:29:37 | [diff] [blame] | 219 | repack("shell_and_test_pak") { |
| 220 | testonly = true |
Devlin Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame] | 221 | |
Jenny Zhang | d890b3e | 2024-09-11 17:29:37 | [diff] [blame] | 222 | 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", |
Yichen | 29b71757 | 2025-07-25 13:29:01 | [diff] [blame] | 233 | "$root_gen_dir/ui/resources/ui_lottie_resources.pak", |
Jenny Zhang | d890b3e | 2024-09-11 17:29:37 | [diff] [blame] | 234 | "$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 Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame] | 258 | "$root_gen_dir/content/browser/devtools/devtools_resources.pak", |
Devlin Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame] | 259 | "$root_gen_dir/device/bluetooth/strings/bluetooth_strings_en-US.pak", |
Devlin Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame] | 260 | "$root_gen_dir/extensions/shell/app_shell_resources.pak", |
Devlin Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame] | 261 | ] |
| 262 | |
Jenny Zhang | d890b3e | 2024-09-11 17:29:37 | [diff] [blame] | 263 | deps += [ |
Devlin Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame] | 264 | "//content/browser/devtools:devtools_resources", |
Devlin Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame] | 265 | "//device/bluetooth/strings", |
| 266 | "//extensions/shell:resources", |
Jenny Zhang | d890b3e | 2024-09-11 17:29:37 | [diff] [blame] | 267 | ] |
| 268 | } |
| 269 | } |
| 270 | |
| 271 | test("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 Zhang | f745400 | 2024-09-19 21:43:50 | [diff] [blame] | 294 | "//extensions/browser:unit_tests", |
Jenny Zhang | d890b3e | 2024-09-11 17:29:37 | [diff] [blame] | 295 | "//extensions/common", |
| 296 | "//extensions/common:unit_tests", |
Jenny Zhang | a215923b | 2024-09-12 17:12:41 | [diff] [blame] | 297 | "//extensions/renderer:unit_tests", |
Jenny Zhang | d890b3e | 2024-09-11 17:29:37 | [diff] [blame] | 298 | "//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 Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame] | 311 | ] |
| 312 | } |
| 313 | |
Jenny Zhang | d890b3e | 2024-09-11 17:29:37 | [diff] [blame] | 314 | if (is_android) { |
| 315 | deps += [ |
Jenny Zhang | f745400 | 2024-09-19 21:43:50 | [diff] [blame] | 316 | "//content/public/android:content_full_java", |
Jenny Zhang | d890b3e | 2024-09-11 17:29:37 | [diff] [blame] | 317 | "//gin:v8_snapshot_assets", |
| 318 | "//services/data_decoder/public/cpp/android:safe_json_java", |
| 319 | "//ui/android:ui_full_java", |
Devlin Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame] | 320 | ] |
Jenny Zhang | d890b3e | 2024-09-11 17:29:37 | [diff] [blame] | 321 | } |
Devlin Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame] | 322 | |
Jenny Zhang | d890b3e | 2024-09-11 17:29:37 | [diff] [blame] | 323 | # TODO(https://crbug.com/356905053): Gradually include more of these sources |
| 324 | # in the desktop-android build. |
| 325 | if (enable_extensions) { |
Jenny Zhang | f745400 | 2024-09-19 21:43:50 | [diff] [blame] | 326 | deps += [ "//extensions/shell:unit_tests" ] |
Devlin Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame] | 327 | } |
Jenny Zhang | d890b3e | 2024-09-11 17:29:37 | [diff] [blame] | 328 | } |
Devlin Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame] | 329 | |
Jenny Zhang | d890b3e | 2024-09-11 17:29:37 | [diff] [blame] | 330 | if (enable_extensions) { |
| 331 | # Browser tests are not currently supported in desktop-android builds. |
Devlin Cronin | 204a657 | 2024-08-08 16:29:55 | [diff] [blame] | 332 | 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 | } |
brettw | 39355da | 2015-07-11 00:20:51 | [diff] [blame] | 350 | } |