PM: New system provider variable for whether OOBE is complete.

This uses logic found in Hardware::IsOOBEComplete(). It is needed for
deciding whether scattering should be applied.

BUG=chromium:358323
TEST=Unit tests.

Change-Id: I745365e84fc09dd234cd5f65ec0a2012a9024cdd
Reviewed-on: https://chromium-review.googlesource.com/200571
Reviewed-by: Alex Deymo <deymo@chromium.org>
Tested-by: Gilad Arnold <garnold@chromium.org>
Commit-Queue: Gilad Arnold <garnold@chromium.org>
diff --git a/policy_manager/real_system_provider.h b/policy_manager/real_system_provider.h
index 01491ac..8d95387 100644
--- a/policy_manager/real_system_provider.h
+++ b/policy_manager/real_system_provider.h
@@ -9,6 +9,7 @@
 
 #include <string>
 
+#include "update_engine/hardware_interface.h"
 #include "update_engine/policy_manager/system_provider.h"
 
 namespace chromeos_policy_manager {
@@ -16,7 +17,9 @@
 // SystemProvider concrete implementation.
 class RealSystemProvider : public SystemProvider {
  public:
-  RealSystemProvider() {}
+  explicit RealSystemProvider(
+      chromeos_update_engine::HardwareInterface* hardware)
+      : hardware_(hardware) {}
 
   // Initializes the provider and returns whether it succeeded.
   bool Init();
@@ -29,9 +32,16 @@
     return var_is_official_build_.get();
   }
 
+  virtual Variable<bool>* var_is_oobe_complete() override {
+    return var_is_oobe_complete_.get();
+  }
+
  private:
   scoped_ptr<Variable<bool>> var_is_normal_boot_mode_;
   scoped_ptr<Variable<bool>> var_is_official_build_;
+  scoped_ptr<Variable<bool>> var_is_oobe_complete_;
+
+  chromeos_update_engine::HardwareInterface* hardware_;
 
   DISALLOW_COPY_AND_ASSIGN(RealSystemProvider);
 };