Chromium Code Reviews| Index: chromeos/login/auth/login_performer.h |
| diff --git a/chrome/browser/chromeos/login/auth/login_performer.h b/chromeos/login/auth/login_performer.h |
| similarity index 61% |
| rename from chrome/browser/chromeos/login/auth/login_performer.h |
| rename to chromeos/login/auth/login_performer.h |
| index 00d6ace8ff9ee88253efcf8d2648e6b2b17f86e8..79939e1d894b898077a3d7dfb255d6cdf9fb9285 100644 |
| --- a/chrome/browser/chromeos/login/auth/login_performer.h |
| +++ b/chromeos/login/auth/login_performer.h |
| @@ -2,28 +2,35 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_AUTH_LOGIN_PERFORMER_H_ |
| -#define CHROME_BROWSER_CHROMEOS_LOGIN_AUTH_LOGIN_PERFORMER_H_ |
| +#ifndef CHROMEOS_LOGIN_AUTH_LOGIN_PERFORMER_H_ |
| +#define CHROMEOS_LOGIN_AUTH_LOGIN_PERFORMER_H_ |
| #include <string> |
| #include "base/basictypes.h" |
| +#include "base/callback.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "base/memory/weak_ptr.h" |
| -#include "chrome/browser/chromeos/policy/wildcard_login_checker.h" |
| +#include "chromeos/chromeos_export.h" |
| #include "chromeos/login/auth/auth_status_consumer.h" |
| #include "chromeos/login/auth/authenticator.h" |
| #include "chromeos/login/auth/extended_authenticator.h" |
| #include "chromeos/login/auth/online_attempt_host.h" |
| #include "chromeos/login/auth/user_context.h" |
| -#include "content/public/browser/notification_observer.h" |
| -#include "content/public/browser/notification_registrar.h" |
| #include "google_apis/gaia/google_service_auth_error.h" |
| +namespace net { |
| +class URLRequestContextGetter; |
| +} |
| + |
| namespace policy { |
| class WildcardLoginChecker; |
| } |
| +namespace content { |
| +class BrowserContext; |
| +} |
| + |
| namespace chromeos { |
| // This class encapsulates sign in operations. |
| @@ -34,8 +41,8 @@ namespace chromeos { |
| // If auth is succeeded, cookie fetcher is executed, LP instance deletes itself. |
| // |
| // If |delegate_| is not NULL it will handle error messages, password input. |
| -class LoginPerformer : public AuthStatusConsumer, |
| - public OnlineAttemptHost::Delegate { |
| +class CHROMEOS_EXPORT LoginPerformer : public AuthStatusConsumer, |
| + public OnlineAttemptHost::Delegate { |
| public: |
| typedef enum AuthorizationMode { |
| // Authorization performed internally by Chrome. |
| @@ -53,17 +60,10 @@ class LoginPerformer : public AuthStatusConsumer, |
| virtual void OnOnlineChecked(const std::string& email, bool success) = 0; |
| }; |
| - explicit LoginPerformer(Delegate* delegate); |
| + LoginPerformer(scoped_refptr<base::TaskRunner> task_runner, |
| + Delegate* delegate); |
| virtual ~LoginPerformer(); |
| - // AuthStatusConsumer implementation: |
| - virtual void OnAuthFailure(const AuthFailure& error) override; |
| - virtual void OnRetailModeAuthSuccess( |
| - const UserContext& user_context) override; |
| - virtual void OnAuthSuccess(const UserContext& user_context) override; |
| - virtual void OnOffTheRecordAuthSuccess() override; |
| - virtual void OnPasswordChangeDetected() override; |
| - |
| // Performs a login for |user_context|. |
| // If auth_mode is AUTH_MODE_EXTENSION, there are no further auth checks, |
| // AUTH_MODE_INTERNAL will perform auth checks. |
| @@ -86,6 +86,14 @@ class LoginPerformer : public AuthStatusConsumer, |
| void LoginAsKioskAccount(const std::string& app_user_id, |
| bool use_guest_mount); |
| + // AuthStatusConsumer implementation: |
| + virtual void OnAuthFailure(const AuthFailure& error) override; |
| + virtual void OnRetailModeAuthSuccess( |
| + const UserContext& user_context) override; |
| + virtual void OnAuthSuccess(const UserContext& user_context) override; |
| + virtual void OnOffTheRecordAuthSuccess() override; |
| + virtual void OnPasswordChangeDetected() override; |
| + |
| // Migrates cryptohome using |old_password| specified. |
| void RecoverEncryptedData(const std::string& old_password); |
| @@ -115,7 +123,62 @@ class LoginPerformer : public AuthStatusConsumer, |
| protected: |
| // Implements OnlineAttemptHost::Delegate. |
| - virtual void OnChecked(const std::string& username, bool success) override; |
| + virtual void OnChecked(const std::string& user_id, bool success) override; |
| + |
| + // Platform-dependant methods to be implemented by concrete class. |
| + |
| + // Run trusted check for a platform. If trusted check have to be performed |
| + // asynchronously, |false| will be returned, and either delegate's |
| + // PolicyLoadFailed() or |callback| will be called upon actual check. |
| + virtual bool RunTrustedCheck(const base::Closure& callback) = 0; |
| + |
| + // Check if user is allowed to sign in on device. |wildcard_match| will |
| + // contain additional information whether this user is explicitly listed or |
| + // not (may be relevant for extension-based sign-in). |
| + virtual bool IsUserWhitelisted(const std::string& user_id, |
| + bool* wildcard_match) = 0; |
| + |
| + // This method should run addional online check if user can sign in on device. |
| + // Either |success_callback| or |failure_callback| should be called upon this |
| + // check. |
| + virtual void RunOnlineWhitelistCheck( |
| + const std::string& user_id, |
| + bool wildcard_match, |
| + const base::Closure& success_callback, |
| + const base::Closure& failure_callback) = 0; |
| + |
| + // Supervised users-related methods. |
| + |
| + // Check if supervised users are allowed on this device. |
| + virtual bool AreSupervisedUsersAllowed() = 0; |
| + |
| + // Check which authenticator should be used for supervised user. |
| + virtual bool UseExtendedAuthenticatorForSupervisedUser( |
| + const UserContext& user_context) = 0; |
| + |
| + // Probably transform supervised user's authentication key. |
| + virtual UserContext TransformSupervisedKey(const UserContext& context) = 0; |
| + |
| + // Set up sign-in flow for supervised user. |
| + virtual void SetupSupervisedUserFlow(const std::string& user_id) = 0; |
| + |
| + // Run policy check for |user_id|. If something is wrong, delegate's |
| + // PolicyLoadFailed is called. |
| + virtual bool CheckPolicyForUser(const std::string& user_id) = 0; |
| + |
| + // Look up profile to use during signin. |
|
Nikita (slow)
2014/10/20 12:30:28
nit: profile > browser context
|
| + virtual content::BrowserContext* GetSigninContext() = 0; |
| + |
| + // Get RequestContext used for sign in. |
| + virtual net::URLRequestContextGetter* GetSigninRequestContext() = 0; |
| + |
| + // Create authenticator implementation. |
| + virtual scoped_refptr<Authenticator> CreateAuthenticator() = 0; |
| + |
| + void set_authenticator(scoped_refptr<Authenticator> authenticator); |
| + |
| + // Notifications receiver. |
| + Delegate* delegate_; |
| private: |
| // Starts login completion of externally authenticated user. |
| @@ -123,15 +186,23 @@ class LoginPerformer : public AuthStatusConsumer, |
| // Starts authentication. |
| void StartAuthentication(); |
| + void NotifyWhitelistCheckFailure(); |
| + |
| + // Makes sure that authenticator is created. |
| + void EnsureAuthenticator(); |
| + void EnsureExtendedAuthenticator(); |
| - // Completion callback for the online wildcard login check for enterprise |
| - // devices. Continues the login process or signals whitelist check failure |
| - // depending on the value of |result|. |
| - void OnlineWildcardLoginCheckCompleted( |
| - policy::WildcardLoginChecker::Result result); |
| + // Actual implementantion of PeformLogin that is run after trusted values |
| + // check. |
| + void DoPerformLogin(const UserContext& user_context, |
| + AuthorizationMode auth_mode); |
| + |
| + scoped_refptr<base::TaskRunner> task_runner_; |
| // Used for logging in. |
| scoped_refptr<Authenticator> authenticator_; |
| + |
| + // Used for logging in. |
| scoped_refptr<ExtendedAuthenticator> extended_authenticator_; |
| // Used to make auxiliary online check. |
| @@ -144,9 +215,6 @@ class LoginPerformer : public AuthStatusConsumer, |
| // User credentials for the current login attempt. |
| UserContext user_context_; |
| - // Notifications receiver. |
| - Delegate* delegate_; |
| - |
| // True if password change has been detected. |
| // Once correct password is entered homedir migration is executed. |
| bool password_changed_; |
| @@ -155,14 +223,10 @@ class LoginPerformer : public AuthStatusConsumer, |
| // Authorization mode type. |
| AuthorizationMode auth_mode_; |
| - // Used to verify logins that matched wildcard on the login whitelist. |
| - scoped_ptr<policy::WildcardLoginChecker> wildcard_login_checker_; |
| - |
| base::WeakPtrFactory<LoginPerformer> weak_factory_; |
| - |
| DISALLOW_COPY_AND_ASSIGN(LoginPerformer); |
| }; |
| } // namespace chromeos |
| -#endif // CHROME_BROWSER_CHROMEOS_LOGIN_AUTH_LOGIN_PERFORMER_H_ |
| +#endif // CHROMEOS_LOGIN_AUTH_LOGIN_PERFORMER_H_ |