1 // Copyright 2016 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "net/cert/test_keychain_search_list_mac.h" 6 7 #include "base/memory/ptr_util.h" 8 9 namespace net { 10 11 namespace { 12 13 TestKeychainSearchList* g_test_keychain_search_list = nullptr; 14 15 } // namespace 16 TestKeychainSearchList()17TestKeychainSearchList::TestKeychainSearchList() { 18 g_test_keychain_search_list = this; 19 scoped_keychain_search_list.reset( 20 CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks)); 21 } 22 ~TestKeychainSearchList()23TestKeychainSearchList::~TestKeychainSearchList() { 24 g_test_keychain_search_list = nullptr; 25 } 26 27 // static Create()28std::unique_ptr<TestKeychainSearchList> TestKeychainSearchList::Create() { 29 if (g_test_keychain_search_list) 30 return nullptr; 31 return base::WrapUnique(new TestKeychainSearchList); 32 } 33 34 // static HasInstance()35bool TestKeychainSearchList::HasInstance() { 36 return !!g_test_keychain_search_list; 37 } 38 39 // static GetInstance()40TestKeychainSearchList* TestKeychainSearchList::GetInstance() { 41 return g_test_keychain_search_list; 42 } 43 CopySearchList(CFArrayRef * keychain_search_list) const44OSStatus TestKeychainSearchList::CopySearchList( 45 CFArrayRef* keychain_search_list) const { 46 *keychain_search_list = 47 CFArrayCreateCopy(kCFAllocatorDefault, scoped_keychain_search_list.get()); 48 return *keychain_search_list ? 0 : errSecAllocate; 49 } 50 AddKeychain(SecKeychainRef keychain)51void TestKeychainSearchList::AddKeychain(SecKeychainRef keychain) { 52 CFArrayAppendValue(scoped_keychain_search_list.get(), keychain); 53 } 54 55 } // namespace net 56