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 
14 namespace 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.
19 class CRYPTO_EXPORT 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 
username_hash()26   std::string username_hash() const { return username_hash_; }
constructed_successfully()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