1// Copyright 2014 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#ifndef CHROMEOS_LOGIN_AUTH_TEST_ATTEMPT_STATE_H_
6#define CHROMEOS_LOGIN_AUTH_TEST_ATTEMPT_STATE_H_
7
8#include "base/compiler_specific.h"
9#include "chromeos/chromeos_export.h"
10#include "chromeos/login/auth/auth_attempt_state.h"
11#include "chromeos/login/auth/auth_status_consumer.h"
12#include "google_apis/gaia/gaia_auth_consumer.h"
13
14namespace chromeos {
15
16class UserContext;
17
18class CHROMEOS_EXPORT TestAttemptState : public AuthAttemptState {
19 public:
20  TestAttemptState(const UserContext& credentials, const bool user_is_new);
21
22  virtual ~TestAttemptState();
23
24  // Act as though an online login attempt completed already.
25  void PresetOnlineLoginStatus(const AuthFailure& outcome);
26
27  // The next attempt will not allow HOSTED accounts to log in.
28  void DisableHosted();
29
30  // Act as though an cryptohome login attempt completed already.
31  void PresetCryptohomeStatus(bool cryptohome_outcome,
32                              cryptohome::MountError cryptohome_code);
33
34  // To allow state to be queried on the main thread during tests.
35  virtual bool online_complete() OVERRIDE;
36  virtual const AuthFailure& online_outcome() OVERRIDE;
37  virtual bool is_first_time_user() OVERRIDE;
38  virtual GaiaAuthFetcher::HostedAccountsSetting hosted_policy() OVERRIDE;
39  virtual bool cryptohome_complete() OVERRIDE;
40  virtual bool cryptohome_outcome() OVERRIDE;
41  virtual cryptohome::MountError cryptohome_code() OVERRIDE;
42
43 private:
44  DISALLOW_COPY_AND_ASSIGN(TestAttemptState);
45};
46
47}  // namespace chromeos
48
49#endif  // CHROMEOS_LOGIN_AUTH_TEST_ATTEMPT_STATE_H_
50