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 11 namespace crypto { 12 13 ScopedTestNSSChromeOSUser::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 24 ScopedTestNSSChromeOSUser::~ScopedTestNSSChromeOSUser() { 25 if (constructed_successfully_) 26 CloseChromeOSUserForTesting(username_hash_); 27 } 28 29 void 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