Always powerwash on channel change if arbitrary channel allowed.

Merged is_powerwash_allowed() and to_more_stable_channel() into
ShouldPowerwash().

Bug: 73082835
Test: update_engine_unittests
Change-Id: I6b7af0d1dac28d5fa9cddf4391bbd9cdf2acb57b
diff --git a/omaha_request_params_unittest.cc b/omaha_request_params_unittest.cc
index 2de45de..ce77f31 100644
--- a/omaha_request_params_unittest.cc
+++ b/omaha_request_params_unittest.cc
@@ -117,12 +117,12 @@
     params.set_root(tempdir_.GetPath().value());
     EXPECT_TRUE(params.Init("", "", false));
     EXPECT_TRUE(params.SetTargetChannel("canary-channel", false, nullptr));
-    EXPECT_FALSE(params.is_powerwash_allowed());
+    EXPECT_FALSE(params.mutable_image_props_.is_powerwash_allowed);
   }
   params_.set_root(tempdir_.GetPath().value());
   EXPECT_TRUE(params_.Init("", "", false));
   EXPECT_EQ("canary-channel", params_.target_channel());
-  EXPECT_FALSE(params_.is_powerwash_allowed());
+  EXPECT_FALSE(params_.mutable_image_props_.is_powerwash_allowed);
 }
 
 TEST_F(OmahaRequestParamsTest, SetIsPowerwashAllowedTest) {
@@ -131,12 +131,12 @@
     params.set_root(tempdir_.GetPath().value());
     EXPECT_TRUE(params.Init("", "", false));
     EXPECT_TRUE(params.SetTargetChannel("canary-channel", true, nullptr));
-    EXPECT_TRUE(params.is_powerwash_allowed());
+    EXPECT_TRUE(params.mutable_image_props_.is_powerwash_allowed);
   }
   params_.set_root(tempdir_.GetPath().value());
   EXPECT_TRUE(params_.Init("", "", false));
   EXPECT_EQ("canary-channel", params_.target_channel());
-  EXPECT_TRUE(params_.is_powerwash_allowed());
+  EXPECT_TRUE(params_.mutable_image_props_.is_powerwash_allowed);
 }
 
 TEST_F(OmahaRequestParamsTest, SetTargetChannelInvalidTest) {
@@ -151,12 +151,12 @@
         params.SetTargetChannel("dogfood-channel", true, &error_message));
     // The error message should include a message about the valid channels.
     EXPECT_NE(string::npos, error_message.find("stable-channel"));
-    EXPECT_FALSE(params.is_powerwash_allowed());
+    EXPECT_FALSE(params.mutable_image_props_.is_powerwash_allowed);
   }
   params_.set_root(tempdir_.GetPath().value());
   EXPECT_TRUE(params_.Init("", "", false));
   EXPECT_EQ("stable-channel", params_.target_channel());
-  EXPECT_FALSE(params_.is_powerwash_allowed());
+  EXPECT_FALSE(params_.mutable_image_props_.is_powerwash_allowed);
 }
 
 TEST_F(OmahaRequestParamsTest, IsValidChannelTest) {
@@ -232,13 +232,25 @@
 TEST_F(OmahaRequestParamsTest, ToMoreStableChannelFlagTest) {
   params_.image_props_.current_channel = "canary-channel";
   params_.download_channel_ = "stable-channel";
-  EXPECT_TRUE(params_.to_more_stable_channel());
+  EXPECT_TRUE(params_.ToMoreStableChannel());
   params_.image_props_.current_channel = "stable-channel";
-  EXPECT_FALSE(params_.to_more_stable_channel());
+  EXPECT_FALSE(params_.ToMoreStableChannel());
   params_.download_channel_ = "beta-channel";
-  EXPECT_FALSE(params_.to_more_stable_channel());
-  params_.download_channel_ = "some-channel";
-  EXPECT_TRUE(params_.to_more_stable_channel());
+  EXPECT_FALSE(params_.ToMoreStableChannel());
+}
+
+TEST_F(OmahaRequestParamsTest, ShouldPowerwashTest) {
+  params_.mutable_image_props_.is_powerwash_allowed = false;
+  EXPECT_FALSE(params_.ShouldPowerwash());
+  params_.mutable_image_props_.is_powerwash_allowed = true;
+  params_.image_props_.allow_arbitrary_channels = true;
+  params_.image_props_.current_channel = "foo-channel";
+  params_.download_channel_ = "bar-channel";
+  EXPECT_TRUE(params_.ShouldPowerwash());
+  params_.image_props_.allow_arbitrary_channels = false;
+  params_.image_props_.current_channel = "canary-channel";
+  params_.download_channel_ = "stable-channel";
+  EXPECT_TRUE(params_.ShouldPowerwash());
 }
 
 TEST_F(OmahaRequestParamsTest, CollectECFWVersionsTest) {