BUILD.gn 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388
  1. # Use of this source code is governed by a BSD-style license that can be
  2. # found in the LICENSE file.
  3. import("//build/config/chromecast_build.gni")
  4. import("//build/config/chromeos/ui_mode.gni")
  5. import("//extensions/buildflags/buildflags.gni")
  6. import("//testing/test.gni")
  7. import("//tools/grit/grit_rule.gni")
  8. import("//tools/grit/repack.gni")
  9. import("//ui/base/ui_features.gni")
  10. assert(enable_extensions)
  11. assert(
  12. !(enable_autofill_assistant_api && is_official_build),
  13. "The AutofillAssistant Extension API must be disabled in official builds.")
  14. if (is_component_build) {
  15. component("extensions") {
  16. visibility = [
  17. "//extensions/common:common_constants",
  18. "//extensions/common:export",
  19. ]
  20. public_deps = [
  21. "//extensions/common:constants_impl",
  22. "//extensions/common:export_impl",
  23. ]
  24. }
  25. }
  26. # Used by targets that compile into the implementation.
  27. config("component_implementation") {
  28. defines = [ "EXTENSIONS_COMPONENT_IMPLEMENTATION" ]
  29. }
  30. group("extensions_resources") {
  31. public_deps = [
  32. ":extensions_browser_resources",
  33. ":extensions_renderer_resources",
  34. ":extensions_resources_grd",
  35. ]
  36. }
  37. grit("extensions_resources_grd") {
  38. source = "extensions_resources.grd"
  39. outputs = [
  40. "grit/extensions_resources.h",
  41. "extensions_resources.pak",
  42. ]
  43. }
  44. grit("extensions_browser_resources") {
  45. source = "browser/resources/extensions_browser_resources.grd"
  46. outputs = [
  47. "grit/extensions_browser_resources.h",
  48. "grit/extensions_browser_resources_map.cc",
  49. "grit/extensions_browser_resources_map.h",
  50. "extensions_browser_resources_100_percent.pak",
  51. "extensions_browser_resources_200_percent.pak",
  52. ]
  53. }
  54. grit("extensions_renderer_resources") {
  55. source = "renderer/resources/extensions_renderer_resources.grd"
  56. outputs = [
  57. "grit/extensions_renderer_resources.h",
  58. "extensions_renderer_resources.pak",
  59. ]
  60. grit_flags = [
  61. "-E",
  62. "mojom_root=" + rebase_path(root_gen_dir, root_build_dir),
  63. ]
  64. deps = [
  65. "//extensions/common:mojom_js",
  66. "//extensions/common/api:mojom_js",
  67. "//services/device/public/mojom:mojom_js",
  68. ]
  69. }
  70. static_library("test_support") {
  71. testonly = true
  72. sources = [
  73. "browser/api/declarative/test_rules_registry.cc",
  74. "browser/api/declarative/test_rules_registry.h",
  75. "browser/api/storage/settings_test_util.cc",
  76. "browser/api/storage/settings_test_util.h",
  77. "browser/api_test_utils.cc",
  78. "browser/api_test_utils.h",
  79. "browser/api_unittest.cc",
  80. "browser/api_unittest.h",
  81. "browser/app_window/test_app_window_contents.cc",
  82. "browser/app_window/test_app_window_contents.h",
  83. "browser/content_verifier/test_utils.cc",
  84. "browser/content_verifier/test_utils.h",
  85. "browser/extension_error_test_util.cc",
  86. "browser/extension_error_test_util.h",
  87. "browser/extensions_test.cc",
  88. "browser/extensions_test.h",
  89. "browser/guest_view/mime_handler_view/test_mime_handler_view_guest.cc",
  90. "browser/guest_view/mime_handler_view/test_mime_handler_view_guest.h",
  91. "browser/mock_extension_system.cc",
  92. "browser/mock_extension_system.h",
  93. "browser/mock_external_provider.cc",
  94. "browser/mock_external_provider.h",
  95. "browser/scoped_ignore_content_verifier_for_test.cc",
  96. "browser/scoped_ignore_content_verifier_for_test.h",
  97. "browser/test_event_router.cc",
  98. "browser/test_event_router.h",
  99. "browser/test_extension_registry_observer.cc",
  100. "browser/test_extension_registry_observer.h",
  101. "browser/test_extensions_browser_client.cc",
  102. "browser/test_extensions_browser_client.h",
  103. "browser/test_image_loader.cc",
  104. "browser/test_image_loader.h",
  105. "browser/test_management_policy.cc",
  106. "browser/test_management_policy.h",
  107. "browser/test_runtime_api_delegate.cc",
  108. "browser/test_runtime_api_delegate.h",
  109. "common/extension_builder.cc",
  110. "common/extension_builder.h",
  111. "common/manifest_test.cc",
  112. "common/manifest_test.h",
  113. "common/permissions/mock_manifest_permission.cc",
  114. "common/permissions/mock_manifest_permission.h",
  115. "common/permissions/permission_message_test_util.cc",
  116. "common/permissions/permission_message_test_util.h",
  117. "common/scoped_testing_manifest_handler_registry.cc",
  118. "common/scoped_testing_manifest_handler_registry.h",
  119. "renderer/test_extensions_renderer_client.cc",
  120. "renderer/test_extensions_renderer_client.h",
  121. "test/extension_background_page_waiter.cc",
  122. "test/extension_background_page_waiter.h",
  123. "test/extension_state_tester.cc",
  124. "test/extension_state_tester.h",
  125. "test/extension_test_message_listener.cc",
  126. "test/extension_test_message_listener.h",
  127. "test/extension_test_notification_observer.cc",
  128. "test/extension_test_notification_observer.h",
  129. "test/logging_timer.cc",
  130. "test/logging_timer.h",
  131. "test/permissions_manager_waiter.cc",
  132. "test/permissions_manager_waiter.h",
  133. "test/result_catcher.cc",
  134. "test/result_catcher.h",
  135. "test/test_content_script_load_waiter.cc",
  136. "test/test_content_script_load_waiter.h",
  137. "test/test_extension_dir.cc",
  138. "test/test_extension_dir.h",
  139. "test/test_extensions_client.cc",
  140. "test/test_extensions_client.h",
  141. "test/test_permission_message_provider.cc",
  142. "test/test_permission_message_provider.h",
  143. ]
  144. deps = [
  145. ":extensions_resources",
  146. "//base",
  147. "//build:chromeos_buildflags",
  148. "//chrome/common:buildflags",
  149. "//components/crx_file",
  150. "//components/guest_view/browser:test_support",
  151. "//components/keyed_service/content",
  152. "//components/pref_registry",
  153. "//components/prefs:test_support",
  154. "//components/sync_preferences:test_support",
  155. "//components/update_client",
  156. "//components/user_prefs",
  157. "//content/public/common",
  158. "//content/test:test_support",
  159. "//extensions/browser",
  160. "//extensions/browser:test_support",
  161. "//extensions/browser/api",
  162. "//extensions/browser/updater",
  163. "//extensions/common",
  164. "//extensions/common:core_api_provider",
  165. "//extensions/common/api",
  166. "//extensions/common/api:extensions_features",
  167. "//extensions/renderer",
  168. "//net:test_support",
  169. "//services/network/public/mojom",
  170. "//testing/gmock",
  171. "//testing/gtest",
  172. "//third_party/cld_3/src/src:cld_3",
  173. "//third_party/zlib/google:zip",
  174. ]
  175. # Generally, //extensions should not depend on //chromeos. However, a number
  176. # of the APIs and the extensions shell already do. We should try to avoid
  177. # expanding these dependencies.
  178. if (is_chromeos_ash) {
  179. deps += [ "//chromeos/login/login_state" ]
  180. }
  181. if (is_chromeos_lacros) {
  182. deps += [ "//chromeos/lacros:test_support" ]
  183. }
  184. public_deps = [ "//content/public/browser" ]
  185. }
  186. repack("shell_and_test_pak") {
  187. testonly = true
  188. sources = [
  189. "$root_gen_dir/content/browser/devtools/devtools_resources.pak",
  190. "$root_gen_dir/content/content_resources.pak",
  191. "$root_gen_dir/content/dev_ui_content_resources.pak",
  192. "$root_gen_dir/content/shell/shell_resources.pak",
  193. "$root_gen_dir/device/bluetooth/strings/bluetooth_strings_en-US.pak",
  194. "$root_gen_dir/extensions/extensions_browser_resources_100_percent.pak",
  195. "$root_gen_dir/extensions/extensions_renderer_resources.pak",
  196. "$root_gen_dir/extensions/extensions_resources.pak",
  197. "$root_gen_dir/extensions/shell/app_shell_resources.pak",
  198. "$root_gen_dir/extensions/strings/extensions_strings_en-US.pak",
  199. "$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak",
  200. "$root_gen_dir/third_party/blink/public/resources/blink_resources.pak",
  201. "$root_gen_dir/third_party/blink/public/resources/blink_scaled_resources_100_percent.pak",
  202. "$root_gen_dir/third_party/blink/public/strings/blink_strings_en-US.pak",
  203. "$root_gen_dir/ui/resources/ui_resources_100_percent.pak",
  204. "$root_gen_dir/ui/strings/app_locale_settings_en-US.pak",
  205. "$root_gen_dir/ui/strings/ax_strings_en-US.pak",
  206. "$root_gen_dir/ui/strings/ui_strings_en-US.pak",
  207. ]
  208. output = "$root_out_dir/extensions_shell_and_test.pak"
  209. deps = [
  210. ":extensions_resources",
  211. "//content:content_resources",
  212. "//content:dev_ui_content_resources",
  213. "//content/browser/devtools:devtools_resources",
  214. "//content/shell:resources",
  215. "//device/bluetooth/strings",
  216. "//extensions/shell:resources",
  217. "//extensions/strings",
  218. "//mojo/public/js:resources",
  219. "//third_party/blink/public:resources",
  220. "//third_party/blink/public:scaled_resources_100_percent",
  221. "//third_party/blink/public/strings",
  222. "//ui/resources",
  223. "//ui/strings",
  224. ]
  225. }
  226. test("extensions_unittests") {
  227. use_xvfb = use_xvfb_in_this_config
  228. sources = [
  229. "test/extensions_unittests_main.cc",
  230. "test/logging_timer_unittest.cc",
  231. ]
  232. data = [
  233. "test/data/",
  234. "//chrome/test/data/extensions/",
  235. "//components/test/data/cast_certificate/",
  236. "$root_out_dir/content_shell.pak",
  237. "$root_out_dir/extensions_shell_and_test.pak",
  238. ]
  239. deps = [
  240. ":extensions_resources",
  241. ":shell_and_test_pak",
  242. ":test_support",
  243. "//base/test:test_support",
  244. "//content/public/common",
  245. "//content/test:test_support",
  246. "//extensions/browser:unit_tests",
  247. "//extensions/common",
  248. "//extensions/common:unit_tests",
  249. "//extensions/renderer:unit_tests",
  250. "//extensions/shell:unit_tests",
  251. "//services/data_decoder/public/cpp:test_support",
  252. "//services/service_manager/public/cpp/test:test_support",
  253. "//ui/gl:test_support",
  254. ]
  255. data_deps = [
  256. "//testing/buildbot/filters:extensions_unittests_filters",
  257. "//third_party/mesa_headers",
  258. ]
  259. if (is_fuchsia) {
  260. use_cfv1 = false
  261. # TODO(https://crbug.com/1185811): Investigate removing the requirement for
  262. # job_policy_ambient_mark_vmo_exec for the sake of V8's allocator in tests.
  263. test_runner_shard = "//build/config/fuchsia/test/elf_test_ambient_exec_runner.shard.test-cml"
  264. additional_manifest_fragments = [
  265. "//build/config/fuchsia/test/network.shard.test-cml",
  266. "//third_party/fuchsia-sdk/sdk/pkg/vulkan/client.shard.cml",
  267. ]
  268. }
  269. }
  270. test("extensions_browsertests") {
  271. use_xvfb = use_xvfb_in_this_config
  272. data = [
  273. "//extensions/test/data/",
  274. "//net/tools/testserver/",
  275. "//third_party/pywebsocket3/src/mod_pywebsocket/",
  276. "$root_out_dir/extensions_shell_and_test.pak",
  277. ]
  278. deps = [
  279. "//extensions/browser:browser_tests",
  280. "//extensions/renderer:browser_tests",
  281. "//extensions/shell:browser_tests",
  282. ]
  283. data_deps = [ "//third_party/mesa_headers" ]
  284. }
  285. # TODO(rockot) bug 505926: These should be moved to extensions_browsertests but have
  286. # old dependencies on chrome files. The chrome dependencies should be removed
  287. # and these moved to the extensions_browsertests target. Currently, we solve
  288. # the problem by making this a source set and linking it into
  289. # //chrome/test:browser_tests.
  290. source_set("chrome_extensions_browsertests_sources") {
  291. testonly = true
  292. sources = [
  293. "browser/api/app_window/app_window_apitest.cc",
  294. "browser/api/bluetooth/bluetooth_apitest.cc",
  295. "browser/api/bluetooth/bluetooth_private_apitest.cc",
  296. "browser/api/serial/serial_apitest.cc",
  297. "browser/api/usb/usb_manual_apitest.cc",
  298. "browser/app_window/app_window_browsertest.cc",
  299. ]
  300. defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
  301. # These are the deps from browser_tests minus some internal Chrome ones that
  302. # aren't allowed to be included here and that aren't needed.
  303. deps = [
  304. "//base",
  305. "//base:i18n",
  306. "//base/test:test_support",
  307. "//build:chromeos_buildflags",
  308. "//chrome/browser",
  309. "//chrome/common/extensions/api",
  310. "//chrome/renderer",
  311. "//chrome/test:test_support",
  312. "//components/autofill/content/browser:risk_proto",
  313. "//components/autofill/content/renderer:test_support",
  314. "//components/captive_portal/core:test_support",
  315. "//components/dom_distiller/content/browser",
  316. "//components/dom_distiller/core:test_support",
  317. "//components/guest_view/browser:test_support",
  318. "//components/javascript_dialogs",
  319. "//components/resources",
  320. "//components/strings",
  321. "//components/sync",
  322. "//components/sync:test_support",
  323. "//components/translate/core/common",
  324. "//crypto:test_support",
  325. "//device/bluetooth:mocks",
  326. "//extensions/browser/api/bluetooth",
  327. "//extensions/common/api",
  328. "//extensions/renderer",
  329. "//google_apis:test_support",
  330. "//media:test_support",
  331. "//net",
  332. "//net:test_support",
  333. "//skia",
  334. "//testing/gmock",
  335. "//testing/gtest",
  336. "//testing/perf",
  337. "//third_party/blink/public:blink",
  338. "//third_party/icu",
  339. "//third_party/leveldatabase",
  340. "//third_party/libaddressinput",
  341. "//third_party/webrtc_overrides:webrtc_component",
  342. "//third_party/widevine/cdm:headers",
  343. "//ui/accessibility:test_support",
  344. "//ui/base:test_support",
  345. "//ui/compositor:test_support",
  346. "//ui/resources",
  347. "//ui/web_dialogs:test_support",
  348. "//v8",
  349. ]
  350. if (is_chromeos_ash) {
  351. deps += [ "//components/user_manager:test_support" ]
  352. }
  353. }