Index: crypto/nss_crypto_module_delegate.h |
diff --git a/crypto/nss_crypto_module_delegate.h b/crypto/nss_crypto_module_delegate.h |
index cf08f2859ffb547696638b1508d899290652f9ba..c955adaf8aa0f7296e3f3c4c1ab5d043f3ed7fc2 100644 |
--- a/crypto/nss_crypto_module_delegate.h |
+++ b/crypto/nss_crypto_module_delegate.h |
@@ -8,6 +8,7 @@ |
#include <string> |
#include "base/callback_forward.h" |
+#include "base/memory/ref_counted.h" |
#include "crypto/scoped_nss_types.h" |
namespace crypto { |
@@ -17,9 +18,9 @@ namespace crypto { |
// user data argument (|wincx|) to relevant NSS functions, which the global |
// password handler will call to do the actual work. This delegate should only |
// be used in NSS calls on worker threads due to the blocking nature. |
-class CryptoModuleBlockingPasswordDelegate { |
+class CryptoModuleBlockingPasswordDelegate |
+ : public base::RefCountedThreadSafe<CryptoModuleBlockingPasswordDelegate> { |
public: |
- virtual ~CryptoModuleBlockingPasswordDelegate() {} |
// Return a value suitable for passing to the |wincx| argument of relevant NSS |
// functions. This should be used instead of passing the object pointer |
@@ -35,16 +36,24 @@ class CryptoModuleBlockingPasswordDelegate { |
// user entered. |
virtual std::string RequestPassword(const std::string& slot_name, bool retry, |
bool* cancelled) = 0; |
+ |
+ protected: |
+ friend class base::RefCountedThreadSafe<CryptoModuleBlockingPasswordDelegate>; |
+ |
+ virtual ~CryptoModuleBlockingPasswordDelegate() {} |
}; |
// Extends CryptoModuleBlockingPasswordDelegate with the ability to return a |
// slot in which to act. (Eg, which slot to store a generated key in.) |
class NSSCryptoModuleDelegate : public CryptoModuleBlockingPasswordDelegate { |
public: |
- ~NSSCryptoModuleDelegate() override {} |
- |
// Get the slot to store the generated key. |
virtual ScopedPK11Slot RequestSlot() = 0; |
+ |
+ protected: |
+ friend class base::RefCountedThreadSafe<NSSCryptoModuleDelegate>; |
+ |
+ ~NSSCryptoModuleDelegate() override {} |
}; |
} // namespace crypto |