| Index: chrome/browser/chromeos/login/auth/auth_attempt_state.cc
|
| diff --git a/chrome/browser/chromeos/login/auth/auth_attempt_state.cc b/chrome/browser/chromeos/login/auth/auth_attempt_state.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c64b22b6b78320eebeab77dfc5bb574ea6594d3f
|
| --- /dev/null
|
| +++ b/chrome/browser/chromeos/login/auth/auth_attempt_state.cc
|
| @@ -0,0 +1,132 @@
|
| +// 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.
|
| +
|
| +#include "chrome/browser/chromeos/login/auth/auth_attempt_state.h"
|
| +
|
| +#include <string>
|
| +
|
| +#include "content/public/browser/browser_thread.h"
|
| +#include "google_apis/gaia/gaia_auth_consumer.h"
|
| +#include "google_apis/gaia/gaia_auth_fetcher.h"
|
| +
|
| +using content::BrowserThread;
|
| +
|
| +namespace chromeos {
|
| +
|
| +AuthAttemptState::AuthAttemptState(const UserContext& user_context,
|
| + user_manager::UserType user_type,
|
| + bool unlock,
|
| + bool online_complete,
|
| + bool user_is_new)
|
| + : user_context(user_context),
|
| + user_type(user_type),
|
| + unlock(unlock),
|
| + online_complete_(online_complete),
|
| + online_outcome_(online_complete ? AuthFailure::UNLOCK_FAILED
|
| + : AuthFailure::NONE),
|
| + hosted_policy_(GaiaAuthFetcher::HostedAccountsAllowed),
|
| + is_first_time_user_(user_is_new),
|
| + cryptohome_complete_(false),
|
| + cryptohome_outcome_(false),
|
| + cryptohome_code_(cryptohome::MOUNT_ERROR_NONE),
|
| + username_hash_obtained_(true),
|
| + username_hash_valid_(true) {
|
| +}
|
| +
|
| +AuthAttemptState::~AuthAttemptState() {}
|
| +
|
| +void AuthAttemptState::RecordOnlineLoginStatus(const AuthFailure& outcome) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + online_complete_ = true;
|
| + online_outcome_ = outcome;
|
| + // We're either going to not try again, or try again with HOSTED
|
| + // accounts not allowed, so just set this here.
|
| + DisableHosted();
|
| +}
|
| +
|
| +void AuthAttemptState::DisableHosted() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + hosted_policy_ = GaiaAuthFetcher::HostedAccountsNotAllowed;
|
| +}
|
| +
|
| +void AuthAttemptState::RecordCryptohomeStatus(
|
| + bool cryptohome_outcome,
|
| + cryptohome::MountError cryptohome_code) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + cryptohome_complete_ = true;
|
| + cryptohome_outcome_ = cryptohome_outcome;
|
| + cryptohome_code_ = cryptohome_code;
|
| +}
|
| +
|
| +void AuthAttemptState::RecordUsernameHash(const std::string& username_hash) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + user_context.SetUserIDHash(username_hash);
|
| + username_hash_obtained_ = true;
|
| + username_hash_valid_ = true;
|
| +}
|
| +
|
| +void AuthAttemptState::RecordUsernameHashFailed() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + username_hash_obtained_ = true;
|
| + username_hash_valid_ = false;
|
| +}
|
| +
|
| +void AuthAttemptState::UsernameHashRequested() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + username_hash_obtained_ = false;
|
| +}
|
| +
|
| +void AuthAttemptState::ResetCryptohomeStatus() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + cryptohome_complete_ = false;
|
| + cryptohome_outcome_ = false;
|
| + cryptohome_code_ = cryptohome::MOUNT_ERROR_NONE;
|
| +}
|
| +
|
| +bool AuthAttemptState::online_complete() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + return online_complete_;
|
| +}
|
| +
|
| +const AuthFailure& AuthAttemptState::online_outcome() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + return online_outcome_;
|
| +}
|
| +
|
| +bool AuthAttemptState::is_first_time_user() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + return is_first_time_user_;
|
| +}
|
| +
|
| +GaiaAuthFetcher::HostedAccountsSetting AuthAttemptState::hosted_policy() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + return hosted_policy_;
|
| +}
|
| +
|
| +bool AuthAttemptState::cryptohome_complete() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + return cryptohome_complete_;
|
| +}
|
| +
|
| +bool AuthAttemptState::cryptohome_outcome() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + return cryptohome_outcome_;
|
| +}
|
| +
|
| +cryptohome::MountError AuthAttemptState::cryptohome_code() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + return cryptohome_code_;
|
| +}
|
| +
|
| +bool AuthAttemptState::username_hash_obtained() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + return username_hash_obtained_;
|
| +}
|
| +
|
| +bool AuthAttemptState::username_hash_valid() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + return username_hash_obtained_;
|
| +}
|
| +
|
| +} // namespace chromeos
|
|
|