DynamicPartitionControl: only create snapshot when snapshot_enabled

Do not create snapshot when applying downgrade
to non-Virtual-A/B packages and secondary OTAs.

Test: apply downgrade OTA on Virtual A/B devices

Bug: 138733621 (secondary OTA)
Fixes: 138258570 (downgrades)

Change-Id: I13318f57613d6bd60a5b7e81ebb3e35b3c225a0c
diff --git a/dynamic_partition_control_android.h b/dynamic_partition_control_android.h
index f9dfd89..35d8216 100644
--- a/dynamic_partition_control_android.h
+++ b/dynamic_partition_control_android.h
@@ -46,10 +46,10 @@
   std::unique_ptr<android::fs_mgr::MetadataBuilder> LoadMetadataBuilder(
       const std::string& super_device, uint32_t source_slot) override;
 
-  bool PreparePartitionsForUpdate(
-      uint32_t source_slot,
-      uint32_t target_slot,
-      const DeltaArchiveManifest& manifest) override;
+  bool PreparePartitionsForUpdate(uint32_t source_slot,
+                                  uint32_t target_slot,
+                                  const DeltaArchiveManifest& manifest,
+                                  bool update) override;
   bool GetDeviceDir(std::string* path) override;
   std::string GetSuperPartitionName(uint32_t slot) override;
   bool FinishUpdate() override;
@@ -113,6 +113,7 @@
 
   std::set<std::string> mapped_devices_;
   std::unique_ptr<android::snapshot::SnapshotManager> snapshot_;
+  bool target_supports_snapshot_ = false;
 
   DISALLOW_COPY_AND_ASSIGN(DynamicPartitionControlAndroid);
 };