1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/chromeos/login/auth_attempt_state.h"
9 #include "content/public/browser/browser_thread.h"
10 #include "google_apis/gaia/gaia_auth_consumer.h"
11 #include "google_apis/gaia/gaia_auth_fetcher.h"
13 using content::BrowserThread
;
17 AuthAttemptState::AuthAttemptState(const UserContext
& user_context
,
18 const std::string
& login_token
,
19 const std::string
& login_captcha
,
20 const User::UserType user_type
,
21 const bool user_is_new
)
22 : user_context(user_context
),
23 login_token(login_token
),
24 login_captcha(login_captcha
),
27 online_complete_(false),
28 online_outcome_(LoginFailure::NONE
),
29 hosted_policy_(GaiaAuthFetcher::HostedAccountsAllowed
),
30 is_first_time_user_(user_is_new
),
31 cryptohome_complete_(false),
32 cryptohome_outcome_(false),
33 cryptohome_code_(cryptohome::MOUNT_ERROR_NONE
),
34 username_hash_obtained_(true),
35 username_hash_valid_(true) {
38 AuthAttemptState::AuthAttemptState(const std::string
& username
,
39 const std::string
& password
)
40 : user_context(username
, password
, ""),
41 user_type(User::USER_TYPE_REGULAR
),
43 online_complete_(true),
44 online_outcome_(LoginFailure::UNLOCK_FAILED
),
45 hosted_policy_(GaiaAuthFetcher::HostedAccountsAllowed
),
46 is_first_time_user_(false),
47 cryptohome_complete_(false),
48 cryptohome_outcome_(false),
49 cryptohome_code_(cryptohome::MOUNT_ERROR_NONE
),
50 username_hash_obtained_(true) {
53 AuthAttemptState::AuthAttemptState(const UserContext
& user_context
,
54 const bool user_is_new
)
55 : user_context(user_context
),
56 user_type(User::USER_TYPE_REGULAR
),
58 online_complete_(false),
59 online_outcome_(LoginFailure::NONE
),
60 hosted_policy_(GaiaAuthFetcher::HostedAccountsAllowed
),
61 is_first_time_user_(user_is_new
),
62 cryptohome_complete_(false),
63 cryptohome_outcome_(false),
64 cryptohome_code_(cryptohome::MOUNT_ERROR_NONE
),
65 username_hash_obtained_(true) {
68 AuthAttemptState::~AuthAttemptState() {}
70 void AuthAttemptState::RecordOnlineLoginStatus(
71 const LoginFailure
& outcome
) {
72 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI
));
73 online_complete_
= true;
74 online_outcome_
= outcome
;
75 // We're either going to not try again, or try again with HOSTED
76 // accounts not allowed, so just set this here.
80 void AuthAttemptState::DisableHosted() {
81 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI
));
82 hosted_policy_
= GaiaAuthFetcher::HostedAccountsNotAllowed
;
85 void AuthAttemptState::RecordCryptohomeStatus(
86 bool cryptohome_outcome
,
87 cryptohome::MountError cryptohome_code
) {
88 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI
));
89 cryptohome_complete_
= true;
90 cryptohome_outcome_
= cryptohome_outcome
;
91 cryptohome_code_
= cryptohome_code
;
94 void AuthAttemptState::RecordUsernameHash(const std::string
& username_hash
) {
95 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI
));
96 user_context
.username_hash
= username_hash
;
97 username_hash_obtained_
= true;
98 username_hash_valid_
= true;
101 void AuthAttemptState::RecordUsernameHashFailed() {
102 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI
));
103 username_hash_obtained_
= true;
104 username_hash_valid_
= false;
107 void AuthAttemptState::UsernameHashRequested() {
108 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI
));
109 username_hash_obtained_
= false;
112 void AuthAttemptState::ResetCryptohomeStatus() {
113 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI
));
114 cryptohome_complete_
= false;
115 cryptohome_outcome_
= false;
116 cryptohome_code_
= cryptohome::MOUNT_ERROR_NONE
;
119 bool AuthAttemptState::online_complete() {
120 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI
));
121 return online_complete_
;
124 const LoginFailure
& AuthAttemptState::online_outcome() {
125 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI
));
126 return online_outcome_
;
129 bool AuthAttemptState::is_first_time_user() {
130 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI
));
131 return is_first_time_user_
;
134 GaiaAuthFetcher::HostedAccountsSetting
AuthAttemptState::hosted_policy() {
135 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI
));
136 return hosted_policy_
;
139 bool AuthAttemptState::cryptohome_complete() {
140 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI
));
141 return cryptohome_complete_
;
144 bool AuthAttemptState::cryptohome_outcome() {
145 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI
));
146 return cryptohome_outcome_
;
149 cryptohome::MountError
AuthAttemptState::cryptohome_code() {
150 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI
));
151 return cryptohome_code_
;
154 bool AuthAttemptState::username_hash_obtained() {
155 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI
));
156 return username_hash_obtained_
;
159 bool AuthAttemptState::username_hash_valid() {
160 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI
));
161 return username_hash_obtained_
;
164 } // namespace chromeos