PM: Add a time provider.

This implements a time provider interface, as well as a real and a fake
implementation.

BUG=chromium:341205
TEST=Unit tests.

Change-Id: Ibc6a865ab868e0f8c760c003dc970b7987896a36
Reviewed-on: https://chromium-review.googlesource.com/190247
Tested-by: Gilad Arnold <garnold@chromium.org>
Reviewed-by: Alex Deymo <deymo@chromium.org>
Commit-Queue: Gilad Arnold <garnold@chromium.org>
diff --git a/policy_manager/real_state_unittest.cc b/policy_manager/real_state_unittest.cc
index 6078223..0362688 100644
--- a/policy_manager/real_state_unittest.cc
+++ b/policy_manager/real_state_unittest.cc
@@ -6,13 +6,15 @@
 
 #include "update_engine/policy_manager/fake_random_provider.h"
 #include "update_engine/policy_manager/fake_shill_provider.h"
+#include "update_engine/policy_manager/fake_time_provider.h"
 #include "update_engine/policy_manager/real_state.h"
 #include "update_engine/policy_manager/pmtest_utils.h"
 
 namespace chromeos_policy_manager {
 
 TEST(PmRealStateTest, InitTest) {
-  RealState state(new FakeRandomProvider(), new FakeShillProvider());
+  RealState state(new FakeRandomProvider(), new FakeShillProvider(),
+                  new FakeTimeProvider());
   EXPECT_TRUE(state.Init());
 
   // Check that the providers are being initialized. Beyond ensuring that we get
@@ -22,6 +24,8 @@
   PMTEST_EXPECT_NOT_NULL(state.random_provider()->var_seed());
   PMTEST_ASSERT_NOT_NULL(state.shill_provider());
   PMTEST_EXPECT_NOT_NULL(state.shill_provider()->var_is_connected());
+  PMTEST_ASSERT_NOT_NULL(state.time_provider());
+  PMTEST_ASSERT_NOT_NULL(state.time_provider()->var_curr_date());
 }
 
 }  // namespace chromeos_policy_manager