PM: Make State an abstract interface.

Similar to CL:196656, move getters/variables to concrete
subclasses. In this case, also introduce a RealState type to achieve
this.

BUG=chromium:364763
TEST=Unit tests pass.

Change-Id: Ic12cd872e576c9690d32359474f3528cf706633d
Reviewed-on: https://chromium-review.googlesource.com/196885
Reviewed-by: David Zeuthen <zeuthen@chromium.org>
Commit-Queue: David Zeuthen <zeuthen@chromium.org>
Tested-by: David Zeuthen <zeuthen@chromium.org>
diff --git a/policy_manager/state_factory.cc b/policy_manager/state_factory.cc
index 5866a12..f9054de 100644
--- a/policy_manager/state_factory.cc
+++ b/policy_manager/state_factory.cc
@@ -11,6 +11,7 @@
 #include "update_engine/policy_manager/real_config_provider.h"
 #include "update_engine/policy_manager/real_random_provider.h"
 #include "update_engine/policy_manager/real_shill_provider.h"
+#include "update_engine/policy_manager/real_state.h"
 #include "update_engine/policy_manager/real_system_provider.h"
 #include "update_engine/policy_manager/real_time_provider.h"
 #include "update_engine/policy_manager/real_updater_provider.h"
@@ -44,13 +45,13 @@
     return NULL;
   }
 
-  return new State(config_provider.release(),
-                   device_policy_provider.release(),
-                   random_provider.release(),
-                   shill_provider.release(),
-                   system_provider.release(),
-                   time_provider.release(),
-                   updater_provider.release());
+  return new RealState(config_provider.release(),
+                       device_policy_provider.release(),
+                       random_provider.release(),
+                       shill_provider.release(),
+                       system_provider.release(),
+                       time_provider.release(),
+                       updater_provider.release());
 }
 
 }  // namespace chromeos_policy_manager