blob: 948905024e03ef9c9d8ada25a483e070a8131816 [file] [log] [blame]
Alex Deymo2de23f52014-02-26 14:30:13 -08001// Copyright (c) 2014 The Chromium OS 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
Gilad Arnold2cbb3852014-03-07 12:40:50 -08005#ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_FAKE_STATE_H_
6#define CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_FAKE_STATE_H_
Alex Deymo2de23f52014-02-26 14:30:13 -08007
Alex Deymof9f12632014-04-17 13:51:26 -07008#include "update_engine/policy_manager/fake_config_provider.h"
Alex Deymoc83baf62014-04-02 17:43:35 -07009#include "update_engine/policy_manager/fake_device_policy_provider.h"
Alex Deymo94c06162014-03-21 20:34:46 -070010#include "update_engine/policy_manager/fake_random_provider.h"
11#include "update_engine/policy_manager/fake_shill_provider.h"
12#include "update_engine/policy_manager/fake_system_provider.h"
13#include "update_engine/policy_manager/fake_time_provider.h"
Gilad Arnoldae47a9a2014-03-26 12:16:47 -070014#include "update_engine/policy_manager/fake_updater_provider.h"
Alex Deymo2de23f52014-02-26 14:30:13 -080015#include "update_engine/policy_manager/state.h"
16
17namespace chromeos_policy_manager {
18
Alex Deymo94c06162014-03-21 20:34:46 -070019// A fake State class that creates fake providers for all the providers.
Alex Deymo2de23f52014-02-26 14:30:13 -080020class FakeState : public State {
21 public:
Alex Deymo94c06162014-03-21 20:34:46 -070022 // Creates and initializes the FakeState using fake providers. Returns NULL
23 // if the initialization fails.
24 static FakeState* Construct();
25
Alex Deymo2de23f52014-02-26 14:30:13 -080026 virtual ~FakeState() {}
27
Alex Deymo94c06162014-03-21 20:34:46 -070028 // Downcasted getters, to allow access to the fake instances during testing.
Alex Deymof9f12632014-04-17 13:51:26 -070029 virtual FakeConfigProvider* config_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070030 return &config_provider_;
Alex Deymof9f12632014-04-17 13:51:26 -070031 }
32
Alex Deymoc83baf62014-04-02 17:43:35 -070033 virtual FakeDevicePolicyProvider* device_policy_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070034 return &device_policy_provider_;
Alex Deymoc83baf62014-04-02 17:43:35 -070035 }
Alex Deymof9f12632014-04-17 13:51:26 -070036
Alex Deymo94c06162014-03-21 20:34:46 -070037 virtual FakeRandomProvider* random_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070038 return &random_provider_;
Alex Deymo94c06162014-03-21 20:34:46 -070039 }
Gilad Arnoldae47a9a2014-03-26 12:16:47 -070040
Alex Deymo94c06162014-03-21 20:34:46 -070041 virtual FakeShillProvider* shill_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070042 return &shill_provider_;
Alex Deymo94c06162014-03-21 20:34:46 -070043 }
Gilad Arnoldae47a9a2014-03-26 12:16:47 -070044
45 virtual FakeSystemProvider* system_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070046 return &system_provider_;
Gilad Arnoldae47a9a2014-03-26 12:16:47 -070047 }
48
Alex Deymo94c06162014-03-21 20:34:46 -070049 virtual FakeTimeProvider* time_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070050 return &time_provider_;
Alex Deymo94c06162014-03-21 20:34:46 -070051 }
Gilad Arnoldae47a9a2014-03-26 12:16:47 -070052
53 virtual FakeUpdaterProvider* updater_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070054 return &updater_provider_;
Alex Deymo94c06162014-03-21 20:34:46 -070055 }
56
Alex Deymo2de23f52014-02-26 14:30:13 -080057 private:
David Zeuthen4e89e2c2014-04-24 11:47:00 -070058 FakeState() {}
59
60 FakeConfigProvider config_provider_;
61 FakeDevicePolicyProvider device_policy_provider_;
62 FakeRandomProvider random_provider_;
63 FakeShillProvider shill_provider_;
64 FakeSystemProvider system_provider_;
65 FakeTimeProvider time_provider_;
66 FakeUpdaterProvider updater_provider_;
Alex Deymo94c06162014-03-21 20:34:46 -070067
Alex Deymo2de23f52014-02-26 14:30:13 -080068 DISALLOW_COPY_AND_ASSIGN(FakeState);
69};
70
71} // namespace chromeos_policy_manager
72
Gilad Arnold2cbb3852014-03-07 12:40:50 -080073#endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_FAKE_STATE_H_