Index: chrome/browser/chromeos/login/parallel_authenticator.h |
diff --git a/chrome/browser/chromeos/login/parallel_authenticator.h b/chrome/browser/chromeos/login/parallel_authenticator.h |
index 33e8ff11dab84b6a207f693bca31545e1cbb4d2d..0733663691dd25c24756384b6f39b8be5d0d0959 100644 |
--- a/chrome/browser/chromeos/login/parallel_authenticator.h |
+++ b/chrome/browser/chromeos/login/parallel_authenticator.h |
@@ -26,7 +26,6 @@ class Profile; |
namespace chromeos { |
class LoginStatusConsumer; |
-class ResolveChecker; |
// Authenticates a Chromium OS user against the Google Accounts ClientLogin API. |
// |
@@ -63,7 +62,8 @@ class ParallelAuthenticator : public Authenticator, |
UNLOCK, // Screen unlock succeeded. |
ONLINE_FAILED, // Online login disallowed, but offline succeeded. |
GUEST_LOGIN, // Logged in guest mode. |
- LOGIN_FAILED // Login denied. |
+ LOGIN_FAILED, // Login denied. |
+ OWNER_REQUIRED // Login is restricted to the owner only. |
}; |
explicit ParallelAuthenticator(LoginStatusConsumer* consumer); |
@@ -199,12 +199,24 @@ class ParallelAuthenticator : public Authenticator, |
current_online_.reset(attempt); |
} |
+ // Used for testing to set the expected state of an owner check. |
+ void SetOwnerState(bool owner_check_finished, bool check_result); |
+ |
// If we don't have the system salt yet, loads it from the CryptohomeLibrary. |
void LoadSystemSalt(); |
// If we don't have supplemental_user_key_ yet, loads it from the NSS DB. |
// Returns false if the key can not be loaded/created. |
bool LoadSupplementalUserKey(); |
+ // checks if the current mounted home contains the owner case and either |
+ // continues or fails the log-in. Used for policy lost mitigation "safe-mode". |
+ // Returns true if the owner check has been successful or if it is not needed. |
+ bool VerifyOwner(); |
+ |
+ // checks if the current mounted home contains the owner case and either |
+ // continues or fails the log-in. Used for policy lost mitigation "safe-mode". |
+ void FinishVerifyOwnerOnFileThread(); |
+ |
// Records OAuth1 access token verification failure for |user_account|. |
void RecordOAuthCheckFailure(const std::string& user_account); |
@@ -228,11 +240,23 @@ class ParallelAuthenticator : public Authenticator, |
// This allows us to present the same behavior to the caller, regardless |
// of the order in which we receive these results. |
bool already_reported_success_; |
- base::Lock success_lock_; // A lock around already_reported_success_. |
+ base::Lock success_lock_; // A lock around |already_reported_success_|. |
+ |
+ // Flags signaling whether the owner verification has been done and the result |
+ // of it. |
+ bool owner_is_verified_; |
+ bool user_can_login_; |
+ // A lock for |owner_is_verified_| and |user_can_login_|. |
+ base::Lock owner_verified_lock_; |
// True if we use OAuth-based authentication flow. |
bool using_oauth_; |
+ FRIEND_TEST_ALL_PREFIXES(ParallelAuthenticatorTest, |
+ ResolveOwnerNeededDirectFailedMount); |
+ FRIEND_TEST_ALL_PREFIXES(ParallelAuthenticatorTest, ResolveOwnerNeededMount); |
+ FRIEND_TEST_ALL_PREFIXES(ParallelAuthenticatorTest, |
+ ResolveOwnerNeededFailedMount); |
DISALLOW_COPY_AND_ASSIGN(ParallelAuthenticator); |
}; |