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(
diff --git a/payload_consumer/delta_performer.h b/payload_consumer/delta_performer.h
index ec23997..31fa6b2 100644
--- a/payload_consumer/delta_performer.h
+++ b/payload_consumer/delta_performer.h
@@ -436,8 +436,6 @@
 
   std::unique_ptr<PartitionWriter> partition_writer_;
 
-  // List of dynamic partitions on device.
-  std::vector<std::string> dynamic_partitions_;
   DISALLOW_COPY_AND_ASSIGN(DeltaPerformer);
 };
 
diff --git a/payload_consumer/filesystem_verifier_action_unittest.cc b/payload_consumer/filesystem_verifier_action_unittest.cc
index e9560f0..658ebe1 100644
--- a/payload_consumer/filesystem_verifier_action_unittest.cc
+++ b/payload_consumer/filesystem_verifier_action_unittest.cc
@@ -426,9 +426,9 @@
       .Times(AtLeast(1));
   EXPECT_CALL(dynamic_control, OpenCowReader(part.name, {part.source_path}, _))
       .Times(1);
-  EXPECT_CALL(dynamic_control, ListDynamicPartitionsForSlot(_, _))
+  EXPECT_CALL(dynamic_control, ListDynamicPartitionsForSlot(_, _, _))
       .WillRepeatedly(
-          DoAll(SetArgPointee<1, std::vector<std::string>>({part.name}),
+          DoAll(SetArgPointee<2, std::vector<std::string>>({part.name}),
                 Return(true)));
 
   BuildActions(install_plan, &dynamic_control);