• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2010 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 "chrome/common/net/gaia/gaia_auth_consumer.h"
10 #include "chrome/common/net/gaia/gaia_auth_fetcher.h"
11 #include "content/browser/browser_thread.h"
12 #include "third_party/cros/chromeos_cryptohome.h"
13 
14 namespace chromeos {
15 
AuthAttemptState(const std::string & username,const std::string & password,const std::string & ascii_hash,const std::string & login_token,const std::string & login_captcha,const bool user_is_new)16 AuthAttemptState::AuthAttemptState(const std::string& username,
17                                    const std::string& password,
18                                    const std::string& ascii_hash,
19                                    const std::string& login_token,
20                                    const std::string& login_captcha,
21                                    const bool user_is_new)
22     : username(username),
23       password(password),
24       ascii_hash(ascii_hash),
25       login_token(login_token),
26       login_captcha(login_captcha),
27       unlock(false),
28       online_complete_(false),
29       online_outcome_(LoginFailure::NONE),
30       hosted_policy_(GaiaAuthFetcher::HostedAccountsAllowed),
31       is_first_time_user_(user_is_new),
32       cryptohome_complete_(false),
33       cryptohome_outcome_(false),
34       cryptohome_code_(kCryptohomeMountErrorNone) {
35 }
36 
AuthAttemptState(const std::string & username,const std::string & ascii_hash)37 AuthAttemptState::AuthAttemptState(const std::string& username,
38                                    const std::string& ascii_hash)
39     : username(username),
40       ascii_hash(ascii_hash),
41       unlock(true),
42       online_complete_(true),
43       online_outcome_(LoginFailure::UNLOCK_FAILED),
44       credentials_(GaiaAuthConsumer::ClientLoginResult()),
45       hosted_policy_(GaiaAuthFetcher::HostedAccountsAllowed),
46       is_first_time_user_(false),
47       cryptohome_complete_(false),
48       cryptohome_outcome_(false),
49       cryptohome_code_(kCryptohomeMountErrorNone) {
50 }
51 
~AuthAttemptState()52 AuthAttemptState::~AuthAttemptState() {}
53 
RecordOnlineLoginStatus(const GaiaAuthConsumer::ClientLoginResult & credentials,const LoginFailure & outcome)54 void AuthAttemptState::RecordOnlineLoginStatus(
55     const GaiaAuthConsumer::ClientLoginResult& credentials,
56     const LoginFailure& outcome) {
57   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
58   online_complete_ = true;
59   online_outcome_ = outcome;
60   credentials_ = credentials;
61   // We're either going to not try again, or try again with HOSTED
62   // accounts not allowed, so just set this here.
63   DisableHosted();
64 }
65 
DisableHosted()66 void AuthAttemptState::DisableHosted() {
67   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
68   hosted_policy_ = GaiaAuthFetcher::HostedAccountsNotAllowed;
69 }
70 
RecordCryptohomeStatus(bool cryptohome_outcome,int cryptohome_code)71 void AuthAttemptState::RecordCryptohomeStatus(bool cryptohome_outcome,
72                                               int cryptohome_code) {
73   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
74   cryptohome_complete_ = true;
75   cryptohome_outcome_ = cryptohome_outcome;
76   cryptohome_code_ = cryptohome_code;
77 }
78 
ResetCryptohomeStatus()79 void AuthAttemptState::ResetCryptohomeStatus() {
80   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
81   cryptohome_complete_ = false;
82   cryptohome_outcome_ = false;
83   cryptohome_code_ = kCryptohomeMountErrorNone;
84 }
85 
online_complete()86 bool AuthAttemptState::online_complete() {
87   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
88   return online_complete_;
89 }
90 
online_outcome()91 const LoginFailure& AuthAttemptState::online_outcome() {
92   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
93   return online_outcome_;
94 }
95 
credentials()96 const GaiaAuthConsumer::ClientLoginResult& AuthAttemptState::credentials() {
97   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
98   return credentials_;
99 }
100 
is_first_time_user()101 bool AuthAttemptState::is_first_time_user() {
102   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
103   return is_first_time_user_;
104 }
105 
hosted_policy()106 GaiaAuthFetcher::HostedAccountsSetting AuthAttemptState::hosted_policy() {
107   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
108   return hosted_policy_;
109 }
110 
cryptohome_complete()111 bool AuthAttemptState::cryptohome_complete() {
112   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
113   return cryptohome_complete_;
114 }
115 
cryptohome_outcome()116 bool AuthAttemptState::cryptohome_outcome() {
117   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
118   return cryptohome_outcome_;
119 }
120 
cryptohome_code()121 int AuthAttemptState::cryptohome_code() {
122   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
123   return cryptohome_code_;
124 }
125 
126 }  // namespace chromeos
127