1# Copyright 2015 The Chromium Authors 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5import("//build/android/resource_sizes.gni") 6import("//build/buildflag_header.gni") 7import("//build/config/android/config.gni") 8import("//build/config/android/rules.gni") 9import("//build/config/cronet/config.gni") 10import("//build/config/zip.gni") 11import("//build/util/lastchange.gni") 12import("//build/util/process_version.gni") 13import("//chrome/version.gni") 14import("//components/cronet/native/include/headers.gni") 15import("//components/grpc_support/include/headers.gni") 16import("//testing/test.gni") 17import("//third_party/jni_zero/jni_zero.gni") 18import("//third_party/netty4/netty4.gni") 19import("//third_party/protobuf/proto_library.gni") 20import("//tools/binary_size/sizes.gni") 21import("//url/features.gni") 22 23_templates_dir = "$target_gen_dir/templates" 24_gn_path = "//buildtools/linux64/gn" 25 26assert(!is_component_build) 27assert(is_cronet_build) 28 29generate_jni("cronet_jni_headers") { 30 sources = [ 31 "java/src/org/chromium/net/impl/CronetBidirectionalStream.java", 32 "java/src/org/chromium/net/impl/CronetLibraryLoader.java", 33 "java/src/org/chromium/net/impl/CronetUploadDataStream.java", 34 "java/src/org/chromium/net/impl/CronetUrlRequest.java", 35 "java/src/org/chromium/net/impl/CronetUrlRequestContext.java", 36 ] 37} 38 39generate_jni_registration("cronet_jni_registration") { 40 java_targets = [ ":cronet_impl_native_java" ] 41 manual_jni_registration = true 42 43 # JNI generated is used for test and non-test apks. 44 include_testonly = true 45 46 _subdir = rebase_path(target_gen_dir, root_gen_dir) 47 cpp_codegen_output = 48 "$jni_headers_dir/$_subdir/cronet_jni_registration_generated.h" 49} 50 51android_library("cronet_jni_registration_java") { 52 srcjar_deps = [ ":cronet_jni_registration" ] 53} 54 55java_cpp_enum("rtt_throughput_values_java") { 56 sources = [ "//net/nqe/network_quality.h" ] 57} 58 59java_cpp_enum("net_request_priority_java") { 60 sources = [ "//net/base/request_priority.h" ] 61} 62 63java_cpp_enum("net_idempotency_java") { 64 sources = [ "//net/base/idempotency.h" ] 65} 66 67java_cpp_enum("network_quality_observation_source_java") { 68 sources = [ "//net/nqe/network_quality_observation_source.h" ] 69} 70 71java_cpp_enum("url_request_error_java") { 72 sources = [ "url_request_error.h" ] 73} 74 75java_cpp_enum("http_cache_type_java") { 76 sources = [ "//components/cronet/url_request_context_config.h" ] 77} 78 79java_cpp_template("load_states_list") { 80 sources = [ "java/src/org/chromium/net/impl/LoadState.template" ] 81 inputs = [ "//net/base/load_states_list.h" ] 82} 83 84_api_level = read_file("api_version.txt", "value") 85 86_generated_api_version_java = "$_templates_dir/org/chromium/net/ApiVersion.java" 87 88process_version("api_version") { 89 process_only = true 90 template_file = "api/src/org/chromium/net/ApiVersion.template" 91 sources = [ 92 "//chrome/VERSION", 93 lastchange_file, 94 ] 95 extra_args = [ 96 "-e", 97 "API_LEVEL=$_api_level", 98 ] 99 output = _generated_api_version_java 100} 101 102_generated_impl_version_java = 103 "$_templates_dir/org/chromium/net/impl/ImplVersion.java" 104 105process_version("impl_version") { 106 process_only = true 107 template_file = "java/src/org/chromium/net/impl/ImplVersion.template" 108 sources = [ 109 "//chrome/VERSION", 110 lastchange_file, 111 ] 112 extra_args = [ 113 "-e", 114 "API_LEVEL=$_api_level", 115 ] 116 output = _generated_impl_version_java 117} 118 119_cronet_version_header_include_dir = "$target_gen_dir/cronet_version_header" 120 121proto_library("base_feature_overrides_proto") { 122 sources = [ "proto/base_feature_overrides.proto" ] 123} 124 125proto_java_library("base_feature_overrides_java_proto") { 126 proto_path = "." 127 sources = [ "proto/base_feature_overrides.proto" ] 128} 129 130proto_java_library("flags_java_proto") { 131 proto_path = "." 132 sources = [ "proto/flags.proto" ] 133} 134 135proto_library("request_context_config_proto") { 136 sources = [ "proto/request_context_config.proto" ] 137} 138 139proto_java_library("request_context_config_java_proto") { 140 proto_path = "." 141 sources = [ "proto/request_context_config.proto" ] 142} 143 144static_library("cronet_base_feature") { 145 sources = [ 146 "cronet_base_feature.cc", 147 "cronet_base_feature.h", 148 ] 149 deps = [ 150 ":base_feature_overrides_proto", 151 "//base", 152 ] 153} 154 155static_library("cronet_base_feature_unittest") { 156 testonly = true 157 sources = [ "cronet_base_feature_unittest.cc" ] 158 deps = [ 159 ":base_feature_overrides_proto", 160 ":cronet_base_feature", 161 "//base/test:test_support", 162 "//testing/gtest", 163 ] 164} 165 166source_set("cronet_static") { 167 deps = [ 168 ":base_feature_overrides_proto", 169 ":cronet_base_feature", 170 ":cronet_jni_headers", 171 ":cronet_jni_registration", 172 ":request_context_config_proto", 173 "//base", 174 "//components/cronet:cronet_common", 175 "//components/cronet:cronet_version_header", 176 "//components/cronet:metrics_util", 177 "//components/prefs", 178 "//net", 179 "//third_party/zlib:zlib", 180 "//url", 181 "//url:buildflags", 182 ] 183 if (!is_cronet_for_aosp_build) { 184 deps += [ "//components/cronet/native:cronet_native_impl" ] 185 } 186 sources = [ 187 "//components/cronet/android/cronet_bidirectional_stream_adapter.cc", 188 "//components/cronet/android/cronet_bidirectional_stream_adapter.h", 189 "//components/cronet/android/cronet_context_adapter.cc", 190 "//components/cronet/android/cronet_context_adapter.h", 191 "//components/cronet/android/cronet_library_loader.cc", 192 "//components/cronet/android/cronet_library_loader.h", 193 "//components/cronet/android/cronet_upload_data_stream_adapter.cc", 194 "//components/cronet/android/cronet_upload_data_stream_adapter.h", 195 "//components/cronet/android/cronet_url_request_adapter.cc", 196 "//components/cronet/android/cronet_url_request_adapter.h", 197 "//components/cronet/android/io_buffer_with_byte_buffer.cc", 198 "//components/cronet/android/io_buffer_with_byte_buffer.h", 199 "//components/cronet/android/url_request_error.cc", 200 "//components/cronet/android/url_request_error.h", 201 ] 202 203 include_dirs = [ _cronet_version_header_include_dir ] 204 205 cflags = [ 206 "-DLOGGING=1", 207 "-Wno-sign-promo", 208 ] 209 210 libs = [ 211 "android", 212 "log", 213 ] 214 215 if (!use_platform_icu_alternatives) { 216 deps += [ "//base:i18n" ] 217 } 218} 219 220config("hide_all_but_jni_onload_and_cronet") { 221 ldflags = [ "-Wl,--version-script=" + 222 rebase_path("android_only_jni_onload_and_cronet_exports.lst", 223 root_out_dir) ] 224} 225 226_cronet_shared_lib_name = "cronet.$chrome_version_full" 227 228shared_library("cronet") { 229 output_name = _cronet_shared_lib_name 230 sources = [ "cronet_jni.cc" ] 231 deps = [ 232 ":cronet_static", 233 "//base", 234 "//net:net", 235 ] 236 configs -= [ "//build/config/android:hide_all_but_jni_onload" ] 237 configs += [ ":hide_all_but_jni_onload_and_cronet" ] 238} 239 240sizes_test("cronet_sizes") { 241 data_deps = [ ":cronet" ] 242 data = [ "${root_out_dir}/lib${_cronet_shared_lib_name}.so" ] 243 executable_args = [ 244 "--platform", 245 "android-cronet", 246 ] 247} 248 249cronet_shared_java_deps_to_package = [ ":cronet_stats_log_java" ] 250 251# Common Cronet code that is used in Cronet API *and* implementations. 252# 253# Note that this target should not be used to ship classes that define the 254# Cronet API/impl boundary, because API and impl code can end up linking against 255# separate copies of these classes at runtime (e.g. if Cronet is loaded from 256# Google Play Services), making it impossible for references to these classes to 257# cross the boundary. These classes should be shipped in `cronet_api_java` 258# instead. 259android_library("cronet_shared_java") { 260 sources = [ 261 "java/src/org/chromium/net/impl/CronetLogger.java", 262 "java/src/org/chromium/net/impl/CronetLoggerFactory.java", 263 "java/src/org/chromium/net/impl/CronetManifest.java", 264 "java/src/org/chromium/net/impl/NoOpLogger.java", 265 "java/src/org/chromium/net/telemetry/CronetLoggerImpl.java", 266 "java/src/org/chromium/net/telemetry/ExperimentalOptions.java", 267 "java/src/org/chromium/net/telemetry/Hash.java", 268 "java/src/org/chromium/net/telemetry/OptionalBoolean.java", 269 "java/src/org/chromium/net/telemetry/RateLimiter.java", 270 "java/src/org/chromium/net/telemetry/SizeBuckets.java", 271 ] 272 273 # Adding deps here won't include those deps in the cronet_shared_java.jar. 274 # Please add to cronet_shared_java_deps_to_package instead. 275 deps = [ "//third_party/androidx:androidx_annotation_annotation_java" ] + 276 cronet_shared_java_deps_to_package 277 278 proguard_configs = 279 [ "//components/cronet/android/cronet_shared_proguard.cfg" ] 280} 281 282# cronet_api_java.jar defines Cronet API. 283# 284# Note that, in some cases (specifically, the case where Cronet is loaded from 285# Google Play Services), the API classes are not bundled with the 286# implementation, and at runtime the impl classes may end up deriving from API 287# classes that are from a different build/version. This means you have to pay 288# attention to backward/forward Java ABI compatibility concerns. If you don't 289# want your class to be part of the Cronet API/impl boundary, ship your class in 290# `cronet_shared_java` instead. 291android_library("cronet_api_java") { 292 sources = [ 293 "api/src/org/chromium/net/BidirectionalStream.java", 294 "api/src/org/chromium/net/CallbackException.java", 295 "api/src/org/chromium/net/ConnectionMigrationOptions.java", 296 "api/src/org/chromium/net/CronetEngine.java", 297 "api/src/org/chromium/net/CronetException.java", 298 "api/src/org/chromium/net/CronetProvider.java", 299 "api/src/org/chromium/net/DnsOptions.java", 300 "api/src/org/chromium/net/ExperimentalBidirectionalStream.java", 301 "api/src/org/chromium/net/ExperimentalCronetEngine.java", 302 "api/src/org/chromium/net/ExperimentalOptionsTranslatingCronetEngineBuilder.java", 303 "api/src/org/chromium/net/ExperimentalUrlRequest.java", 304 "api/src/org/chromium/net/ICronetEngineBuilder.java", 305 "api/src/org/chromium/net/InlineExecutionProhibitedException.java", 306 "api/src/org/chromium/net/NetworkException.java", 307 "api/src/org/chromium/net/NetworkQualityRttListener.java", 308 "api/src/org/chromium/net/NetworkQualityThroughputListener.java", 309 "api/src/org/chromium/net/QuicException.java", 310 "api/src/org/chromium/net/QuicOptions.java", 311 "api/src/org/chromium/net/RequestFinishedInfo.java", 312 "api/src/org/chromium/net/UploadDataProvider.java", 313 "api/src/org/chromium/net/UploadDataSink.java", 314 "api/src/org/chromium/net/UrlRequest.java", 315 "api/src/org/chromium/net/UrlResponseInfo.java", 316 _generated_api_version_java, 317 ] 318 319 deps = [ 320 ":api_version", 321 ":cronet_shared_java", 322 "//third_party/androidx:androidx_annotation_annotation_experimental_java", 323 "//third_party/androidx:androidx_annotation_annotation_java", 324 ] 325} 326 327android_library("cronet_api_helpers_java") { 328 sources = [ 329 # This API file is a special case because it depends on methods that exists 330 # within the ApiHelper package. 331 "api/src/org/chromium/net/UploadDataProviders.java", 332 "api/src/org/chromium/net/apihelpers/ByteArrayCronetCallback.java", 333 "api/src/org/chromium/net/apihelpers/ContentTypeParametersParser.java", 334 "api/src/org/chromium/net/apihelpers/CronetRequestCompletionListener.java", 335 "api/src/org/chromium/net/apihelpers/CronetResponse.java", 336 "api/src/org/chromium/net/apihelpers/ImplicitFlowControlCallback.java", 337 "api/src/org/chromium/net/apihelpers/InMemoryTransformCronetCallback.java", 338 "api/src/org/chromium/net/apihelpers/JsonCronetCallback.java", 339 "api/src/org/chromium/net/apihelpers/RedirectHandler.java", 340 "api/src/org/chromium/net/apihelpers/RedirectHandlers.java", 341 "api/src/org/chromium/net/apihelpers/StringCronetCallback.java", 342 "api/src/org/chromium/net/apihelpers/UploadDataProviders.java", 343 "api/src/org/chromium/net/apihelpers/UrlRequestCallbacks.java", 344 ] 345 deps = [ 346 ":cronet_api_java", 347 "//third_party/androidx:androidx_annotation_annotation_java", 348 ] 349} 350 351# CronetStatsLog uses `android.util.StatsLog` which is not in the public SDK, 352# hence this separate target pointed at the system SDK. 353android_library("cronet_stats_log_java") { 354 sources = [ "java/src/org/chromium/net/telemetry/CronetStatsLog.java" ] 355 alternative_android_sdk_dep = 356 "//third_party/android_sdk:public_framework_system_java" 357 deps = [ "//third_party/androidx:androidx_annotation_annotation_java" ] 358} 359 360cronet_impl_common_java_srcjar_deps = [ 361 ":http_cache_type_java", 362 ":load_states_list", 363 ":rtt_throughput_values_java", 364 "//net:effective_connection_type_java", 365] 366 367cronet_impl_common_java_deps_to_package = 368 [ "//net/android:net_thread_stats_uid_java" ] 369 370# cronet_impl_common_java.jar - common Cronet code that is shared 371# by all Cronet engine implementations. 372android_library("cronet_impl_common_java") { 373 sources = [ 374 "java/src/org/chromium/net/impl/CallbackExceptionImpl.java", 375 "java/src/org/chromium/net/impl/CronetEngineBase.java", 376 "java/src/org/chromium/net/impl/CronetEngineBuilderImpl.java", 377 "java/src/org/chromium/net/impl/CronetExceptionImpl.java", 378 "java/src/org/chromium/net/impl/NetworkExceptionImpl.java", 379 "java/src/org/chromium/net/impl/Preconditions.java", 380 "java/src/org/chromium/net/impl/QuicExceptionImpl.java", 381 "java/src/org/chromium/net/impl/RefCountDelegate.java", 382 "java/src/org/chromium/net/impl/RequestFinishedInfoImpl.java", 383 "java/src/org/chromium/net/impl/UrlRequestBase.java", 384 "java/src/org/chromium/net/impl/UrlRequestBuilderImpl.java", 385 "java/src/org/chromium/net/impl/UrlResponseInfoImpl.java", 386 "java/src/org/chromium/net/impl/UserAgent.java", 387 "java/src/org/chromium/net/impl/VersionSafeCallbacks.java", 388 _generated_impl_version_java, 389 ] 390 391 # Adding deps here won't include those deps in the cronet_impl_common_java.jar. 392 # Please add to cronet_impl_common_java_deps_to_package instead. 393 deps = [ 394 ":cronet_api_java", 395 ":cronet_shared_java", 396 ":impl_version", 397 "//third_party/androidx:androidx_annotation_annotation_java", 398 ] 399 deps += cronet_impl_common_java_deps_to_package 400 401 srcjar_deps = cronet_impl_common_java_srcjar_deps 402 proguard_configs = [ "cronet_impl_common_proguard.cfg" ] 403} 404 405# cronet_impl_java_util_java.jar - Classes shared between Java Cronet implementations. 406android_library("cronet_impl_java_util_java") { 407 sources = [ 408 "java/src/org/chromium/net/impl/JavaUploadDataSinkBase.java", 409 "java/src/org/chromium/net/impl/JavaUrlRequestUtils.java", 410 ] 411 412 deps = [ 413 ":cronet_api_java", 414 ":cronet_impl_common_java", 415 "//third_party/androidx:androidx_annotation_annotation_java", 416 ] 417} 418 419# cronet_impl_platform_java.jar - Java platform based implementation of the Cronet engine. 420android_library("cronet_impl_platform_java") { 421 sources = [ 422 "java/src/org/chromium/net/impl/InputStreamChannel.java", 423 "java/src/org/chromium/net/impl/JavaCronetEngine.java", 424 "java/src/org/chromium/net/impl/JavaCronetEngineBuilderImpl.java", 425 "java/src/org/chromium/net/impl/JavaCronetProvider.java", 426 "java/src/org/chromium/net/impl/JavaUrlRequest.java", 427 ] 428 429 deps = [ 430 ":cronet_api_java", 431 ":cronet_impl_common_java", 432 ":cronet_impl_java_util_java", 433 ":cronet_shared_java", 434 "//net/android:net_thread_stats_uid_java", 435 "//third_party/android_deps:com_google_code_findbugs_jsr305_java", 436 "//third_party/androidx:androidx_annotation_annotation_java", 437 ] 438} 439 440# cronet_impl_fake_java.jar - Fake implementation of Cronet. 441android_library("cronet_impl_fake_java") { 442 sources = [ 443 "fake/java/org/chromium/net/test/FakeCronetController.java", 444 "fake/java/org/chromium/net/test/FakeCronetEngine.java", 445 "fake/java/org/chromium/net/test/FakeCronetProvider.java", 446 "fake/java/org/chromium/net/test/FakeRequestFinishedInfo.java", 447 "fake/java/org/chromium/net/test/FakeUrlRequest.java", 448 "fake/java/org/chromium/net/test/FakeUrlResponse.java", 449 "fake/java/org/chromium/net/test/ResponseMatcher.java", 450 "fake/java/org/chromium/net/test/UrlResponseMatcher.java", 451 ] 452 453 deps = [ 454 ":cronet_api_java", 455 ":cronet_impl_common_java", 456 ":cronet_impl_java_util_java", 457 ":cronet_shared_java", 458 "//third_party/androidx:androidx_annotation_annotation_java", 459 ] 460} 461 462android_library("cronet_urlconnection_impl_java") { 463 sources = [ 464 "java/src/org/chromium/net/urlconnection/CronetBufferedOutputStream.java", 465 "java/src/org/chromium/net/urlconnection/CronetChunkedOutputStream.java", 466 "java/src/org/chromium/net/urlconnection/CronetFixedModeOutputStream.java", 467 "java/src/org/chromium/net/urlconnection/CronetHttpURLConnection.java", 468 "java/src/org/chromium/net/urlconnection/CronetHttpURLStreamHandler.java", 469 "java/src/org/chromium/net/urlconnection/CronetInputStream.java", 470 "java/src/org/chromium/net/urlconnection/CronetOutputStream.java", 471 "java/src/org/chromium/net/urlconnection/CronetURLStreamHandlerFactory.java", 472 "java/src/org/chromium/net/urlconnection/MessageLoop.java", 473 ] 474 deps = [ 475 ":cronet_api_java", 476 "//third_party/androidx:androidx_annotation_annotation_java", 477 ] 478} 479 480cronet_impl_native_java_srcjar_deps = [ 481 ":net_idempotency_java", 482 ":net_request_priority_java", 483 ":network_quality_observation_source_java", 484 ":url_request_error_java", 485] 486 487cronet_impl_native_java_deps_to_package = [ 488 ":cronet_urlconnection_impl_java", 489 ":base_feature_overrides_java_proto", 490 ":flags_java_proto", 491 ":request_context_config_java_proto", 492 "//base:base_java", 493 "//third_party/jni_zero:jni_zero_java", 494 "//build/android:build_java", 495 "//net/android:net_java", 496 "//url:url_java", 497] 498 499# cronet_impl_native_java.jar - native implementation of the Cronet engine. 500android_library("cronet_impl_native_java") { 501 sources = [ 502 "java/src/org/chromium/net/httpflags/BaseFeature.java", 503 "java/src/org/chromium/net/httpflags/HttpFlagsLoader.java", 504 "java/src/org/chromium/net/httpflags/ResolvedFlags.java", 505 "java/src/org/chromium/net/impl/BidirectionalStreamBuilderImpl.java", 506 "java/src/org/chromium/net/impl/BidirectionalStreamNetworkException.java", 507 "java/src/org/chromium/net/impl/CronetBidirectionalStream.java", 508 "java/src/org/chromium/net/impl/CronetLibraryLoader.java", 509 "java/src/org/chromium/net/impl/CronetMetrics.java", 510 "java/src/org/chromium/net/impl/CronetUploadDataStream.java", 511 "java/src/org/chromium/net/impl/CronetUrlRequest.java", 512 "java/src/org/chromium/net/impl/CronetUrlRequestContext.java", 513 "java/src/org/chromium/net/impl/NativeCronetEngineBuilderImpl.java", 514 "java/src/org/chromium/net/impl/NativeCronetEngineBuilderWithLibraryLoaderImpl.java", 515 "java/src/org/chromium/net/impl/NativeCronetProvider.java", 516 ] 517 518 # Adding deps here won't include those deps in the cronet_impl_native_java.jar. 519 # Please add to cronet_impl_native_java_deps_to_package instead. 520 deps = [ 521 ":cronet_api_java", 522 ":cronet_impl_common_java", 523 ":cronet_shared_java", 524 "//build/android:build_java", 525 "//third_party/android_deps:com_google_code_findbugs_jsr305_java", 526 "//third_party/android_deps:protobuf_lite_runtime_java", 527 "//third_party/androidx:androidx_annotation_annotation_java", 528 "//third_party/jni_zero:jni_zero_java", 529 ] 530 deps += cronet_impl_native_java_deps_to_package 531 532 srcjar_deps = cronet_impl_native_java_srcjar_deps 533 srcjar_deps += [ ":cronet_jni_headers" ] 534 proguard_configs = 535 [ "//components/cronet/android/cronet_impl_native_proguard.cfg" ] 536} 537 538# httpengine_native_provider_java.jar - native implementation of Cronet engine 539# loaded from AOSP (only for Android U onwards) 540android_library("httpengine_native_provider_java") { 541 sources = [ 542 "java/src/org/chromium/net/impl/AndroidBidirectionalStreamBuilderWrapper.java", 543 "java/src/org/chromium/net/impl/AndroidBidirectionalStreamCallbackWrapper.java", 544 "java/src/org/chromium/net/impl/AndroidBidirectionalStreamWrapper.java", 545 "java/src/org/chromium/net/impl/AndroidCallbackExceptionWrapper.java", 546 "java/src/org/chromium/net/impl/AndroidHeaderBlockWrapper.java", 547 "java/src/org/chromium/net/impl/AndroidHttpEngineBuilderWrapper.java", 548 "java/src/org/chromium/net/impl/AndroidHttpEngineWrapper.java", 549 "java/src/org/chromium/net/impl/AndroidHttpExceptionWrapper.java", 550 "java/src/org/chromium/net/impl/AndroidNetworkExceptionWrapper.java", 551 "java/src/org/chromium/net/impl/AndroidQuicExceptionWrapper.java", 552 "java/src/org/chromium/net/impl/AndroidUploadDataProviderWrapper.java", 553 "java/src/org/chromium/net/impl/AndroidUploadDataSinkWrapper.java", 554 "java/src/org/chromium/net/impl/AndroidUrlRequestBuilderWrapper.java", 555 "java/src/org/chromium/net/impl/AndroidUrlRequestCallbackWrapper.java", 556 "java/src/org/chromium/net/impl/AndroidUrlRequestStatusListenerWrapper.java", 557 "java/src/org/chromium/net/impl/AndroidUrlRequestWrapper.java", 558 "java/src/org/chromium/net/impl/AndroidUrlResponseInfoWrapper.java", 559 "java/src/org/chromium/net/impl/CronetExceptionTranslationUtils.java", 560 "java/src/org/chromium/net/impl/HttpEngineNativeProvider.java", 561 ] 562 563 deps = [ 564 ":cronet_api_java", 565 ":cronet_impl_common_java", 566 ":cronet_shared_java", 567 "//build/android:build_java", 568 "//third_party/androidx:androidx_annotation_annotation_java", 569 "//third_party/androidx:androidx_core_core_java", 570 "//third_party/jni_zero:jni_zero_java", 571 ] 572} 573 574# Groups all Cronet code (API and impl) into a single Java dependency. 575java_group("cronet_all_java") { 576 deps = [ 577 ":cronet_api_java", 578 ":cronet_impl_common_java", 579 ":cronet_impl_native_java", 580 ":cronet_impl_platform_java", 581 ":cronet_shared_java", 582 ":httpengine_native_provider_java", 583 ] 584} 585 586android_resources("cronet_sample_apk_resources") { 587 sources = [ 588 "sample/res/drawable/ic_action_home.xml", 589 "sample/res/drawable/ic_flag.xml", 590 "sample/res/layout/main_activity.xml", 591 "sample/res/layout/main_fragment.xml", 592 "sample/res/layout/options_fragment.xml", 593 "sample/res/layout/toggle_view.xml", 594 "sample/res/values/colors.xml", 595 "sample/res/values/dimens.xml", 596 "sample/res/values/strings.xml", 597 "sample/res/values/styles.xml", 598 ] 599 android_manifest = "sample/AndroidManifest.xml" 600 deps = [ 601 "//third_party/androidx:androidx_appcompat_appcompat_java", 602 "//third_party/androidx:androidx_appcompat_appcompat_resources_java", 603 "//third_party/androidx:androidx_drawerlayout_drawerlayout_java", 604 "//third_party/androidx:androidx_fragment_fragment_java", 605 "//third_party/androidx:androidx_interpolator_interpolator_java", 606 "//third_party/androidx:androidx_lifecycle_lifecycle_common_java", 607 "//third_party/androidx:androidx_vectordrawable_vectordrawable_animated_java", 608 "//third_party/androidx:androidx_vectordrawable_vectordrawable_java", 609 ] 610} 611 612android_library("cronet_sample_apk_java") { 613 sources = [ 614 "sample/src/org/chromium/cronet_sample_apk/Action.java", 615 "sample/src/org/chromium/cronet_sample_apk/ActionData.java", 616 "sample/src/org/chromium/cronet_sample_apk/CronetSampleActivity.java", 617 "sample/src/org/chromium/cronet_sample_apk/CronetSampleApplication.java", 618 "sample/src/org/chromium/cronet_sample_apk/MainFragment.java", 619 "sample/src/org/chromium/cronet_sample_apk/Options.java", 620 "sample/src/org/chromium/cronet_sample_apk/OptionsFragment.java", 621 "sample/src/org/chromium/cronet_sample_apk/OptionsRecyclerViewAdapter.java", 622 "sample/src/org/chromium/cronet_sample_apk/SampleActivityViewModel.java", 623 ] 624 625 resources_package = "org.chromium.cronet_sample_apk" 626 deps = [ 627 ":cronet_sample_apk_resources", 628 ":package_api_java", 629 ":package_impl_native_java", 630 "//third_party/androidx:androidx_annotation_annotation_experimental_java", 631 "//third_party/androidx:androidx_annotation_annotation_java", 632 "//third_party/androidx:androidx_appcompat_appcompat_java", 633 "//third_party/androidx:androidx_fragment_fragment_java", 634 "//third_party/androidx:androidx_lifecycle_lifecycle_viewmodel_java", 635 "//third_party/androidx:androidx_preference_preference_java", 636 "//third_party/androidx:androidx_recyclerview_recyclerview_java", 637 ] 638} 639 640android_apk("cronet_sample_apk") { 641 apk_name = "CronetSample" 642 android_manifest = "sample/AndroidManifest.xml" 643 shared_libraries = [ ":cronet" ] 644 645 deps = [ 646 ":cronet_combine_proguard_flags", 647 ":cronet_sample_apk_java", 648 ":cronet_sample_apk_resources", 649 "//third_party/android_deps:protobuf_lite_runtime_java", 650 ] 651 652 # Cronet jars will include this, so don't duplicate. 653 generate_buildconfig_java = false 654 655 if (!is_java_debug) { 656 proguard_enabled = true 657 proguard_configs = [ 658 "$target_gen_dir/cronet_impl_native_proguard.cfg", 659 "cronet_impl_common_proguard.cfg", 660 "cronet_shared_proguard.cfg", 661 ] 662 } 663} 664 665android_resource_sizes_test("resource_sizes_cronet_sample_apk") { 666 apk_name = "CronetSample" 667 data_deps = [ ":cronet_sample_apk" ] 668} 669 670# TODO(b/313416274): Change the output name to something else 671# that doesn't actually exist. 672action("cronet_combine_proguard_flags") { 673 script = "//components/cronet/tools/generate_proguard_file.py" 674 675 # This will combine all the proguard configs found through the 676 # transitive dependencies of those targets. 677 deps = [ 678 ":cronet_jni_registration_java", 679 ":repackage_api", 680 ":repackage_native_impl", 681 ] 682 683 # TODO(b/313416274): Change the output name to something else 684 # that doesn't actually exist. 685 outputs = [ "$target_gen_dir/cronet_impl_native_proguard.cfg" ] 686 sources = [] 687 depfile = "$target_out_dir/$target_name.d" 688 _build_config_deps = [] 689 foreach(dep, deps) { 690 _dep_label = get_label_info(dep, "label_no_toolchain") 691 _build_config_deps += [ "$_dep_label$build_config_target_suffix" ] 692 _dep_gen_dir = get_label_info(dep, "target_gen_dir") 693 _dep_name = get_label_info(dep, "name") 694 sources += [ "$_dep_gen_dir/$_dep_name.build_config.json" ] 695 } 696 deps += _build_config_deps 697 args = [ 698 "--output_file", 699 rebase_path(outputs[0], root_build_dir), 700 "--dep_file", 701 rebase_path(depfile, root_build_dir), 702 ] + rebase_path(sources, root_build_dir) 703} 704 705action("cronet_combined_proguard_flags_golden_test") { 706 script = "//components/cronet/tools/check_combined_proguard_file.py" 707 deps = [ ":cronet_combine_proguard_flags" ] 708 sources = [ 709 "$target_gen_dir/cronet_impl_native_proguard.cfg", 710 "//components/cronet/android/cronet_combined_impl_native_proguard_golden.cfg", 711 ] 712 outputs = [ "$target_gen_dir/$target_name.stamp" ] 713 args = [ 714 "--input_generated_file", 715 rebase_path(sources[0], root_build_dir), 716 "--input_golden_file", 717 rebase_path(sources[1], root_build_dir), 718 "--stamp", 719 rebase_path(outputs[0], root_build_dir), 720 ] 721} 722 723_package_dir = "$root_out_dir/cronet" 724 725# These package_* targets represent how Cronet is used in production code. 726# Using these targets is preferred to using the underlying targets like 727# :cronet_api_java or :cronet_all_java, as it better tests production 728# usage. 729android_java_prebuilt("package_shared_java") { 730 jar_path = "$_package_dir/cronet_shared_java.jar" 731 deps = [ ":repackage_shared" ] 732} 733 734android_java_prebuilt("package_api_java") { 735 jar_path = "$_package_dir/cronet_api.jar" 736 deps = [ 737 ":package_shared_java", 738 ":repackage_api", 739 ] 740} 741 742android_java_prebuilt("package_impl_common_java") { 743 jar_path = "$_package_dir/cronet_impl_common_java.jar" 744 deps = [ 745 ":package_api_java", 746 ":package_shared_java", 747 ":repackage_impl_common", 748 ] 749} 750 751java_prebuilt("package_impl_native_java") { 752 # This target is a java_prebuilt instead of a android_java_prebuilt so we 753 # don't filter out GEN_JNI which is part of jar_excluded_patterns in 754 # android_java_prebuilt. 755 jar_path = "$_package_dir/cronet_impl_native_java.jar" 756 supports_android = true 757 requires_android = true 758 759 # To avoid dual definition of classes some dependencies are added 760 # downstream (Maven deps, BUILD dependencies), and the bytecode check 761 # doesn't like that. 762 enable_bytecode_checks = false 763 764 deps = [ 765 ":package_api_java", 766 ":package_impl_common_java", 767 ":package_shared_java", 768 ":repackage_native", 769 "//third_party/android_deps:com_google_code_findbugs_jsr305_java", 770 "//third_party/androidx:androidx_drawerlayout_drawerlayout_java", 771 "//third_party/androidx:androidx_interpolator_interpolator_java", 772 ] 773 jar_excluded_patterns = [ "androidx/*/R*" ] 774} 775 776android_java_prebuilt("package_impl_util_java") { 777 jar_path = "$_package_dir/cronet_impl_util_java.jar" 778 deps = [ 779 ":package_api_java", 780 ":repackage_util", 781 ] 782} 783 784android_java_prebuilt("package_impl_platform_java") { 785 jar_path = "$_package_dir/cronet_impl_platform_java.jar" 786 deps = [ 787 ":package_api_java", 788 ":package_impl_common_java", 789 ":package_shared_java", 790 ":repackage_platform", 791 ] 792} 793 794android_java_prebuilt("package_impl_fake_java") { 795 jar_path = "$_package_dir/cronet_impl_fake_java.jar" 796 deps = [ 797 ":package_api_java", 798 ":package_impl_common_java", 799 ":package_shared_java", 800 ":repackage_fake", 801 ] 802} 803 804android_java_prebuilt("package_httpengine_native_provider_java") { 805 jar_path = "$_package_dir/httpengine_native_provider_java.jar" 806 deps = [ 807 ":package_api_java", 808 ":repackage_httpengine_native_provider", 809 ] 810} 811 812template("jar_src") { 813 action_with_pydeps(target_name) { 814 _rebased_src_search_dirs = 815 rebase_path(invoker.src_search_dirs, root_build_dir) 816 817 script = "//components/cronet/tools/jar_src.py" 818 depfile = "$target_gen_dir/$target_name.d" 819 outputs = [ invoker.jar_path ] 820 args = [ 821 "--src-search-dirs=${_rebased_src_search_dirs}", 822 "--jar-path", 823 rebase_path(invoker.jar_path, root_build_dir), 824 "--depfile", 825 rebase_path(depfile, root_build_dir), 826 ] 827 828 deps = [] 829 if (defined(invoker.deps)) { 830 deps += invoker.deps 831 } 832 833 _excluded_patterns = [] 834 if (defined(invoker.excluded_patterns)) { 835 _excluded_patterns = invoker.excluded_patterns 836 } 837 _src_jars = [] 838 839 # Add src-jar files that are listed in "src_jars". 840 if (defined(invoker.src_jars)) { 841 _rebased_src_jars = rebase_path(invoker.src_jars, root_build_dir) 842 _src_jars += _rebased_src_jars 843 } 844 845 # Add src-jar files that are generated by dependencies in "srcjar_deps". 846 if (defined(invoker.srcjar_deps)) { 847 foreach(_srcjar_dep, invoker.srcjar_deps) { 848 _dep_gen_dir = get_label_info(_srcjar_dep, "target_gen_dir") 849 _dep_name = get_label_info(_srcjar_dep, "name") 850 _src_jars += rebase_path([ "$_dep_gen_dir/$_dep_name.srcjar" ]) 851 deps += [ _srcjar_dep ] 852 } 853 } 854 855 # Create the list of all source files that are given in "src_files". 856 _src_files = [] 857 if (defined(invoker.src_files)) { 858 _src_files += invoker.src_files 859 } 860 861 # Handle "source_deps". 862 _src_list_files = [] 863 if (defined(invoker.source_deps)) { 864 foreach(_source_dep, invoker.source_deps) { 865 _dep_gen_dir = get_label_info(_source_dep, "target_gen_dir") 866 _dep_name = get_label_info(_source_dep, "name") 867 _src_list_files += rebase_path([ "$_dep_gen_dir/$_dep_name.sources" ]) 868 deps += [ _source_dep ] 869 } 870 } 871 args += [ "--src-jar=${_src_jars}" ] 872 args += [ "--src-files=${_src_files}" ] 873 args += [ "--src-list-files=${_src_list_files}" ] 874 args += [ "--excluded-classes=$_excluded_patterns" ] 875 876 inputs = _src_jars 877 inputs += _src_files 878 inputs += _src_list_files 879 } 880} 881 882jar_src("jar_cronet_shared_source") { 883 src_search_dirs = [ "java/src" ] 884 source_deps = [ ":cronet_shared_java" ] 885 jar_path = "$_package_dir/cronet_shared-src.jar" 886} 887 888jar_src("jar_cronet_api_source") { 889 src_search_dirs = [ 890 "api/src", 891 _templates_dir, 892 ] 893 source_deps = [ ":cronet_api_java" ] 894 jar_path = "$_package_dir/cronet_api-src.jar" 895} 896 897jar_src("jar_cronet_impl_common_java_source") { 898 src_search_dirs = [ 899 "java/src", 900 _templates_dir, 901 ] 902 source_deps = [ ":cronet_impl_common_java" ] 903 srcjar_deps = cronet_impl_common_java_srcjar_deps 904 jar_path = "$_package_dir/cronet_impl_common_java-src.jar" 905} 906 907jar_src("jar_cronet_impl_platform_java_source") { 908 src_search_dirs = [ "java/src" ] 909 source_deps = [ ":cronet_impl_platform_java" ] 910 jar_path = "$_package_dir/cronet_impl_platform_java-src.jar" 911} 912 913jar_src("jar_cronet_impl_fake_java_source") { 914 src_search_dirs = [ "fake/java" ] 915 source_deps = [ ":cronet_impl_fake_java" ] 916 jar_path = "$_package_dir/cronet_impl_fake_java-src.jar" 917} 918 919jar_src("jar_cronet_impl_util_java_source") { 920 src_search_dirs = [ "java/src" ] 921 source_deps = [ ":cronet_impl_java_util_java" ] 922 jar_path = "$_package_dir/cronet_impl_util_java-src.jar" 923} 924 925jar_src("jar_httpengine_native_provider_java_source") { 926 src_search_dirs = [ "java/src" ] 927 source_deps = [ ":httpengine_native_provider_java" ] 928 jar_path = "$_package_dir/httpengine_native_provider_java-src.jar" 929} 930 931# List of patterns of .class files to exclude from the jar. 932_jar_excluded_patterns = [ 933 # Excludes Android support libraries crbug.com/832770. 934 "android/*", 935 "androidx/*", 936 "*/library_loader/*.class", 937 "*/multidex/*.class", 938 "*/process_launcher/*.class", 939 "*/SysUtils*.class", 940 "org/chromium/base/Feature*.class", 941 "org/chromium/base/jank_tracker/*.class", 942 "org/chromium/base/memory/MemoryPurgeManager*.class", 943 "org/chromium/base/memory/MemoryPressureMonitor*.class", 944] 945 946# Excluded from repackage_jars, but not from jar_src(). 947_build_jar_excluded_patterns = [ "org/chromium/build/NativeLibraries.class" ] 948 949# See crbug.com/1401015 for more info on why GEN_JNI is excluded by default 950template("repackage_jars") { 951 _excludes = [] 952 if (defined(invoker.jar_excluded_patterns)) { 953 _excludes += invoker.jar_excluded_patterns 954 } 955 if (!defined(invoker.remove_gen_jni) || invoker.remove_gen_jni) { 956 _excludes += [ "*/*GEN_JNI.class" ] 957 } 958 dist_jar(target_name) { 959 requires_android = true 960 direct_deps_only = true 961 use_unprocessed_jars = true 962 no_build_hooks = true 963 jar_excluded_patterns = _excludes 964 forward_variables_from(invoker, "*", [ "jar_excluded_patterns" ]) 965 } 966} 967 968repackage_jars("repackage_shared") { 969 output = "$_package_dir/cronet_shared_java.jar" 970 deps = cronet_shared_java_deps_to_package + [ ":cronet_shared_java" ] 971} 972 973repackage_jars("repackage_api") { 974 output = "$_package_dir/cronet_api.jar" 975 deps = [ 976 ":cronet_api_helpers_java", 977 ":cronet_api_java", 978 ] 979} 980 981repackage_jars("repackage_platform") { 982 output = "$_package_dir/cronet_impl_platform_java.jar" 983 deps = [ ":cronet_impl_platform_java" ] 984} 985 986repackage_jars("repackage_fake") { 987 output = "$_package_dir/cronet_impl_fake_java.jar" 988 deps = [ ":cronet_impl_fake_java" ] 989} 990 991repackage_jars("repackage_util") { 992 output = "$_package_dir/cronet_impl_util_java.jar" 993 deps = [ ":cronet_impl_java_util_java" ] 994} 995 996repackage_jars("repackage_httpengine_native_provider") { 997 output = "$_package_dir/httpengine_native_provider_java.jar" 998 deps = [ ":httpengine_native_provider_java" ] 999} 1000 1001# See crbug.com/1005836 for more info on why repackage_native requires 2 extra 1002# targets. These 3 targets exist to ensure the correct version of GEN_JNI 1003# (a generated class containing native method definitions) is included. 1004repackage_jars("repackage_native") { 1005 output = "$_package_dir/cronet_impl_native_java.jar" 1006 deps = [ 1007 ":cronet_jni_registration_java", 1008 ":repackage_native_java", 1009 ] 1010 remove_gen_jni = false 1011 jar_excluded_patterns = _jar_excluded_patterns + _build_jar_excluded_patterns 1012} 1013 1014_native_intermediate_jar_path = "$target_out_dir/repackage_native_impl.jar" 1015 1016# Do not depend on this target directly. Use :repackage_native. 1017repackage_jars("repackage_native_impl") { 1018 output = _native_intermediate_jar_path 1019 deps = 1020 cronet_impl_native_java_deps_to_package + [ ":cronet_impl_native_java" ] 1021 jar_excluded_patterns = _jar_excluded_patterns + _build_jar_excluded_patterns 1022} 1023 1024# Do not depend on this target directly. Use :repackage_native. 1025# This target exists to provide :repackage_native with a suitable target to 1026# depend on (since dist_aar only pulls in deps of type "java_library"). 1027android_java_prebuilt("repackage_native_java") { 1028 jar_path = _native_intermediate_jar_path 1029 1030 # Since only the unprocessed jar is used, no need to complete the bytecode 1031 # processing step. 1032 enable_bytecode_checks = false 1033 deps = [ ":repackage_native_impl" ] 1034} 1035 1036repackage_jars("repackage_impl_common") { 1037 output = "$_package_dir/cronet_impl_common_java.jar" 1038 deps = cronet_impl_common_java_deps_to_package + [ 1039 ":cronet_impl_common_java", 1040 ":cronet_impl_java_util_java", 1041 ] 1042} 1043 1044_cronet_shared_lib_file_name = "lib" + _cronet_shared_lib_name + ".so" 1045 1046instrumentation_test_apk("cronet_sample_test_apk") { 1047 apk_name = "CronetSampleTest" 1048 apk_under_test = ":cronet_sample_apk" 1049 android_manifest = "sample/javatests/AndroidManifest.xml" 1050 sources = [ 1051 "sample/javatests/src/org/chromium/cronet_sample_apk/CronetSampleTest.java", 1052 ] 1053 deps = [ 1054 ":cronet_sample_apk_java", 1055 ":package_impl_common_java", 1056 "//third_party/android_deps:com_googlecode_java_diff_utils_diffutils_java", 1057 "//third_party/android_deps:espresso_java", 1058 "//third_party/androidx:androidx_test_monitor_java", 1059 "//third_party/androidx:androidx_test_rules_java", 1060 "//third_party/androidx:androidx_test_runner_java", 1061 "//third_party/google-truth:google_truth_java", 1062 "//third_party/junit", 1063 ] 1064 1065 if (!is_java_debug) { 1066 proguard_enabled = true 1067 proguard_configs = [ "sample/javatests/proguard.cfg" ] 1068 } 1069} 1070 1071shared_library("cronet_tests") { 1072 testonly = true 1073 assert_no_deps = [ ":cronet_static" ] 1074 sources = [ 1075 # While "cronet_tests" cannot depend on "cronet_static", and hence cannot 1076 # call any Cronet functions, it can access fields of Cronet objects, so add 1077 # Cronet header files to facilitate accessing these fields. 1078 "//components/cronet/android/cronet_context_adapter.h", 1079 "//components/cronet/android/cronet_url_request_adapter.h", 1080 "//components/cronet/cronet_url_request.h", 1081 "//components/cronet/url_request_context_config.h", 1082 "test/cronet_test_jni.cc", 1083 "test/cronet_test_util.cc", 1084 "test/cronet_test_util.h", 1085 "test/cronet_url_request_context_config_test.cc", 1086 "test/cronet_url_request_context_config_test.h", 1087 "test/cronet_url_request_test.cc", 1088 "test/experimental_options_test.cc", 1089 "test/mock_cert_verifier.cc", 1090 "test/mock_url_request_job_factory.cc", 1091 "test/native_test_server.cc", 1092 "test/quic_test_server.cc", 1093 "test/test_upload_data_stream_handler.cc", 1094 "test/test_upload_data_stream_handler.h", 1095 "test/url_request_intercepting_job_factory.cc", 1096 "test/url_request_intercepting_job_factory.h", 1097 ] 1098 1099 deps = [ 1100 ":cronet_test_apk_jni", 1101 ":cronet_tests_jni_headers", 1102 "//base", 1103 "//base:i18n", 1104 "//base/test:test_support", 1105 "//components/cronet:cronet_common", 1106 "//components/cronet:cronet_version_header", 1107 "//components/cronet/testing:test_support", 1108 "//components/prefs", 1109 "//net", 1110 "//net:simple_quic_tools", 1111 "//net:test_support", 1112 "//third_party/icu", 1113 ] 1114 1115 include_dirs = [ _cronet_version_header_include_dir ] 1116 1117 configs -= [ "//build/config/android:hide_all_but_jni_onload" ] 1118 configs += [ "//build/config/android:hide_all_but_jni" ] 1119} 1120 1121android_resources("cronet_test_apk_resources") { 1122 testonly = true 1123 sources = [ 1124 # TODO(crbug.com/40283951): Modify quicroot.pem to become a build time copy of 1125 # net/data/ssl/certificates/cronet-quic-chain.pem. 1126 "test/res/raw/quicroot.pem", 1127 "test/res/values/cronet-test-rule-configuration.xml", 1128 "test/res/values/strings.xml", 1129 "test/res/xml/network_security_config.xml", 1130 ] 1131} 1132 1133generate_jni("cronet_test_apk_jni") { 1134 testonly = true 1135 sources = [ 1136 "test/src/org/chromium/net/CronetTestUtil.java", 1137 "test/src/org/chromium/net/MockCertVerifier.java", 1138 "test/src/org/chromium/net/MockUrlRequestJobFactory.java", 1139 "test/src/org/chromium/net/NativeTestServer.java", 1140 "test/src/org/chromium/net/QuicTestServer.java", 1141 "test/src/org/chromium/net/TestUploadDataStreamHandler.java", 1142 ] 1143} 1144 1145android_library("cronet_test_apk_java") { 1146 testonly = true 1147 1148 srcjar_deps = [ ":cronet_test_apk_jni" ] 1149 sources = [ 1150 "test/src/org/chromium/net/CronetTestApplication.java", 1151 "test/src/org/chromium/net/CronetTestUtil.java", 1152 "test/src/org/chromium/net/Http2TestHandler.java", 1153 "test/src/org/chromium/net/Http2TestServer.java", 1154 "test/src/org/chromium/net/MockCertVerifier.java", 1155 "test/src/org/chromium/net/MockUrlRequestJobFactory.java", 1156 "test/src/org/chromium/net/NativeTestServer.java", 1157 "test/src/org/chromium/net/QuicTestServer.java", 1158 "test/src/org/chromium/net/ReportingCollector.java", 1159 "test/src/org/chromium/net/TestFilesInstaller.java", 1160 "test/src/org/chromium/net/TestUploadDataStreamHandler.java", 1161 "test/src/org/chromium/net/truth/UrlResponseInfoSubject.java", 1162 ] 1163 1164 deps = [ 1165 ":cronet_all_java", 1166 "//base:base_java", 1167 "//base:base_java_test_support", 1168 "//build/android:build_java", 1169 "//net/android:net_java_test_support", 1170 "//third_party/androidx:androidx_annotation_annotation_java", 1171 "//third_party/google-truth:google_truth_java", 1172 "//third_party/jni_zero:jni_zero_java", 1173 "//third_party/junit", 1174 "//third_party/netty4:netty_all_java", 1175 ] 1176} 1177 1178cronet_smoketests_platform_only_common_srcs = [ 1179 "test/smoketests/src/org/chromium/net/smoke/ChromiumPlatformOnlyTestSupport.java", 1180 "test/smoketests/src/org/chromium/net/smoke/CronetSmokeTestRule.java", 1181 "test/smoketests/src/org/chromium/net/smoke/HttpTestServer.java", 1182 "test/smoketests/src/org/chromium/net/smoke/SmokeTestRequestCallback.java", 1183 "test/smoketests/src/org/chromium/net/smoke/TestSupport.java", 1184 "test/smoketests/src/org/chromium/net/smoke/CronetPlatformSmokeTestRule.java", 1185] 1186 1187cronet_smoketests_native_common_srcs = cronet_smoketests_platform_only_common_srcs + [ 1188 "test/smoketests/src/org/chromium/net/smoke/ChromiumNativeTestSupport.java", 1189 "test/smoketests/src/org/chromium/net/smoke/NativeCronetTestRule.java", 1190 ] 1191 1192cronet_tests_androidx_common_srcs = [ 1193 "//third_party/androidx:androidx_annotation_annotation_java", 1194 "//third_party/androidx:androidx_test_core_java", 1195 "//third_party/androidx:androidx_test_ext_junit_java", 1196 "//third_party/androidx:androidx_test_runner_java", 1197] 1198 1199# cronet_common_javatests.jar - Cronet Java test common files. 1200# TODO(crbug.com/40919033) - refactor to cronet_api only dependency 1201android_library("cronet_common_javatests") { 1202 testonly = true 1203 sources = [ 1204 "test/javatests/src/org/chromium/net/ContextInterceptor.java", 1205 "test/javatests/src/org/chromium/net/CronetLoggerTestRule.java", 1206 "test/javatests/src/org/chromium/net/CronetTestRule.java", 1207 "test/javatests/src/org/chromium/net/TestRequestFinishedListener.java", 1208 "test/javatests/src/org/chromium/net/TestUploadDataProvider.java", 1209 "test/javatests/src/org/chromium/net/TestUrlRequestCallback.java", 1210 "test/javatests/src/org/chromium/net/httpflags/HttpFlagsInterceptor.java", 1211 "test/javatests/src/org/chromium/net/impl/CronetManifestInterceptor.java", 1212 ] 1213 deps = [ 1214 ":cronet_all_java", 1215 ":cronet_test_apk_java", 1216 ":flags_java_proto", 1217 "//base:base_java", 1218 "//base:base_java_test_support", 1219 "//build/android:build_java", 1220 "//third_party/androidx:androidx_core_core_java", 1221 "//third_party/google-truth:google_truth_java", 1222 "//third_party/jni_zero:jni_zero_java", 1223 "//third_party/junit", 1224 ] + cronet_tests_androidx_common_srcs 1225} 1226 1227# cronet_fake_javatests.jar - Java tests for the fake implementation of Cronet. 1228android_library("cronet_fake_javatests") { 1229 testonly = true 1230 sources = [ 1231 "fake/javatests/org/chromium/net/test/FakeCronetControllerTest.java", 1232 "fake/javatests/org/chromium/net/test/FakeCronetEngineTest.java", 1233 "fake/javatests/org/chromium/net/test/FakeCronetProviderTest.java", 1234 "fake/javatests/org/chromium/net/test/FakeUrlRequestTest.java", 1235 "fake/javatests/org/chromium/net/test/FakeUrlResponseTest.java", 1236 "fake/javatests/org/chromium/net/test/UrlResponseMatcherTest.java", 1237 ] 1238 1239 deps = [ 1240 ":cronet_api_helpers_java", 1241 ":cronet_api_java", 1242 ":cronet_common_javatests", 1243 ":cronet_impl_common_java", 1244 ":cronet_impl_fake_java", 1245 ":cronet_impl_platform_java", 1246 ":cronet_shared_java", 1247 ":cronet_test_apk_java", 1248 "//base:base_java_test_support", 1249 "//third_party/android_deps:guava_android_java", 1250 "//third_party/google-truth:google_truth_java", 1251 "//third_party/junit", 1252 ] + cronet_tests_androidx_common_srcs 1253} 1254 1255cronet_javatests_deps_to_package = [ 1256 ":cronet_common_javatests", 1257 ":cronet_test_apk_java", 1258 ":flags_java_proto", 1259 "//base:base_java", 1260 "//third_party/jni_zero:jni_zero_java", 1261 "//base:base_java_test_support", 1262 1263 "//net/android:embedded_test_server_aidl_java", 1264 "//net/android:net_java", 1265 "//net/android:net_java_test_support", 1266 "//url:url_java", 1267 "//third_party/androidx:androidx_annotation_annotation_experimental_java", 1268] 1269 1270if (!is_cronet_for_aosp_build) { 1271 # Don't bundle FakeCronetEngine or its tests for AOSP. 1272 cronet_javatests_deps_to_package += [ ":cronet_fake_javatests" ] 1273} 1274 1275generate_jni("cronet_tests_jni_headers") { 1276 testonly = true 1277 sources = [ 1278 "test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java", 1279 "test/javatests/src/org/chromium/net/CronetUrlRequestTest.java", 1280 "test/javatests/src/org/chromium/net/ExperimentalOptionsTest.java", 1281 ] 1282} 1283 1284android_library("cronet_javatests") { 1285 testonly = true 1286 1287 srcjar_deps = [ ":cronet_tests_jni_headers" ] 1288 sources = [ 1289 "test/javatests/src/org/chromium/net/BidirectionalStreamQuicTest.java", 1290 "test/javatests/src/org/chromium/net/BidirectionalStreamTest.java", 1291 "test/javatests/src/org/chromium/net/BrotliTest.java", 1292 "test/javatests/src/org/chromium/net/Criteria.java", 1293 "test/javatests/src/org/chromium/net/CronetEngineBuilderTest.java", 1294 "test/javatests/src/org/chromium/net/CronetOnboardingTest.java", 1295 "test/javatests/src/org/chromium/net/CronetStressTest.java", 1296 "test/javatests/src/org/chromium/net/CronetTestRuleTest.java", 1297 "test/javatests/src/org/chromium/net/CronetUploadTest.java", 1298 "test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java", 1299 "test/javatests/src/org/chromium/net/CronetUrlRequestHTTPSTest.java", 1300 "test/javatests/src/org/chromium/net/CronetUrlRequestTest.java", 1301 "test/javatests/src/org/chromium/net/DiskStorageTest.java", 1302 "test/javatests/src/org/chromium/net/ExperimentalOptionsTest.java", 1303 "test/javatests/src/org/chromium/net/ExperimentalOptionsTranslationTest.java", 1304 "test/javatests/src/org/chromium/net/ExperimentalOptionsTranslationTestUtil.java", 1305 "test/javatests/src/org/chromium/net/FileUtils.java", 1306 "test/javatests/src/org/chromium/net/GetStatusTest.java", 1307 "test/javatests/src/org/chromium/net/LogcatCapture.java", 1308 "test/javatests/src/org/chromium/net/MetricsTestUtil.java", 1309 "test/javatests/src/org/chromium/net/MockCertVerifierTest.java", 1310 "test/javatests/src/org/chromium/net/NQETest.java", 1311 "test/javatests/src/org/chromium/net/NetworkChangesTest.java", 1312 "test/javatests/src/org/chromium/net/NetworkErrorLoggingTest.java", 1313 "test/javatests/src/org/chromium/net/PkpTest.java", 1314 "test/javatests/src/org/chromium/net/QuicTest.java", 1315 "test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java", 1316 "test/javatests/src/org/chromium/net/TestBidirectionalStreamCallback.java", 1317 "test/javatests/src/org/chromium/net/TestDrivenDataProvider.java", 1318 "test/javatests/src/org/chromium/net/TestNetworkQualityRttListener.java", 1319 "test/javatests/src/org/chromium/net/TestNetworkQualityThroughputListener.java", 1320 "test/javatests/src/org/chromium/net/UrlResponseInfoTest.java", 1321 "test/javatests/src/org/chromium/net/apihelpers/ContentTypeParametersParserTest.java", 1322 "test/javatests/src/org/chromium/net/apihelpers/UploadDataProvidersTest.java", 1323 "test/javatests/src/org/chromium/net/httpflags/BaseFeatureTest.java", 1324 "test/javatests/src/org/chromium/net/httpflags/HttpFlagsLoaderTest.java", 1325 "test/javatests/src/org/chromium/net/httpflags/ResolvedFlagsTest.java", 1326 "test/javatests/src/org/chromium/net/impl/AndroidHttpEngineBuilderWrapperTest.java", 1327 "test/javatests/src/org/chromium/net/impl/CronetLoggerTest.java", 1328 "test/javatests/src/org/chromium/net/impl/CronetManifestTest.java", 1329 "test/javatests/src/org/chromium/net/telemetry/CronetLoggerImplTest.java", 1330 "test/javatests/src/org/chromium/net/telemetry/ExperimentalOptionsTest.java", 1331 "test/javatests/src/org/chromium/net/telemetry/HashTest.java", 1332 "test/javatests/src/org/chromium/net/telemetry/RateLimiterTest.java", 1333 "test/javatests/src/org/chromium/net/telemetry/SizeBucketsTest.java", 1334 "test/javatests/src/org/chromium/net/urlconnection/CronetBufferedOutputStreamTest.java", 1335 "test/javatests/src/org/chromium/net/urlconnection/CronetChunkedOutputStreamTest.java", 1336 "test/javatests/src/org/chromium/net/urlconnection/CronetFixedModeOutputStreamTest.java", 1337 "test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLConnectionTest.java", 1338 "test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLStreamHandlerTest.java", 1339 "test/javatests/src/org/chromium/net/urlconnection/CronetInputStreamTest.java", 1340 "test/javatests/src/org/chromium/net/urlconnection/CronetURLStreamHandlerFactoryTest.java", 1341 "test/javatests/src/org/chromium/net/urlconnection/MessageLoopTest.java", 1342 "test/javatests/src/org/chromium/net/urlconnection/QuicUploadTest.java", 1343 "test/javatests/src/org/chromium/net/urlconnection/TestUtil.java", 1344 ] 1345 1346 # Adding deps here won't include those deps in the cronet_tests_java.jar. 1347 # Please add to cronet_javatests_deps_to_package instead. 1348 deps = [ 1349 ":cronet_all_java", 1350 ":cronet_api_helpers_java", 1351 ":cronet_urlconnection_impl_java", 1352 "//third_party/android_deps:guava_android_java", 1353 "//third_party/android_deps:protobuf_lite_runtime_java", 1354 "//third_party/androidx:androidx_annotation_annotation_java", 1355 "//third_party/androidx:androidx_test_core_java", 1356 "//third_party/androidx:androidx_test_ext_junit_java", 1357 "//third_party/androidx:androidx_test_runner_java", 1358 "//third_party/google-truth:google_truth_java", 1359 "//third_party/hamcrest:hamcrest_core_java", 1360 "//third_party/junit", 1361 "//third_party/mockito:mockito_java", 1362 ] 1363 deps += cronet_javatests_deps_to_package 1364 data = [ "//components/cronet/testing/test_server/data/" ] 1365} 1366 1367instrumentation_test_apk("cronet_test_instrumentation_apk") { 1368 # This is the only Cronet APK with lint enabled. This one was chosen because 1369 # it depends on basically all source files. 1370 enable_lint = true 1371 lint_baseline_file = "lint-baseline.xml" 1372 lint_suppressions_file = "lint-suppressions.xml" 1373 1374 lint_min_sdk_version = 21 1375 1376 apk_name = "CronetTestInstrumentation" 1377 android_manifest = "test/javatests/AndroidManifest.xml" 1378 1379 shared_libraries = [ 1380 ":cronet", 1381 ":cronet_tests", 1382 ] 1383 loadable_modules = [ "$root_out_dir/libnetty-tcnative.so" ] 1384 1385 sources = cronet_smoketests_native_common_srcs + [ 1386 "test/smoketests/src/org/chromium/net/smoke/Http2Test.java", 1387 "test/smoketests/src/org/chromium/net/smoke/QuicTest.java", 1388 ] 1389 1390 deps = [ 1391 ":cronet_all_java", 1392 ":cronet_combine_proguard_flags", 1393 ":cronet_javatests", 1394 ":cronet_test_apk_java", 1395 ":cronet_test_apk_resources", 1396 "//base:base_java", 1397 "//base:base_java_test_support", 1398 "//build/android:build_java", 1399 "//net/android:net_java", 1400 "//net/android:net_java_test_support", 1401 "//third_party/android_sdk:android_test_mock_java", 1402 "//third_party/google-truth:google_truth_java", 1403 "//third_party/hamcrest:hamcrest_core_java", 1404 "//third_party/jni_zero:jni_zero_java", 1405 "//third_party/junit", 1406 "//third_party/netty-tcnative:netty-tcnative-so", 1407 "//third_party/netty4:netty_all_java", 1408 ] + cronet_tests_androidx_common_srcs 1409 1410 data_deps = [ "//net:test_support" ] 1411 1412 if (!is_java_debug) { 1413 proguard_enabled = true 1414 1415 proguard_configs = [ 1416 "$target_gen_dir/cronet_impl_native_proguard.cfg", 1417 "cronet_shared_proguard.cfg", 1418 "cronet_impl_common_proguard.cfg", 1419 "cronet_impl_platform_proguard.cfg", 1420 "httpengine_native_provider_proguard.cfg", 1421 "test/proguard.cfg", 1422 ] 1423 } 1424 srcjar_deps = [ 1425 ":cronet_jni_registration", 1426 ":cronet_tests_jni_registration", 1427 ] 1428} 1429 1430instrumentation_test_apk( 1431 "cronet_smoketests_platform_only_instrumentation_apk") { 1432 apk_name = "PlatformOnlyEngineSmokeTestInstrumentation" 1433 android_manifest = "test/javatests/AndroidManifest.xml" 1434 1435 sources = cronet_smoketests_platform_only_common_srcs + [ 1436 "test/smoketests/src/org/chromium/net/smoke/PlatformOnlyEngineTest.java", 1437 "test/src/org/chromium/net/CronetTestApplication.java", 1438 "test/src/org/chromium/net/truth/UrlResponseInfoSubject.java", 1439 ] 1440 1441 deps = [ 1442 ":cronet_api_java", 1443 ":cronet_impl_common_java", 1444 ":cronet_impl_platform_java", 1445 ":cronet_test_apk_resources", 1446 "//base:base_java_test_support", 1447 "//third_party/android_sdk:android_test_mock_java", 1448 "//third_party/google-truth:google_truth_java", 1449 "//third_party/junit", 1450 "//third_party/netty4:netty_all_java", 1451 ] + cronet_tests_androidx_common_srcs 1452 1453 if (!is_java_debug) { 1454 proguard_enabled = true 1455 1456 proguard_configs = [ 1457 "cronet_impl_common_proguard.cfg", 1458 "cronet_impl_platform_proguard.cfg", 1459 "test/proguard.cfg", 1460 ] 1461 } 1462 1463 # There is no native in this apk. However, since we depend on //base, we 1464 # need something that provides a GEN_JNI, as //base uses GEN_JNI. 1465 srcjar_deps = [ ":cronet_jni_registration" ] 1466} 1467 1468instrumentation_test_apk( 1469 "cronet_smoketests_missing_native_library_instrumentation_apk") { 1470 apk_name = "MissingNativeLibrarySmokeTestInstrumentation" 1471 android_manifest = "test/javatests/AndroidManifest.xml" 1472 1473 sources = cronet_smoketests_native_common_srcs + [ "test/smoketests/src/org/chromium/net/smoke/MissingNativeLibraryTest.java" ] 1474 deps = [ 1475 ":cronet_api_java", 1476 ":cronet_combine_proguard_flags", 1477 ":cronet_impl_common_java", 1478 ":cronet_impl_platform_java", 1479 ":cronet_shared_java", 1480 ":cronet_test_apk_java", 1481 ":cronet_test_apk_resources", 1482 "//base:base_java", 1483 "//base:base_java_test_support", 1484 "//build/android:build_java", 1485 "//third_party/android_sdk:android_test_mock_java", 1486 "//third_party/google-truth:google_truth_java", 1487 "//third_party/jni_zero:jni_zero_java", 1488 "//third_party/junit", 1489 "//third_party/netty4:netty_all_java", 1490 ] + cronet_tests_androidx_common_srcs 1491 1492 if (!is_java_debug) { 1493 proguard_enabled = true 1494 proguard_configs = [ 1495 "$target_gen_dir/cronet_impl_native_proguard.cfg", 1496 "cronet_shared_proguard.cfg", 1497 "cronet_impl_common_proguard.cfg", 1498 "cronet_impl_platform_proguard.cfg", 1499 "test/proguard.cfg", 1500 ] 1501 } 1502 1503 # There is no native in this apk. However, since we depend on //base, we 1504 # need something that provides a GEN_JNI, as //base uses GEN_JNI. 1505 srcjar_deps = [ ":cronet_jni_registration" ] 1506} 1507 1508# The smoketests included in this test target are already included in 1509# cronet_test_instrumentation_apk, but they are proguarded here using 1510# the same proguard rules for which we release Cronet with. This is 1511# to ensure that any changes to the proguard does not break Cronet. 1512# Note: The proguard rules includes the test proguard configs as 1513# the build system automatically pulls in all transitive proguard 1514# configs that can be found through the dependency chain. 1515instrumentation_test_apk("cronet_smoketests_apk") { 1516 apk_name = "CronetSmokeTestInstrumentation" 1517 android_manifest = "test/javatests/AndroidManifest.xml" 1518 shared_libraries = [ 1519 ":cronet", 1520 ":cronet_tests", 1521 ] 1522 loadable_modules = [ "$root_out_dir/libnetty-tcnative.so" ] 1523 sources = cronet_smoketests_native_common_srcs + [ 1524 "test/smoketests/src/org/chromium/net/smoke/Http2Test.java", 1525 "test/smoketests/src/org/chromium/net/smoke/QuicTest.java", 1526 ] 1527 deps = [ 1528 ":cronet_api_java", 1529 1530 # cronet_test_apk_java pulls all implementation of Cronet along with their proguard cfgs. 1531 ":cronet_test_apk_java", 1532 ":cronet_test_apk_resources", 1533 "//base:base_java", 1534 "//base:base_java_test_support", 1535 "//build/android:build_java", 1536 "//third_party/android_sdk:android_test_mock_java", 1537 "//third_party/google-truth:google_truth_java", 1538 "//third_party/junit", 1539 "//third_party/netty-tcnative:netty-tcnative-so", 1540 "//third_party/netty4:netty_all_java", 1541 ] + cronet_tests_androidx_common_srcs 1542 1543 proguard_enabled = true 1544 proguard_configs = [ "test/proguard.cfg" ] 1545 srcjar_deps = [ 1546 ":cronet_jni_registration", 1547 ":cronet_tests_jni_registration", 1548 ] 1549} 1550 1551android_apk("cronet_perf_test_apk") { 1552 testonly = true 1553 apk_name = "CronetPerfTest" 1554 android_manifest = "test/javaperftests/AndroidManifest.xml" 1555 shared_libraries = [ 1556 ":cronet", 1557 ":cronet_tests", 1558 ] 1559 1560 sources = 1561 [ "test/javaperftests/src/org/chromium/net/CronetPerfTestActivity.java" ] 1562 1563 deps = [ 1564 ":cronet_all_java", 1565 ":cronet_combine_proguard_flags", 1566 ":cronet_javatests", 1567 ":cronet_test_apk_java", 1568 "//base:base_java", 1569 "//build/android:build_java", 1570 "//third_party/android_sdk:android_test_mock_java", 1571 "//third_party/jni_zero:jni_zero_java", 1572 "//third_party/junit", 1573 ] 1574 1575 if (!is_java_debug) { 1576 proguard_enabled = true 1577 proguard_configs = [ 1578 "$target_gen_dir/cronet_impl_native_proguard.cfg", 1579 "cronet_shared_proguard.cfg", 1580 "cronet_impl_common_proguard.cfg", 1581 "httpengine_native_provider_proguard.cfg", 1582 "test/proguard.cfg", 1583 "//testing/android/proguard_for_test.flags", 1584 "//third_party/jni_zero/proguard_for_test.flags", 1585 ] 1586 enable_proguard_checks = false 1587 } 1588 srcjar_deps = [ 1589 ":cronet_jni_registration", 1590 ":cronet_tests_jni_registration", 1591 ] 1592} 1593 1594test("cronet_unittests_android") { 1595 deps = [ 1596 ":cronet_base_feature_unittest", 1597 ":cronet_impl_native_java", 1598 ":cronet_static", 1599 "//base", 1600 "//base/test:test_support", 1601 "//components/cronet:cronet_common_unittests", 1602 "//components/prefs:test_support", 1603 "//net", 1604 "//net:test_support", 1605 "//net/android:net_java", 1606 "//testing/gtest", 1607 ] 1608 1609 if (!is_cronet_for_aosp_build) { 1610 deps += [ "//components/cronet/native:cronet_native_unittests" ] 1611 } 1612 1613 sources = [ "../run_all_unittests.cc" ] 1614 1615 data = [ "//components/cronet/testing/test_server/data/" ] 1616 1617 if (is_android) { 1618 shard_timeout = 180 1619 } 1620} 1621 1622test("cronet_tests_android") { 1623 deps = [ 1624 ":cronet_impl_native_java", 1625 ":cronet_static", 1626 "//base", 1627 "//base/test:test_support", 1628 "//components/prefs:test_support", 1629 "//net", 1630 "//net:test_support", 1631 "//net/android:net_java", 1632 "//testing/gtest", 1633 ] 1634 1635 if (!is_cronet_for_aosp_build) { 1636 deps += [ "//components/cronet/native/test:cronet_native_tests" ] 1637 } 1638 1639 allow_cleartext_traffic = true 1640 1641 sources = [ "../run_all_unittests.cc" ] 1642 1643 defines = [ "CRONET_TESTS_IMPLEMENTATION" ] 1644 1645 data = [ "//components/cronet/testing/test_server/data/" ] 1646 1647 if (is_android) { 1648 shard_timeout = 180 1649 } 1650} 1651 1652_test_package_dir = "$root_out_dir/cronet/test" 1653_tests_java_jars_without_jni_path = 1654 "$target_out_dir/cronet_tests_java_without_jni.jar" 1655_test_deps = cronet_javatests_deps_to_package + [ 1656 ":cronet_javatests", 1657 "//third_party/netty4:netty_all_java", 1658 ] 1659 1660# First, generate an intermediate jar with the various source GEN_JNI classes 1661# removed to avoid conflicts... 1662repackage_jars("repackage_test_jars_without_jni") { 1663 output = _tests_java_jars_without_jni_path 1664 testonly = true 1665 deps = _test_deps 1666 remove_gen_jni = true 1667} 1668 1669# This target exists to provide :repackage_test_jars with a suitable target to 1670# depend on (since dist_aar only pulls in deps of type "java_library"). 1671android_java_prebuilt("repackage_test_jars_without_jni_java") { 1672 jar_path = _tests_java_jars_without_jni_path 1673 testonly = true 1674 1675 # Since only the unprocessed jar is used, no need to complete the bytecode 1676 # processing step. 1677 enable_bytecode_checks = false 1678 deps = [ ":repackage_test_jars_without_jni" ] 1679} 1680 1681# ...then, generate the final, merged GEN_JNI class... 1682generate_jni_registration("cronet_tests_jni_registration") { 1683 java_targets = _test_deps 1684 manual_jni_registration = true 1685 testonly = true 1686 module_name = "cronet_tests" 1687 _subdir = rebase_path(target_gen_dir, root_gen_dir) 1688 cpp_codegen_output = 1689 "$jni_headers_dir/$_subdir/cronet_tests_jni_registration_generated.h" 1690} 1691android_library("cronet_tests_jni_registration_java") { 1692 srcjar_deps = [ ":cronet_tests_jni_registration" ] 1693 testonly = true 1694} 1695 1696# ...and finally, generate the test jar with the final GEN_JNI class. 1697repackage_jars("repackage_test_jars") { 1698 output = "$_test_package_dir/cronet_tests_java.jar" 1699 testonly = true 1700 deps = [ 1701 ":cronet_tests_jni_registration_java", 1702 ":repackage_test_jars_without_jni_java", 1703 ] 1704 remove_gen_jni = false 1705} 1706 1707zip("jar_cronet_sample_source") { 1708 inputs = [ 1709 "sample/AndroidManifest.xml", 1710 "sample/README", 1711 "sample/res/drawable/ic_action_home.xml", 1712 "sample/res/drawable/ic_flag.xml", 1713 "sample/res/layout/main_activity.xml", 1714 "sample/res/layout/main_fragment.xml", 1715 "sample/res/layout/options_fragment.xml", 1716 "sample/res/layout/toggle_view.xml", 1717 "sample/res/values/colors.xml", 1718 "sample/res/values/dimens.xml", 1719 "sample/res/values/strings.xml", 1720 "sample/res/values/styles.xml", 1721 "sample/src/org/chromium/cronet_sample_apk/Action.java", 1722 "sample/src/org/chromium/cronet_sample_apk/ActionData.java", 1723 "sample/src/org/chromium/cronet_sample_apk/CronetSampleActivity.java", 1724 "sample/src/org/chromium/cronet_sample_apk/CronetSampleApplication.java", 1725 "sample/src/org/chromium/cronet_sample_apk/MainFragment.java", 1726 "sample/src/org/chromium/cronet_sample_apk/Options.java", 1727 "sample/src/org/chromium/cronet_sample_apk/OptionsFragment.java", 1728 "sample/src/org/chromium/cronet_sample_apk/OptionsRecyclerViewAdapter.java", 1729 "sample/src/org/chromium/cronet_sample_apk/SampleActivityViewModel.java", 1730 ] 1731 output = "$_package_dir/cronet-sample-src.jar" 1732 base_dir = "sample" 1733} 1734 1735jar_src("jar_cronet_impl_native_java_source") { 1736 src_search_dirs = [ 1737 "//base/android/java/src", 1738 "//base/test/android/javatests/src/stub", 1739 "//build/android/java/src", 1740 "//components/cronet/android/java/src", 1741 "//net/android/java/src", 1742 "//url/android/java/src", 1743 "//third_party/jni_zero/java/src", 1744 ] 1745 source_deps = [ 1746 ":cronet_impl_native_java", 1747 "//base:base_java", 1748 "//build/android:build_java", 1749 "//net/android:net_java", 1750 "//third_party/jni_zero:jni_zero_java", 1751 "//url:url_java", 1752 ] 1753 1754 srcjar_deps = cronet_impl_native_java_srcjar_deps 1755 srcjar_deps += [ 1756 ":cronet_jni_registration", 1757 "//base:base_android_java_enums_srcjar", 1758 "//net/android:net_android_java_enums_srcjar", 1759 "//net/android:net_errors_java", 1760 ] 1761 excluded_patterns = _jar_excluded_patterns 1762 jar_path = "$_package_dir/cronet_impl_native_java-src.jar" 1763} 1764 1765action("generate_licenses") { 1766 _license_path = "$_package_dir/LICENSE" 1767 1768 script = "//tools/licenses/licenses.py" 1769 outputs = [ _license_path ] 1770 args = [ 1771 "license_file", 1772 rebase_path(_license_path, root_build_dir), 1773 "--gn-target", 1774 "//components/cronet/android:cronet_non_test_package", 1775 "--gn-out-dir", 1776 ".", 1777 ] 1778} 1779 1780action_with_pydeps("generate_javadoc") { 1781 script = "//components/cronet/tools/generate_javadoc.py" 1782 depfile = "$target_gen_dir/$target_name.d" 1783 _zip_file = "$target_gen_dir/$target_name.zip" 1784 outputs = [ _zip_file ] 1785 _src_jar = "$_package_dir/cronet_api-src.jar" 1786 _shared_jar = "$_package_dir/cronet_shared-src.jar" 1787 1788 _annotations_deps = [ 1789 "//third_party/androidx:androidx_annotation_annotation_experimental_java__classes", 1790 "//third_party/androidx:androidx_annotation_annotation_jvm_java", 1791 ] 1792 1793 _build_config_deps = [] 1794 _build_configs = [] 1795 1796 foreach(dep, _annotations_deps) { 1797 _build_config_dep = "$dep$build_config_target_suffix" 1798 _build_config_deps += [ _build_config_dep ] 1799 1800 _build_config = get_label_info(dep, "target_gen_dir") + "/" + 1801 get_label_info(dep, "name") + ".build_config.json" 1802 1803 _build_configs += [ _build_config ] 1804 } 1805 1806 deps = [ 1807 ":jar_cronet_api_source", 1808 ":jar_cronet_shared_source", 1809 ] + _annotations_deps + _build_config_deps 1810 1811 inputs = [ 1812 _src_jar, 1813 _shared_jar, 1814 android_sdk_jar, 1815 ] + _build_configs 1816 1817 _rebased_build_configs = [] 1818 foreach(config, _build_configs) { 1819 _rebased_build_configs += [ rebase_path(config, root_build_dir) ] 1820 } 1821 1822 args = [ 1823 "--output-dir", 1824 rebase_path(_package_dir, root_build_dir), 1825 "--input-dir", 1826 rebase_path("//components/cronet", root_build_dir), 1827 "--overview-file", 1828 rebase_path("$_package_dir/README.md.html", root_build_dir), 1829 "--readme-file", 1830 rebase_path("//components/cronet/README.md", root_build_dir), 1831 "--depfile", 1832 rebase_path(depfile, root_build_dir), 1833 "--zip-file", 1834 rebase_path(_zip_file, root_build_dir), 1835 "--android-sdk-jar", 1836 rebase_path(android_sdk_jar, root_build_dir), 1837 "--classpath-jars", 1838 rebase_path(_shared_jar, root_build_dir), 1839 1840 # JavaDoc is generated from Cronet's API source jar. 1841 "--input-src-jar", 1842 rebase_path(_src_jar, root_build_dir), 1843 ] 1844 1845 foreach(rebased_config, _rebased_build_configs) { 1846 args += [ 1847 "--support-annotations-jars=@FileArg($rebased_config:deps_info:unprocessed_jar_path)", 1848 "--classpath-jars=@FileArg($rebased_config:deps_info:javac_full_classpath)", 1849 ] 1850 } 1851} 1852 1853copy("cronet_package_copy") { 1854 sources = [ 1855 "$target_gen_dir/cronet_impl_native_proguard.cfg", 1856 "//AUTHORS", 1857 "//chrome/VERSION", 1858 "api_version.txt", 1859 "cronet_impl_common_proguard.cfg", 1860 "cronet_impl_fake_proguard.cfg", 1861 "cronet_impl_platform_proguard.cfg", 1862 "cronet_shared_proguard.cfg", 1863 "httpengine_native_provider_proguard.cfg", 1864 ] 1865 outputs = [ "$_package_dir/{{source_file_part}}" ] 1866 1867 deps = [ 1868 ":cronet_api_java", 1869 ":cronet_combine_proguard_flags", 1870 ":cronet_impl_common_java", 1871 ":cronet_impl_fake_java", 1872 ":cronet_impl_platform_java", 1873 ":cronet_shared_java", 1874 ":httpengine_native_provider_java", 1875 ] 1876} 1877 1878copy("cronet_package_copy_native_headers") { 1879 sources = cronet_native_public_headers + grpc_public_headers 1880 1881 outputs = [ "$_package_dir/include/{{source_file_part}}" ] 1882} 1883 1884copy("cronet_package_copy_native_lib") { 1885 sources = [ "$root_out_dir/" + _cronet_shared_lib_file_name ] 1886 outputs = [ "$_package_dir/libs/${android_app_abi}/" + 1887 _cronet_shared_lib_file_name ] 1888 deps = [ ":cronet" ] 1889} 1890 1891copy("cronet_package_copy_native_lib_unstripped") { 1892 sources = [ "$root_out_dir/lib.unstripped/" + _cronet_shared_lib_file_name ] 1893 outputs = [ "$_package_dir/symbols/${android_app_abi}/" + 1894 _cronet_shared_lib_file_name ] 1895 deps = [ ":cronet" ] 1896} 1897 1898copy("cronet_package_copy_native_test_lib") { 1899 testonly = true 1900 sources = [ 1901 "$root_out_dir/libcronet_tests.so", 1902 "$root_out_dir/libnetty-tcnative.so", 1903 ] 1904 outputs = 1905 [ "$_test_package_dir/libs/${android_app_abi}/{{source_file_part}}" ] 1906 deps = [ 1907 ":cronet_tests", 1908 "//third_party/netty-tcnative:netty-tcnative-so", 1909 ] 1910} 1911 1912copy("cronet_package_copy_native_test_lib_unstripped") { 1913 testonly = true 1914 sources = [ 1915 "$root_out_dir/lib.unstripped/libcronet_tests.so", 1916 "$root_out_dir/lib.unstripped/libnetty-tcnative.so", 1917 ] 1918 outputs = 1919 [ "$_test_package_dir/symbols/${android_app_abi}/{{source_file_part}}" ] 1920 deps = [ 1921 ":cronet_tests", 1922 "//third_party/netty-tcnative:netty-tcnative-so", 1923 ] 1924} 1925 1926copy("cronet_package_copy_test_assets") { 1927 testonly = true 1928 sources = [ "//components/cronet/testing/test_server/data" ] 1929 outputs = [ "$_test_package_dir/assets/test" ] 1930} 1931 1932copy("cronet_package_copy_test_resources") { 1933 testonly = true 1934 sources = [ "//components/cronet/android/test/res" ] 1935 outputs = [ "$_test_package_dir/res" ] 1936} 1937 1938copy("cronet_package_copy_test_files") { 1939 testonly = true 1940 sources = [ 1941 "//net/data/ssl/certificates/cronet-quic-chain.pem", 1942 "//net/data/ssl/certificates/cronet-quic-leaf-cert.key", 1943 "//net/data/ssl/certificates/cronet-quic-leaf-cert.key.pkcs8.pem", 1944 "//net/data/ssl/certificates/expired_cert.pem", 1945 "//net/data/ssl/certificates/quic-chain.pem", 1946 "//net/data/ssl/certificates/quic-leaf-cert.key", 1947 "//net/data/ssl/certificates/quic-leaf-cert.key.pkcs8.pem", 1948 "//net/data/ssl/certificates/root_ca_cert.pem", 1949 ] 1950 outputs = [ "$_test_package_dir/assets/test_files/net/data/ssl/certificates/{{source_file_part}}" ] 1951 deps = [ 1952 # Not really dependent, but builds can fail if these two targets attempt 1953 # to create the "assets" subdirectory simultaneously. 1954 ":cronet_package_copy_test_assets", 1955 ] 1956} 1957 1958copy("cronet_package_copy_resources") { 1959 sources = [ "api/res/raw/keep_cronet_api.xml" ] 1960 outputs = [ "$_package_dir/res/raw/{{source_file_part}}" ] 1961} 1962 1963# Enforce that ARM Neon is not used when building for ARMv7 1964if (target_cpu == "arm" && arm_version == 7 && !arm_use_neon) { 1965 action("enforce_no_neon") { 1966 script = "//components/cronet/tools/check_no_neon.py" 1967 outputs = [ "$target_gen_dir/$target_name.stamp" ] 1968 args = [ 1969 rebase_path("${android_tool_prefix}objdump", root_build_dir), 1970 1971 # libcronet.so may contain ARM Neon instructions from BoringSSL, but these 1972 # are only used after checking whether the CPU supports NEON at runtime, 1973 # so instead check base/ as it represents a large swath of code that only 1974 # contains Neon instructions when Neon is enabled by default. 1975 rebase_path("$root_out_dir/obj/base/base/*.o", root_build_dir), 1976 "--stamp", 1977 rebase_path(outputs[0], root_build_dir), 1978 ] 1979 deps = [ "//base:base" ] 1980 } 1981} 1982 1983# Enforce restrictions for API<->impl boundary. 1984action("api_static_checks") { 1985 script = "//components/cronet/tools/api_static_checks.py" 1986 outputs = [ "$target_gen_dir/$target_name.stamp" ] 1987 _api_jar = "$_package_dir/cronet_api.jar" 1988 _common_jar = "$_package_dir/cronet_impl_common_java.jar" 1989 _platform_jar = "$_package_dir/cronet_impl_platform_java.jar" 1990 _native_jar = "$_package_dir/cronet_impl_native_java.jar" 1991 args = [ 1992 "--api_jar", 1993 rebase_path(_api_jar, root_build_dir), 1994 "--impl_jar", 1995 rebase_path(_common_jar, root_build_dir), 1996 "--impl_jar", 1997 rebase_path(_platform_jar, root_build_dir), 1998 "--impl_jar", 1999 rebase_path(_native_jar, root_build_dir), 2000 "--stamp", 2001 rebase_path(outputs[0], root_build_dir), 2002 ] 2003 deps = [ 2004 ":repackage_api", 2005 ":repackage_impl_common", 2006 ":repackage_native", 2007 ":repackage_platform", 2008 ] 2009 inputs = [ 2010 _api_jar, 2011 _common_jar, 2012 _platform_jar, 2013 _native_jar, 2014 "//components/cronet/tools/update_api.py", 2015 ] 2016 sources = [ 2017 "//components/cronet/android/api.txt", 2018 "//components/cronet/android/api_version.txt", 2019 ] 2020} 2021 2022action("gn2bp_check") { 2023 script = "//components/cronet/gn2bp/validate_gn2bp.py" 2024 sources = [ 2025 "$_gn_path", 2026 "//components/cronet/gn2bp/gen_android_bp.py", 2027 "//tools/mb/mb.py", 2028 ] 2029 outputs = [ "$target_gen_dir/$target_name.stamp" ] 2030 args = [ 2031 "--stamp", 2032 rebase_path(outputs[0], root_build_dir), 2033 ] 2034} 2035 2036action("dependencies_checks") { 2037 script = "//components/cronet/tools/check_cronet_dependencies.py" 2038 inputs = [ "//components/cronet/android/dependencies.txt" ] 2039 sources = [ "$_gn_path" ] 2040 outputs = [ "$target_gen_dir/$target_name.stamp" ] 2041 deps = [ 2042 ":cronet", 2043 ":cronet_api_helpers_java", 2044 ":cronet_api_java", 2045 ":cronet_impl_native_java", 2046 ] 2047 abs_deps = [] 2048 foreach(dep, deps) { 2049 abs_deps += [ get_label_info(dep, "label_no_toolchain") ] 2050 } 2051 args = [ 2052 "--old-dependencies", 2053 rebase_path(inputs[0], root_build_dir), 2054 "--stamp", 2055 rebase_path(outputs[0], root_build_dir), 2056 "--root-deps", 2057 ] 2058 foreach(abs_dep, abs_deps) { 2059 args += [ abs_dep ] 2060 } 2061} 2062 2063group("cronet_non_test_package") { 2064 # Target containing all of cronet's non-test targets. 2065 # Enforce building with ICU alternatives, crbug.com/611621. 2066 # Enforce that arm_use_neon==false when building for ARMv7 by 2067 # not including any deps in cronet_package target otherwise. 2068 if (use_platform_icu_alternatives && 2069 (!(target_cpu == "arm" && arm_version == 7) || !arm_use_neon)) { 2070 deps = [ 2071 ":cronet_package_copy", 2072 ":cronet_package_copy_native_headers", 2073 ":cronet_package_copy_native_lib", 2074 ":cronet_package_copy_native_lib_unstripped", 2075 ":cronet_package_copy_resources", 2076 ":jar_cronet_api_source", 2077 ":jar_cronet_impl_common_java_source", 2078 ":jar_cronet_impl_fake_java_source", 2079 ":jar_cronet_impl_native_java_source", 2080 ":jar_cronet_impl_platform_java_source", 2081 ":jar_cronet_sample_source", 2082 ":jar_cronet_shared_source", 2083 ":jar_httpengine_native_provider_java_source", 2084 ":repackage_api", 2085 ":repackage_fake", 2086 ":repackage_httpengine_native_provider", 2087 ":repackage_impl_common", 2088 ":repackage_native", 2089 ":repackage_platform", 2090 ":repackage_shared", 2091 ] 2092 if (current_cpu == "arm" && arm_version == 7) { 2093 deps += [ ":enforce_no_neon" ] 2094 } 2095 } 2096} 2097 2098group("cronet_test_package") { 2099 # Target containing all of cronet's test targets. 2100 testonly = true 2101 2102 # Don't build for MIPS where tests aren't run. 2103 if (current_cpu != "mipsel" && current_cpu != "mips64el") { 2104 deps = [ 2105 ":api_static_checks", 2106 ":cronet_package_copy_native_test_lib", 2107 ":cronet_package_copy_native_test_lib_unstripped", 2108 ":cronet_package_copy_test_assets", 2109 ":cronet_package_copy_test_files", 2110 ":cronet_package_copy_test_resources", 2111 ":cronet_sizes", 2112 ":repackage_test_jars", 2113 ] 2114 } 2115} 2116 2117# Everything added here will be executed in the CQ. 2118group("cronet_package_android") { 2119 # Target containing all of cronet's targets both test and non-test ones. 2120 # Marked as testonly as it contains test-only targets too. 2121 testonly = true 2122 deps = [ 2123 ":cronet_combined_proguard_flags_golden_test", 2124 ":cronet_non_test_package", 2125 ":cronet_test_package", 2126 ":dependencies_checks", 2127 ":generate_javadoc", 2128 ":generate_licenses", 2129 ] 2130} 2131 2132# Everything added here will be executed in the CI. 2133group("cronet_package_ci") { 2134 deps = [ ":gn2bp_check" ] 2135} 2136 2137group("cronet_android_mainline") { 2138 # Target for android mainline which removed unnecessary deps from 2139 # "cronet_package_android" 2140 2141 # Enforce building with ICU alternatives, crbug.com/611621. 2142 # Enforce that arm_use_neon==false when building for ARMv7 by 2143 # not including any deps in cronet_package target otherwise. 2144 if (use_platform_icu_alternatives && 2145 (!(target_cpu == "arm" && arm_version == 7) || !arm_use_neon)) { 2146 deps = [ 2147 ":cronet_package_copy_native_lib", 2148 ":jar_cronet_api_source", 2149 ":repackage_api", 2150 ":repackage_impl_common", 2151 ":repackage_native", 2152 ":repackage_shared", 2153 ] 2154 if (current_cpu == "arm" && arm_version == 7) { 2155 deps += [ ":enforce_no_neon" ] 2156 } 2157 } 2158} 2159