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 CHROME_BROWSER_CHROMEOS_LOGIN_AUTH_TEST_ATTEMPT_STATE_H_
6#define CHROME_BROWSER_CHROMEOS_LOGIN_AUTH_TEST_ATTEMPT_STATE_H_
7
8#include "base/compiler_specific.h"
9#include "chrome/browser/chromeos/login/auth/auth_attempt_state.h"
10#include "chrome/browser/chromeos/login/auth/login_status_consumer.h"
11#include "google_apis/gaia/gaia_auth_consumer.h"
12
13namespace chromeos {
14
15class UserContext;
16
17class TestAttemptState : public AuthAttemptState {
18 public:
19  TestAttemptState(const UserContext& credentials, const bool user_is_new);
20
21  virtual ~TestAttemptState();
22
23  // Act as though an online login attempt completed already.
24  void PresetOnlineLoginStatus(
25      const LoginFailure& 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 LoginFailure& 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  // CHROME_BROWSER_CHROMEOS_LOGIN_AUTH_TEST_ATTEMPT_STATE_H_
50