update_engine: Add minimum version policy

Make the minimum version policy available in the update_engine.
This policy is set to a minimum Chrome OS version the device
must have to run.

No-update windows will not apply if the device's
version is below minimum version.

If during a Kiosk update Chrome is unreachable and we can not
determine the required Chrome OS version, we will fall back to
minimum device version and update if the device's version is older.

BUG=chromium:1117450, chromium:1084453
TEST=cros_run_unit_test --board ${BOARD} --packages update_engine

Change-Id: Ie4fc868805718c9a08a562350bfb015a70a190ac
Reviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/2388067
Tested-by: Miriam Polzer <mpolzer@google.com>
Commit-Queue: Miriam Polzer <mpolzer@google.com>
Reviewed-by: Amin Hassani <ahassani@chromium.org>
diff --git a/update_manager/device_policy_provider.h b/update_manager/device_policy_provider.h
index f177e71..a59f2a3 100644
--- a/update_manager/device_policy_provider.h
+++ b/update_manager/device_policy_provider.h
@@ -21,6 +21,7 @@
 #include <string>
 
 #include <base/time/time.h>
+#include <base/version.h>
 #include <policy/libpolicy.h>
 
 #include "update_engine/update_manager/provider.h"
@@ -92,6 +93,10 @@
   virtual Variable<ChannelDowngradeBehavior>*
   var_channel_downgrade_behavior() = 0;
 
+  // Variable that contains Chrome OS minimum required version. It contains a
+  // Chrome OS version number.
+  virtual Variable<base::Version>* var_device_minimum_version() = 0;
+
  protected:
   DevicePolicyProvider() {}