Don't list dynamic if a slot doesn't support DAP
If a slot doesn't support dynamic partitions, it's impossible to list
dynamic partitions on that slot. And we should just fall back to the
regular A/B in this case.
Bug: 180025432
Test: apply a retrofit package
Change-Id: I16c457b591e8c1d0cf1077a7be50dd9d8f61b8eb
diff --git a/payload_consumer/delta_performer.cc b/payload_consumer/delta_performer.cc
index b06d04e..3df162e 100644
--- a/payload_consumer/delta_performer.cc
+++ b/payload_consumer/delta_performer.cc
@@ -644,11 +644,6 @@
}
}
- auto dynamic_control = boot_control_->GetDynamicPartitionControl();
- CHECK_NE(dynamic_control, nullptr);
- TEST_AND_RETURN_FALSE(dynamic_control->ListDynamicPartitionsForSlot(
- install_plan_->target_slot, &dynamic_partitions_));
-
// Partitions in manifest are no longer needed after preparing partitions.
manifest_.clear_partitions();
// TODO(xunchang) TBD: allow partial update only on devices with dynamic
@@ -676,6 +671,7 @@
std::vector<std::string> dynamic_partitions;
if (!boot_control_->GetDynamicPartitionControl()
->ListDynamicPartitionsForSlot(install_plan_->source_slot,
+ boot_control_->GetCurrentSlot(),
&dynamic_partitions)) {
LOG(ERROR) << "Failed to load dynamic partitions from slot "
<< install_plan_->source_slot;
@@ -1527,9 +1523,8 @@
}
bool DeltaPerformer::IsDynamicPartition(const std::string& part_name) {
- return std::find(dynamic_partitions_.begin(),
- dynamic_partitions_.end(),
- part_name) != dynamic_partitions_.end();
+ return boot_control_->GetDynamicPartitionControl()->IsDynamicPartition(
+ part_name);
}
std::unique_ptr<PartitionWriter> DeltaPerformer::CreatePartitionWriter(