blob: c2fe00107a2ee4c80b853bd3087f7db893987e8b [file] [log] [blame]
Andrew Top0d1858f2019-05-15 22:01:47 -07001// 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
5#include "net/cert/test_keychain_search_list_mac.h"
6
7#include "base/memory/ptr_util.h"
8
9namespace net {
10
11namespace {
12
13TestKeychainSearchList* g_test_keychain_search_list = nullptr;
14
15} // namespace
16
17TestKeychainSearchList::TestKeychainSearchList() {
18 g_test_keychain_search_list = this;
19 scoped_keychain_search_list.reset(
20 CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks));
21}
22
23TestKeychainSearchList::~TestKeychainSearchList() {
24 g_test_keychain_search_list = nullptr;
25}
26
27// static
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
35bool TestKeychainSearchList::HasInstance() {
36 return !!g_test_keychain_search_list;
37}
38
39// static
40TestKeychainSearchList* TestKeychainSearchList::GetInstance() {
41 return g_test_keychain_search_list;
42}
43
44OSStatus 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
51void TestKeychainSearchList::AddKeychain(SecKeychainRef keychain) {
52 CFArrayAppendValue(scoped_keychain_search_list.get(), keychain);
53}
54
55} // namespace net