PM: Inject providers to RealState and PolicyManager.
Since RealState allocated a set of hard-coded real providers, it was
necessary for us to pass in underlying interfaces in order to be able to
mock dependencies like DBus or a system clock. This worked but scaled
poorly as we needed to test higher level classes like PolicyManager.
Instead, we now allow to inject the provider objects themselves into
RealState, and a State object into PolicyManager, which allows us to
easily fake them at each level for testing purposes.
BUG=None
TEST=Unit tests.
Change-Id: I85b38990e42039cb6cf37e97234fd18e2c3fea2e
Reviewed-on: https://chromium-review.googlesource.com/189776
Reviewed-by: Gilad Arnold <garnold@chromium.org>
Commit-Queue: Gilad Arnold <garnold@chromium.org>
Tested-by: Gilad Arnold <garnold@chromium.org>
diff --git a/policy_manager/real_state.cc b/policy_manager/real_state.cc
index 4e140d6..8f99869 100644
--- a/policy_manager/real_state.cc
+++ b/policy_manager/real_state.cc
@@ -9,11 +9,10 @@
namespace chromeos_policy_manager {
-// TODO(garnold) We should be injecting actual provider objects here.
-RealState::RealState(chromeos_update_engine::DBusWrapperInterface* dbus,
- chromeos_update_engine::ClockInterface* clock) {
- set_random_provider(new RealRandomProvider());
- set_shill_provider(new RealShillProvider(dbus, clock));
+RealState::RealState(RandomProvider* random_provider,
+ ShillProvider* shill_provider) {
+ set_random_provider(random_provider);
+ set_shill_provider(shill_provider);
}
} // namespace chromeos_policy_manager