test_keychain_search_list_mac.cc 1.5 KB

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