DynamicPartitionControl: map snapshot devices for virt ab
Bug: 138816109
Test: apply OTA on Virtual A/B devices
Test: update_engine_unittests
Change-Id: I23263624afb370d122d5aed5c3a9bf48a1a3d8fc
diff --git a/dynamic_partition_control_android.h b/dynamic_partition_control_android.h
index 0907236..9509a62 100644
--- a/dynamic_partition_control_android.h
+++ b/dynamic_partition_control_android.h
@@ -23,11 +23,13 @@
#include <set>
#include <string>
+#include <libsnapshot/snapshot.h>
+
namespace chromeos_update_engine {
class DynamicPartitionControlAndroid : public DynamicPartitionControlInterface {
public:
- DynamicPartitionControlAndroid() = default;
+ DynamicPartitionControlAndroid();
~DynamicPartitionControlAndroid();
FeatureFlag GetDynamicPartitionsFeatureFlag() override;
FeatureFlag GetVirtualAbFeatureFlag() override;
@@ -83,8 +85,6 @@
private:
friend class DynamicPartitionControlAndroidTest;
- std::set<std::string> mapped_devices_;
-
void CleanupInternal(bool wait);
bool MapPartitionInternal(const std::string& super_device,
const std::string& target_partition_name,
@@ -98,6 +98,21 @@
uint32_t target_slot,
const DeltaArchiveManifest& manifest);
+ // Helper for PreparePartitionsForUpdate. Used for dynamic partitions without
+ // Virtual A/B update.
+ bool PrepareDynamicPartitionsForUpdate(uint32_t source_slot,
+ uint32_t target_slot,
+ const DeltaArchiveManifest& manifest);
+
+ // Helper for PreparePartitionsForUpdate. Used for snapshotted partitions for
+ // Virtual A/B update.
+ bool PrepareSnapshotPartitionsForUpdate(uint32_t source_slot,
+ uint32_t target_slot,
+ const DeltaArchiveManifest& manifest);
+
+ std::set<std::string> mapped_devices_;
+ std::unique_ptr<android::snapshot::SnapshotManager> snapshot_;
+
DISALLOW_COPY_AND_ASSIGN(DynamicPartitionControlAndroid);
};