# Copyright 2018 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("//components/enterprise/buildflags/buildflags.gni") import("//components/safe_browsing/buildflags.gni") if (is_android) { import("//build/config/android/config.gni") import("//build/config/android/rules.gni") import("//third_party/jni_zero/jni_zero.gni") } source_set("internal") { visibility = [ ":for_tests", "//components/download/public/common:public", ] configs += [ "//components/download/public/common:components_download_implementation", ] sources = [ "all_download_event_notifier.cc", "base_file.cc", "download_create_info.cc", "download_db_cache.cc", "download_db_cache.h", "download_file_factory.cc", "download_file_impl.cc", "download_file_with_copy.cc", "download_file_with_copy.h", "download_interrupt_reasons_impl.cc", "download_interrupt_reasons_utils.cc", "download_item_impl.cc", "download_item_impl_delegate.cc", "download_item_rename_handler.cc", "download_job.cc", "download_job_factory.cc", "download_job_impl.cc", "download_job_impl.h", "download_path_reservation_tracker.cc", "download_response_handler.cc", "download_stats.cc", "download_task_runner.cc", "download_ukm_helper.cc", "download_utils.cc", "download_worker.cc", "download_worker.h", "in_progress_download_manager.cc", "parallel_download_job.cc", "parallel_download_job.h", "parallel_download_utils.cc", "parallel_download_utils.h", "rate_estimator.cc", "resource_downloader.cc", "resource_downloader.h", "save_package_download_job.cc", "save_package_download_job.h", "simple_download_manager.cc", "simple_download_manager_coordinator.cc", "stream_handle_input_stream.cc", "url_download_handler_factory.cc", "url_download_request_handle.cc", "url_loader_factory_provider.cc", ] public_deps = [ "//components/enterprise/buildflags", "//components/services/quarantine/public/mojom", "//mojo/public/cpp/bindings", "//services/network/public/mojom", ] deps = [ "//base", "//components/download/database", "//components/download/public/common:interfaces", "//components/filename_generation", "//components/leveldb_proto", "//components/safe_browsing:buildflags", "//components/services/quarantine", "//mojo/public/c/system", "//net", "//services/device/public/mojom", "//services/metrics/public/cpp:metrics_cpp", "//services/metrics/public/cpp:ukm_builders", "//services/network/public/cpp", "//services/service_manager/public/cpp", ] configs += [ "//build/config/compiler:wexit_time_destructors" ] # TODO(crbug.com/40120259): Enable this on Fuchsia if (safe_browsing_mode > 0 && !is_fuchsia) { deps += [ "//components/safe_browsing/content/common:file_type_policies" ] } if (enterprise_cloud_content_analysis || is_android) { deps += [ "//components/enterprise/obfuscation/core:enterprise_obfuscation" ] } if (is_android) { sources += [ "android/download_collection_bridge.cc", "android/download_collection_bridge.h", "in_memory_download_file.cc", "in_memory_download_file.h", ] deps += [ ":jni_headers" ] } if (is_win) { sources += [ "base_file_win.cc" ] } if (is_posix || is_fuchsia) { sources += [ "base_file_posix.cc" ] } } if (is_android) { android_library("internal_java") { srcjar_deps = [ ":jni_headers" ] sources = [ "android/java/src/org/chromium/components/download/DownloadCollectionBridge.java", "android/java/src/org/chromium/components/download/DownloadDelegate.java", "android/java/src/org/chromium/components/download/InMemoryDownloadFile.java", ] deps = [ "//base:base_java", "//build/android:build_java", "//third_party/android_provider:android_provider_java", "//third_party/androidx:androidx_annotation_annotation_java", "//third_party/jni_zero:jni_zero_java", ] } generate_jni("jni_headers") { visibility = [ ":*" ] sources = [ "android/java/src/org/chromium/components/download/DownloadCollectionBridge.java", "android/java/src/org/chromium/components/download/InMemoryDownloadFile.java", ] } } # tests need to access both public and internal sources. So in the component # build case, we exclude the internal dependency as it is included in the # test_support target under public. group("for_tests") { visibility = [ ":unit_tests" ] if (!is_component_build) { public_deps = [ ":internal" ] } } source_set("unit_tests") { testonly = true if (is_component_build) { check_includes = false } sources = [ "all_download_event_notifier_unittest.cc", "base_file_unittest.cc", "download_db_cache_unittest.cc", "download_file_unittest.cc", "download_item_impl_unittest.cc", "download_job_factory_unittest.cc", "download_path_reservation_tracker_unittest.cc", "download_response_handler_unittest.cc", "download_stats_unittest.cc", "download_ukm_helper_unittest.cc", "download_utils_unittest.cc", "parallel_download_job_unittest.cc", "parallel_download_utils_unittest.cc", "rate_estimator_unittest.cc", ] deps = [ ":for_tests", "//base/test:test_support", "//components/download/database", "//components/download/public/common:test_support", "//components/leveldb_proto", "//components/leveldb_proto:test_support", "//components/ukm:test_support", "//crypto", "//net", "//net/traffic_annotation:test_support", "//services/metrics/public/cpp:ukm_builders", "//testing/gmock", "//testing/gtest", ] }