blob: b81a88edcc77090b6b13a49cf0ae8d8445b8bb51 [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 Deymo2de23f52014-02-26 14:30:13 -08009#include "update_engine/policy_manager/random_provider.h"
10#include "update_engine/policy_manager/shill_provider.h"
Alex Deymobd04b142014-03-18 15:00:05 -070011#include "update_engine/policy_manager/system_provider.h"
Gilad Arnold78a78112014-03-13 14:58:06 -070012#include "update_engine/policy_manager/time_provider.h"
Gilad Arnoldae47a9a2014-03-26 12:16:47 -070013#include "update_engine/policy_manager/updater_provider.h"
Alex Deymo2de23f52014-02-26 14:30:13 -080014
15namespace chromeos_policy_manager {
16
17// The State class is an interface to the ensemble of providers. This class
18// gives visibility of the state providers to policy implementations.
19class State {
20 public:
21 virtual ~State() {}
Alex Deymoc83baf62014-04-02 17:43:35 -070022 State(DevicePolicyProvider* device_policy_provider,
23 RandomProvider* random_provider, ShillProvider* shill_provider,
Gilad Arnoldae47a9a2014-03-26 12:16:47 -070024 SystemProvider* system_provider, TimeProvider* time_provider,
25 UpdaterProvider* updater_provider) :
Alex Deymoc83baf62014-04-02 17:43:35 -070026 device_policy_provider_(device_policy_provider),
Alex Deymo94c06162014-03-21 20:34:46 -070027 random_provider_(random_provider),
28 shill_provider_(shill_provider),
29 system_provider_(system_provider),
Gilad Arnoldae47a9a2014-03-26 12:16:47 -070030 time_provider_(time_provider),
31 updater_provider_(updater_provider) {}
Alex Deymo2de23f52014-02-26 14:30:13 -080032
Alex Deymo94c06162014-03-21 20:34:46 -070033 // These methods return the given provider.
Alex Deymoc83baf62014-04-02 17:43:35 -070034 virtual DevicePolicyProvider* device_policy_provider() {
35 return device_policy_provider_.get();
36 }
Alex Deymo94c06162014-03-21 20:34:46 -070037 virtual RandomProvider* random_provider() { return random_provider_.get(); }
38 virtual ShillProvider* shill_provider() { return shill_provider_.get(); }
Alex Deymo94c06162014-03-21 20:34:46 -070039 virtual SystemProvider* system_provider() { return system_provider_.get(); }
Gilad Arnoldae47a9a2014-03-26 12:16:47 -070040 virtual TimeProvider* time_provider() { return time_provider_.get(); }
41 virtual UpdaterProvider* updater_provider() {
42 return updater_provider_.get();
43 }
Gilad Arnold78a78112014-03-13 14:58:06 -070044
Alex Deymo2de23f52014-02-26 14:30:13 -080045 private:
46 // Instances of the providers.
Alex Deymoc83baf62014-04-02 17:43:35 -070047 scoped_ptr<DevicePolicyProvider> device_policy_provider_;
Alex Deymo2de23f52014-02-26 14:30:13 -080048 scoped_ptr<RandomProvider> random_provider_;
49 scoped_ptr<ShillProvider> shill_provider_;
Alex Deymobd04b142014-03-18 15:00:05 -070050 scoped_ptr<SystemProvider> system_provider_;
Gilad Arnold78a78112014-03-13 14:58:06 -070051 scoped_ptr<TimeProvider> time_provider_;
Gilad Arnoldae47a9a2014-03-26 12:16:47 -070052 scoped_ptr<UpdaterProvider> updater_provider_;
Alex Deymo2de23f52014-02-26 14:30:13 -080053};
54
55} // namespace chromeos_policy_manager
56
Gilad Arnold2cbb3852014-03-07 12:40:50 -080057#endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_STATE_H_