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#ifndef CRYPTO_SCOPED_TEST_NSS_CHROMEOS_USER_H_ 6#define CRYPTO_SCOPED_TEST_NSS_CHROMEOS_USER_H_ 7 8#include <string> 9 10#include "base/files/scoped_temp_dir.h" 11#include "base/macros.h" 12#include "crypto/crypto_export.h" 13 14namespace crypto { 15 16// Opens a persistent NSS software database in a temporary directory for the 17// user with |username_hash|. This database will be used for both the user's 18// public and private slot. 19class CRYPTO_EXPORT_PRIVATE ScopedTestNSSChromeOSUser { 20 public: 21 // Opens the software database and sets the public slot for the user. The 22 // private slot will not be initialized until FinishInit() is called. 23 explicit ScopedTestNSSChromeOSUser(const std::string& username_hash); 24 ~ScopedTestNSSChromeOSUser(); 25 26 std::string username_hash() const { return username_hash_; } 27 bool constructed_successfully() const { return constructed_successfully_; } 28 29 // Completes initialization of user. Causes any waiting private slot callbacks 30 // to run, see GetPrivateSlotForChromeOSUser(). 31 void FinishInit(); 32 33 private: 34 const std::string username_hash_; 35 base::ScopedTempDir temp_dir_; 36 bool constructed_successfully_; 37 38 DISALLOW_COPY_AND_ASSIGN(ScopedTestNSSChromeOSUser); 39}; 40 41} // namespace crypto 42 43#endif // CRYPTO_SCOPED_TEST_NSS_CHROMEOS_USER_H_ 44