1// Copyright 2014 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 "crypto/scoped_test_nss_chromeos_user.h" 6 7#include "base/logging.h" 8#include "crypto/nss_util.h" 9#include "crypto/nss_util_internal.h" 10 11namespace crypto { 12 13ScopedTestNSSChromeOSUser::ScopedTestNSSChromeOSUser( 14 const std::string& username_hash) 15 : username_hash_(username_hash), constructed_successfully_(false) { 16 if (!temp_dir_.CreateUniqueTempDir()) 17 return; 18 // This opens a software DB in the given folder. In production code that is in 19 // the home folder, but for testing the temp folder is used. 20 constructed_successfully_ = 21 InitializeNSSForChromeOSUser(username_hash, temp_dir_.path()); 22} 23 24ScopedTestNSSChromeOSUser::~ScopedTestNSSChromeOSUser() { 25 if (constructed_successfully_) 26 CloseChromeOSUserForTesting(username_hash_); 27} 28 29void ScopedTestNSSChromeOSUser::FinishInit() { 30 DCHECK(constructed_successfully_); 31 if (!ShouldInitializeTPMForChromeOSUser(username_hash_)) 32 return; 33 WillInitializeTPMForChromeOSUser(username_hash_); 34 InitializePrivateSoftwareSlotForChromeOSUser(username_hash_); 35} 36 37} // namespace crypto 38