Index: omaha_request_params.cc |
diff --git a/omaha_request_params.cc b/omaha_request_params.cc |
index eaff3d36a6659dfbf6f9f3adbf8d48c3c2ed182b..f7106af57f26652c8de6db3d8ace292c03816942 100644 |
--- a/omaha_request_params.cc |
+++ b/omaha_request_params.cc |
@@ -39,26 +39,32 @@ static const char kHWIDPath[] = "/sys/devices/platform/chromeos_acpi/HWID"; |
OmahaRequestDeviceParams::OmahaRequestDeviceParams() : |
force_build_type_(false), |
- forced_official_build_(false) {} |
+ forced_official_build_(false), |
+ force_boot_mode_(false), |
+ forced_normal_boot_(false) {} |
bool OmahaRequestDeviceParams::Init(const std::string& in_app_version, |
const std::string& in_update_url) { |
+ // Stateful /etc/lsb-release is not read on official builds in normal boot |
+ // mode (except for setting the release track). |
+ bool stateful_override = !IsOfficialBuild() || !IsNormalBootMode(); |
os_platform = OmahaRequestParams::kOsPlatform; |
os_version = OmahaRequestParams::kOsVersion; |
app_version = in_app_version.empty() ? |
- GetLsbValue("CHROMEOS_RELEASE_VERSION", "", NULL, true) : in_app_version; |
+ GetLsbValue("CHROMEOS_RELEASE_VERSION", "", NULL, stateful_override) : |
+ in_app_version; |
os_sp = app_version + "_" + GetMachineType(); |
- os_board = GetLsbValue("CHROMEOS_RELEASE_BOARD", "", NULL, true); |
+ os_board = GetLsbValue("CHROMEOS_RELEASE_BOARD", "", NULL, stateful_override); |
app_id = GetLsbValue("CHROMEOS_RELEASE_APPID", |
OmahaRequestParams::kAppId, |
NULL, |
- true); |
+ stateful_override); |
app_lang = "en-US"; |
app_track = GetLsbValue( |
kUpdateTrackKey, |
"", |
&chromeos_update_engine::OmahaRequestDeviceParams::IsValidTrack, |
- true); |
+ true); // stateful_override |
hardware_class = GetHardwareClass(); |
struct stat stbuf; |
@@ -82,14 +88,14 @@ bool OmahaRequestDeviceParams::Init(const std::string& in_app_version, |
kUpdateTrackKey, |
"", |
&chromeos_update_engine::OmahaRequestDeviceParams::IsValidTrack, |
- false); |
+ false); // stateful_override |
delta_okay = delta_okay && rootfs_track == app_track; |
update_url = in_update_url.empty() ? |
GetLsbValue("CHROMEOS_AUSERVER", |
OmahaRequestParams::kUpdateUrl, |
NULL, |
- true) : |
+ stateful_override) : |
in_update_url; |
return true; |
} |
@@ -177,6 +183,10 @@ bool OmahaRequestDeviceParams::IsOfficialBuild() const { |
return force_build_type_ ? forced_official_build_ : utils::IsOfficialBuild(); |
} |
+bool OmahaRequestDeviceParams::IsNormalBootMode() const { |
+ return force_boot_mode_ ? forced_normal_boot_ : utils::IsNormalBootMode(); |
+} |
+ |
bool OmahaRequestDeviceParams::IsValidTrack(const std::string& track) const { |
static const char* kValidTracks[] = { |
"canary-channel", |
@@ -199,4 +209,9 @@ void OmahaRequestDeviceParams::SetBuildTypeOfficial(bool is_official) { |
forced_official_build_ = is_official; |
} |
+void OmahaRequestDeviceParams::SetBootModeNormal(bool is_normal) { |
+ force_boot_mode_ = true; |
+ forced_normal_boot_ = is_normal; |
+} |
+ |
} // namespace chromeos_update_engine |