Index: sync/internal_api/public/sync_encryption_handler.h |
diff --git a/sync/internal_api/public/sync_encryption_handler.h b/sync/internal_api/public/sync_encryption_handler.h |
index 52e2ca3edcf4ed36055f2106a0a2175060f1ffaf..eefffdfada490ce7221b559ad8ec9537cf05c466 100644 |
--- a/sync/internal_api/public/sync_encryption_handler.h |
+++ b/sync/internal_api/public/sync_encryption_handler.h |
@@ -29,9 +29,20 @@ enum PassphraseRequiredReason { |
// decryption. |
}; |
+// The different states for the encryption passphrase. These control if and how |
+// the user should be prompted for a decryption passphrase. |
+enum PassphraseState { |
+ IMPLICIT_PASSPHRASE = 0, // GAIA-based passphrase (deprecated). |
+ KEYSTORE_PASSPHRASE = 1, // Keystore passphrase. |
+ FROZEN_IMPLICIT_PASSPHRASE = 2, // Frozen GAIA passphrase. |
+ CUSTOM_PASSPHRASE = 3, // User-provided passphrase. |
+}; |
+ |
// Sync's encryption handler. Handles tracking encrypted types, ensuring the |
// cryptographer encrypts with the proper key and has the most recent keybag, |
// and keeps the nigori node up to date. |
+// Implementations of this class must be assumed to be non-thread-safe. All |
+// methods must be invoked on the sync thread. |
class SyncEncryptionHandler { |
public: |
// All Observer methods are done synchronously from within a transaction and |
@@ -93,6 +104,9 @@ class SyncEncryptionHandler { |
// Used primarily for debugging. |
virtual void OnCryptographerStateChanged(Cryptographer* cryptographer) = 0; |
+ // The passprhase state has changed. |
+ virtual void OnPassphraseStateChanged(PassphraseState state) = 0; |
+ |
protected: |
virtual ~Observer(); |
}; |
@@ -100,8 +114,7 @@ class SyncEncryptionHandler { |
SyncEncryptionHandler(); |
virtual ~SyncEncryptionHandler(); |
- // Add/Remove SyncEncryptionHandler::Observer's. |
- // Must be called from sync thread. |
+ // Add/Remove SyncEncryptionHandler::Observers. |
virtual void AddObserver(Observer* observer) = 0; |
virtual void RemoveObserver(Observer* observer) = 0; |
@@ -138,9 +151,9 @@ class SyncEncryptionHandler { |
// types are encrypted. |
virtual bool EncryptEverythingEnabled() const = 0; |
- // Whether the account requires a user-provided passphrase to decrypt |
- // encrypted data. |
- virtual bool IsUsingExplicitPassphrase() const = 0; |
+ // Returns the current state of the passphrase needed to decrypt the |
+ // bag of encryption keys in the nigori node. |
+ virtual PassphraseState GetPassphraseState() const = 0; |
// The set of types that are always encrypted. |
static ModelTypeSet SensitiveTypes(); |