summaryrefslogtreecommitdiff
path: root/chromium/components/cronet/android/BUILD.gn
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/components/cronet/android/BUILD.gn')
-rw-r--r--chromium/components/cronet/android/BUILD.gn2162
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",
+ ]
+ }
}