Handle AllowKioskAppControlChromeVersion device policy

When AllowKioskAppControlChromeVersion is set to true, get the
required platform version of the auto launched kiosk app from
Chrome and use it as the target version prefix. If the required
platform version is empty, ignore update disabled policy and do
AU to latest.

BUG=chromium:577783

Change-Id: I2ff1981b6c03aa9da4fe46b6f78061c69a71c49a
diff --git a/update_manager/state_factory.cc b/update_manager/state_factory.cc
index d4f4aa4..e01f769 100644
--- a/update_manager/state_factory.cc
+++ b/update_manager/state_factory.cc
@@ -21,6 +21,7 @@
 #include <base/logging.h>
 
 #include "update_engine/common/clock_interface.h"
+#include "update_engine/libcros_proxy.h"
 #include "update_engine/update_manager/real_config_provider.h"
 #include "update_engine/update_manager/real_device_policy_provider.h"
 #include "update_engine/update_manager/real_random_provider.h"
@@ -38,6 +39,7 @@
     policy::PolicyProvider* policy_provider,
     chromeos_update_engine::ShillProxy* shill_proxy,
     org::chromium::SessionManagerInterfaceProxyInterface* session_manager_proxy,
+    chromeos_update_engine::LibCrosProxy* libcros_proxy,
     chromeos_update_engine::SystemState* system_state) {
   chromeos_update_engine::ClockInterface* const clock = system_state->clock();
   unique_ptr<RealConfigProvider> config_provider(
@@ -49,7 +51,8 @@
       new RealShillProvider(shill_proxy, clock));
   unique_ptr<RealSystemProvider> system_provider(
       new RealSystemProvider(system_state->hardware(),
-                             system_state->boot_control()));
+                             system_state->boot_control(),
+                             libcros_proxy));
   unique_ptr<RealTimeProvider> time_provider(new RealTimeProvider(clock));
   unique_ptr<RealUpdaterProvider> updater_provider(
       new RealUpdaterProvider(system_state));