diff --git a/policy_manager/fake_system_provider.h b/policy_manager/fake_system_provider.h
index 5886828..d86e015 100644
--- a/policy_manager/fake_system_provider.h
+++ b/policy_manager/fake_system_provider.h
@@ -23,11 +23,17 @@
     return &var_is_official_build_;
   }
 
+  virtual FakeVariable<bool>* var_is_oobe_complete() override {
+    return &var_is_oobe_complete_;
+  }
+
  private:
   FakeVariable<bool> var_is_normal_boot_mode_{
       "is_normal_boot_mode", kVariableModeConst};
   FakeVariable<bool> var_is_official_build_{
       "is_official_build", kVariableModeConst};
+  FakeVariable<bool> var_is_oobe_complete_{
+      "is_oobe_complete", kVariableModePoll};
 
   DISALLOW_COPY_AND_ASSIGN(FakeSystemProvider);
 };
diff --git a/policy_manager/real_system_provider.cc b/policy_manager/real_system_provider.cc
index 6b19268..e00c87b 100644
--- a/policy_manager/real_system_provider.cc
+++ b/policy_manager/real_system_provider.cc
@@ -4,15 +4,25 @@
 
 #include "update_engine/policy_manager/real_system_provider.h"
 
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
 #include <string>
 #include <vector>
 
 #include <base/logging.h>
+#include <base/strings/stringprintf.h>
+#include <base/time/time.h>
 #include <vboot/crossystem.h>
 
 #include "update_engine/policy_manager/generic_variables.h"
 #include "update_engine/utils.h"
 
+using base::StringPrintf;
+using base::Time;
+using base::TimeDelta;
 using std::string;
 using std::vector;
 
@@ -24,9 +34,15 @@
                                   VbGetSystemPropertyInt("devsw_boot") != 0));
 
   var_is_official_build_.reset(
-      new ConstCopyVariable<bool>("var_is_official_build",
+      new ConstCopyVariable<bool>("is_official_build",
                                   VbGetSystemPropertyInt("debug_build") == 0));
 
+  var_is_oobe_complete_.reset(
+      new CallCopyVariable<bool>(
+          "is_oobe_complete",
+          base::Bind(&chromeos_update_engine::HardwareInterface::IsOOBEComplete,
+                     base::Unretained(hardware_), nullptr)));
+
   return true;
 }
 
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);
 };
diff --git a/policy_manager/real_system_provider_unittest.cc b/policy_manager/real_system_provider_unittest.cc
index 3082e8f..d82c3bd 100644
--- a/policy_manager/real_system_provider_unittest.cc
+++ b/policy_manager/real_system_provider_unittest.cc
@@ -5,8 +5,10 @@
 #include "update_engine/policy_manager/real_system_provider.h"
 
 #include <base/memory/scoped_ptr.h>
+#include <base/time/time.h>
 #include <gtest/gtest.h>
 
+#include "update_engine/fake_hardware.h"
 #include "update_engine/policy_manager/pmtest_utils.h"
 
 namespace chromeos_policy_manager {
@@ -14,16 +16,28 @@
 class PmRealSystemProviderTest : public ::testing::Test {
  protected:
   virtual void SetUp() {
-    provider_.reset(new RealSystemProvider());
+    provider_.reset(new RealSystemProvider(&fake_hardware_));
     EXPECT_TRUE(provider_->Init());
   }
 
+  chromeos_update_engine::FakeHardware fake_hardware_;
   scoped_ptr<RealSystemProvider> provider_;
 };
 
 TEST_F(PmRealSystemProviderTest, InitTest) {
   PMTEST_EXPECT_NOT_NULL(provider_->var_is_normal_boot_mode());
   PMTEST_EXPECT_NOT_NULL(provider_->var_is_official_build());
+  PMTEST_EXPECT_NOT_NULL(provider_->var_is_oobe_complete());
+}
+
+TEST_F(PmRealSystemProviderTest, IsOOBECompleteTrue) {
+  fake_hardware_.SetIsOOBEComplete(base::Time());
+  PmTestUtils::ExpectVariableHasValue(true, provider_->var_is_oobe_complete());
+}
+
+TEST_F(PmRealSystemProviderTest, IsOOBECompleteFalse) {
+  fake_hardware_.UnsetIsOOBEComplete();
+  PmTestUtils::ExpectVariableHasValue(false, provider_->var_is_oobe_complete());
 }
 
 }  // namespace chromeos_policy_manager
diff --git a/policy_manager/state_factory.cc b/policy_manager/state_factory.cc
index c692522..88a8ee0 100644
--- a/policy_manager/state_factory.cc
+++ b/policy_manager/state_factory.cc
@@ -23,14 +23,15 @@
                            chromeos_update_engine::DBusWrapperInterface* dbus,
                            chromeos_update_engine::SystemState* system_state) {
   chromeos_update_engine::ClockInterface* const clock = system_state->clock();
-  scoped_ptr<RealConfigProvider> config_provider(new RealConfigProvider(
-      system_state->hardware()));
+  scoped_ptr<RealConfigProvider> config_provider(
+      new RealConfigProvider(system_state->hardware()));
   scoped_ptr<RealDevicePolicyProvider> device_policy_provider(
       new RealDevicePolicyProvider(policy_provider));
   scoped_ptr<RealRandomProvider> random_provider(new RealRandomProvider());
   scoped_ptr<RealShillProvider> shill_provider(
       new RealShillProvider(dbus, clock));
-  scoped_ptr<RealSystemProvider> system_provider(new RealSystemProvider());
+  scoped_ptr<RealSystemProvider> system_provider(
+      new RealSystemProvider(system_state->hardware()));
   scoped_ptr<RealTimeProvider> time_provider(new RealTimeProvider(clock));
   scoped_ptr<RealUpdaterProvider> updater_provider(
       new RealUpdaterProvider(system_state));
diff --git a/policy_manager/system_provider.h b/policy_manager/system_provider.h
index d18955b..dae3a9a 100644
--- a/policy_manager/system_provider.h
+++ b/policy_manager/system_provider.h
@@ -24,6 +24,9 @@
   // Returns whether this is an official Chrome OS build.
   virtual Variable<bool>* var_is_official_build() = 0;
 
+  // Returns a variable that tells whether OOBE was completed.
+  virtual Variable<bool>* var_is_oobe_complete() = 0;
+
  protected:
   SystemProvider() {}
 
