# Copyright 2017 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/safe_browsing/buildflags.gni") import("//testing/libfuzzer/fuzzer_test.gni") import("//third_party/protobuf/proto_library.gni") proto_library("safebrowsing_proto") { sources = [ "safebrowsing.proto" ] } proto_library("v4_store_proto") { sources = [ "v4_store.proto" ] deps = [ ":safebrowsing_proto" ] } # This target is shared between the desktop and mobile versions. group("safe_browsing_db_shared") { deps = [ ":database_manager", ":safebrowsing_proto", ":util", "//components/safe_browsing/core/common:safe_browsing_prefs", ] } # This target is for the desktop version. group("db") { deps = [ ":safe_browsing_db_shared", ":sb_local_database_manager", ] } static_library("database_manager") { sources = [ "database_manager.cc", "database_manager.h", ] configs += [ "//build/config/compiler:wexit_time_destructors" ] deps = [ ":util", ":v4_get_hash_protocol_manager", ":v4_protocol_manager_util", ":v5_get_hash_protocol_manager", "//base", "//components/safe_browsing/core/common", "//components/safe_browsing/core/common:threat_enums", "//mojo/public/cpp/bindings", "//net", "//services/network/public/cpp", "//services/network/public/mojom", "//url", ] public_deps = [ ":safebrowsing_proto" ] } static_library("test_database_manager") { sources = [ "fake_database_manager.cc", "fake_database_manager.h", "test_database_manager.cc", "test_database_manager.h", ] deps = [ ":database_manager", ":util", ":v4_protocol_manager_util", "//base", "//components/safe_browsing/core/common:features", "//net", "//services/network/public/cpp", "//services/network/public/mojom", ] } static_library("util") { sources = [ "util.cc", "util.h", ] configs += [ "//build/config/compiler:wexit_time_destructors" ] public_deps = [ ":v4_protocol_manager_util", "//components/safe_browsing/core/common:safe_browsing_prefs", ] deps = [ "//base", "//components/version_info", "//crypto", "//google_apis", "//net", "//url", ] } static_library("sb_database") { sources = [ "sb_database.cc", "sb_database.h", ] configs += [ "//build/config/compiler:wexit_time_destructors" ] public_deps = [ ":safebrowsing_proto" ] deps = [ ":sb_store", ":v4_protocol_manager_util", "//base", "//components/safe_browsing/core/common", "//components/safe_browsing/core/common/proto:safebrowsingv5_proto", "//components/safe_browsing/core/common/proto:webui_proto", ] } static_library("v4_get_hash_protocol_manager") { sources = [ "v4_get_hash_protocol_manager.cc", "v4_get_hash_protocol_manager.h", ] configs += [ "//build/config/compiler:wexit_time_destructors" ] public_deps = [ ":safebrowsing_proto", ":util", ":v4_protocol_config", ] deps = [ ":v4_protocol_manager_util", "//base", "//components/safe_browsing/core/common", "//components/safe_browsing/core/common/proto:webui_proto", "//net", "//services/network/public/cpp", "//url", ] } source_set("v5_search_hashes_util") { sources = [ "v5_search_hashes_util.cc", "v5_search_hashes_util.h", ] configs += [ "//build/config/compiler:wexit_time_destructors" ] public_deps = [ ":util", "//components/safe_browsing/core/common/proto:safebrowsingv5_proto", ] deps = [ ":v5_search_hashes_cache", "//base", "//components/safe_browsing/core/common", "//google_apis", "//net", ] } source_set("v5_get_hash_protocol_manager") { sources = [ "v5_get_hash_protocol_manager.cc", "v5_get_hash_protocol_manager.h", ] configs += [ "//build/config/compiler:wexit_time_destructors" ] public_deps = [ ":util", ":v5_search_hashes_util", ] deps = [ ":v4_protocol_manager_util", ":v5_search_hashes_cache", "//base", "//components/keyed_service/core", "//components/safe_browsing/core/browser/db:v4_protocol_config", "//components/safe_browsing/core/common", "//components/safe_browsing/core/common/proto:webui_proto", "//services/network/public/cpp", ] } static_library("sb_local_database_manager") { sources = [ "sb_local_database_manager.cc", "sb_local_database_manager.h", ] configs += [ "//build/config/compiler:wexit_time_destructors" ] deps = [ ":database_manager", ":safebrowsing_proto", ":sb_database", ":sb_store", ":sb_update_protocol_manager", ":v4_get_hash_protocol_manager", ":v4_protocol_manager_util", ":v5_get_hash_protocol_manager", "//base", "//build:branding_buildflags", "//components/safe_browsing/core/common", "//components/safe_browsing/core/common/proto:webui_proto", "//crypto", "//mojo/public/cpp/bindings", "//net", "//services/network/public/cpp", "//services/network/public/mojom", "//url", ] } source_set("v4_protocol_config") { sources = [ "v4_protocol_config.cc", "v4_protocol_config.h", ] deps = [ "//components/version_info", "//google_apis", ] } source_set("v4_protocol_manager_util") { sources = [ "sb_protocol_manager_util.cc", "sb_protocol_manager_util.h", "v4_protocol_manager_util.h", ] configs += [ "//build/config/compiler:wexit_time_destructors" ] public_deps = [ ":safebrowsing_proto" ] deps = [ ":v4_protocol_config", "//base", "//components/safe_browsing/core/common:features", "//components/safe_browsing/core/common:safe_browsing_prefs", "//google_apis", "//net", "//url", ] } source_set("prefix_iterator") { sources = [ "prefix_iterator.cc", "prefix_iterator.h", ] configs += [ "//build/config/compiler:wexit_time_destructors" ] deps = [ ":v4_protocol_manager_util", "//base", ] } if (is_android) { import("//build/config/android/rules.gni") java_cpp_enum("sb_threat_values") { sources = [ "sb_protocol_manager_util.h" ] } } source_set("v4_rice") { if (safe_browsing_mode != 0 || is_ios) { sources = [ "v4_rice.cc", "v4_rice.h", ] configs += [ "//build/config/compiler:wexit_time_destructors" ] deps = [ "//base", "//third_party/protobuf:protobuf_lite", ] } } source_set("v5_rice") { if (safe_browsing_mode != 0 || is_ios) { sources = [ "v5_hash_list_rice_decoder.cc", "v5_hash_list_rice_decoder.h", "v5_rice.cc", "v5_rice.h", ] configs += [ "//build/config/compiler:wexit_time_destructors" ] public_deps = [ "//components/safe_browsing/core/common/proto:safebrowsingv5_proto" ] deps = [ "//base" ] } } source_set("sb_store") { sources = [ "hash_prefix_container.cc", "hash_prefix_container.h", "hash_prefix_list.cc", "hash_prefix_list.h", "hash_prefix_map.cc", "hash_prefix_map.h", "sb_store_file_format.h", ] if (safe_browsing_mode != 0 || is_ios) { sources += [ "sb_store.cc", "sb_store.h", "v4_store.cc", "v4_store.h", "v5_store.cc", "v5_store.h", ] } configs += [ "//build/config/compiler:wexit_time_destructors" ] public_deps = [ ":safebrowsing_proto", ":v4_store_proto", "//components/safe_browsing/core/common/proto:safebrowsingv5_proto", "//components/safe_browsing/core/common/proto:v5_store_proto", ] deps = [ ":prefix_iterator", ":v4_protocol_manager_util", ":v4_rice", ":v5_rice", "//base", "//components/crx_file", "//components/safe_browsing/core/common", "//components/safe_browsing/core/common/proto:webui_proto", "//crypto", ] } # TODO(crbug.com/362791941): Handle v4 references static_library("v4_test_util") { testonly = true sources = [ "v4_embedded_test_server_util.cc", "v4_embedded_test_server_util.h", "v4_test_util.cc", "v4_test_util.h", "v5_embedded_test_server_util.cc", "v5_embedded_test_server_util.h", ] deps = [ ":sb_database", ":sb_store", ":util", ":v4_get_hash_protocol_manager", ":v4_protocol_manager_util", ":v5_search_hashes_util", "//base", "//components/safe_browsing/core/common/proto:safebrowsingv5_proto", "//net:test_support", "//services/network/public/cpp", ] # TODO(crbug.com/40031409): Fix code that adds exit-time destructors and # enable the diagnostic by removing this line. configs += [ "//build/config/compiler:no_exit_time_destructors" ] } static_library("sb_update_protocol_manager") { sources = [ "sb_update_protocol_manager.cc", "sb_update_protocol_manager.h", "v4_update_protocol_manager.cc", "v4_update_protocol_manager.h", "v5_update_protocol_manager.cc", "v5_update_protocol_manager.h", ] configs += [ "//build/config/compiler:wexit_time_destructors" ] public_deps = [ ":v4_protocol_config", "//components/safe_browsing/core/common/proto:safebrowsingv5_proto", ] deps = [ ":safebrowsing_proto", ":util", ":v4_protocol_manager_util", ":v5_rice", "//base", "//components/safe_browsing:buildflags", "//components/safe_browsing/core/common", "//components/safe_browsing/core/common:safe_browsing_prefs", "//components/safe_browsing/core/common/proto:webui_proto", "//google_apis", "//net", "//services/network/public/cpp", "//url", ] } static_library("v5_search_hashes_cache") { sources = [ "v5_search_hashes_cache.cc", "v5_search_hashes_cache.h", ] configs += [ "//build/config/compiler:wexit_time_destructors" ] deps = [ ":v4_protocol_manager_util", "//base", "//components/history/core/browser", "//components/keyed_service/core", "//components/safe_browsing/core/common", "//components/safe_browsing/core/common/hashprefix_realtime:hash_realtime_utils", "//components/safe_browsing/core/common/proto:safebrowsingv5_proto", ] } source_set("unit_tests_shared") { testonly = true sources = [ "allowlist_checker_client_unittest.cc", "database_manager_unittest.cc", "sb_protocol_manager_util_unittest.cc", "util_unittest.cc", "v4_get_hash_protocol_manager_unittest.cc", "v5_get_hash_protocol_manager_unittest.cc", "v5_search_hashes_cache_unittest.cc", "v5_search_hashes_util_unittest.cc", ] deps = [ ":allowlist_checker_client", ":database_manager", ":safebrowsing_proto", ":test_database_manager", ":util", ":v4_get_hash_protocol_manager", ":v4_protocol_manager_util", ":v4_test_util", ":v5_get_hash_protocol_manager", ":v5_search_hashes_cache", ":v5_search_hashes_util", "//base", "//base/test:test_support", "//components/history/core/browser", "//components/history/core/test", "//components/safe_browsing/core/common", "//components/safe_browsing/core/common/hashprefix_realtime:hash_realtime_utils", "//components/safe_browsing/core/common/proto:safebrowsingv5_proto", "//net", "//net:test_support", "//services/network:test_support", "//testing/gtest", ] } source_set("unit_tests_local_db") { testonly = true sources = [ "hash_prefix_list_unittest.cc", "hash_prefix_map_unittest.cc", "sb_database_unittest.cc", "sb_local_database_manager_unittest.cc", "v4_update_protocol_manager_unittest.cc", "v5_update_protocol_manager_unittest.cc", ] deps = [ ":database_manager", ":sb_database", ":sb_local_database_manager", ":sb_store", ":sb_update_protocol_manager", ":unit_tests_shared", ":util", ":v4_protocol_manager_util", ":v4_store_proto", ":v4_test_util", ":v5_get_hash_protocol_manager", ":v5_search_hashes_cache", "//base", "//build:branding_buildflags", "//components/crx_file", "//components/prefs:test_support", "//components/safe_browsing:buildflags", "//components/safe_browsing/core/common", "//components/safe_browsing/core/common:safe_browsing_prefs", "//crypto", "//net", "//net:test_support", "//services/network:test_support", "//services/network/public/cpp", "//testing/gtest", "//url", ] if (safe_browsing_mode != 0 || is_ios) { sources += [ "v4_rice_unittest.cc", "v4_store_unittest.cc", "v5_hash_list_rice_decoder_unittest.cc", "v5_rice_unittest.cc", "v5_store_unittest.cc", ] deps += [ ":v4_rice", ":v5_rice", ] } } static_library("allowlist_checker_client") { sources = [ "allowlist_checker_client.cc", "allowlist_checker_client.h", ] configs += [ "//build/config/compiler:wexit_time_destructors" ] deps = [ ":database_manager", "//base", "//url", ] } fuzzer_test("v4_get_hash_protocol_manager_fuzzer") { sources = [ "v4_get_hash_protocol_manager_fuzzer.cc" ] deps = [ ":safebrowsing_proto", ":v4_get_hash_protocol_manager", ] } fuzzer_test("v4_store_fuzzer") { sources = [ "v4_store_fuzzer.cc" ] deps = [ ":sb_store", ":v4_protocol_manager_util", ":v4_test_util", "//base/test:test_support", "//testing/libfuzzer:libfuzzer_base_wrappers", ] }