| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "net/cert/test_keychain_search_list_mac.h" |
| |
| #include "base/memory/ptr_util.h" |
| |
| namespace net { |
| |
| namespace { |
| |
| TestKeychainSearchList* g_test_keychain_search_list = nullptr; |
| |
| } // namespace |
| |
| TestKeychainSearchList::TestKeychainSearchList() { |
| g_test_keychain_search_list = this; |
| scoped_keychain_search_list.reset( |
| CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks)); |
| } |
| |
| TestKeychainSearchList::~TestKeychainSearchList() { |
| g_test_keychain_search_list = nullptr; |
| } |
| |
| // static |
| std::unique_ptr<TestKeychainSearchList> TestKeychainSearchList::Create() { |
| if (g_test_keychain_search_list) |
| return nullptr; |
| return base::WrapUnique(new TestKeychainSearchList); |
| } |
| |
| // static |
| bool TestKeychainSearchList::HasInstance() { |
| return !!g_test_keychain_search_list; |
| } |
| |
| // static |
| TestKeychainSearchList* TestKeychainSearchList::GetInstance() { |
| return g_test_keychain_search_list; |
| } |
| |
| OSStatus TestKeychainSearchList::CopySearchList( |
| CFArrayRef* keychain_search_list) const { |
| *keychain_search_list = |
| CFArrayCreateCopy(kCFAllocatorDefault, scoped_keychain_search_list.get()); |
| return *keychain_search_list ? 0 : errSecAllocate; |
| } |
| |
| void TestKeychainSearchList::AddKeychain(SecKeychainRef keychain) { |
| CFArrayAppendValue(scoped_keychain_search_list.get(), keychain); |
| } |
| |
| } // namespace net |