| Index: chromeos/tpm_token_loader.h
|
| diff --git a/chromeos/tpm_token_loader.h b/chromeos/tpm_token_loader.h
|
| index 16e20ef12e98d7054e172c0cdd9547f52ffada9e..33fffa2d19b55cb6d565742a68347bf759f9e236 100644
|
| --- a/chromeos/tpm_token_loader.h
|
| +++ b/chromeos/tpm_token_loader.h
|
| @@ -32,16 +32,15 @@ namespace chromeos {
|
| // See CryptohomeClient::OnPkcs11GetTpmTokenInfo.
|
| class CHROMEOS_EXPORT TPMTokenLoader : public LoginState::Observer {
|
| public:
|
| - class Observer {
|
| - public:
|
| - // Called when the TPM token initialization is done or the case where TPM
|
| - // should stay disabled is detected (e.g. on guest login).
|
| - virtual void OnTPMTokenReady() = 0;
|
| -
|
| - protected:
|
| - virtual ~Observer() {}
|
| + enum TPMTokenStatus {
|
| + TPM_TOKEN_STATUS_UNDETERMINED,
|
| + TPM_TOKEN_STATUS_ENABLED,
|
| + TPM_TOKEN_STATUS_DISABLED
|
| };
|
|
|
| + typedef base::Callback<void(bool)> TPMReadyCallback;
|
| + typedef std::vector<TPMReadyCallback> TPMReadyCallbackList;
|
| +
|
| // Sets the global instance. Must be called before any calls to Get().
|
| // The global instance will immediately start observing |LoginState|.
|
| static void Initialize();
|
| @@ -65,11 +64,9 @@ class CHROMEOS_EXPORT TPMTokenLoader : public LoginState::Observer {
|
| void SetCryptoTaskRunner(
|
| const scoped_refptr<base::SequencedTaskRunner>& crypto_task_runner);
|
|
|
| - void AddObserver(TPMTokenLoader::Observer* observer);
|
| - void RemoveObserver(TPMTokenLoader::Observer* observer);
|
| -
|
| - // Checks if the TPM token in ready to be used.
|
| - bool IsTPMTokenReady() const;
|
| + // Checks if the TPM token is enabled. If the state is unknown, |callback|
|
| + // will be called back once the TPM state is known.
|
| + TPMTokenStatus IsTPMTokenEnabled(const TPMReadyCallback& callback);
|
|
|
| std::string tpm_user_pin() const { return tpm_user_pin_; }
|
|
|
| @@ -77,6 +74,8 @@ class CHROMEOS_EXPORT TPMTokenLoader : public LoginState::Observer {
|
| explicit TPMTokenLoader(bool for_test);
|
| virtual ~TPMTokenLoader();
|
|
|
| + bool IsTPMLoadingEnabled() const;
|
| +
|
| // Starts tpm token initialization if the user is logged in and the crypto
|
| // task runner is set.
|
| void MaybeStartTokenInitialization();
|
| @@ -106,7 +105,7 @@ class CHROMEOS_EXPORT TPMTokenLoader : public LoginState::Observer {
|
|
|
| bool initialized_for_test_;
|
|
|
| - ObserverList<Observer> observers_;
|
| + TPMReadyCallbackList tpm_ready_callback_list_;
|
|
|
| // The states are traversed in this order but some might get omitted or never
|
| // be left.
|
|
|