update_engine: remove system_id and system_version
These two variables and their use cases was introduced for android, but
eventually android abandon it for some other solution. So this are stale
now.
Also removed the implemnation of ImageProperties for Android as it
doesn't seem Android is actually using it.
BUG=b:171829801
TEST=unittests
Change-Id: Ic793cfa5031d69b5390acefb1b8cd75291708890
Reviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/2505885
Reviewed-by: Jae Hoon Kim <kimjae@chromium.org>
Reviewed-by: Tianjie Xu <xunchang@google.com>
Reviewed-by: Amin Hassani <ahassani@chromium.org>
Tested-by: Amin Hassani <ahassani@chromium.org>
Commit-Queue: Amin Hassani <ahassani@chromium.org>
diff --git a/image_properties.h b/image_properties.h
index 49fe82f..0887ca8 100644
--- a/image_properties.h
+++ b/image_properties.h
@@ -33,13 +33,9 @@
std::string product_id;
// The canary-channel product id.
std::string canary_product_id;
- // The system id for the Android Things SoM, empty for Chrome OS.
- std::string system_id;
// The product version of this image.
std::string version;
- // The system version of this image.
- std::string system_version;
// The version of all product components in key values pairs.
std::string product_components;
diff --git a/image_properties_android.cc b/image_properties_android.cc
deleted file mode 100644
index 2d418b3..0000000
--- a/image_properties_android.cc
+++ /dev/null
@@ -1,246 +0,0 @@
-//
-// Copyright (C) 2015 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-#include "update_engine/image_properties.h"
-
-#include <fcntl.h>
-
-#include <string>
-
-#include <android-base/properties.h>
-#include <base/logging.h>
-#include <base/strings/string_util.h>
-#include <bootloader_message/bootloader_message.h>
-#include <brillo/osrelease_reader.h>
-#include <brillo/strings/string_utils.h>
-
-#include "update_engine/common/boot_control_interface.h"
-#include "update_engine/common/constants.h"
-#include "update_engine/common/platform_constants.h"
-#include "update_engine/common/prefs_interface.h"
-#include "update_engine/common/utils.h"
-#include "update_engine/system_state.h"
-
-using android::base::GetProperty;
-using std::string;
-
-namespace chromeos_update_engine {
-
-namespace {
-
-// Build time properties name used in Android Things.
-const char kProductId[] = "product_id";
-const char kProductVersion[] = "product_version";
-const char kSystemId[] = "system_id";
-const char kSystemVersion[] = "system_version";
-
-// The path to the product_components file which stores the version of each
-// components in OEM partition.
-const char kProductComponentsPath[] = "/oem/os-release.d/product_components";
-
-// Prefs used to store the powerwash settings.
-const char kPrefsImgPropPowerwashAllowed[] = "img-prop-powerwash-allowed";
-
-// System properties that identifies the "board".
-const char kPropProductName[] = "ro.product.name";
-const char kPropBuildFingerprint[] = "ro.build.fingerprint";
-const char kPropBuildType[] = "ro.build.type";
-
-// Default channel from factory.prop
-const char kPropDefaultChannel[] = "ro.update.default_channel";
-
-// A prefix added to the path, used for testing.
-const char* root_prefix = nullptr;
-
-string GetStringWithDefault(const brillo::OsReleaseReader& osrelease,
- const string& key,
- const string& default_value) {
- string result;
- if (osrelease.GetString(key, &result))
- return result;
- LOG(INFO) << "Cannot load ImageProperty " << key << ", using default value "
- << default_value;
- return default_value;
-}
-
-// Open misc partition for read or write and output the fd in |out_fd|.
-bool OpenMisc(bool write, int* out_fd) {
- string misc_device;
- int flags = write ? O_WRONLY | O_SYNC : O_RDONLY;
- if (root_prefix) {
- // Use a file for unittest and create one if doesn't exist.
- misc_device = base::FilePath(root_prefix).Append("misc").value();
- if (write)
- flags |= O_CREAT;
- } else {
- string err;
- misc_device = get_bootloader_message_blk_device(&err);
- if (misc_device.empty()) {
- LOG(ERROR) << "Unable to get misc block device: " << err;
- return false;
- }
- }
-
- int fd = HANDLE_EINTR(open(misc_device.c_str(), flags, 0600));
- if (fd < 0) {
- PLOG(ERROR) << "Opening misc failed";
- return false;
- }
- *out_fd = fd;
- return true;
-}
-
-// The offset and size of the channel field in misc partition.
-constexpr size_t kChannelOffset =
- BOOTLOADER_MESSAGE_OFFSET_IN_MISC +
- offsetof(bootloader_message_ab, update_channel);
-constexpr size_t kChannelSize = sizeof(bootloader_message_ab::update_channel);
-
-// Read channel from misc partition to |out_channel|, return false if unable to
-// read misc or no channel is set in misc.
-bool ReadChannelFromMisc(string* out_channel) {
- int fd;
- TEST_AND_RETURN_FALSE(OpenMisc(false, &fd));
- ScopedFdCloser fd_closer(&fd);
- char channel[kChannelSize] = {0};
- ssize_t bytes_read = 0;
- if (!utils::PReadAll(
- fd, channel, kChannelSize - 1, kChannelOffset, &bytes_read) ||
- bytes_read != kChannelSize - 1) {
- PLOG(ERROR) << "Reading update channel from misc failed";
- return false;
- }
- if (channel[0] == '\0') {
- LOG(INFO) << "No channel set in misc.";
- return false;
- }
- if (!base::EndsWith(channel, "-channel", base::CompareCase::SENSITIVE)) {
- LOG(ERROR) << "Channel " << channel << " doesn't end with -channel.";
- return false;
- }
- out_channel->assign(channel);
- return true;
-}
-
-// Write |in_channel| to misc partition, return false if failed to write.
-bool WriteChannelToMisc(const string& in_channel) {
- int fd;
- TEST_AND_RETURN_FALSE(OpenMisc(true, &fd));
- ScopedFdCloser fd_closer(&fd);
- if (in_channel.size() >= kChannelSize) {
- LOG(ERROR) << "Channel name is too long: " << in_channel
- << ", the maximum length is " << kChannelSize - 1;
- return false;
- }
- char channel[kChannelSize] = {0};
- memcpy(channel, in_channel.data(), in_channel.size());
- if (!utils::PWriteAll(fd, channel, kChannelSize, kChannelOffset)) {
- PLOG(ERROR) << "Writing update channel to misc failed";
- return false;
- }
- return true;
-}
-
-string GetTargetChannel() {
- string channel;
- if (!ReadChannelFromMisc(&channel))
- channel = GetProperty(kPropDefaultChannel, "stable-channel");
- return channel;
-}
-} // namespace
-
-namespace test {
-void SetImagePropertiesRootPrefix(const char* test_root_prefix) {
- root_prefix = test_root_prefix;
-}
-} // namespace test
-
-ImageProperties LoadImageProperties(SystemState* system_state) {
- ImageProperties result;
-
- brillo::OsReleaseReader osrelease;
- if (root_prefix)
- osrelease.LoadTestingOnly(base::FilePath(root_prefix));
- else
- osrelease.Load();
- result.product_id =
- GetStringWithDefault(osrelease, kProductId, "invalid-product");
- result.system_id = GetStringWithDefault(
- osrelease, kSystemId, "developer-boards:brillo-starter-board");
- // Update the system id to match the prefix of product id for testing.
- string prefix, not_used, system_id;
- if (brillo::string_utils::SplitAtFirst(
- result.product_id, ":", &prefix, ¬_used, false) &&
- brillo::string_utils::SplitAtFirst(
- result.system_id, ":", ¬_used, &system_id, false)) {
- result.system_id = prefix + ":" + system_id;
- }
- result.canary_product_id = result.product_id;
- result.version = GetStringWithDefault(osrelease, kProductVersion, "0.0.0.0");
- result.system_version =
- GetStringWithDefault(osrelease, kSystemVersion, "0.0.0.0");
- // Can't read it with OsReleaseReader because it has multiple lines.
- utils::ReadFile(kProductComponentsPath, &result.product_components);
-
- result.board = GetProperty(kPropProductName, "brillo");
- result.build_fingerprint = GetProperty(kPropBuildFingerprint, "none");
- result.build_type = GetProperty(kPropBuildType, "");
-
- // Android doesn't have channel information in system image, we try to read
- // the channel of current slot from prefs and then fallback to use the
- // persisted target channel as current channel.
- string current_channel_key =
- kPrefsChannelOnSlotPrefix +
- std::to_string(system_state->boot_control()->GetCurrentSlot());
- string current_channel;
- if (!system_state->prefs()->Exists(current_channel_key) ||
- !system_state->prefs()->GetString(current_channel_key, ¤t_channel))
- current_channel = GetTargetChannel();
- result.current_channel = current_channel;
- result.allow_arbitrary_channels = true;
-
- // Brillo only supports the official omaha URL.
- result.omaha_url = constants::kOmahaDefaultProductionURL;
-
- return result;
-}
-
-MutableImageProperties LoadMutableImageProperties(SystemState* system_state) {
- MutableImageProperties result;
- result.target_channel = GetTargetChannel();
- if (!system_state->prefs()->GetBoolean(kPrefsImgPropPowerwashAllowed,
- &result.is_powerwash_allowed)) {
- result.is_powerwash_allowed = false;
- }
- return result;
-}
-
-bool StoreMutableImageProperties(SystemState* system_state,
- const MutableImageProperties& properties) {
- bool ret = true;
- if (!WriteChannelToMisc(properties.target_channel))
- ret = false;
- if (!system_state->prefs()->SetBoolean(kPrefsImgPropPowerwashAllowed,
- properties.is_powerwash_allowed))
- ret = false;
- return ret;
-}
-
-void LogImageProperties() {
- // TODO(*): Implement this.
-}
-
-} // namespace chromeos_update_engine
diff --git a/image_properties_android_unittest.cc b/image_properties_android_unittest.cc
deleted file mode 100644
index 607284a..0000000
--- a/image_properties_android_unittest.cc
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-// Copyright (C) 2017 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-#include "update_engine/image_properties.h"
-
-#include <string>
-
-#include <base/files/file_util.h>
-#include <base/files/scoped_temp_dir.h>
-#include <gtest/gtest.h>
-
-#include "update_engine/common/constants.h"
-#include "update_engine/common/fake_prefs.h"
-#include "update_engine/common/test_utils.h"
-#include "update_engine/fake_system_state.h"
-
-using chromeos_update_engine::test_utils::WriteFileString;
-using std::string;
-
-namespace chromeos_update_engine {
-
-class ImagePropertiesTest : public ::testing::Test {
- protected:
- void SetUp() override {
- // Create a uniquely named test directory.
- ASSERT_TRUE(tempdir_.CreateUniqueTempDir());
- osrelease_dir_ = tempdir_.GetPath().Append("etc/os-release.d");
- EXPECT_TRUE(base::CreateDirectory(osrelease_dir_));
- test::SetImagePropertiesRootPrefix(tempdir_.GetPath().value().c_str());
- }
-
- void WriteOsRelease(const string& key, const string& value) {
- ASSERT_TRUE(WriteFileString(osrelease_dir_.Append(key).value(), value));
- }
-
- void WriteChannel(const string& channel) {
- string misc(2080, '\0');
- misc += channel;
- misc.resize(4096);
- ASSERT_TRUE(
- WriteFileString(tempdir_.GetPath().Append("misc").value(), misc));
- }
-
- FakeSystemState fake_system_state_;
-
- base::ScopedTempDir tempdir_;
- base::FilePath osrelease_dir_;
-};
-
-TEST_F(ImagePropertiesTest, SimpleTest) {
- WriteOsRelease("product_id", "abc");
- WriteOsRelease("system_id", "def");
- WriteOsRelease("product_version", "1.2.3.4");
- WriteOsRelease("system_version", "5.6.7.8");
- ImageProperties props = LoadImageProperties(&fake_system_state_);
- EXPECT_EQ("abc", props.product_id);
- EXPECT_EQ("def", props.system_id);
- EXPECT_EQ("1.2.3.4", props.version);
- EXPECT_EQ("5.6.7.8", props.system_version);
- EXPECT_EQ("stable-channel", props.current_channel);
- EXPECT_EQ(constants::kOmahaDefaultProductionURL, props.omaha_url);
-}
-
-TEST_F(ImagePropertiesTest, IDPrefixTest) {
- WriteOsRelease("product_id", "abc:def");
- WriteOsRelease("system_id", "foo:bar");
- ImageProperties props = LoadImageProperties(&fake_system_state_);
- EXPECT_EQ("abc:def", props.product_id);
- EXPECT_EQ("abc:bar", props.system_id);
-}
-
-TEST_F(ImagePropertiesTest, IDInvalidPrefixTest) {
- WriteOsRelease("product_id", "def");
- WriteOsRelease("system_id", "foo:bar");
- ImageProperties props = LoadImageProperties(&fake_system_state_);
- EXPECT_EQ("def", props.product_id);
- EXPECT_EQ("foo:bar", props.system_id);
-
- WriteOsRelease("product_id", "abc:def");
- WriteOsRelease("system_id", "bar");
- props = LoadImageProperties(&fake_system_state_);
- EXPECT_EQ("abc:def", props.product_id);
- EXPECT_EQ("bar", props.system_id);
-}
-
-TEST_F(ImagePropertiesTest, LoadChannelTest) {
- WriteChannel("unittest-channel");
- ImageProperties props = LoadImageProperties(&fake_system_state_);
- EXPECT_EQ("unittest-channel", props.current_channel);
-}
-
-TEST_F(ImagePropertiesTest, DefaultStableChannelTest) {
- WriteChannel("");
- ImageProperties props = LoadImageProperties(&fake_system_state_);
- EXPECT_EQ("stable-channel", props.current_channel);
-}
-
-TEST_F(ImagePropertiesTest, StoreLoadMutableChannelTest) {
- FakePrefs prefs;
- fake_system_state_.set_prefs(&prefs);
- WriteChannel("previous-channel");
- MutableImageProperties props;
- props.target_channel = "new-channel";
- EXPECT_TRUE(StoreMutableImageProperties(&fake_system_state_, props));
- MutableImageProperties loaded_props =
- LoadMutableImageProperties(&fake_system_state_);
- EXPECT_EQ(props.target_channel, loaded_props.target_channel);
-}
-
-} // namespace chromeos_update_engine
diff --git a/omaha_request_action.cc b/omaha_request_action.cc
index 161cf43..4d23615 100644
--- a/omaha_request_action.cc
+++ b/omaha_request_action.cc
@@ -865,11 +865,6 @@
if (app.id == params_->GetAppId()) {
// this is the app (potentially the only app)
output_object->version = app.manifest_version;
- } else if (!params_->system_app_id().empty() &&
- app.id == params_->system_app_id()) {
- // this is the system app (this check is intentionally skipped if there is
- // no system_app_id set)
- output_object->system_version = app.manifest_version;
} else if (params_->is_install() &&
app.manifest_version != params_->app_version()) {
LOG(WARNING) << "An app has a different version (" << app.manifest_version
diff --git a/omaha_request_action_unittest.cc b/omaha_request_action_unittest.cc
index 61e988b..43b20c1 100644
--- a/omaha_request_action_unittest.cc
+++ b/omaha_request_action_unittest.cc
@@ -648,7 +648,6 @@
EXPECT_TRUE(response.update_exists);
EXPECT_EQ(fake_update_response_.version, response.version);
- EXPECT_EQ("", response.system_version);
EXPECT_EQ(fake_update_response_.GetPayloadUrl(),
response.packages[0].payload_urls[0]);
EXPECT_EQ(fake_update_response_.more_info_url, response.more_info_url);
@@ -711,32 +710,6 @@
EXPECT_EQ(false, response.packages[1].is_delta);
}
-TEST_F(OmahaRequestActionTest, MultiAppAndSystemUpdateTest) {
- fake_update_response_.multi_app = true;
- // Trigger the lining up of the app and system versions.
- request_params_.set_system_app_id(fake_update_response_.app_id2);
- tuc_params_.http_response = fake_update_response_.GetUpdateResponse();
-
- ASSERT_TRUE(TestUpdateCheck());
-
- EXPECT_TRUE(response.update_exists);
- EXPECT_EQ(fake_update_response_.version, response.version);
- EXPECT_EQ(fake_update_response_.version2, response.system_version);
- EXPECT_EQ(fake_update_response_.GetPayloadUrl(),
- response.packages[0].payload_urls[0]);
- EXPECT_EQ(fake_update_response_.codebase2 + "package3",
- response.packages[1].payload_urls[0]);
- EXPECT_EQ(fake_update_response_.hash, response.packages[0].hash);
- EXPECT_EQ(fake_update_response_.size, response.packages[0].size);
- EXPECT_EQ(11u, response.packages[0].metadata_size);
- EXPECT_EQ(true, response.packages[0].is_delta);
- ASSERT_EQ(2u, response.packages.size());
- EXPECT_EQ(string("hash3"), response.packages[1].hash);
- EXPECT_EQ(333u, response.packages[1].size);
- EXPECT_EQ(33u, response.packages[1].metadata_size);
- EXPECT_EQ(false, response.packages[1].is_delta);
-}
-
TEST_F(OmahaRequestActionTest, MultiAppPartialUpdateTest) {
fake_update_response_.multi_app = true;
fake_update_response_.multi_app_self_update = true;
@@ -746,7 +719,6 @@
EXPECT_TRUE(response.update_exists);
EXPECT_EQ(fake_update_response_.version, response.version);
- EXPECT_EQ("", response.system_version);
EXPECT_EQ(fake_update_response_.GetPayloadUrl(),
response.packages[0].payload_urls[0]);
EXPECT_EQ(fake_update_response_.hash, response.packages[0].hash);
@@ -768,7 +740,6 @@
EXPECT_TRUE(response.update_exists);
EXPECT_EQ(fake_update_response_.version, response.version);
- EXPECT_EQ("", response.system_version);
EXPECT_EQ(fake_update_response_.GetPayloadUrl(),
response.packages[0].payload_urls[0]);
EXPECT_EQ(fake_update_response_.codebase + "package2",
diff --git a/omaha_request_builder_xml.cc b/omaha_request_builder_xml.cc
index 6660afb..c8758ab 100644
--- a/omaha_request_builder_xml.cc
+++ b/omaha_request_builder_xml.cc
@@ -422,16 +422,6 @@
.app_params = {.active_counting_type = OmahaRequestParams::kDayBased,
.send_ping = include_ping_}};
app_xml += GetApp(product_app);
- if (!params_->system_app_id().empty()) {
- OmahaAppData system_app = {
- .id = params_->system_app_id(),
- .version = params_->system_version(),
- .skip_update = false,
- .is_dlc = false,
- .app_params = {.active_counting_type = OmahaRequestParams::kDayBased,
- .send_ping = include_ping_}};
- app_xml += GetApp(system_app);
- }
for (const auto& it : params_->dlc_apps_params()) {
OmahaAppData dlc_app_data = {
.id = it.first,
diff --git a/omaha_request_params.cc b/omaha_request_params.cc
index 5a48720..ce6fd27 100644
--- a/omaha_request_params.cc
+++ b/omaha_request_params.cc
@@ -78,14 +78,7 @@
LOG(INFO) << "Running from channel " << image_props_.current_channel;
os_platform_ = constants::kOmahaPlatformName;
- if (!image_props_.system_version.empty()) {
- if (app_version == "ForcedUpdate") {
- image_props_.system_version = app_version;
- }
- os_version_ = image_props_.system_version;
- } else {
- os_version_ = OmahaRequestParams::kOsVersion;
- }
+ os_version_ = OmahaRequestParams::kOsVersion;
if (!app_version.empty())
image_props_.version = app_version;
diff --git a/omaha_request_params.h b/omaha_request_params.h
index ed3cc80..1bf7ae7 100644
--- a/omaha_request_params.h
+++ b/omaha_request_params.h
@@ -94,10 +94,6 @@
inline std::string canary_app_id() const {
return image_props_.canary_product_id;
}
- inline std::string system_app_id() const { return image_props_.system_id; }
- inline void set_system_app_id(const std::string& system_app_id) {
- image_props_.system_id = system_app_id;
- }
inline void set_app_id(const std::string& app_id) {
image_props_.product_id = app_id;
image_props_.canary_product_id = app_id;
@@ -110,9 +106,6 @@
image_props_.version = version;
}
inline std::string app_version() const { return image_props_.version; }
- inline std::string system_version() const {
- return image_props_.system_version;
- }
inline std::string product_components() const {
return image_props_.product_components;
}
diff --git a/omaha_response.h b/omaha_response.h
index 77f9083..f50c14e 100644
--- a/omaha_response.h
+++ b/omaha_response.h
@@ -38,7 +38,6 @@
// These are only valid if update_exists is true:
std::string version;
- std::string system_version;
struct Package {
// The ordered list of URLs in the Omaha response. Each item is a complete
diff --git a/omaha_response_handler_action.cc b/omaha_response_handler_action.cc
index 92e0a72..67de64b 100644
--- a/omaha_response_handler_action.cc
+++ b/omaha_response_handler_action.cc
@@ -75,7 +75,6 @@
// |OmahaRequestAction| and keep the enforcement of exclusions for updates.
install_plan_.download_url = current_url;
install_plan_.version = response.version;
- install_plan_.system_version = response.system_version;
OmahaRequestParams* const params = system_state_->request_params();
PayloadStateInterface* const payload_state = system_state_->payload_state();
diff --git a/omaha_response_handler_action_unittest.cc b/omaha_response_handler_action_unittest.cc
index 9613e8d..530c4af 100644
--- a/omaha_response_handler_action_unittest.cc
+++ b/omaha_response_handler_action_unittest.cc
@@ -919,7 +919,6 @@
OmahaResponse in;
in.update_exists = true;
in.version = "a.b.c.d";
- in.system_version = "b.c.d.e";
in.packages.push_back({.payload_urls = {"http://package/1"},
.size = 1,
.hash = kPayloadHashHex});
@@ -936,7 +935,6 @@
EXPECT_EQ(expected_hash_, install_plan.payloads[0].hash);
EXPECT_EQ(expected_hash_, install_plan.payloads[1].hash);
EXPECT_EQ(in.version, install_plan.version);
- EXPECT_EQ(in.system_version, install_plan.system_version);
}
TEST_F(OmahaResponseHandlerActionTest, TestDeferredByPolicy) {
diff --git a/payload_consumer/install_plan.cc b/payload_consumer/install_plan.cc
index c7ef7b2..4a37836 100644
--- a/payload_consumer/install_plan.cc
+++ b/payload_consumer/install_plan.cc
@@ -82,11 +82,6 @@
}
string version_str = base::StringPrintf(", version: %s", version.c_str());
- if (!system_version.empty()) {
- version_str +=
- base::StringPrintf(", system_version: %s", system_version.c_str());
- }
-
string url_str = download_url;
if (base::StartsWith(
url_str, "fd://", base::CompareCase::INSENSITIVE_ASCII)) {
diff --git a/payload_consumer/install_plan.h b/payload_consumer/install_plan.h
index 5534fb3..ee1a72b 100644
--- a/payload_consumer/install_plan.h
+++ b/payload_consumer/install_plan.h
@@ -54,8 +54,6 @@
bool is_resume{false};
std::string download_url; // url to download from
std::string version; // version we are installing.
- // system version, if present and separate from version
- std::string system_version;
struct Payload {
std::vector<std::string> payload_urls; // URLs to download the payload
diff --git a/update_attempter_unittest.cc b/update_attempter_unittest.cc
index 767bb82..8935beb 100644
--- a/update_attempter_unittest.cc
+++ b/update_attempter_unittest.cc
@@ -1722,7 +1722,6 @@
// but the update is being deferred by the Policy.
OmahaResponseHandlerAction response_action(&fake_system_state_);
response_action.install_plan_.version = "a.b.c.d";
- response_action.install_plan_.system_version = "b.c.d.e";
response_action.install_plan_.payloads.push_back(
{.size = 1234ULL, .type = InstallPayloadType::kFull});
// Inform the UpdateAttempter that the OmahaResponseHandlerAction has