update_engine: Add ChannelDowngradeBehavior
Add the ChannelDowngradeBehaviorPolicy to update_engine.
It will be used to decide whether to rollback and powerwash or wait
until the target channel catches up on a channel downgrade
(e.g. beta to stable).
BUG=chromium:1122531
TEST=FEATURES=test emerge-amd64-generic update_engine
TEST=manual test on device
Change-Id: Iad075e1019084fafec8509c23f2bd55e9755b39e
Reviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/2379690
Tested-by: Miriam Polzer <mpolzer@google.com>
Commit-Queue: Amin Hassani <ahassani@chromium.org>
Reviewed-by: Amin Hassani <ahassani@chromium.org>
diff --git a/update_manager/boxed_value.cc b/update_manager/boxed_value.cc
index 4dff9ef..b499c30 100644
--- a/update_manager/boxed_value.cc
+++ b/update_manager/boxed_value.cc
@@ -232,4 +232,22 @@
return retval;
}
+template <>
+string BoxedValue::ValuePrinter<ChannelDowngradeBehavior>(const void* value) {
+ const ChannelDowngradeBehavior* val =
+ reinterpret_cast<const ChannelDowngradeBehavior*>(value);
+ switch (*val) {
+ case ChannelDowngradeBehavior::kUnspecified:
+ return "Unspecified";
+ case ChannelDowngradeBehavior::kWaitForVersionToCatchUp:
+ return "Wait for the target channel to catch up";
+ case ChannelDowngradeBehavior::kRollback:
+ return "Roll back and powerwash on channel downgrade";
+ case ChannelDowngradeBehavior::kAllowUserToConfigure:
+ return "User decides on channel downgrade behavior";
+ }
+ NOTREACHED();
+ return "Unknown";
+}
+
} // namespace chromeos_update_manager