Parse multiple packages from Omaha response. The multi-payload info are stored in OmahaResponse and InstallPlan, but we still can only apply the first payload for now. Bug: 36252799 Test: mma -j Test: update_engine_unittests Change-Id: I5ca63944ae9082670d0e67888409374f140d4245 (cherry picked from commit 2aba8a87d4fac245a2e2d238b3159f8eabce630f)
diff --git a/payload_consumer/install_plan.cc b/payload_consumer/install_plan.cc index fff0ac2..5f004bf 100644 --- a/payload_consumer/install_plan.cc +++ b/payload_consumer/install_plan.cc
@@ -43,14 +43,9 @@ bool InstallPlan::operator==(const InstallPlan& that) const { return ((is_resume == that.is_resume) && (payload_type == that.payload_type) && - (download_url == that.download_url) && - (payload_size == that.payload_size) && - (payload_hash == that.payload_hash) && - (metadata_size == that.metadata_size) && - (metadata_signature == that.metadata_signature) && + (download_url == that.download_url) && (payloads == that.payloads) && (source_slot == that.source_slot) && - (target_slot == that.target_slot) && - (partitions == that.partitions)); + (target_slot == that.target_slot) && (partitions == that.partitions)); } bool InstallPlan::operator!=(const InstallPlan& that) const { @@ -68,16 +63,22 @@ partition.target_size, utils::ToString(partition.run_postinstall).c_str()); } + string payloads_str; + for (const auto& payload : payloads) { + payloads_str += base::StringPrintf( + ", payload: (size: %" PRIu64 ", metadata_size: %" PRIu64 + ", metadata signature: %s, hash: %s)", + payload.size, + payload.metadata_size, + payload.metadata_signature.c_str(), + base::HexEncode(payload.hash.data(), payload.hash.size()).c_str()); + } LOG(INFO) << "InstallPlan: " << (is_resume ? "resume" : "new_update") << ", payload type: " << InstallPayloadTypeToString(payload_type) << ", source_slot: " << BootControlInterface::SlotName(source_slot) << ", target_slot: " << BootControlInterface::SlotName(target_slot) - << ", url: " << download_url << ", payload size: " << payload_size - << ", payload hash: " - << base::HexEncode(payload_hash.data(), payload_hash.size()) - << ", metadata size: " << metadata_size - << ", metadata signature: " << metadata_signature << partitions_str + << ", url: " << download_url << payloads_str << partitions_str << ", hash_checks_mandatory: " << utils::ToString(hash_checks_mandatory) << ", powerwash_required: " << utils::ToString(powerwash_required);