• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #include "chrome/browser/chromeos/login/auth_attempt_state.h"
6 
7 #include <string>
8 
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"
12 
13 using content::BrowserThread;
14 
15 namespace chromeos {
16 
AuthAttemptState(const UserContext & user_context,const std::string & login_token,const std::string & login_captcha,const User::UserType user_type,const bool user_is_new)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),
25       user_type(user_type),
26       unlock(false),
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) {
36 }
37 
AuthAttemptState(const std::string & username,const std::string & password)38 AuthAttemptState::AuthAttemptState(const std::string& username,
39                                    const std::string& password)
40     : user_context(username, password, ""),
41       user_type(User::USER_TYPE_REGULAR),
42       unlock(true),
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) {
51 }
52 
AuthAttemptState(const UserContext & user_context,const bool user_is_new)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),
57       unlock(true),
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) {
66 }
67 
~AuthAttemptState()68 AuthAttemptState::~AuthAttemptState() {}
69 
RecordOnlineLoginStatus(const LoginFailure & outcome)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.
77   DisableHosted();
78 }
79 
DisableHosted()80 void AuthAttemptState::DisableHosted() {
81   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
82   hosted_policy_ = GaiaAuthFetcher::HostedAccountsNotAllowed;
83 }
84 
RecordCryptohomeStatus(bool cryptohome_outcome,cryptohome::MountError cryptohome_code)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;
92 }
93 
RecordUsernameHash(const std::string & username_hash)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;
99 }
100 
RecordUsernameHashFailed()101 void AuthAttemptState::RecordUsernameHashFailed() {
102   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
103   username_hash_obtained_ = true;
104   username_hash_valid_ = false;
105 }
106 
UsernameHashRequested()107 void AuthAttemptState::UsernameHashRequested() {
108   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
109   username_hash_obtained_ = false;
110 }
111 
ResetCryptohomeStatus()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;
117 }
118 
online_complete()119 bool AuthAttemptState::online_complete() {
120   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
121   return online_complete_;
122 }
123 
online_outcome()124 const LoginFailure& AuthAttemptState::online_outcome() {
125   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
126   return online_outcome_;
127 }
128 
is_first_time_user()129 bool AuthAttemptState::is_first_time_user() {
130   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
131   return is_first_time_user_;
132 }
133 
hosted_policy()134 GaiaAuthFetcher::HostedAccountsSetting AuthAttemptState::hosted_policy() {
135   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
136   return hosted_policy_;
137 }
138 
cryptohome_complete()139 bool AuthAttemptState::cryptohome_complete() {
140   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
141   return cryptohome_complete_;
142 }
143 
cryptohome_outcome()144 bool AuthAttemptState::cryptohome_outcome() {
145   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
146   return cryptohome_outcome_;
147 }
148 
cryptohome_code()149 cryptohome::MountError AuthAttemptState::cryptohome_code() {
150   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
151   return cryptohome_code_;
152 }
153 
username_hash_obtained()154 bool AuthAttemptState::username_hash_obtained() {
155   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
156   return username_hash_obtained_;
157 }
158 
username_hash_valid()159 bool AuthAttemptState::username_hash_valid() {
160   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
161   return username_hash_obtained_;
162 }
163 
164 }  // namespace chromeos
165