| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // 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_CHROME_LOGIN_PERFORMER_H_ |
| #define CHROME_BROWSER_CHROMEOS_LOGIN_AUTH_CHROME_LOGIN_PERFORMER_H_ |
| |
| #include <memory> |
| #include <string> |
| |
| #include "base/macros.h" |
| #include "base/memory/weak_ptr.h" |
| #include "chrome/browser/chromeos/policy/wildcard_login_checker.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/login_performer.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" |
| |
| class AccountId; |
| |
| namespace policy { |
| class WildcardLoginChecker; |
| } |
| |
| namespace chromeos { |
| |
| // This class implements chrome-specific elements of Login Performer. |
| |
| class ChromeLoginPerformer : public LoginPerformer { |
| public: |
| explicit ChromeLoginPerformer(Delegate* delegate); |
| ~ChromeLoginPerformer() override; |
| |
| bool IsUserWhitelisted(const AccountId& account_id, |
| bool* wildcard_match) override; |
| |
| protected: |
| bool RunTrustedCheck(const base::Closure& callback) override; |
| void DidRunTrustedCheck(const base::Closure& callback); |
| |
| void RunOnlineWhitelistCheck(const AccountId& account_id, |
| bool wildcard_match, |
| const std::string& refresh_token, |
| const base::Closure& success_callback, |
| const base::Closure& failure_callback) override; |
| bool AreSupervisedUsersAllowed() override; |
| |
| bool UseExtendedAuthenticatorForSupervisedUser( |
| const UserContext& user_context) override; |
| |
| UserContext TransformSupervisedKey(const UserContext& context) override; |
| |
| void SetupSupervisedUserFlow(const AccountId& account_id) override; |
| |
| void SetupEasyUnlockUserFlow(const AccountId& account_id) override; |
| |
| scoped_refptr<Authenticator> CreateAuthenticator() override; |
| bool CheckPolicyForUser(const AccountId& account_id) override; |
| content::BrowserContext* GetSigninContext() override; |
| scoped_refptr<network::SharedURLLoaderFactory> GetSigninURLLoaderFactory() |
| override; |
| |
| private: |
| void OnlineWildcardLoginCheckCompleted( |
| const base::Closure& success_callback, |
| const base::Closure& failure_callback, |
| policy::WildcardLoginChecker::Result result); |
| |
| // Used to verify logins that matched wildcard on the login whitelist. |
| std::unique_ptr<policy::WildcardLoginChecker> wildcard_login_checker_; |
| base::WeakPtrFactory<ChromeLoginPerformer> weak_factory_; |
| |
| DISALLOW_COPY_AND_ASSIGN(ChromeLoginPerformer); |
| }; |
| |
| } // namespace chromeos |
| |
| #endif // CHROME_BROWSER_CHROMEOS_LOGIN_AUTH_CHROME_LOGIN_PERFORMER_H_ |