blob: 23c2d6e55696bc6a3b07ba77ca565ad55d8d0c87 [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_STATE_H_
6#define CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_STATE_H_
Alex Deymo2de23f52014-02-26 14:30:13 -08007
Alex Deymoc83baf62014-04-02 17:43:35 -07008#include "update_engine/policy_manager/device_policy_provider.h"
Alex Deymof9f12632014-04-17 13:51:26 -07009#include "update_engine/policy_manager/config_provider.h"
Alex Deymo2de23f52014-02-26 14:30:13 -080010#include "update_engine/policy_manager/random_provider.h"
11#include "update_engine/policy_manager/shill_provider.h"
Alex Deymobd04b142014-03-18 15:00:05 -070012#include "update_engine/policy_manager/system_provider.h"
Gilad Arnold78a78112014-03-13 14:58:06 -070013#include "update_engine/policy_manager/time_provider.h"
Gilad Arnoldae47a9a2014-03-26 12:16:47 -070014#include "update_engine/policy_manager/updater_provider.h"
Alex Deymo2de23f52014-02-26 14:30:13 -080015
16namespace chromeos_policy_manager {
17
18// The State class is an interface to the ensemble of providers. This class
19// gives visibility of the state providers to policy implementations.
20class State {
21 public:
22 virtual ~State() {}
Alex Deymof9f12632014-04-17 13:51:26 -070023 State(ConfigProvider* config_provider,
24 DevicePolicyProvider* device_policy_provider,
25 RandomProvider* random_provider,
26 ShillProvider* shill_provider,
27 SystemProvider* system_provider,
28 TimeProvider* time_provider,
Gilad Arnoldae47a9a2014-03-26 12:16:47 -070029 UpdaterProvider* updater_provider) :
Alex Deymof9f12632014-04-17 13:51:26 -070030 config_provider_(config_provider),
Alex Deymoc83baf62014-04-02 17:43:35 -070031 device_policy_provider_(device_policy_provider),
Alex Deymo94c06162014-03-21 20:34:46 -070032 random_provider_(random_provider),
33 shill_provider_(shill_provider),
34 system_provider_(system_provider),
Gilad Arnoldae47a9a2014-03-26 12:16:47 -070035 time_provider_(time_provider),
36 updater_provider_(updater_provider) {}
Alex Deymo2de23f52014-02-26 14:30:13 -080037
Alex Deymo94c06162014-03-21 20:34:46 -070038 // These methods return the given provider.
Alex Deymof9f12632014-04-17 13:51:26 -070039 virtual ConfigProvider* config_provider() { return config_provider_.get(); }
Alex Deymoc83baf62014-04-02 17:43:35 -070040 virtual DevicePolicyProvider* device_policy_provider() {
41 return device_policy_provider_.get();
42 }
Alex Deymo94c06162014-03-21 20:34:46 -070043 virtual RandomProvider* random_provider() { return random_provider_.get(); }
44 virtual ShillProvider* shill_provider() { return shill_provider_.get(); }
Alex Deymo94c06162014-03-21 20:34:46 -070045 virtual SystemProvider* system_provider() { return system_provider_.get(); }
Gilad Arnoldae47a9a2014-03-26 12:16:47 -070046 virtual TimeProvider* time_provider() { return time_provider_.get(); }
47 virtual UpdaterProvider* updater_provider() {
48 return updater_provider_.get();
49 }
Gilad Arnold78a78112014-03-13 14:58:06 -070050
Alex Deymo2de23f52014-02-26 14:30:13 -080051 private:
52 // Instances of the providers.
Alex Deymof9f12632014-04-17 13:51:26 -070053 scoped_ptr<ConfigProvider> config_provider_;
Alex Deymoc83baf62014-04-02 17:43:35 -070054 scoped_ptr<DevicePolicyProvider> device_policy_provider_;
Alex Deymo2de23f52014-02-26 14:30:13 -080055 scoped_ptr<RandomProvider> random_provider_;
56 scoped_ptr<ShillProvider> shill_provider_;
Alex Deymobd04b142014-03-18 15:00:05 -070057 scoped_ptr<SystemProvider> system_provider_;
Gilad Arnold78a78112014-03-13 14:58:06 -070058 scoped_ptr<TimeProvider> time_provider_;
Gilad Arnoldae47a9a2014-03-26 12:16:47 -070059 scoped_ptr<UpdaterProvider> updater_provider_;
Alex Deymo2de23f52014-02-26 14:30:13 -080060};
61
62} // namespace chromeos_policy_manager
63
Gilad Arnold2cbb3852014-03-07 12:40:50 -080064#endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_STATE_H_