diff options
Diffstat (limited to 'chromium/components/cronet/android/BUILD.gn')
-rw-r--r-- | chromium/components/cronet/android/BUILD.gn | 2162 |
1 files changed, 1075 insertions, 1087 deletions
diff --git a/chromium/components/cronet/android/BUILD.gn b/chromium/components/cronet/android/BUILD.gn index fc1f39aaee3..120352c9388 100644 --- a/chromium/components/cronet/android/BUILD.gn +++ b/chromium/components/cronet/android/BUILD.gn @@ -13,8 +13,6 @@ import("//third_party/netty4/netty4.gni") import("//third_party/protobuf/proto_library.gni") import("//url/features.gni") -assert(!is_component_build, "Cronet requires static library build.") - generate_jni("cronet_jni_headers") { sources = [ "java/src/org/chromium/net/impl/CronetBidirectionalStream.java", @@ -146,23 +144,8 @@ zip("cronet_impl_version_srcjar") { _cronet_version_header_include_dir = "$target_gen_dir/cronet_version_header" -proto_library("cronet_android_cert_proto") { - visibility = [ "//components/cronet/android/*" ] - - sources = [ - "//components/cronet/android/cert/proto/cert_verification.proto", - ] - - deps = [ - "//third_party/protobuf:protobuf_lite", - ] - - extra_configs = [ "//build/config/compiler:wexit_time_destructors" ] -} - source_set("cronet_static") { deps = [ - ":cronet_android_cert_proto", ":cronet_jni_headers", ":cronet_jni_registration", "//base", @@ -173,18 +156,15 @@ source_set("cronet_static") { "//components/metrics", "//components/prefs", "//net", + "//third_party/zlib:zlib", "//url", "//url:url_features", ] sources = [ - "//components/cronet/android/cert/cert_verifier_cache_serializer.cc", - "//components/cronet/android/cert/cert_verifier_cache_serializer.h", "//components/cronet/android/cronet_bidirectional_stream_adapter.cc", "//components/cronet/android/cronet_bidirectional_stream_adapter.h", "//components/cronet/android/cronet_library_loader.cc", "//components/cronet/android/cronet_library_loader.h", - "//components/cronet/android/cronet_upload_data_stream.cc", - "//components/cronet/android/cronet_upload_data_stream.h", "//components/cronet/android/cronet_upload_data_stream_adapter.cc", "//components/cronet/android/cronet_upload_data_stream_adapter.h", "//components/cronet/android/cronet_url_request_adapter.cc", @@ -222,7 +202,6 @@ config("hide_all_but_jni_onload_and_cronet") { } _cronet_shared_lib_name = "cronet.$chrome_version_full" -_cronet_shared_lib_file_name = "lib" + _cronet_shared_lib_name + ".so" shared_library("cronet") { output_name = _cronet_shared_lib_name @@ -454,467 +433,212 @@ android_apk("cronet_sample_apk") { ] } -# cronet_sample_test_apk_resources is identical to -# cronet_sample_apk_resources. The two have to be different targets because -# targets which are common between the "instrumentation test apk" and the -# "tested apk" are removed from the "instrumentation test apk". -android_resources("cronet_sample_test_apk_resources") { - resource_dirs = [ "sample/res" ] - android_manifest = "sample/javatests/AndroidManifest.xml" -} - -instrumentation_test_apk("cronet_sample_test_apk") { - apk_name = "CronetSampleTest" - apk_under_test = ":cronet_sample_apk" - android_manifest = "sample/javatests/AndroidManifest.xml" - java_files = [ - "sample/javatests/src/org/chromium/cronet_sample_apk/CronetSampleTest.java", - ] - deps = [ - "//third_party/android_support_test_runner:rules_java", - "//third_party/android_support_test_runner:runner_java", - "//third_party/junit", - ] - - proguard_enabled = true - proguard_configs = [ "sample/javatests/proguard.cfg" ] -} - -generate_jni("cronet_tests_jni_headers") { - testonly = true - sources = [ - "test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java", - "test/javatests/src/org/chromium/net/CronetUrlRequestTest.java", - "test/javatests/src/org/chromium/net/ExperimentalOptionsTest.java", - "test/src/org/chromium/net/CronetTestUtil.java", - "test/src/org/chromium/net/MockCertVerifier.java", - "test/src/org/chromium/net/MockUrlRequestJobFactory.java", - "test/src/org/chromium/net/NativeTestServer.java", - "test/src/org/chromium/net/QuicTestServer.java", - "test/src/org/chromium/net/TestUploadDataStreamHandler.java", - ] - jni_package = "cronet_tests" -} - -shared_library("cronet_tests") { - testonly = true +action("cronet_combine_proguard_flags") { + script = "//components/cronet/tools/generate_proguard_file.py" sources = [ - # While "cronet_tests" cannot depend on "cronet_static", and hence cannot - # call any Cronet functions, it can access fields of Cronet objects, so add - # Cronet header files to facilitate accessing these fields. - "//components/cronet/android/cronet_url_request_adapter.h", - "//components/cronet/android/cronet_url_request_context_adapter.h", - "//components/cronet/cronet_url_request.h", - "//components/cronet/cronet_url_request_context.h", - "//components/cronet/url_request_context_config.h", - "test/cronet_test_jni.cc", - "test/cronet_test_util.cc", - "test/cronet_test_util.h", - "test/cronet_url_request_context_config_test.cc", - "test/cronet_url_request_context_config_test.h", - "test/cronet_url_request_test.cc", - "test/experimental_options_test.cc", - "test/mock_cert_verifier.cc", - "test/mock_url_request_job_factory.cc", - "test/native_test_server.cc", - "test/quic_test_server.cc", - "test/test_upload_data_stream_handler.cc", - "test/test_upload_data_stream_handler.h", - ] - - deps = [ - ":cronet", - ":cronet_tests_jni_headers", - "//base", - "//base:i18n", - "//base/test:test_support", - "//components/cronet:cronet_version_header", - "//components/cronet/test:test_support", - "//components/prefs", - "//net", - "//net:simple_quic_tools", - "//net:test_support", - "//third_party/icu", + "//base/android/proguard/chromium_code.flags", + "//components/cronet/android/cronet_impl_native_proguard.cfg", ] - - include_dirs = [ _cronet_version_header_include_dir ] - - configs -= [ "//build/config/android:hide_all_but_jni_onload" ] - configs += [ "//build/config/android:hide_all_but_jni" ] -} - -android_resources("cronet_test_apk_resources") { - testonly = true - resource_dirs = [ - "test/res", - "test/smoketests/res/native", + outputs = [ + "$target_gen_dir/cronet_impl_native_proguard.cfg", ] - android_manifest = "test/AndroidManifest.xml" + args = [ "--output-file" ] + rebase_path(outputs, root_build_dir) + + rebase_path(sources, root_build_dir) } -android_library("cronet_test_apk_java") { - testonly = true - - java_files = [ - "test/src/org/chromium/net/CronetTestApplication.java", - "test/src/org/chromium/net/CronetTestUtil.java", - "test/src/org/chromium/net/Http2TestHandler.java", - "test/src/org/chromium/net/Http2TestServer.java", - "test/src/org/chromium/net/MockCertVerifier.java", - "test/src/org/chromium/net/MockUrlRequestJobFactory.java", - "test/src/org/chromium/net/NativeTestServer.java", - "test/src/org/chromium/net/QuicTestServer.java", - "test/src/org/chromium/net/TestFilesInstaller.java", - "test/src/org/chromium/net/TestUploadDataStreamHandler.java", - ] +_package_dir = "$root_out_dir/cronet" +# These package_* targets represent how Cronet is used in production code. +# Using these targets is preferred to using the underlying targets like +# :cronet_api_java or :cronet_impl_all_java, as it better tests production +# usage. +android_java_prebuilt("package_api_java") { + jar_path = "$_package_dir/cronet_api.jar" deps = [ - ":cronet_api_java", - ":cronet_impl_all_java", - "//base:base_java", - "//base:base_java_test_support", - "//net/android:net_java_test_support", - "//third_party/junit", - "//third_party/netty4:netty_all_java", + ":copy_cronet_java8_jars_cronet_api_javaX", ] } -cronet_smoketests_platform_only_common_srcs = [ - "test/smoketests/src/org/chromium/net/smoke/ChromiumPlatformOnlyTestSupport.java", - "test/smoketests/src/org/chromium/net/smoke/CronetSmokeTestRule.java", - "test/smoketests/src/org/chromium/net/smoke/HttpTestServer.java", - "test/smoketests/src/org/chromium/net/smoke/SmokeTestRequestCallback.java", - "test/smoketests/src/org/chromium/net/smoke/TestSupport.java", -] - -cronet_smoketests_native_common_srcs = cronet_smoketests_platform_only_common_srcs + [ - "test/smoketests/src/org/chromium/net/smoke/ChromiumNativeTestSupport.java", - "test/smoketests/src/org/chromium/net/smoke/NativeCronetTestRule.java", - ] - -android_library("cronet_smoketests_native_java") { - testonly = true - java_files = [ - "test/smoketests/src/org/chromium/net/smoke/Http2Test.java", - "test/smoketests/src/org/chromium/net/smoke/QuicTest.java", - ] + cronet_smoketests_native_common_srcs - +android_java_prebuilt("package_impl_common_java") { + jar_path = "$_package_dir/cronet_impl_common_java.jar" deps = [ - ":cronet_api_java", - ":cronet_test_apk_java", - "//base:base_java", - "//base:base_java_test_support", - "//third_party/android_support_test_runner:runner_java", - "//third_party/junit", - "//third_party/netty4:netty_all_java", + ":package_api_java", + ":repackage_extracted_common_jars", ] } -android_apk("cronet_test_apk") { - testonly = true - apk_name = "CronetTest" - android_manifest = "test/AndroidManifest.xml" - shared_libraries = [ - ":cronet", - ":cronet_tests", - ] - loadable_modules = [ "$root_out_dir/libnetty-tcnative.so" ] - +android_java_prebuilt("package_impl_native_java") { + jar_path = "$_package_dir/cronet_impl_native_java.jar" deps = [ - ":cronet_combine_proguard_flags", - ":cronet_test_apk_resources", - "//base:base_java", - "//third_party/netty-tcnative:netty-tcnative-so", - ] - - proguard_enabled = true - - proguard_configs = [ - "$target_gen_dir/cronet_impl_native_proguard.cfg", - "cronet_impl_common_proguard.cfg", - "cronet_impl_platform_proguard.cfg", + ":package_api_java", + ":package_impl_common_java", + ":repackage_extracted_native_jars", + "//third_party/jsr-305:jsr_305_javalib", ] } -cronet_javatests_deps_to_package = [ - ":cronet_test_apk_java", - "//base:base_java", - "//base:base_java_test_support", - "//net/android:embedded_test_server_aidl_java", - "//net/android:net_java", - "//net/android:net_java_test_support", - "//url:url_java", -] - -android_library("cronet_javatests") { - testonly = true - - java_files = [ - "test/javatests/src/org/chromium/net/BidirectionalStreamQuicTest.java", - "test/javatests/src/org/chromium/net/BidirectionalStreamTest.java", - "test/javatests/src/org/chromium/net/BrotliTest.java", - "test/javatests/src/org/chromium/net/Criteria.java", - "test/javatests/src/org/chromium/net/CronetEngineBuilderTest.java", - "test/javatests/src/org/chromium/net/CronetStressTest.java", - "test/javatests/src/org/chromium/net/CronetTestRule.java", - "test/javatests/src/org/chromium/net/CronetTestRuleTest.java", - "test/javatests/src/org/chromium/net/CronetUploadTest.java", - "test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java", - "test/javatests/src/org/chromium/net/CronetUrlRequestTest.java", - "test/javatests/src/org/chromium/net/DiskStorageTest.java", - "test/javatests/src/org/chromium/net/ExperimentalOptionsTest.java", - "test/javatests/src/org/chromium/net/GetStatusTest.java", - "test/javatests/src/org/chromium/net/MetricsTestUtil.java", - "test/javatests/src/org/chromium/net/NetworkChangeNotifierTest.java", - "test/javatests/src/org/chromium/net/NQETest.java", - "test/javatests/src/org/chromium/net/PkpTest.java", - "test/javatests/src/org/chromium/net/QuicTest.java", - "test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java", - "test/javatests/src/org/chromium/net/TestBidirectionalStreamCallback.java", - "test/javatests/src/org/chromium/net/TestDrivenDataProvider.java", - "test/javatests/src/org/chromium/net/TestNetworkQualityRttListener.java", - "test/javatests/src/org/chromium/net/TestNetworkQualityThroughputListener.java", - "test/javatests/src/org/chromium/net/TestUploadDataProvider.java", - "test/javatests/src/org/chromium/net/TestUrlRequestCallback.java", - "test/javatests/src/org/chromium/net/UploadDataProvidersTest.java", - "test/javatests/src/org/chromium/net/urlconnection/CronetBufferedOutputStreamTest.java", - "test/javatests/src/org/chromium/net/urlconnection/CronetChunkedOutputStreamTest.java", - "test/javatests/src/org/chromium/net/urlconnection/CronetFixedModeOutputStreamTest.java", - "test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLConnectionTest.java", - "test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLStreamHandlerTest.java", - "test/javatests/src/org/chromium/net/urlconnection/CronetURLStreamHandlerFactoryTest.java", - "test/javatests/src/org/chromium/net/urlconnection/MessageLoopTest.java", - "test/javatests/src/org/chromium/net/urlconnection/QuicUploadTest.java", - "test/javatests/src/org/chromium/net/urlconnection/TestUtil.java", - "test/javatests/src/org/chromium/net/UrlResponseInfoTest.java", - ] - - # Adding deps here won't include those deps in the cronet_tests_java.jar. - # Please add to cronet_javatests_deps_to_package instead. +android_java_prebuilt("package_impl_platform_java") { + jar_path = "$_package_dir/cronet_impl_platform_java.jar" deps = [ - ":cronet_api_java", - ":cronet_impl_all_java", - "//third_party/android_support_test_runner:runner_java", - "//third_party/junit", - ] - deps += cronet_javatests_deps_to_package - data = [ - "//components/cronet/test/data/", + ":copy_cronet_java8_jars_cronet_impl_platform_base_javaX", + ":package_api_java", + ":package_impl_common_java", ] } -instrumentation_test_apk("cronet_test_instrumentation_apk") { - apk_name = "CronetTestInstrumentation" - apk_under_test = ":cronet_test_apk" - android_manifest = "test/javatests/AndroidManifest.xml" - - deps = [ - ":cronet_api_java", - ":cronet_impl_all_java", - ":cronet_javatests", - ":cronet_smoketests_native_java", - ":cronet_test_apk_java", - "//base:base_java", - "//base:base_java_test_support", - "//net/android:net_java", - "//net/android:net_java_test_support", - "//third_party/android_support_test_runner:runner_java", - "//third_party/hamcrest:hamcrest_core_java", - ] - deps += android_extra_test_deps - additional_apks = [ "//net/android:net_test_support_apk" ] - - data_deps = [ - "//net:test_support", - ] - - proguard_enabled = true - - proguard_configs = [ "test/proguard.cfg" ] -} +template("jar_src") { + action(target_name) { + _rebased_src_search_dirs = + rebase_path(invoker.src_search_dirs, root_build_dir) -android_resources("cronet_smoketests_platform_only_apk_resources") { - testonly = true - resource_dirs = [ "test/smoketests/res/platform_only" ] - android_manifest = "test/AndroidManifest.xml" -} + script = "//components/cronet/tools/jar_src.py" + depfile = "$target_gen_dir/$target_name.d" + outputs = [ + invoker.jar_path, + ] + args = [ + "--src-search-dirs=${_rebased_src_search_dirs}", + "--jar-path", + rebase_path(invoker.jar_path, root_build_dir), + "--depfile", + rebase_path(depfile, root_build_dir), + ] -android_library("cronet_smoketests_platform_only_java") { - testonly = true - java_files = [ "test/smoketests/src/org/chromium/net/smoke/PlatformOnlyEngineTest.java" ] + cronet_smoketests_platform_only_common_srcs - deps = [ - ":cronet_api_java", - "//base:base_java_test_support", - "//third_party/android_support_test_runner:runner_java", - "//third_party/junit", - "//third_party/netty4:netty_all_java", - ] -} + deps = [] + if (defined(invoker.deps)) { + deps += invoker.deps + } -android_apk("cronet_smoketests_platform_only_apk") { - testonly = true - apk_name = "PlatformOnlyEngineSmokeTest" - android_manifest = "test/AndroidManifest.xml" - java_files = [ "test/src/org/chromium/net/CronetTestApplication.java" ] + _excluded_patterns = [] + if (defined(invoker.excluded_patterns)) { + _excluded_patterns = invoker.excluded_patterns + } + _src_jars = [] - proguard_enabled = true - proguard_configs = [ - "cronet_impl_common_proguard.cfg", - "cronet_impl_platform_proguard.cfg", - ] + # Add src-jar files that are listed in "src_jars". + if (defined(invoker.src_jars)) { + _rebased_src_jars = rebase_path(invoker.src_jars, root_build_dir) + _src_jars += _rebased_src_jars + } - deps = [ - ":cronet_api_java", - ":cronet_impl_common_base_java", - ":cronet_impl_platform_base_java", - ":cronet_smoketests_platform_only_apk_resources", - ] -} + # Add src-jar files that are generated by dependencies in "srcjar_deps". + if (defined(invoker.srcjar_deps)) { + foreach(_srcjar_dep, invoker.srcjar_deps) { + _dep_gen_dir = get_label_info(_srcjar_dep, "target_gen_dir") + _dep_name = get_label_info(_srcjar_dep, "name") + _src_jars += rebase_path([ "$_dep_gen_dir/$_dep_name.srcjar" ]) + deps += [ _srcjar_dep ] + } + } -instrumentation_test_apk( - "cronet_smoketests_platform_only_instrumentation_apk") { - apk_name = "PlatformOnlyEngineSmokeTestInstrumentation" - apk_under_test = ":cronet_smoketests_platform_only_apk" - android_manifest = "test/javatests/AndroidManifest.xml" - deps = [ - ":cronet_smoketests_platform_only_java", - "//base:base_java_test_support", - "//third_party/android_support_test_runner:runner_java", - ] - deps += android_extra_test_deps + # Create the list of all source files that are given in "src_files". + _src_files = [] + if (defined(invoker.src_files)) { + _src_files += invoker.src_files + } - proguard_enabled = true + # Handle "source_deps". + _src_list_files = [] + if (defined(invoker.source_deps)) { + foreach(_source_dep, invoker.source_deps) { + _dep_gen_dir = get_label_info(_source_dep, "target_gen_dir") + _dep_name = get_label_info(_source_dep, "name") + _src_list_files += rebase_path([ "$_dep_gen_dir/$_dep_name.sources" ]) + deps += [ _source_dep ] + } + } + args += [ "--src-jar=${_src_jars}" ] + args += [ "--src-files=${_src_files}" ] + args += [ "--src-list-files=${_src_list_files}" ] + args += [ "--excluded-classes=$_excluded_patterns" ] - proguard_configs = [ "test/proguard.cfg" ] + inputs = _src_jars + inputs += _src_files + inputs += _src_list_files + } } -android_library("cronet_smoketests_missing_native_library_java") { - testonly = true - java_files = [ "test/smoketests/src/org/chromium/net/smoke/MissingNativeLibraryTest.java" ] + cronet_smoketests_native_common_srcs - deps = [ - ":cronet_api_java", - ":cronet_test_apk_java", - "//base:base_java", - "//base:base_java_test_support", - "//third_party/android_support_test_runner:runner_java", - "//third_party/junit", - "//third_party/netty4:netty_all_java", - ] +jar_src("jar_cronet_api_source") { + src_search_dirs = [ "api/src" ] + source_deps = [ ":cronet_api_java" ] + srcjar_deps = cronet_api_srcjar_deps + jar_path = "$_package_dir/cronet_api-src.jar" } -android_apk("cronet_smoketests_missing_native_library_apk") { - testonly = true - apk_name = "MissingNativeLibrarySmokeTest" - android_manifest = "test/AndroidManifest.xml" - deps = [ - ":cronet_api_java", - ":cronet_combine_proguard_flags", - ":cronet_impl_common_base_java", - ":cronet_impl_platform_base_java", - ":cronet_test_apk_resources", - ] - - proguard_enabled = true - proguard_configs = [ - "$target_gen_dir/cronet_impl_native_proguard.cfg", - "cronet_impl_common_proguard.cfg", - "cronet_impl_platform_proguard.cfg", - ] +jar_src("jar_cronet_impl_common_java_source") { + src_search_dirs = [ "java/src" ] + source_deps = [ ":cronet_impl_common_base_java" ] + srcjar_deps = cronet_impl_common_java_srcjar_deps + jar_path = "$_package_dir/cronet_impl_common_java-src.jar" } -instrumentation_test_apk( - "cronet_smoketests_missing_native_library_instrumentation_apk") { - apk_name = "MissingNativeLibrarySmokeTestInstrumentation" - apk_under_test = ":cronet_smoketests_missing_native_library_apk" - android_manifest = "test/javatests/AndroidManifest.xml" - - deps = [ - ":cronet_smoketests_missing_native_library_java", - ] - deps += android_extra_test_deps - - proguard_enabled = true - - proguard_configs = [ "test/proguard.cfg" ] +jar_src("jar_cronet_impl_platform_java_source") { + src_search_dirs = [ "java/src" ] + source_deps = [ ":cronet_impl_platform_base_java" ] + jar_path = "$_package_dir/cronet_impl_platform_java-src.jar" } -android_library("cronet_perf_test_apk_java") { - testonly = true - android_manifest_for_lint = "test/javaperftests/AndroidManifest.xml" - java_files = - [ "test/javaperftests/src/org/chromium/net/CronetPerfTestActivity.java" ] +template("copy_java8_jars") { + _deps = [] + foreach(_dep, invoker.deps) { + _dep_name = get_label_info(_dep, "name") + _source_jar = + get_label_info(_dep, "target_gen_dir") + "/" + _dep_name + ".javac.jar" + _output_jar = "$_package_dir/" + _dep_name + ".jar" - deps = [ - ":cronet_api_java", - ":cronet_impl_all_java", - ":cronet_javatests", - ":cronet_test_apk_java", - "//base:base_java", - ] -} + # Adjust file names that are different from the target name that builds it. + if (_output_jar == "$_package_dir/" + "cronet_api_java.jar") { + _output_jar = "$_package_dir/" + "cronet_api.jar" + } + if (_output_jar == "$_package_dir/" + "cronet_impl_platform_base_java.jar") { + _output_jar = "$_package_dir/" + "cronet_impl_platform_java.jar" + } -android_apk("cronet_perf_test_apk") { - testonly = true - apk_name = "CronetPerfTest" - android_manifest = "test/javaperftests/AndroidManifest.xml" - shared_libraries = [ - ":cronet", - ":cronet_tests", - ] + # _deps have targets which match the java target whitelist. Add a + # trailing X to avoid the copy() target matching the whitelist. + # See _java_target_whitelist in build/config/android/internal_rules.gni. + _copy_target_name = "${target_name}_${_dep_name}X" + copy(_copy_target_name) { + sources = [ + _source_jar, + ] + outputs = [ + _output_jar, + ] + deps = [ + ":$_dep_name", + ] + } - deps = [ - ":cronet_combine_proguard_flags", - ":cronet_perf_test_apk_java", - ":cronet_test_apk_java", - "//base:base_java", - ] - deps += android_extra_test_deps + _deps += [ ":" + _copy_target_name ] + } - proguard_enabled = true - proguard_configs = [ - "$target_gen_dir/cronet_impl_native_proguard.cfg", - "cronet_impl_common_proguard.cfg", - "test/proguard.cfg", - "//base/android/proguard/chromium_apk.flags", - ] + group(target_name) { + deps = _deps + } } -test("cronet_unittests_android") { - sources = [ - "//components/cronet/android/cert/cert_verifier_cache_serializer_unittest.cc", - ] - +copy_java8_jars("copy_cronet_java8_jars") { deps = [ - ":cronet_android_cert_proto", - ":cronet_impl_native_base_java", - ":cronet_static", - "//base", - "//base/test:test_support", - "//components/cronet:cronet_common_unittests", - "//components/cronet/native:cronet_native_unittests", - "//components/cronet/native/test:cronet_native_tests", - "//components/metrics", - "//components/prefs:test_support", - "//net", - "//net:test_support", - "//net/android:net_java", - "//testing/gtest", - ] - - data = [ - "//components/cronet/test/data/", + ":cronet_api_java", + ":cronet_impl_platform_base_java", ] - - if (is_android) { - shard_timeout = 180 - } } -_package_dir = "$root_out_dir/cronet" -_test_package_dir = "$root_out_dir/cronet/test" _extract_cronet_native_jars_dir = "$target_gen_dir/cronet_native_jar_extract" _extract_cronet_common_jars_dir = "$target_gen_dir/cronet_common_jar_extract" -_extract_cronet_test_jars_dir = "$target_gen_dir/cronet_test_jar_extract" + +# List of patterns of .class files to exclude from the jar. +jar_excluded_patterns = [ + # Excludes Android support libraries crbug.com/832770. + "android/*", + "*/library_loader/*.class", + "*/multidex/*.class", + "*/process_launcher/*.class", + "*/SysUtils.class", + "*/CachedMetrics*.class", + "org/chromium/base/memory/MemoryPressureMonitor*.class", +] action("extract_cronet_native_jars") { # extract_from_jars.py deletes the target directory before extracting. @@ -960,17 +684,6 @@ action("repackage_extracted_native_jars") { _output_jar, ] - jar_excluded_patterns = [ - # Excludes Android support libraries crbug.com/832770. - "android/*", - "*/library_loader/*.class", - "*/multidex/*.class", - "*/process_launcher/*.class", - "*/SysUtils.class", - "*/CachedMetrics*.class", - "org/chromium/base/memory/MemoryPressureMonitor*.class", - ] - args = [ "--classes-dir", rebase_path(_extract_cronet_native_jars_dir, root_build_dir), @@ -1040,773 +753,1048 @@ action("repackage_extracted_common_jars") { ] } -cronet_test_deps = [ ":cronet_javatests" ] -cronet_test_deps += cronet_javatests_deps_to_package +if (!is_component_build) { + _cronet_shared_lib_file_name = "lib" + _cronet_shared_lib_name + ".so" -action("extract_cronet_test_jars") { - # extract_from_jars.py deletes the target directory before extracting. - script = "//components/cronet/tools/extract_from_jars.py" - depfile = "$target_gen_dir/$target_name.d" - testonly = true - - sources = [ - NETTY4_JAR_FILE, - ] - - # Extract pre-desugared jar for each cronet_test_deps. - foreach(dep, cronet_test_deps) { - sources += [ get_label_info(dep, "target_gen_dir") + "/" + - get_label_info(dep, "name") + ".javac.jar" ] + # cronet_sample_test_apk_resources is identical to + # cronet_sample_apk_resources. The two have to be different targets because + # targets which are common between the "instrumentation test apk" and the + # "tested apk" are removed from the "instrumentation test apk". + android_resources("cronet_sample_test_apk_resources") { + resource_dirs = [ "sample/res" ] + android_manifest = "sample/javatests/AndroidManifest.xml" } - _stamp_file = "$target_gen_dir/$target_name.stamp" - outputs = [ - _stamp_file, - ] - - _rebased_sources = rebase_path(sources, root_build_dir) - - args = [ - "--classes-dir", - rebase_path(_extract_cronet_test_jars_dir, root_build_dir), - "--jars=${_rebased_sources}", - "--depfile", - rebase_path(depfile, root_build_dir), - "--stamp", - rebase_path(_stamp_file, root_build_dir), - ] + instrumentation_test_apk("cronet_sample_test_apk") { + apk_name = "CronetSampleTest" + apk_under_test = ":cronet_sample_apk" + android_manifest = "sample/javatests/AndroidManifest.xml" + java_files = [ "sample/javatests/src/org/chromium/cronet_sample_apk/CronetSampleTest.java" ] + deps = [ + "//third_party/android_support_test_runner:rules_java", + "//third_party/android_support_test_runner:runner_java", + "//third_party/junit", + ] - deps = [ - "//third_party/netty4:netty_all_java", - ] - deps += cronet_test_deps -} + proguard_enabled = true + proguard_configs = [ "sample/javatests/proguard.cfg" ] + } -action("repackage_extracted_test_jars") { - _output_jar = "$_test_package_dir/cronet_tests_java.jar" - testonly = true + generate_jni("cronet_tests_jni_headers") { + testonly = true + sources = [ + "test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java", + "test/javatests/src/org/chromium/net/CronetUrlRequestTest.java", + "test/javatests/src/org/chromium/net/ExperimentalOptionsTest.java", + "test/src/org/chromium/net/CronetTestUtil.java", + "test/src/org/chromium/net/MockCertVerifier.java", + "test/src/org/chromium/net/MockUrlRequestJobFactory.java", + "test/src/org/chromium/net/NativeTestServer.java", + "test/src/org/chromium/net/QuicTestServer.java", + "test/src/org/chromium/net/TestUploadDataStreamHandler.java", + ] + jni_package = "cronet_tests" + } - script = "//build/android/gyp/jar.py" - outputs = [ - _output_jar, - ] + shared_library("cronet_tests") { + testonly = true + sources = [ + # While "cronet_tests" cannot depend on "cronet_static", and hence cannot + # call any Cronet functions, it can access fields of Cronet objects, so add + # Cronet header files to facilitate accessing these fields. + "//components/cronet/android/cronet_url_request_adapter.h", + "//components/cronet/android/cronet_url_request_context_adapter.h", + "//components/cronet/cronet_url_request.h", + "//components/cronet/cronet_url_request_context.h", + "//components/cronet/url_request_context_config.h", + "test/cronet_test_jni.cc", + "test/cronet_test_util.cc", + "test/cronet_test_util.h", + "test/cronet_url_request_context_config_test.cc", + "test/cronet_url_request_context_config_test.h", + "test/cronet_url_request_test.cc", + "test/experimental_options_test.cc", + "test/mock_cert_verifier.cc", + "test/mock_url_request_job_factory.cc", + "test/native_test_server.cc", + "test/quic_test_server.cc", + "test/test_upload_data_stream_handler.cc", + "test/test_upload_data_stream_handler.h", + ] - args = [ - "--classes-dir", - rebase_path(_extract_cronet_test_jars_dir, root_build_dir), - "--jar-path", - rebase_path(_output_jar, root_build_dir), - ] + deps = [ + ":cronet", + ":cronet_tests_jni_headers", + "//base", + "//base:i18n", + "//base/test:test_support", + "//components/cronet:cronet_version_header", + "//components/cronet/test:test_support", + "//components/prefs", + "//net", + "//net:simple_quic_tools", + "//net:test_support", + "//third_party/icu", + ] - deps = [ - ":extract_cronet_test_jars", - ] -} + include_dirs = [ _cronet_version_header_include_dir ] -template("jar_src") { - action(target_name) { - _rebased_src_search_dirs = - rebase_path(invoker.src_search_dirs, root_build_dir) + configs -= [ "//build/config/android:hide_all_but_jni_onload" ] + configs += [ "//build/config/android:hide_all_but_jni" ] + } - script = "//components/cronet/tools/jar_src.py" - depfile = "$target_gen_dir/$target_name.d" - outputs = [ - invoker.jar_path, - ] - args = [ - "--src-search-dirs=${_rebased_src_search_dirs}", - "--jar-path", - rebase_path(invoker.jar_path, root_build_dir), - "--depfile", - rebase_path(depfile, root_build_dir), + android_resources("cronet_test_apk_resources") { + testonly = true + resource_dirs = [ + "test/res", + "test/smoketests/res/native", ] + android_manifest = "test/AndroidManifest.xml" + } - deps = [] - if (defined(invoker.deps)) { - deps += invoker.deps - } + android_library("cronet_test_apk_java") { + testonly = true - _src_jars = [] + java_files = [ + "test/src/org/chromium/net/CronetTestApplication.java", + "test/src/org/chromium/net/CronetTestUtil.java", + "test/src/org/chromium/net/Http2TestHandler.java", + "test/src/org/chromium/net/Http2TestServer.java", + "test/src/org/chromium/net/MockCertVerifier.java", + "test/src/org/chromium/net/MockUrlRequestJobFactory.java", + "test/src/org/chromium/net/NativeTestServer.java", + "test/src/org/chromium/net/QuicTestServer.java", + "test/src/org/chromium/net/TestFilesInstaller.java", + "test/src/org/chromium/net/TestUploadDataStreamHandler.java", + ] - # Add src-jar files that are listed in "src_jars". - if (defined(invoker.src_jars)) { - _rebased_src_jars = rebase_path(invoker.src_jars, root_build_dir) - _src_jars += _rebased_src_jars - } + deps = [ + ":cronet_api_java", + ":cronet_impl_all_java", + "//base:base_java", + "//base:base_java_test_support", + "//net/android:net_java_test_support", + "//third_party/junit", + "//third_party/netty4:netty_all_java", + ] + } - # Add src-jar files that are generated by dependencies in "srcjar_deps". - if (defined(invoker.srcjar_deps)) { - foreach(_srcjar_dep, invoker.srcjar_deps) { - _dep_gen_dir = get_label_info(_srcjar_dep, "target_gen_dir") - _dep_name = get_label_info(_srcjar_dep, "name") - _src_jars += rebase_path([ "$_dep_gen_dir/$_dep_name.srcjar" ]) - deps += [ _srcjar_dep ] - } - } + cronet_smoketests_platform_only_common_srcs = [ + "test/smoketests/src/org/chromium/net/smoke/ChromiumPlatformOnlyTestSupport.java", + "test/smoketests/src/org/chromium/net/smoke/CronetSmokeTestRule.java", + "test/smoketests/src/org/chromium/net/smoke/HttpTestServer.java", + "test/smoketests/src/org/chromium/net/smoke/SmokeTestRequestCallback.java", + "test/smoketests/src/org/chromium/net/smoke/TestSupport.java", + ] - # Create the list of all source files that are given in "src_files". - _src_files = [] - if (defined(invoker.src_files)) { - _src_files += invoker.src_files - } + cronet_smoketests_native_common_srcs = cronet_smoketests_platform_only_common_srcs + [ + "test/smoketests/src/org/chromium/net/smoke/ChromiumNativeTestSupport.java", + "test/smoketests/src/org/chromium/net/smoke/NativeCronetTestRule.java", + ] - # Handle "source_deps". - _src_list_files = [] - if (defined(invoker.source_deps)) { - foreach(_source_dep, invoker.source_deps) { - _dep_gen_dir = get_label_info(_source_dep, "target_gen_dir") - _dep_name = get_label_info(_source_dep, "name") - _src_list_files += rebase_path([ "$_dep_gen_dir/$_dep_name.sources" ]) - deps += [ _source_dep ] - } - } - args += [ "--src-jar=${_src_jars}" ] - args += [ "--src-files=${_src_files}" ] - args += [ "--src-list-files=${_src_list_files}" ] + android_library("cronet_smoketests_native_java") { + testonly = true + java_files = [ + "test/smoketests/src/org/chromium/net/smoke/Http2Test.java", + "test/smoketests/src/org/chromium/net/smoke/QuicTest.java", + ] + cronet_smoketests_native_common_srcs - inputs = _src_jars - inputs += _src_files - inputs += _src_list_files + deps = [ + ":cronet_api_java", + ":cronet_test_apk_java", + "//base:base_java", + "//base:base_java_test_support", + "//third_party/android_support_test_runner:runner_java", + "//third_party/junit", + "//third_party/netty4:netty_all_java", + ] } -} -jar_src("jar_cronet_api_source") { - src_search_dirs = [ "api/src" ] - source_deps = [ ":cronet_api_java" ] - srcjar_deps = cronet_api_srcjar_deps - jar_path = "$_package_dir/cronet_api-src.jar" -} + android_apk("cronet_test_apk") { + testonly = true + apk_name = "CronetTest" + android_manifest = "test/AndroidManifest.xml" + shared_libraries = [ + ":cronet", + ":cronet_tests", + ] + loadable_modules = [ "$root_out_dir/libnetty-tcnative.so" ] -jar_src("jar_cronet_impl_common_java_source") { - src_search_dirs = [ "java/src" ] - source_deps = [ ":cronet_impl_common_base_java" ] - srcjar_deps = cronet_impl_common_java_srcjar_deps - jar_path = "$_package_dir/cronet_impl_common_java-src.jar" -} + deps = [ + ":cronet_combine_proguard_flags", + ":cronet_test_apk_resources", + "//base:base_java", + "//third_party/netty-tcnative:netty-tcnative-so", + ] -jar_src("jar_cronet_impl_platform_java_source") { - src_search_dirs = [ "java/src" ] - source_deps = [ ":cronet_impl_platform_base_java" ] - jar_path = "$_package_dir/cronet_impl_platform_java-src.jar" -} + proguard_enabled = true -zip("jar_cronet_sample_source") { - inputs = [ - "sample/AndroidManifest.xml", - "sample/javatests/AndroidManifest.xml", - "sample/javatests/proguard.cfg", - "sample/javatests/src/org/chromium/cronet_sample_apk/CronetSampleTest.java", - "sample/README", - "sample/res/layout/activity_main.xml", - "sample/res/layout/dialog_url.xml", - "sample/res/values/dimens.xml", - "sample/res/values/strings.xml", - "sample/src/org/chromium/cronet_sample_apk/CronetSampleActivity.java", - "sample/src/org/chromium/cronet_sample_apk/CronetSampleApplication.java", - ] - output = "$_package_dir/cronet-sample-src.jar" - base_dir = "sample" -} + proguard_configs = [ + "$target_gen_dir/cronet_impl_native_proguard.cfg", + "cronet_impl_common_proguard.cfg", + "cronet_impl_platform_proguard.cfg", + ] + } -jar_src("jar_cronet_impl_native_java_source") { - src_search_dirs = [ - "//base/android/java/src", - "//components/cronet/android/java/src", - "//net/android/java/src", - "//url/android/java/src", - ] - source_deps = [ - ":cronet_impl_native_base_java", + cronet_javatests_deps_to_package = [ + ":cronet_test_apk_java", "//base:base_java", + "//base:base_java_test_support", + "//net/android:embedded_test_server_aidl_java", "//net/android:net_java", + "//net/android:net_java_test_support", "//url:url_java", ] - srcjar_deps = cronet_impl_native_java_srcjar_deps + [ - "//base:base_android_java_enums_srcjar", - "//net/android:net_android_java_enums_srcjar", - "//net/android:net_errors_java", - ] - jar_path = "$_package_dir/cronet_impl_native_java-src.jar" -} -action("generate_licenses") { - _license_path = "$_package_dir/LICENSE" + android_library("cronet_javatests") { + testonly = true - script = "//tools/licenses.py" - outputs = [ - _license_path, - ] - args = [ - "license_file", - rebase_path(_license_path, root_build_dir), - "--gn-target", - "//components/cronet/android:cronet", - "--gn-out-dir", - ".", - ] -} + java_files = [ + "test/javatests/src/org/chromium/net/BidirectionalStreamQuicTest.java", + "test/javatests/src/org/chromium/net/BidirectionalStreamTest.java", + "test/javatests/src/org/chromium/net/BrotliTest.java", + "test/javatests/src/org/chromium/net/Criteria.java", + "test/javatests/src/org/chromium/net/CronetEngineBuilderTest.java", + "test/javatests/src/org/chromium/net/CronetStressTest.java", + "test/javatests/src/org/chromium/net/CronetTestRule.java", + "test/javatests/src/org/chromium/net/CronetTestRuleTest.java", + "test/javatests/src/org/chromium/net/CronetUploadTest.java", + "test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java", + "test/javatests/src/org/chromium/net/CronetUrlRequestTest.java", + "test/javatests/src/org/chromium/net/DiskStorageTest.java", + "test/javatests/src/org/chromium/net/ExperimentalOptionsTest.java", + "test/javatests/src/org/chromium/net/GetStatusTest.java", + "test/javatests/src/org/chromium/net/MetricsTestUtil.java", + "test/javatests/src/org/chromium/net/NetworkChangeNotifierTest.java", + "test/javatests/src/org/chromium/net/NQETest.java", + "test/javatests/src/org/chromium/net/PkpTest.java", + "test/javatests/src/org/chromium/net/QuicTest.java", + "test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java", + "test/javatests/src/org/chromium/net/TestBidirectionalStreamCallback.java", + "test/javatests/src/org/chromium/net/TestDrivenDataProvider.java", + "test/javatests/src/org/chromium/net/TestNetworkQualityRttListener.java", + "test/javatests/src/org/chromium/net/TestNetworkQualityThroughputListener.java", + "test/javatests/src/org/chromium/net/TestUploadDataProvider.java", + "test/javatests/src/org/chromium/net/TestUrlRequestCallback.java", + "test/javatests/src/org/chromium/net/UploadDataProvidersTest.java", + "test/javatests/src/org/chromium/net/urlconnection/CronetBufferedOutputStreamTest.java", + "test/javatests/src/org/chromium/net/urlconnection/CronetChunkedOutputStreamTest.java", + "test/javatests/src/org/chromium/net/urlconnection/CronetFixedModeOutputStreamTest.java", + "test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLConnectionTest.java", + "test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLStreamHandlerTest.java", + "test/javatests/src/org/chromium/net/urlconnection/CronetURLStreamHandlerFactoryTest.java", + "test/javatests/src/org/chromium/net/urlconnection/MessageLoopTest.java", + "test/javatests/src/org/chromium/net/urlconnection/QuicUploadTest.java", + "test/javatests/src/org/chromium/net/urlconnection/TestUtil.java", + "test/javatests/src/org/chromium/net/UrlResponseInfoTest.java", + ] -action("generate_javadoc") { - script = "//components/cronet/tools/generate_javadoc.py" - depfile = "$target_gen_dir/$target_name.d" - _zip_file = "$target_gen_dir/$target_name.zip" - outputs = [ - _zip_file, - ] - args = [ - "--output-dir", - rebase_path(_package_dir, root_build_dir), - "--input-dir", - rebase_path("//components/cronet", root_build_dir), - "--overview-file", - rebase_path("$_package_dir/README.md.html", root_build_dir), - "--readme-file", - rebase_path("//components/cronet/README.md", root_build_dir), - "--depfile", - rebase_path(depfile, root_build_dir), - "--zip-file", - rebase_path(_zip_file, root_build_dir), + # Adding deps here won't include those deps in the cronet_tests_java.jar. + # Please add to cronet_javatests_deps_to_package instead. + deps = [ + ":cronet_api_java", + ":cronet_impl_all_java", + "//third_party/android_support_test_runner:runner_java", + "//third_party/junit", + ] + deps += cronet_javatests_deps_to_package + data = [ + "//components/cronet/test/data/", + ] + } - "--android-sdk-jar", - rebase_path(android_sdk_jar, root_build_dir), + instrumentation_test_apk("cronet_test_instrumentation_apk") { + apk_name = "CronetTestInstrumentation" + apk_under_test = ":cronet_test_apk" + android_manifest = "test/javatests/AndroidManifest.xml" - # JavaDoc is generated from Cronet's API source jar. - "--input-src-jar", - rebase_path("$_package_dir/cronet_api-src.jar", root_build_dir), - ] - deps = [ - ":jar_cronet_api_source", - ] -} + deps = [ + ":cronet_api_java", + ":cronet_impl_all_java", + ":cronet_javatests", + ":cronet_smoketests_native_java", + ":cronet_test_apk_java", + "//base:base_java", + "//base:base_java_test_support", + "//net/android:net_java", + "//net/android:net_java_test_support", + "//third_party/android_support_test_runner:runner_java", + "//third_party/android_tools:android_test_mock_java", + "//third_party/hamcrest:hamcrest_core_java", + ] + additional_apks = [ "//net/android:net_test_support_apk" ] -copy("cronet_package_copy") { - sources = [ - "$target_gen_dir/cronet_impl_native_proguard.cfg", - "//AUTHORS", - "//chrome/VERSION", - "api_version.txt", - "cronet_impl_common_proguard.cfg", - "cronet_impl_platform_proguard.cfg", - ] - outputs = [ - "$_package_dir/{{source_file_part}}", - ] + data_deps = [ + "//net:test_support", + ] - deps = [ - ":cronet_api_java", - ":cronet_combine_proguard_flags", - ":cronet_impl_common_base_java", - ":cronet_impl_platform_base_java", - ] -} + proguard_enabled = true -template("copy_java8_jars") { - _deps = [] - foreach(_dep, invoker.deps) { - _dep_name = get_label_info(_dep, "name") - _source_jar = - get_label_info(_dep, "target_gen_dir") + "/" + _dep_name + ".javac.jar" - _output_jar = "$_package_dir/" + _dep_name + ".jar" + proguard_configs = [ "test/proguard.cfg" ] + } - # Adjust file names that are different from the target name that builds it. - if (_output_jar == "$_package_dir/" + "cronet_api_java.jar") { - _output_jar = "$_package_dir/" + "cronet_api.jar" - } - if (_output_jar == "$_package_dir/" + "cronet_impl_platform_base_java.jar") { - _output_jar = "$_package_dir/" + "cronet_impl_platform_java.jar" - } + android_resources("cronet_smoketests_platform_only_apk_resources") { + testonly = true + resource_dirs = [ "test/smoketests/res/platform_only" ] + android_manifest = "test/AndroidManifest.xml" + } - # _deps have targets which match the java target whitelist. Add a - # trailing X to avoid the copy() target matching the whitelist. - # See _java_target_whitelist in build/config/android/internal_rules.gni. - _copy_target_name = "${target_name}_${_dep_name}X" - copy(_copy_target_name) { - sources = [ - _source_jar, - ] - outputs = [ - _output_jar, - ] - deps = [ - ":$_dep_name", - ] - } + android_library("cronet_smoketests_platform_only_java") { + testonly = true + java_files = [ "test/smoketests/src/org/chromium/net/smoke/PlatformOnlyEngineTest.java" ] + cronet_smoketests_platform_only_common_srcs + deps = [ + ":cronet_api_java", + "//base:base_java_test_support", + "//third_party/android_support_test_runner:runner_java", + "//third_party/junit", + "//third_party/netty4:netty_all_java", + ] + } - _deps += [ ":" + _copy_target_name ] + android_apk("cronet_smoketests_platform_only_apk") { + testonly = true + apk_name = "PlatformOnlyEngineSmokeTest" + android_manifest = "test/AndroidManifest.xml" + java_files = [ "test/src/org/chromium/net/CronetTestApplication.java" ] + + proguard_enabled = true + proguard_configs = [ + "cronet_impl_common_proguard.cfg", + "cronet_impl_platform_proguard.cfg", + ] + + deps = [ + ":cronet_api_java", + ":cronet_impl_common_base_java", + ":cronet_impl_platform_base_java", + ":cronet_smoketests_platform_only_apk_resources", + ] } - group(target_name) { - deps = _deps + instrumentation_test_apk( + "cronet_smoketests_platform_only_instrumentation_apk") { + apk_name = "PlatformOnlyEngineSmokeTestInstrumentation" + apk_under_test = ":cronet_smoketests_platform_only_apk" + android_manifest = "test/javatests/AndroidManifest.xml" + deps = [ + ":cronet_smoketests_platform_only_java", + "//base:base_java_test_support", + "//third_party/android_support_test_runner:runner_java", + "//third_party/android_tools:android_test_mock_java", + ] + + proguard_enabled = true + + proguard_configs = [ "test/proguard.cfg" ] } -} -copy_java8_jars("copy_cronet_java8_jars") { - deps = [ - ":cronet_api_java", - ":cronet_impl_platform_base_java", - ] -} + android_library("cronet_smoketests_missing_native_library_java") { + testonly = true + java_files = [ "test/smoketests/src/org/chromium/net/smoke/MissingNativeLibraryTest.java" ] + cronet_smoketests_native_common_srcs + deps = [ + ":cronet_api_java", + ":cronet_test_apk_java", + "//base:base_java", + "//base:base_java_test_support", + "//third_party/android_support_test_runner:runner_java", + "//third_party/junit", + "//third_party/netty4:netty_all_java", + ] + } -action("cronet_combine_proguard_flags") { - script = "//components/cronet/tools/generate_proguard_file.py" - sources = [ - "//base/android/proguard/chromium_code.flags", - "//components/cronet/android/cronet_impl_native_proguard.cfg", - ] - outputs = [ - "$target_gen_dir/cronet_impl_native_proguard.cfg", - ] - args = [ "--output-file" ] + rebase_path(outputs, root_build_dir) + - rebase_path(sources, root_build_dir) -} + android_apk("cronet_smoketests_missing_native_library_apk") { + testonly = true + apk_name = "MissingNativeLibrarySmokeTest" + android_manifest = "test/AndroidManifest.xml" + deps = [ + ":cronet_api_java", + ":cronet_combine_proguard_flags", + ":cronet_impl_common_base_java", + ":cronet_impl_platform_base_java", + ":cronet_test_apk_resources", + ] -copy("cronet_package_copy_native_lib") { - sources = [ - "$root_out_dir/" + _cronet_shared_lib_file_name, - ] - outputs = [ - "$_package_dir/libs/${android_app_abi}/" + _cronet_shared_lib_file_name, - ] - deps = [ - ":cronet", - ] -} + proguard_enabled = true + proguard_configs = [ + "$target_gen_dir/cronet_impl_native_proguard.cfg", + "cronet_impl_common_proguard.cfg", + "cronet_impl_platform_proguard.cfg", + ] + } -copy("cronet_package_copy_native_lib_unstripped") { - sources = [ - "$root_out_dir/lib.unstripped/" + _cronet_shared_lib_file_name, - ] - outputs = [ - "$_package_dir/symbols/${android_app_abi}/" + _cronet_shared_lib_file_name, - ] - deps = [ - ":cronet", - ] -} + instrumentation_test_apk( + "cronet_smoketests_missing_native_library_instrumentation_apk") { + apk_name = "MissingNativeLibrarySmokeTestInstrumentation" + apk_under_test = ":cronet_smoketests_missing_native_library_apk" + android_manifest = "test/javatests/AndroidManifest.xml" -copy("cronet_package_copy_native_test_lib") { - testonly = true - sources = [ - "$root_out_dir/libcronet_tests.so", - "$root_out_dir/libnetty-tcnative.so", - ] - outputs = [ - "$_test_package_dir/libs/${android_app_abi}/{{source_file_part}}", - ] - deps = [ - ":cronet_tests", - "//third_party/netty-tcnative:netty-tcnative-so", - ] -} + deps = [ + ":cronet_smoketests_missing_native_library_java", + "//third_party/android_tools:android_test_mock_java", + ] -copy("cronet_package_copy_native_test_lib_unstripped") { - testonly = true - sources = [ - "$root_out_dir/lib.unstripped/libcronet_tests.so", - "$root_out_dir/lib.unstripped/libnetty-tcnative.so", - ] - outputs = [ - "$_test_package_dir/symbols/${android_app_abi}/{{source_file_part}}", - ] - deps = [ - ":cronet_tests", - "//third_party/netty-tcnative:netty-tcnative-so", - ] -} + proguard_enabled = true -copy("cronet_package_copy_test_assets") { - testonly = true - sources = [ - "//components/cronet/test/data", - ] - outputs = [ - "$_test_package_dir/assets/test", - ] -} + proguard_configs = [ "test/proguard.cfg" ] + } -copy("cronet_package_copy_test_support_apks") { - testonly = true - sources = [ - # Provides EmbeddedTestServer. - "$root_out_dir/apks/ChromiumNetTestSupport.apk", - ] - outputs = [ - "$_test_package_dir/apks/${android_app_abi}/{{source_file_part}}", - ] - deps = [ - "//net/android:net_test_support_apk", - ] -} + android_library("cronet_perf_test_apk_java") { + testonly = true + android_manifest_for_lint = "test/javaperftests/AndroidManifest.xml" + java_files = [ + "test/javaperftests/src/org/chromium/net/CronetPerfTestActivity.java", + ] -copy("cronet_package_copy_test_files") { - testonly = true - sources = [ - "//net/data/ssl/certificates/quic-chain.pem", - "//net/data/ssl/certificates/quic-leaf-cert.key", - "//net/data/ssl/certificates/quic-leaf-cert.key.pkcs8.pem", - ] - outputs = [ - "$_test_package_dir/assets/test_files/net/data/ssl/certificates/{{source_file_part}}", - ] - deps = [ - # Not really dependent, but builds can fail if these two targets attempt - # to create the "assets" subdirectory simultaneously. - ":cronet_package_copy_test_assets", - ] -} + deps = [ + ":cronet_api_java", + ":cronet_impl_all_java", + ":cronet_javatests", + ":cronet_test_apk_java", + "//base:base_java", + ] + } -copy("cronet_package_copy_resources") { - sources = [ - "api/res/raw/keep_cronet_api.xml", - ] - outputs = [ - "$_package_dir/res/raw/{{source_file_part}}", - ] -} + android_apk("cronet_perf_test_apk") { + testonly = true + apk_name = "CronetPerfTest" + android_manifest = "test/javaperftests/AndroidManifest.xml" + shared_libraries = [ + ":cronet", + ":cronet_tests", + ] -# These package_* targets represent how Cronet is used in production code. -# Using these targets is preferred to using the underlying targets like -# :cronet_api_java or :cronet_impl_all_java, as it better tests production -# usage. -android_java_prebuilt("package_api_java") { - jar_path = "$_package_dir/cronet_api.jar" - deps = [ - ":copy_cronet_java8_jars_cronet_api_javaX", - ] -} + deps = [ + ":cronet_combine_proguard_flags", + ":cronet_perf_test_apk_java", + ":cronet_test_apk_java", + "//base:base_java", + "//third_party/android_tools:android_test_mock_java", + ] -android_java_prebuilt("package_impl_common_java") { - jar_path = "$_package_dir/cronet_impl_common_java.jar" - deps = [ - ":package_api_java", - ":repackage_extracted_common_jars", - ] -} + proguard_enabled = true + proguard_configs = [ + "$target_gen_dir/cronet_impl_native_proguard.cfg", + "cronet_impl_common_proguard.cfg", + "test/proguard.cfg", + "//base/android/proguard/chromium_apk.flags", + ] + } -android_java_prebuilt("package_impl_native_java") { - jar_path = "$_package_dir/cronet_impl_native_java.jar" - deps = [ - ":package_api_java", - ":package_impl_common_java", - ":repackage_extracted_native_jars", - "//third_party/jsr-305:jsr_305_javalib", - ] -} + test("cronet_unittests_android") { + deps = [ + ":cronet_impl_native_base_java", + ":cronet_static", + "//base", + "//base/test:test_support", + "//components/cronet:cronet_common_unittests", + "//components/cronet/native:cronet_native_unittests", + "//components/cronet/native/test:cronet_native_tests", + "//components/metrics", + "//components/prefs:test_support", + "//net", + "//net:test_support", + "//net/android:net_java", + "//testing/gtest", + ] -android_java_prebuilt("package_impl_platform_java") { - jar_path = "$_package_dir/cronet_impl_platform_java.jar" - deps = [ - ":copy_cronet_java8_jars_cronet_impl_platform_base_javaX", - ":package_api_java", - ":package_impl_common_java", - ] -} + data = [ + "//components/cronet/test/data/", + ] + + if (is_android) { + shard_timeout = 180 + } + } -# Enforce that ARM Neon is not used when building for ARMv7 -if (target_cpu == "arm" && arm_version == 7 && !arm_use_neon) { - action("enforce_no_neon") { - script = "//components/cronet/tools/check_no_neon.py" + _test_package_dir = "$root_out_dir/cronet/test" + _extract_cronet_test_jars_dir = "$target_gen_dir/cronet_test_jar_extract" + + cronet_test_deps = [ ":cronet_javatests" ] + cronet_test_deps += cronet_javatests_deps_to_package + + action("extract_cronet_test_jars") { + # extract_from_jars.py deletes the target directory before extracting. + script = "//components/cronet/tools/extract_from_jars.py" + depfile = "$target_gen_dir/$target_name.d" + testonly = true + + sources = [ + NETTY4_JAR_FILE, + ] + + # Extract pre-desugared jar for each cronet_test_deps. + foreach(dep, cronet_test_deps) { + sources += [ get_label_info(dep, "target_gen_dir") + "/" + + get_label_info(dep, "name") + ".javac.jar" ] + } + + _stamp_file = "$target_gen_dir/$target_name.stamp" outputs = [ - "$target_gen_dir/$target_name.stamp", + _stamp_file, ] - args = [ - rebase_path("${android_tool_prefix}objdump", root_build_dir), - # libcronet.so may contain ARM Neon instructions from BoringSSL, but these - # are only used after checking whether the CPU supports NEON at runtime, - # so instead check base/ as it represents a large swath of code that only - # contains Neon instructions when Neon is enabled by default. - rebase_path("$root_out_dir/obj/base/base/*.o", root_build_dir), + _rebased_sources = rebase_path(sources, root_build_dir) + + args = [ + "--classes-dir", + rebase_path(_extract_cronet_test_jars_dir, root_build_dir), + "--jars=${_rebased_sources}", + "--depfile", + rebase_path(depfile, root_build_dir), "--stamp", - rebase_path(outputs[0], root_build_dir), + rebase_path(_stamp_file, root_build_dir), ] + deps = [ - "//base:base", + "//third_party/netty4:netty_all_java", ] + deps += cronet_test_deps } -} -# Enforce restrictions for API<->impl boundary. -action("api_static_checks") { - script = "//components/cronet/tools/api_static_checks.py" - outputs = [ - "$target_gen_dir/$target_name.stamp", - ] - args = [ - "--api_jar", - rebase_path( - "$root_out_dir/lib.java/components/cronet/android/cronet_api_java.jar", - root_build_dir), - "--impl_jar", - rebase_path( - "$root_out_dir/lib.java/components/cronet/android/cronet_impl_common_base_java.jar", - root_build_dir), - "--impl_jar", - rebase_path( - "$root_out_dir/lib.java/components/cronet/android/cronet_impl_platform_base_java.jar", - root_build_dir), - "--impl_jar", - rebase_path( - "$root_out_dir/lib.java/components/cronet/android/cronet_impl_native_base_java.jar", - root_build_dir), - "--stamp", - rebase_path(outputs[0], root_build_dir), - ] - deps = [ - ":cronet_api_java", - ":cronet_impl_common_base_java", - ":cronet_impl_native_base_java", - ":cronet_impl_platform_base_java", - ] - inputs = [ - "//components/cronet/tools/update_api.py", - ] - sources = [ - "//components/cronet/android/api.txt", - "//components/cronet/android/api_version.txt", - ] -} + action("repackage_extracted_test_jars") { + _output_jar = "$_test_package_dir/cronet_tests_java.jar" + testonly = true -group("cronet_package") { - # Marked as testonly as it contains test-only targets too. - testonly = true + script = "//build/android/gyp/jar.py" + outputs = [ + _output_jar, + ] + + args = [ + "--classes-dir", + rebase_path(_extract_cronet_test_jars_dir, root_build_dir), + "--jar-path", + rebase_path(_output_jar, root_build_dir), + ] - # Enforce building with ICU alternatives, crbug.com/611621. - # Enforce that arm_use_neon==false when building for ARMv7 by - # not including any deps in cronet_package target otherwise. - if (use_platform_icu_alternatives && - (!(target_cpu == "arm" && arm_version == 7) || !arm_use_neon)) { deps = [ - ":api_static_checks", - ":copy_cronet_java8_jars", - ":cronet_package_copy", - ":cronet_package_copy_native_lib", - ":cronet_package_copy_native_lib_unstripped", - ":cronet_package_copy_resources", - ":cronet_test_package", - ":generate_javadoc", - ":generate_licenses", - ":jar_cronet_api_source", - ":jar_cronet_impl_common_java_source", - ":jar_cronet_impl_native_java_source", - ":jar_cronet_impl_platform_java_source", - ":jar_cronet_sample_source", - ":repackage_extracted_common_jars", - ":repackage_extracted_native_jars", - ] - if (current_cpu == "arm" && arm_version == 7) { - deps += [ ":enforce_no_neon" ] - } + ":extract_cronet_test_jars", + ] } -} -group("cronet_test_package") { - testonly = true + zip("jar_cronet_sample_source") { + inputs = [ + "sample/AndroidManifest.xml", + "sample/javatests/AndroidManifest.xml", + "sample/javatests/proguard.cfg", + "sample/javatests/src/org/chromium/cronet_sample_apk/CronetSampleTest.java", + "sample/README", + "sample/res/layout/activity_main.xml", + "sample/res/layout/dialog_url.xml", + "sample/res/values/dimens.xml", + "sample/res/values/strings.xml", + "sample/src/org/chromium/cronet_sample_apk/CronetSampleActivity.java", + "sample/src/org/chromium/cronet_sample_apk/CronetSampleApplication.java", + ] + output = "$_package_dir/cronet-sample-src.jar" + base_dir = "sample" + } - # Don't build for MIPS where tests aren't run. - if (current_cpu != "mipsel" && current_cpu != "mips64el") { + jar_src("jar_cronet_impl_native_java_source") { + src_search_dirs = [ + "//base/android/java/src", + "//components/cronet/android/java/src", + "//net/android/java/src", + "//url/android/java/src", + "//third_party/android_async_task/java/src", + ] + source_deps = [ + ":cronet_impl_native_base_java", + "//base:base_java", + "//net/android:net_java", + "//url:url_java", + ] + srcjar_deps = cronet_impl_native_java_srcjar_deps + [ + "//base:base_android_java_enums_srcjar", + "//net/android:net_android_java_enums_srcjar", + "//net/android:net_errors_java", + ] + excluded_patterns = jar_excluded_patterns + jar_path = "$_package_dir/cronet_impl_native_java-src.jar" + } + + action("generate_licenses") { + _license_path = "$_package_dir/LICENSE" + + script = "//tools/licenses.py" + outputs = [ + _license_path, + ] + args = [ + "license_file", + rebase_path(_license_path, root_build_dir), + "--gn-target", + "//components/cronet/android:cronet", + "--gn-out-dir", + ".", + ] + } + + action("generate_javadoc") { + script = "//components/cronet/tools/generate_javadoc.py" + depfile = "$target_gen_dir/$target_name.d" + _zip_file = "$target_gen_dir/$target_name.zip" + outputs = [ + _zip_file, + ] + args = [ + "--output-dir", + rebase_path(_package_dir, root_build_dir), + "--input-dir", + rebase_path("//components/cronet", root_build_dir), + "--overview-file", + rebase_path("$_package_dir/README.md.html", root_build_dir), + "--readme-file", + rebase_path("//components/cronet/README.md", root_build_dir), + "--depfile", + rebase_path(depfile, root_build_dir), + "--zip-file", + rebase_path(_zip_file, root_build_dir), + + "--android-sdk-jar", + rebase_path(android_sdk_jar, root_build_dir), + + # JavaDoc is generated from Cronet's API source jar. + "--input-src-jar", + rebase_path("$_package_dir/cronet_api-src.jar", root_build_dir), + ] deps = [ - ":cronet_package_copy_native_test_lib", - ":cronet_package_copy_native_test_lib_unstripped", - ":cronet_package_copy_test_assets", - ":cronet_package_copy_test_files", - ":cronet_package_copy_test_support_apks", - ":repackage_extracted_test_jars", + ":jar_cronet_api_source", ] } -} -_maven_dir = "$_package_dir/maven-$current_cpu" -_maven_modules_dir = "$_maven_dir/org/chromium/net" -_maven_test_dir = "$_maven_dir/test" -_maven_version = - "$chrome_version_major.$chrome_version_build.$chrome_version_patch" + copy("cronet_package_copy") { + sources = [ + "$target_gen_dir/cronet_impl_native_proguard.cfg", + "//AUTHORS", + "//chrome/VERSION", + "api_version.txt", + "cronet_impl_common_proguard.cfg", + "cronet_impl_platform_proguard.cfg", + ] + outputs = [ + "$_package_dir/{{source_file_part}}", + ] -copy("cronet_maven_test_copy") { - sources = [ - "maven/build.gradle", - "maven/local.properties", - "maven/settings.gradle", - ] - outputs = [ - "$_maven_test_dir/{{source_file_part}}", - ] -} + deps = [ + ":cronet_api_java", + ":cronet_combine_proguard_flags", + ":cronet_impl_common_base_java", + ":cronet_impl_platform_base_java", + ] + } -process_version("cronet_maven_build_embedded_copy") { - template_file = "maven/test/build_embedded.gradle.template" - sources = [ - "//build/util/LASTCHANGE", - "//chrome/VERSION", - ] - output = "$_maven_test_dir/test_embedded/build.gradle" -} + copy("cronet_package_copy_native_lib") { + sources = [ + "$root_out_dir/" + _cronet_shared_lib_file_name, + ] + outputs = [ + "$_package_dir/libs/${android_app_abi}/" + _cronet_shared_lib_file_name, + ] + deps = [ + ":cronet", + ] + } -process_version("cronet_maven_build_fallback_copy") { - template_file = "maven/test/build_fallback.gradle.template" - sources = [ - "//build/util/LASTCHANGE", - "//chrome/VERSION", - ] - output = "$_maven_test_dir/test_fallback/build.gradle" -} + copy("cronet_package_copy_native_lib_unstripped") { + sources = [ + "$root_out_dir/lib.unstripped/" + _cronet_shared_lib_file_name, + ] + outputs = [ + "$_package_dir/symbols/${android_app_abi}/" + + _cronet_shared_lib_file_name, + ] + deps = [ + ":cronet", + ] + } -if (use_platform_icu_alternatives) { - action("cronet_maven_test_build") { - script = "maven/test/build_with_gradle.py" - depfile = "$target_gen_dir/$target_name.d" + copy("cronet_package_copy_native_test_lib") { + testonly = true + sources = [ + "$root_out_dir/libcronet_tests.so", + "$root_out_dir/libnetty-tcnative.so", + ] + outputs = [ + "$_test_package_dir/libs/${android_app_abi}/{{source_file_part}}", + ] deps = [ - ":cronet_maven_build_embedded_copy", - ":cronet_maven_build_fallback_copy", - ":cronet_maven_modules", - ":cronet_maven_test_copy", + ":cronet_tests", + "//third_party/netty-tcnative:netty-tcnative-so", + ] + } - # These deps ensure all source files of the sample app are deps. - ":cronet_sample_apk", - ":cronet_sample_test_apk", + copy("cronet_package_copy_native_test_lib_unstripped") { + testonly = true + sources = [ + "$root_out_dir/lib.unstripped/libcronet_tests.so", + "$root_out_dir/lib.unstripped/libnetty-tcnative.so", ] - _stamp_file = "$target_gen_dir/$target_name.stamp" outputs = [ - _stamp_file, - "$_maven_test_dir/build/outputs/apk/debug/test-debug.apk", - "$_maven_test_dir/build/outputs/apk/androidTest/debug/test-debug-androidTest.apk", + "$_test_package_dir/symbols/${android_app_abi}/{{source_file_part}}", ] - args = [ - "--project-dir", - rebase_path("$_maven_test_dir"), - "--depfile", - rebase_path(depfile, root_build_dir), - "--stamp", - rebase_path(_stamp_file, root_build_dir), + deps = [ + ":cronet_tests", + "//third_party/netty-tcnative:netty-tcnative-so", + ] + } + + copy("cronet_package_copy_test_assets") { + testonly = true + sources = [ + "//components/cronet/test/data", + ] + outputs = [ + "$_test_package_dir/assets/test", ] + } + + copy("cronet_package_copy_test_support_apks") { testonly = true + sources = [ + # Provides EmbeddedTestServer. + "$root_out_dir/apks/ChromiumNetTestSupport.apk", + ] + outputs = [ + "$_test_package_dir/apks/${android_app_abi}/{{source_file_part}}", + ] + deps = [ + "//net/android:net_test_support_apk", + ] } -} -# Builds a maven module. -template("cronet_maven_module") { - _module_name = invoker.module_name + copy("cronet_package_copy_test_files") { + testonly = true + sources = [ + "//net/data/ssl/certificates/quic-chain.pem", + "//net/data/ssl/certificates/quic-leaf-cert.key", + "//net/data/ssl/certificates/quic-leaf-cert.key.pkcs8.pem", + ] + outputs = [ + "$_test_package_dir/assets/test_files/net/data/ssl/certificates/{{source_file_part}}", + ] + deps = [ + # Not really dependent, but builds can fail if these two targets attempt + # to create the "assets" subdirectory simultaneously. + ":cronet_package_copy_test_assets", + ] + } - # Build POM file. - _pom_target_name = "pom_$target_name" - _deps = [ ":$_pom_target_name" ] - process_version(_pom_target_name) { - template_file = "maven/$_module_name.pom.template" + copy("cronet_package_copy_resources") { sources = [ - "//build/util/LASTCHANGE", - "//chrome/VERSION", + "api/res/raw/keep_cronet_api.xml", + ] + outputs = [ + "$_package_dir/res/raw/{{source_file_part}}", ] - output = "$_maven_modules_dir/$_module_name/$_maven_version/$_module_name-$_maven_version.pom" } - if (defined(invoker.resource_dir)) { - android_resources(invoker.module_name + "_resources") { - resource_dirs = [ invoker.resource_dir ] - android_manifest = "../../../build/android/AndroidManifest.xml" + # Enforce that ARM Neon is not used when building for ARMv7 + if (target_cpu == "arm" && arm_version == 7 && !arm_use_neon) { + action("enforce_no_neon") { + script = "//components/cronet/tools/check_no_neon.py" + outputs = [ + "$target_gen_dir/$target_name.stamp", + ] + args = [ + rebase_path("${android_tool_prefix}objdump", root_build_dir), + + # libcronet.so may contain ARM Neon instructions from BoringSSL, but these + # are only used after checking whether the CPU supports NEON at runtime, + # so instead check base/ as it represents a large swath of code that only + # contains Neon instructions when Neon is enabled by default. + rebase_path("$root_out_dir/obj/base/base/*.o", root_build_dir), + "--stamp", + rebase_path(outputs[0], root_build_dir), + ] + deps = [ + "//base:base", + ] } } - # Build AAR file. - _aar_target_name = "aar_$target_name" - dist_aar(_aar_target_name) { + # Enforce restrictions for API<->impl boundary. + action("api_static_checks") { + script = "//components/cronet/tools/api_static_checks.py" + outputs = [ + "$target_gen_dir/$target_name.stamp", + ] + args = [ + "--api_jar", + rebase_path( + "$root_out_dir/lib.java/components/cronet/android/cronet_api_java.jar", + root_build_dir), + "--impl_jar", + rebase_path( + "$root_out_dir/lib.java/components/cronet/android/cronet_impl_common_base_java.jar", + root_build_dir), + "--impl_jar", + rebase_path( + "$root_out_dir/lib.java/components/cronet/android/cronet_impl_platform_base_java.jar", + root_build_dir), + "--impl_jar", + rebase_path( + "$root_out_dir/lib.java/components/cronet/android/cronet_impl_native_base_java.jar", + root_build_dir), + "--stamp", + rebase_path(outputs[0], root_build_dir), + ] deps = [ - ":cronet_package_copy", - invoker.aar_jar_dep, + ":cronet_api_java", + ":cronet_impl_common_base_java", + ":cronet_impl_native_base_java", + ":cronet_impl_platform_base_java", ] - direct_deps_only = true - if (defined(invoker.aar_proguard_config)) { - proguard_configs = [ invoker.aar_proguard_config ] - } - if (defined(invoker.aar_native_lib_dep)) { - native_libraries = get_target_outputs(invoker.aar_native_lib_dep) - deps += [ invoker.aar_native_lib_dep ] + inputs = [ + "//components/cronet/tools/update_api.py", + ] + sources = [ + "//components/cronet/android/api.txt", + "//components/cronet/android/api_version.txt", + ] + } + + group("cronet_package") { + # Marked as testonly as it contains test-only targets too. + testonly = true + + # Enforce building with ICU alternatives, crbug.com/611621. + # Enforce that arm_use_neon==false when building for ARMv7 by + # not including any deps in cronet_package target otherwise. + if (use_platform_icu_alternatives && + (!(target_cpu == "arm" && arm_version == 7) || !arm_use_neon)) { + deps = [ + ":api_static_checks", + ":copy_cronet_java8_jars", + ":cronet_package_copy", + ":cronet_package_copy_native_lib", + ":cronet_package_copy_native_lib_unstripped", + ":cronet_package_copy_resources", + ":cronet_test_package", + ":generate_javadoc", + ":generate_licenses", + ":jar_cronet_api_source", + ":jar_cronet_impl_common_java_source", + ":jar_cronet_impl_native_java_source", + ":jar_cronet_impl_platform_java_source", + ":jar_cronet_sample_source", + ":repackage_extracted_common_jars", + ":repackage_extracted_native_jars", + ] + if (current_cpu == "arm" && arm_version == 7) { + deps += [ ":enforce_no_neon" ] + } } - if (defined(invoker.resource_dir)) { - deps += [ ":" + invoker.module_name + "_resources" ] + } + + group("cronet_test_package") { + testonly = true + + # Don't build for MIPS where tests aren't run. + if (current_cpu != "mipsel" && current_cpu != "mips64el") { + deps = [ + ":cronet_package_copy_native_test_lib", + ":cronet_package_copy_native_test_lib_unstripped", + ":cronet_package_copy_test_assets", + ":cronet_package_copy_test_files", + ":cronet_package_copy_test_support_apks", + ":repackage_extracted_test_jars", + ] } - output = "$root_build_dir/$_aar_target_name.aar" } - _aar_copy_target_name = "$target_name.aar" - _deps += [ ":$_aar_copy_target_name" ] - copy(_aar_copy_target_name) { - sources = get_target_outputs(":$_aar_target_name") + _maven_dir = "$_package_dir/maven-$current_cpu" + _maven_modules_dir = "$_maven_dir/org/chromium/net" + _maven_test_dir = "$_maven_dir/test" + _maven_version = + "$chrome_version_major.$chrome_version_build.$chrome_version_patch" + + copy("cronet_maven_test_copy") { + sources = [ + "maven/build.gradle", + "maven/local.properties", + "maven/settings.gradle", + ] outputs = [ - "$_maven_modules_dir/$_module_name/$_maven_version/$_module_name-$_maven_version.aar", + "$_maven_test_dir/{{source_file_part}}", ] - deps = [ - ":$_aar_target_name", + } + + process_version("cronet_maven_build_embedded_copy") { + template_file = "maven/test/build_embedded.gradle.template" + sources = [ + "//build/util/LASTCHANGE", + "//chrome/VERSION", ] + output = "$_maven_test_dir/test_embedded/build.gradle" } - if (defined(invoker.src_jar_dep)) { - _copy_target_name = "$target_name-sources.jar" - _deps += [ ":$_copy_target_name" ] - copy(_copy_target_name) { - sources = get_target_outputs(invoker.src_jar_dep) + process_version("cronet_maven_build_fallback_copy") { + template_file = "maven/test/build_fallback.gradle.template" + sources = [ + "//build/util/LASTCHANGE", + "//chrome/VERSION", + ] + output = "$_maven_test_dir/test_fallback/build.gradle" + } + + if (use_platform_icu_alternatives) { + action("cronet_maven_test_build") { + script = "maven/test/build_with_gradle.py" + depfile = "$target_gen_dir/$target_name.d" + deps = [ + ":cronet_maven_build_embedded_copy", + ":cronet_maven_build_fallback_copy", + ":cronet_maven_modules", + ":cronet_maven_test_copy", + + # These deps ensure all source files of the sample app are deps. + ":cronet_sample_apk", + ":cronet_sample_test_apk", + ] + _stamp_file = "$target_gen_dir/$target_name.stamp" outputs = [ - "$_maven_modules_dir/$_module_name/$_maven_version/$_module_name-$_maven_version-sources.jar", + _stamp_file, + "$_maven_test_dir/build/outputs/apk/debug/test-debug.apk", + "$_maven_test_dir/build/outputs/apk/androidTest/debug/test-debug-androidTest.apk", ] - deps = [ - invoker.src_jar_dep, + args = [ + "--project-dir", + rebase_path("$_maven_test_dir"), + "--depfile", + rebase_path(depfile, root_build_dir), + "--stamp", + rebase_path(_stamp_file, root_build_dir), ] + testonly = true } } - if (defined(invoker.javadoc_jar_dep)) { - _copy_target_name = "$target_name-javadoc.jar" - _deps += [ ":$_copy_target_name" ] - copy(_copy_target_name) { - sources = get_target_outputs(invoker.javadoc_jar_dep) + # Builds a maven module. + template("cronet_maven_module") { + _module_name = invoker.module_name + + # Build POM file. + _pom_target_name = "pom_$target_name" + _deps = [ ":$_pom_target_name" ] + process_version(_pom_target_name) { + template_file = "maven/$_module_name.pom.template" + sources = [ + "//build/util/LASTCHANGE", + "//chrome/VERSION", + ] + output = "$_maven_modules_dir/$_module_name/$_maven_version/$_module_name-$_maven_version.pom" + } + + if (defined(invoker.resource_dir)) { + android_resources(invoker.module_name + "_resources") { + resource_dirs = [ invoker.resource_dir ] + android_manifest = "../../../build/android/AndroidManifest.xml" + } + } + + # Build AAR file. + _aar_target_name = "aar_$target_name" + dist_aar(_aar_target_name) { + deps = [ + ":cronet_package_copy", + invoker.aar_jar_dep, + ] + direct_deps_only = true + if (defined(invoker.aar_proguard_config)) { + proguard_configs = [ invoker.aar_proguard_config ] + } + if (defined(invoker.aar_native_lib_dep)) { + native_libraries = get_target_outputs(invoker.aar_native_lib_dep) + deps += [ invoker.aar_native_lib_dep ] + } + if (defined(invoker.resource_dir)) { + deps += [ ":" + invoker.module_name + "_resources" ] + } + output = "$root_build_dir/$_aar_target_name.aar" + } + + _aar_copy_target_name = "$target_name.aar" + _deps += [ ":$_aar_copy_target_name" ] + copy(_aar_copy_target_name) { + sources = get_target_outputs(":$_aar_target_name") outputs = [ - "$_maven_modules_dir/$_module_name/$_maven_version/$_module_name-$_maven_version-javadoc.jar", + "$_maven_modules_dir/$_module_name/$_maven_version/$_module_name-$_maven_version.aar", ] deps = [ - invoker.javadoc_jar_dep, + ":$_aar_target_name", ] } - } - group(target_name) { - deps = _deps + if (defined(invoker.src_jar_dep)) { + _copy_target_name = "$target_name-sources.jar" + _deps += [ ":$_copy_target_name" ] + copy(_copy_target_name) { + sources = get_target_outputs(invoker.src_jar_dep) + outputs = [ + "$_maven_modules_dir/$_module_name/$_maven_version/$_module_name-$_maven_version-sources.jar", + ] + deps = [ + invoker.src_jar_dep, + ] + } + } + + if (defined(invoker.javadoc_jar_dep)) { + _copy_target_name = "$target_name-javadoc.jar" + _deps += [ ":$_copy_target_name" ] + copy(_copy_target_name) { + sources = get_target_outputs(invoker.javadoc_jar_dep) + outputs = [ + "$_maven_modules_dir/$_module_name/$_maven_version/$_module_name-$_maven_version-javadoc.jar", + ] + deps = [ + invoker.javadoc_jar_dep, + ] + } + } + + group(target_name) { + deps = _deps + } } -} -cronet_maven_module("cronet_maven_api_module") { - module_name = "cronet-api" - aar_jar_dep = ":package_api_java" - src_jar_dep = ":jar_cronet_api_source" - javadoc_jar_dep = ":generate_javadoc" - resource_dir = "api/res" -} + cronet_maven_module("cronet_maven_api_module") { + module_name = "cronet-api" + aar_jar_dep = ":package_api_java" + src_jar_dep = ":jar_cronet_api_source" + javadoc_jar_dep = ":generate_javadoc" + resource_dir = "api/res" + } -cronet_maven_module("cronet_maven_impl_common_module") { - module_name = "cronet-common" - aar_jar_dep = ":package_impl_common_java" - aar_proguard_config = "$_package_dir/cronet_impl_common_proguard.cfg" - src_jar_dep = ":jar_cronet_impl_common_java_source" -} + cronet_maven_module("cronet_maven_impl_common_module") { + module_name = "cronet-common" + aar_jar_dep = ":package_impl_common_java" + aar_proguard_config = "$_package_dir/cronet_impl_common_proguard.cfg" + src_jar_dep = ":jar_cronet_impl_common_java_source" + } -cronet_maven_module("cronet_maven_impl_native_module") { - module_name = "cronet-embedded" - aar_jar_dep = ":package_impl_native_java" - aar_proguard_config = "$_package_dir/cronet_impl_native_proguard.cfg" - aar_native_lib_dep = ":cronet_package_copy_native_lib" - src_jar_dep = ":jar_cronet_impl_native_java_source" -} + cronet_maven_module("cronet_maven_impl_native_module") { + module_name = "cronet-embedded" + aar_jar_dep = ":package_impl_native_java" + aar_proguard_config = "$_package_dir/cronet_impl_native_proguard.cfg" + aar_native_lib_dep = ":cronet_package_copy_native_lib" + src_jar_dep = ":jar_cronet_impl_native_java_source" + } -cronet_maven_module("cronet_maven_impl_platform_module") { - module_name = "cronet-fallback" - aar_jar_dep = ":package_impl_platform_java" - aar_proguard_config = "$_package_dir/cronet_impl_platform_proguard.cfg" - src_jar_dep = ":jar_cronet_impl_platform_java_source" -} + cronet_maven_module("cronet_maven_impl_platform_module") { + module_name = "cronet-fallback" + aar_jar_dep = ":package_impl_platform_java" + aar_proguard_config = "$_package_dir/cronet_impl_platform_proguard.cfg" + src_jar_dep = ":jar_cronet_impl_platform_java_source" + } -group("cronet_maven_modules") { - deps = [ - ":cronet_maven_api_module", - ":cronet_maven_impl_common_module", - ":cronet_maven_impl_native_module", - ":cronet_maven_impl_platform_module", - ] + group("cronet_maven_modules") { + deps = [ + ":cronet_maven_api_module", + ":cronet_maven_impl_common_module", + ":cronet_maven_impl_native_module", + ":cronet_maven_impl_platform_module", + ] + } } |