# Copyright 2023 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//mojo/public/tools/bindings/mojom.gni")
mojom("common_mojom") {
generate_java = true
sources = [ "encryptor.mojom" ]
public_deps = [
":algorithm_mojom",
"//mojo/public/mojom/base",
]
cpp_typemaps = [
{
types = [
{
mojom = "os_crypt_async.mojom.Encryptor"
cpp = "::os_crypt_async::Encryptor"
default_constructible = false
move_only = true
},
{
mojom = "os_crypt_async.mojom.Key"
cpp = "::os_crypt_async::Encryptor::Key"
default_constructible = false
move_only = true
},
]
traits_headers = [
"encryptor.h",
"encryptor_mojom_traits.h",
]
traits_sources = [ "encryptor_mojom_traits.cc" ]
traits_deps = [
":algorithm_mojom",
":common",
":crypto_lib",
]
},
]
}
mojom("algorithm_mojom") {
# External code should depend on ":common_mojom" instead.
visibility = [ ":*" ]
generate_java = true
sources = [ "algorithm.mojom" ]
public_deps = [ "//mojo/public/mojom/base" ]
}
component("common") {
sources = [
"encryptor.cc",
"encryptor.h",
"encryptor_features.cc",
"encryptor_features.h",
]
deps = [
":crypto_lib",
"//components/os_crypt/sync",
"//crypto",
]
public_deps = [
":algorithm_mojom",
"//base",
]
defines = [ "IS_OS_CRYPT_ASYNC_IMPL" ]
}
# Mojo typemaps do not support adding a library dependency directly, so this
# allows the dependency on crypt32.lib to be forwarded to both :common and
# :common_mojom which might be in different modules in a component-build.
source_set("crypto_lib") {
if (is_win) {
libs = [ "crypt32.lib" ]
}
}
source_set("unit_tests") {
testonly = true
sources = [ "encryptor_unittest.cc" ]
deps = [
":common",
":common_mojom",
"//base",
"//base/test:test_support",
"//components/os_crypt/sync",
"//components/os_crypt/sync:test_support",
"//crypto",
"//mojo/public/cpp/test_support:test_utils",
"//testing/gtest",
]
if (is_win) {
libs = [ "crypt32.lib" ]
}
}