#ifndef CHROME_BROWSER_CHROMEOS_POLICY_WILDCARD_LOGIN_CHECKER_H_
#define CHROME_BROWSER_CHROMEOS_POLICY_WILDCARD_LOGIN_CHECKER_H_
#include "base/basictypes.h"
#include "base/callback.h"
#include "base/memory/scoped_ptr.h"
#include "base/time/time.h"
#include "components/policy/core/common/cloud/user_info_fetcher.h"
#include "google_apis/gaia/google_service_auth_error.h"
namespace net {
class URLRequestContextGetter;
}
namespace policy {
class PolicyOAuth2TokenFetcher;
class WildcardLoginChecker : public UserInfoFetcher::Delegate {
public:
enum Result {
RESULT_ALLOWED,
RESULT_BLOCKED,
RESULT_FAILED,
};
typedef base::Callback<void(Result)> StatusCallback;
WildcardLoginChecker();
virtual ~WildcardLoginChecker();
void Start(scoped_refptr<net::URLRequestContextGetter> signin_context,
const StatusCallback& callback);
void StartWithAccessToken(const std::string& access_token,
const StatusCallback& callback);
virtual void OnGetUserInfoSuccess(const base::DictionaryValue* response)
OVERRIDE;
virtual void OnGetUserInfoFailure(const GoogleServiceAuthError& error)
OVERRIDE;
private:
void OnPolicyTokenFetched(const std::string& access_token,
const GoogleServiceAuthError& error);
void StartUserInfoFetcher(const std::string& access_token);
void OnCheckCompleted(Result result);
StatusCallback callback_;
scoped_ptr<PolicyOAuth2TokenFetcher> token_fetcher_;
scoped_ptr<UserInfoFetcher> user_info_fetcher_;
base::Time start_timestamp_;
base::Time token_available_timestamp_;
DISALLOW_COPY_AND_ASSIGN(WildcardLoginChecker);
};
}
#endif