Index: crypto/scoped_test_nss_chromeos_user.cc |
diff --git a/crypto/scoped_test_nss_chromeos_user.cc b/crypto/scoped_test_nss_chromeos_user.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..20eadf49db86444315ebf9a409ac6e52a2f32277 |
--- /dev/null |
+++ b/crypto/scoped_test_nss_chromeos_user.cc |
@@ -0,0 +1,37 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "crypto/scoped_test_nss_chromeos_user.h" |
+ |
+#include "base/logging.h" |
+#include "crypto/nss_util.h" |
+#include "crypto/nss_util_internal.h" |
+ |
+namespace crypto { |
+ |
+ScopedTestNSSChromeOSUser::ScopedTestNSSChromeOSUser( |
+ const std::string& username_hash) |
+ : username_hash_(username_hash), constructed_successfully_(false) { |
+ if (!temp_dir_.CreateUniqueTempDir()) |
+ return; |
+ // This opens a software DB in the given folder. In production code that is in |
+ // the home folder, but for testing the temp folder is used. |
+ constructed_successfully_ = InitializeNSSForChromeOSUser( |
+ username_hash, username_hash, temp_dir_.path()); |
+} |
+ |
+ScopedTestNSSChromeOSUser::~ScopedTestNSSChromeOSUser() { |
+ if (constructed_successfully_) |
+ CloseChromeOSUserForTesting(username_hash_); |
+} |
+ |
+void ScopedTestNSSChromeOSUser::FinishInit() { |
+ DCHECK(constructed_successfully_); |
+ if (!ShouldInitializeTPMForChromeOSUser(username_hash_)) |
+ return; |
+ WillInitializeTPMForChromeOSUser(username_hash_); |
+ InitializePrivateSoftwareSlotForChromeOSUser(username_hash_); |
+} |
+ |
+} // namespace crypto |