PM: Add an update engine provider.

The UpdaterProvider exports variables for querying the status of an
update process and related settings. Includes a concrete implementation
(RealUpdaterProvider), which currently links directly with update engine
code and pulls information through the SystemState object.  Also
included is a fake implementation (FakeUpdaterProvider) for testing
purposes.

BUG=chromium:346914
TEST=Unit tests.

Change-Id: I6ed5b40f21e43537e78aebf4217d811e149f745b
Reviewed-on: https://chromium-review.googlesource.com/192232
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/fake_state.h b/policy_manager/fake_state.h
index 2d5b9c9..4e4ead6 100644
--- a/policy_manager/fake_state.h
+++ b/policy_manager/fake_state.h
@@ -9,6 +9,7 @@
 #include "update_engine/policy_manager/fake_shill_provider.h"
 #include "update_engine/policy_manager/fake_system_provider.h"
 #include "update_engine/policy_manager/fake_time_provider.h"
+#include "update_engine/policy_manager/fake_updater_provider.h"
 #include "update_engine/policy_manager/state.h"
 
 namespace chromeos_policy_manager {
@@ -26,14 +27,21 @@
   virtual FakeRandomProvider* random_provider() override {
     return reinterpret_cast<FakeRandomProvider*>(State::random_provider());
   }
+
   virtual FakeShillProvider* shill_provider() override {
     return reinterpret_cast<FakeShillProvider*>(State::shill_provider());
   }
+
+  virtual FakeSystemProvider* system_provider() override {
+    return reinterpret_cast<FakeSystemProvider*>(State::system_provider());
+  }
+
   virtual FakeTimeProvider* time_provider() override {
     return reinterpret_cast<FakeTimeProvider*>(State::time_provider());
   }
-  virtual FakeSystemProvider* system_provider() override {
-    return reinterpret_cast<FakeSystemProvider*>(State::system_provider());
+
+  virtual FakeUpdaterProvider* updater_provider() override {
+    return reinterpret_cast<FakeUpdaterProvider*>(State::updater_provider());
   }
 
  private: