| // Copyright 2024 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CRYPTO_SCOPED_FAKE_APPLE_KEYCHAIN_V2_H_ |
| #define CRYPTO_SCOPED_FAKE_APPLE_KEYCHAIN_V2_H_ |
| |
| #include <memory> |
| #include <string> |
| |
| #include "crypto/crypto_export.h" |
| |
| namespace crypto { |
| |
| class FakeAppleKeychainV2; |
| |
| // ScopedFakeAppleKeychainV2 installs itself as testing override for |
| // `AppleKeychainV2::GetInstance()`. |
| class CRYPTO_EXPORT ScopedFakeAppleKeychainV2 { |
| public: |
| // Supported types of user verification, reported by |
| // LAContextCanEvaluatePolicy. |
| enum class UVMethod { |
| kNone, |
| kPasswordOnly, |
| kBiometrics, |
| }; |
| |
| explicit ScopedFakeAppleKeychainV2(const std::string& keychain_access_group); |
| ~ScopedFakeAppleKeychainV2(); |
| |
| FakeAppleKeychainV2* keychain() { return keychain_.get(); } |
| |
| void SetUVMethod(UVMethod uv_method); |
| |
| private: |
| std::unique_ptr<FakeAppleKeychainV2> keychain_; |
| }; |
| |
| } // namespace crypto |
| |
| #endif // CRYPTO_SCOPED_FAKE_APPLE_KEYCHAIN_V2_H_ |