BUILD.gn 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. # Copyright 2019 The Chromium Authors. All rights reserved.
  2. # Use of this source code is governed by a BSD-style license that can be
  3. # found in the LICENSE file.
  4. import("//build/config/features.gni")
  5. import("//build/config/ui.gni")
  6. import("//testing/test.gni")
  7. import("//tools/grit/grit_rule.gni")
  8. import("//tools/v8_context_snapshot/v8_context_snapshot.gni")
  9. import("//weblayer/variables.gni")
  10. if (is_android) {
  11. import("//build/config/android/rules.gni")
  12. import("//components/safe_browsing/buildflags.gni")
  13. weblayer_browsertests_manifest =
  14. "${target_gen_dir}/weblayer_browsertests_manifest/AndroidManifest.xml"
  15. jinja_template("weblayer_browsertests_manifest") {
  16. testonly = true
  17. input = "//weblayer/shell/android/browsertests_apk/AndroidManifest.xml"
  18. output = weblayer_browsertests_manifest
  19. }
  20. android_library("weblayer_browsertests_java") {
  21. testonly = true
  22. sources = [
  23. "../shell/android/browsertests_apk/src/org/chromium/weblayer_browsertests_apk/WebLayerBrowserTestsActivity.java",
  24. "../shell/android/browsertests_apk/src/org/chromium/weblayer_browsertests_apk/WebLayerBrowserTestsApplication.java",
  25. "../shell/android/browsertests_apk/src/org/chromium/weblayer_private/AccessTokenFetchTestBridge.java",
  26. "../shell/android/browsertests_apk/src/org/chromium/weblayer_private/GoogleAccountAccessTokenFetcherTestStub.java",
  27. "../shell/android/browsertests_apk/src/org/chromium/weblayer_private/MetricsTestHelper.java",
  28. "../shell/android/browsertests_apk/src/org/chromium/weblayer_private/TranslateTestBridge.java",
  29. ]
  30. deps = [
  31. ":weblayer_browsertests_jni",
  32. ":weblayer_browsertests_manifest",
  33. "//base:base_java",
  34. "//base:base_java_test_support",
  35. "//base:jni_java",
  36. "//build/android:build_java",
  37. "//components/embedder_support/android:application_java",
  38. "//components/safe_browsing/android:safe_browsing_java",
  39. "//components/translate/content/android:java",
  40. "//content/public/android:content_java",
  41. "//content/public/test/android:content_java_test_support",
  42. "//testing/android/native_test:native_test_java",
  43. "//third_party/androidx:androidx_annotation_annotation_java",
  44. "//third_party/androidx:androidx_fragment_fragment_java",
  45. "//ui/android:ui_java",
  46. "//weblayer/browser/java",
  47. "//weblayer/browser/java:base_module_interfaces_java",
  48. "//weblayer/browser/java:gms_bridge_java",
  49. "//weblayer/browser/java:interfaces_java",
  50. "//weblayer/public/java",
  51. "//weblayer/public/javatestutil:test_java",
  52. ]
  53. srcjar_deps = [ ":generated_enums" ]
  54. annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
  55. }
  56. generate_jni("weblayer_browsertests_jni") {
  57. sources = [
  58. "../shell/android/browsertests_apk/src/org/chromium/weblayer_private/AccessTokenFetchTestBridge.java",
  59. "../shell/android/browsertests_apk/src/org/chromium/weblayer_private/GoogleAccountAccessTokenFetcherTestStub.java",
  60. "../shell/android/browsertests_apk/src/org/chromium/weblayer_private/MetricsTestHelper.java",
  61. "../shell/android/browsertests_apk/src/org/chromium/weblayer_private/TranslateTestBridge.java",
  62. ]
  63. }
  64. android_assets("weblayer_test_assets") {
  65. testonly = true
  66. disable_compression = true
  67. deps = [ "//third_party/icu:icu_assets" ]
  68. if (use_v8_context_snapshot) {
  69. deps += [ "//tools/v8_context_snapshot:v8_context_snapshot_assets" ]
  70. } else {
  71. deps += [ "//v8:v8_external_startup_data_assets" ]
  72. }
  73. }
  74. java_cpp_enum("generated_enums") {
  75. sources = [ "//weblayer/browser/android/metrics/metrics_test_helper.h" ]
  76. }
  77. }
  78. test("weblayer_browsertests") {
  79. use_xvfb = use_xvfb_in_this_config
  80. data = [
  81. "$root_out_dir/weblayer_shell.pak",
  82. "data/",
  83. "//components/test/data",
  84. "//net/tools/testserver/",
  85. "//third_party/pywebsocket3/src/mod_pywebsocket/",
  86. ]
  87. data_deps = [
  88. "//third_party/mesa_headers",
  89. "//weblayer/shell:pak",
  90. ]
  91. defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
  92. deps = [
  93. "//base",
  94. "//base/test:test_support",
  95. "//components/autofill/core/browser",
  96. "//components/autofill/core/common",
  97. "//components/background_sync",
  98. "//components/blocked_content",
  99. "//components/content_settings/core/browser",
  100. "//components/embedder_support",
  101. "//components/error_page/content/browser",
  102. "//components/favicon/content",
  103. "//components/heavy_ad_intervention",
  104. "//components/infobars/content",
  105. "//components/language/core/browser",
  106. "//components/network_session_configurator/common",
  107. "//components/network_time",
  108. "//components/no_state_prefetch/browser",
  109. "//components/page_load_metrics/browser:browser",
  110. "//components/page_load_metrics/browser:test_support",
  111. "//components/page_load_metrics/browser/observers/ad_metrics",
  112. "//components/page_load_metrics/browser/observers/ad_metrics:test_support",
  113. "//components/permissions",
  114. "//components/permissions:test_support",
  115. "//components/prefs",
  116. "//components/reduce_accept_language/browser:browser",
  117. "//components/reduce_accept_language/browser:test_support",
  118. "//components/security_interstitials/content:security_interstitial_page",
  119. "//components/sessions:test_support",
  120. "//components/signin/core/browser",
  121. "//components/site_isolation",
  122. "//components/strings",
  123. "//components/subresource_filter/content/browser",
  124. "//components/subresource_filter/content/browser:test_support",
  125. "//components/subresource_filter/core/browser",
  126. "//components/subresource_filter/core/common",
  127. "//components/subresource_filter/core/common:test_support",
  128. "//components/translate/content/browser",
  129. "//components/translate/content/browser:test_support",
  130. "//components/ukm:test_support",
  131. "//components/ukm:ukm_test_helper",
  132. "//components/url_pattern_index/proto:url_pattern_index",
  133. "//components/user_prefs",
  134. "//components/variations",
  135. "//components/variations/net",
  136. "//content/public/browser",
  137. "//content/test:test_support",
  138. "//google_apis",
  139. "//net:test_support",
  140. "//testing/gtest",
  141. "//ui/base",
  142. "//ui/display",
  143. "//ui/gfx:test_support",
  144. "//weblayer:resources",
  145. "//weblayer/shell:weblayer_shell_lib",
  146. ]
  147. sources = [
  148. "../browser/ad_tagging_browsertest.cc",
  149. "../browser/ads_page_load_metrics_observer_browsertest.cc",
  150. "../browser/background_sync/background_sync_browsertest.cc",
  151. "../browser/client_hints_browsertest.cc",
  152. "../browser/clipboard_browsertest.cc",
  153. "../browser/content_settings_browsertest.cc",
  154. "../browser/cookie_manager_browsertest.cc",
  155. "../browser/download_browsertest.cc",
  156. "../browser/errorpage_browsertest.cc",
  157. "../browser/favicon/favicon_fetcher_browsertest.cc",
  158. "../browser/favicon/test_favicon_fetcher_delegate.cc",
  159. "../browser/favicon/test_favicon_fetcher_delegate.h",
  160. "../browser/fullscreen_browsertest.cc",
  161. "../browser/google_accounts_browsertest.cc",
  162. "../browser/js_communication/web_message_browsertest.cc",
  163. "../browser/large_sticky_ad_intervention_browsertest.cc",
  164. "../browser/navigation_browsertest.cc",
  165. "../browser/navigation_error_navigation_throttle_browsertest.cc",
  166. "../browser/new_tab_delegate_browsertest.cc",
  167. "../browser/no_state_prefetch/no_state_prefetch_browsertest.cc",
  168. "../browser/overlay_popup_ad_intervention_browsertest.cc",
  169. "../browser/page_load_metrics_browsertest.cc",
  170. "../browser/permissions/permissions_browsertest.cc",
  171. "../browser/popup_blocker_browsertest.cc",
  172. "../browser/prefetch_browsertest.cc",
  173. "../browser/profile_browsertest.cc",
  174. "../browser/reduce_accept_language_service_browsertest.cc",
  175. "../browser/site_isolation_browsertest.cc",
  176. "../browser/ssl_browsertest.cc",
  177. "../browser/subresource_filter_browsertest.cc",
  178. "../browser/translate_browsertest.cc",
  179. "../browser/url_bar/url_bar_browsertest.cc",
  180. "../browser/weblayer_variations_http_browsertest.cc",
  181. "../browser/webui/webui_browsertest.cc",
  182. "browsertests_main.cc",
  183. "interstitial_utils.cc",
  184. "interstitial_utils.h",
  185. "load_completion_observer.cc",
  186. "load_completion_observer.h",
  187. "subresource_filter_browser_test_harness.cc",
  188. "subresource_filter_browser_test_harness.h",
  189. "test_launcher_delegate_impl.cc",
  190. "test_launcher_delegate_impl.h",
  191. "test_navigation_observer.cc",
  192. "test_navigation_observer.h",
  193. "weblayer_browser_test.cc",
  194. "weblayer_browser_test.h",
  195. "weblayer_browser_test_test.cc",
  196. "weblayer_browser_test_utils.cc",
  197. "weblayer_browser_test_utils.h",
  198. ]
  199. if (is_android) {
  200. sources += [
  201. "../browser/android/access_token_fetch_browsertest.cc",
  202. "../browser/android/ad_density_intervention_browsertest.cc",
  203. "../browser/android/metrics/metrics_browsertest.cc",
  204. "../browser/android/metrics/metrics_test_helper.cc",
  205. "../browser/android/metrics/metrics_test_helper.h",
  206. "../browser/android/metrics/ukm_browsertest.cc",
  207. "../browser/autofill_browsertest.cc",
  208. "../browser/browser_controls_navigation_state_handler_browsertest.cc",
  209. "../browser/safe_browsing/client_side_detection_service_browsertest.cc",
  210. "../browser/safe_browsing/client_side_detection_service_factory_browsertest.cc",
  211. "../browser/safe_browsing/safe_browsing_browsertest.cc",
  212. "../browser/safe_browsing/weblayer_ping_manager_browsertest.cc",
  213. "../browser/url_bar/page_info_browsertest.cc",
  214. "../browser/webapps/webapk_install_scheduler_browsertest.cc",
  215. "../shell/android/browsertests_apk/translate_test_bridge.cc",
  216. "../shell/android/browsertests_apk/translate_test_bridge.h",
  217. "../shell/android/browsertests_apk/weblayer_browser_tests_jni_onload.cc",
  218. "stub_autofill_provider.cc",
  219. "stub_autofill_provider.h",
  220. ]
  221. deps += [
  222. ":weblayer_browsertests_java",
  223. ":weblayer_browsertests_jni",
  224. ":weblayer_test_assets",
  225. "//android_webview:locale_pak_assets",
  226. "//android_webview:pak_file_assets",
  227. "//components/android_autofill/browser:test_support",
  228. "//components/infobars/core",
  229. "//components/metrics",
  230. "//components/page_info",
  231. "//components/page_info/android",
  232. "//components/safe_browsing/android:safe_browsing_api_handler",
  233. "//components/safe_browsing/content/browser",
  234. "//components/safe_browsing/content/browser:client_side_detection",
  235. "//components/safe_browsing/content/browser/web_ui",
  236. "//components/safe_browsing/content/common:interfaces",
  237. "//components/safe_browsing/core/browser:token_fetcher",
  238. "//components/safe_browsing/core/browser:token_fetcher_testing_helper",
  239. "//components/safe_browsing/core/common",
  240. "//components/safe_browsing/core/common/proto:client_model_proto",
  241. "//components/viz/service:service_java",
  242. "//components/webapps/browser:browser",
  243. "//content/public/test/android:android_test_message_pump_support_java",
  244. "//content/test:android_test_message_pump_support",
  245. "//content/test:android_test_message_pump_support",
  246. "//services/metrics/public/cpp:ukm_builders",
  247. "//services/network:test_support",
  248. "//services/tracing:test_utils",
  249. "//testing/android/native_test:native_test_support",
  250. "//third_party/metrics_proto",
  251. "//ui/android:android",
  252. "//ui/touch_selection:touch_selection",
  253. "//weblayer:locale_pak_assets",
  254. # Needed for WebLayerImpl.
  255. "//weblayer/browser/java",
  256. # default upstream classes
  257. "//weblayer/browser/java:upstream_java",
  258. ]
  259. # Necessary to avoid GN errors in Cast builds, where this target isn't defined.
  260. if (safe_browsing_mode > 0) {
  261. deps += [ "//components/safe_browsing/content/browser:safe_browsing_blocking_page" ]
  262. }
  263. android_manifest =
  264. "${target_gen_dir}/weblayer_browsertests_manifest/AndroidManifest.xml"
  265. android_manifest_dep = ":weblayer_browsertests_manifest"
  266. use_default_launcher = false
  267. app_as_shared_lib = true
  268. product_config_java_packages = [ weblayer_product_config_java_package ]
  269. } else {
  270. sources += [
  271. # These tests create Browser objects from C++, which the Java side is not
  272. # setup for. Persistence related tests for Java will be done as
  273. # integration tests.
  274. "../browser/persistence/browser_persister_browsertest.cc",
  275. "../browser/persistence/minimal_browser_persister_browsertest.cc",
  276. ]
  277. deps += [ "//components/keep_alive_registry" ]
  278. }
  279. }
  280. source_set("run_all_unittests") {
  281. testonly = true
  282. sources = [ "run_all_unittests.cc" ]
  283. public_deps = [
  284. "//base/test:test_support",
  285. "//content/test:test_support",
  286. "//weblayer:weblayer_lib_base",
  287. ]
  288. }
  289. test("weblayer_unittests") {
  290. deps = [
  291. ":run_all_unittests",
  292. "//components/favicon/core:database",
  293. "//components/site_isolation",
  294. "//google_apis",
  295. ]
  296. sources = [
  297. "../browser/favicon/favicon_backend_wrapper_unittest.cc",
  298. "../browser/profile_disk_operations_unittests.cc",
  299. "../browser/site_isolation_policy_unittest.cc",
  300. ]
  301. if (is_android) {
  302. deps += [
  303. ":weblayer_test_assets",
  304. "//ui/android:ui_full_java",
  305. ]
  306. sources += [
  307. "../browser/safe_browsing/safe_browsing_token_fetcher_impl_unittest.cc",
  308. ]
  309. }
  310. }