| Index: crypto/mock_apple_keychain.h
|
| diff --git a/crypto/mock_keychain_mac.h b/crypto/mock_apple_keychain.h
|
| similarity index 88%
|
| rename from crypto/mock_keychain_mac.h
|
| rename to crypto/mock_apple_keychain.h
|
| index 36bb94fc0d34337a6f45b772a4f9a9ad7cb84d0b..efbb438aa6a4a46d4899e376a3f61a4bcf56c650 100644
|
| --- a/crypto/mock_keychain_mac.h
|
| +++ b/crypto/mock_apple_keychain.h
|
| @@ -13,27 +13,47 @@
|
| #include <vector>
|
|
|
| #include "base/compiler_specific.h"
|
| -#include "crypto/keychain_mac.h"
|
| +#include "crypto/apple_keychain.h"
|
|
|
| namespace crypto {
|
|
|
| -// Type used for the keys in the std::map(s) and MockKeychain items.
|
| -typedef uintptr_t MockKeychainItemType;
|
| -
|
| // Mock Keychain wrapper for testing code that interacts with the OS X
|
| // Keychain. Implemented by storing SecKeychainAttributeList and
|
| // KeychainPasswordData values in separate mutable containers and
|
| // mapping them to integer keys.
|
| //
|
| // Note that "const" is pretty much meaningless for this class; the const-ness
|
| -// of MacKeychain doesn't apply to the actual keychain data, so all of the Mock
|
| -// data is mutable; don't assume that it won't change over the life of tests.
|
| -class CRYPTO_EXPORT MockKeychain : public MacKeychain {
|
| +// of AppleKeychain doesn't apply to the actual keychain data, so all of the
|
| +// Mock data is mutable; don't assume that it won't change over the life of
|
| +// tests.
|
| +class CRYPTO_EXPORT MockAppleKeychain : public AppleKeychain {
|
| public:
|
| - MockKeychain();
|
| - virtual ~MockKeychain();
|
| + MockAppleKeychain();
|
| + virtual ~MockAppleKeychain();
|
| +
|
| + // AppleKeychain implementation.
|
| + virtual OSStatus FindGenericPassword(
|
| + CFTypeRef keychainOrArray,
|
| + UInt32 serviceNameLength,
|
| + const char* serviceName,
|
| + UInt32 accountNameLength,
|
| + const char* accountName,
|
| + UInt32* passwordLength,
|
| + void** passwordData,
|
| + SecKeychainItemRef* itemRef) const OVERRIDE;
|
| + virtual OSStatus ItemFreeContent(SecKeychainAttributeList* attrList,
|
| + void* data) const OVERRIDE;
|
| + virtual OSStatus AddGenericPassword(
|
| + SecKeychainRef keychain,
|
| + UInt32 serviceNameLength,
|
| + const char* serviceName,
|
| + UInt32 accountNameLength,
|
| + const char* accountName,
|
| + UInt32 passwordLength,
|
| + const void* passwordData,
|
| + SecKeychainItemRef* itemRef) const OVERRIDE;
|
|
|
| - // MacKeychain implementation.
|
| +#if !defined(OS_IOS)
|
| virtual OSStatus ItemCopyAttributesAndData(
|
| SecKeychainItemRef itemRef,
|
| SecKeychainAttributeInfo* info,
|
| @@ -72,26 +92,6 @@ class CRYPTO_EXPORT MockKeychain : public MacKeychain {
|
| UInt32 passwordLength,
|
| const void* passwordData,
|
| SecKeychainItemRef* itemRef) const OVERRIDE;
|
| - virtual OSStatus FindGenericPassword(
|
| - CFTypeRef keychainOrArray,
|
| - UInt32 serviceNameLength,
|
| - const char* serviceName,
|
| - UInt32 accountNameLength,
|
| - const char* accountName,
|
| - UInt32* passwordLength,
|
| - void** passwordData,
|
| - SecKeychainItemRef* itemRef) const OVERRIDE;
|
| - virtual OSStatus ItemFreeContent(SecKeychainAttributeList* attrList,
|
| - void* data) const OVERRIDE;
|
| - virtual OSStatus AddGenericPassword(
|
| - SecKeychainRef keychain,
|
| - UInt32 serviceNameLength,
|
| - const char* serviceName,
|
| - UInt32 accountNameLength,
|
| - const char* accountName,
|
| - UInt32 passwordLength,
|
| - const void* passwordData,
|
| - SecKeychainItemRef* itemRef) const OVERRIDE;
|
| virtual void Free(CFTypeRef ref) const OVERRIDE;
|
|
|
| // Return the counts of objects returned by Create/Copy functions but never
|
| @@ -118,6 +118,7 @@ class CRYPTO_EXPORT MockKeychain : public MacKeychain {
|
| };
|
| // Adds a keychain item with the given info to the test set.
|
| void AddTestItem(const KeychainTestData& item_data);
|
| +#endif // !defined(OS_IOS)
|
|
|
| // |FindGenericPassword()| can return different results depending on user
|
| // interaction with the system Keychain. For mocking purposes we allow the
|
| @@ -139,6 +140,15 @@ class CRYPTO_EXPORT MockKeychain : public MacKeychain {
|
| int password_data_count() const { return password_data_count_; }
|
|
|
| private:
|
| +
|
| + // Type used for the keys in the std::map(s) and MockAppleKeychain items.
|
| + typedef uintptr_t MockKeychainItemType;
|
| +
|
| + // Type of the map holding the mock keychain attributes.
|
| + typedef std::map<MockKeychainItemType, SecKeychainAttributeList>
|
| + MockKeychainAttributesMap;
|
| +
|
| +#if !defined(OS_IOS)
|
| // Returns true if the keychain already contains a password that matches the
|
| // attributes provided.
|
| bool AlreadyContainsInternetPassword(
|
| @@ -178,10 +188,9 @@ class CRYPTO_EXPORT MockKeychain : public MacKeychain {
|
| void SetTestDataNegativeItem(MockKeychainItemType item, Boolean value);
|
| void SetTestDataCreator(MockKeychainItemType item, OSType value);
|
| // Sets the password data and length for the item-th test item.
|
| - void SetTestDataPasswordBytes(
|
| - MockKeychainItemType item,
|
| - const void* data,
|
| - size_t length);
|
| + void SetTestDataPasswordBytes(MockKeychainItemType item,
|
| + const void* data,
|
| + size_t length);
|
| // Sets the password for the item-th test item. As with SetTestDataString,
|
| // the data will not be null-terminated.
|
| void SetTestDataPasswordString(MockKeychainItemType item, const char* value);
|
| @@ -199,11 +208,11 @@ class CRYPTO_EXPORT MockKeychain : public MacKeychain {
|
| UInt32 length;
|
| } KeychainPasswordData;
|
|
|
| - // Mutable because the MockKeychain API requires its internal keychain storage
|
| - // to be modifiable by users of this class.
|
| + // Mutable because the MockAppleKeychain API requires its internal keychain
|
| + // storage to be modifiable by users of this class.
|
| + mutable MockKeychainAttributesMap keychain_attr_list_;
|
| mutable std::map<MockKeychainItemType,
|
| - SecKeychainAttributeList> keychain_attr_list_;
|
| - mutable std::map<MockKeychainItemType, KeychainPasswordData> keychain_data_;
|
| + KeychainPasswordData> keychain_data_;
|
| mutable MockKeychainItemType next_item_key_;
|
|
|
| // Tracks the items that should be returned in subsequent calls to
|
| @@ -221,6 +230,7 @@ class CRYPTO_EXPORT MockKeychain : public MacKeychain {
|
|
|
| // Tracks which items (by key) were added with AddInternetPassword.
|
| mutable std::set<MockKeychainItemType> added_via_api_;
|
| +#endif // !defined(OS_IOS)
|
|
|
| // Result code for the |FindGenericPassword()| method.
|
| OSStatus find_generic_result_;
|
|
|