PolicyManager: New System provider.

The system provider exposes information about the device from
crossystem and the kernel boot command line options.

BUG=chromium:338587
TEST=Unit tests.

Change-Id: I2837a97740b63562155717cfe6a12fad69fd8cea
Reviewed-on: https://chromium-review.googlesource.com/191121
Reviewed-by: Alex Deymo <deymo@chromium.org>
Tested-by: Alex Deymo <deymo@chromium.org>
Commit-Queue: Alex Deymo <deymo@chromium.org>
diff --git a/policy_manager/state.h b/policy_manager/state.h
index fb847a7..dd1e6af 100644
--- a/policy_manager/state.h
+++ b/policy_manager/state.h
@@ -7,6 +7,7 @@
 
 #include "update_engine/policy_manager/random_provider.h"
 #include "update_engine/policy_manager/shill_provider.h"
+#include "update_engine/policy_manager/system_provider.h"
 #include "update_engine/policy_manager/time_provider.h"
 
 namespace chromeos_policy_manager {
@@ -22,6 +23,7 @@
   bool Init() {
     return (random_provider_ && random_provider_->Init() &&
             shill_provider_ && shill_provider_->Init() &&
+            system_provider_ && system_provider_->Init() &&
             time_provider_ && time_provider_->Init());
   }
 
@@ -29,6 +31,7 @@
   RandomProvider* random_provider() { return random_provider_.get(); }
   ShillProvider* shill_provider() { return shill_provider_.get(); }
   TimeProvider* time_provider() { return time_provider_.get(); }
+  SystemProvider* system_provider() { return system_provider_.get(); }
 
  protected:
   // Initialize the private scoped_ptr for each provider.
@@ -40,6 +43,10 @@
     return shill_provider_.reset(shill_provider);
   }
 
+  void set_system_provider(SystemProvider* system_provider) {
+    return system_provider_.reset(system_provider);
+  }
+
   void set_time_provider(TimeProvider* time_provider) {
     return time_provider_.reset(time_provider);
   }
@@ -48,6 +55,7 @@
   // Instances of the providers.
   scoped_ptr<RandomProvider> random_provider_;
   scoped_ptr<ShillProvider> shill_provider_;
+  scoped_ptr<SystemProvider> system_provider_;
   scoped_ptr<TimeProvider> time_provider_;
 };