Add DynamicPartitionControlInterface::UpdateUsesSnapshotCompression
This function returns whether Virtual A/B
compression is enabled for the ongoing update.
Test: TH
Bug: 178732971
Change-Id: I781802443afd1d8deac046a8da198658220f7ba0
diff --git a/aosp/dynamic_partition_control_android.cc b/aosp/dynamic_partition_control_android.cc
index ff2d7ee..c4d6935 100644
--- a/aosp/dynamic_partition_control_android.cc
+++ b/aosp/dynamic_partition_control_android.cc
@@ -1339,4 +1339,8 @@
partition_name) != dynamic_partition_list_.end();
}
+bool DynamicPartitionControlAndroid::UpdateUsesSnapshotCompression() {
+ return snapshot_->UpdateUsesCompression();
+}
+
} // namespace chromeos_update_engine
diff --git a/aosp/dynamic_partition_control_android.h b/aosp/dynamic_partition_control_android.h
index 9e11279..a0d7f30 100644
--- a/aosp/dynamic_partition_control_android.h
+++ b/aosp/dynamic_partition_control_android.h
@@ -105,6 +105,8 @@
bool IsDynamicPartition(const std::string& part_name) override;
+ bool UpdateUsesSnapshotCompression() override;
+
protected:
// These functions are exposed for testing.
diff --git a/aosp/mock_dynamic_partition_control_android.h b/aosp/mock_dynamic_partition_control_android.h
index 1d4bb14..682ddfd 100644
--- a/aosp/mock_dynamic_partition_control_android.h
+++ b/aosp/mock_dynamic_partition_control_android.h
@@ -101,6 +101,7 @@
MOCK_METHOD(bool, MapAllPartitions, (), (override));
MOCK_METHOD(bool, UnmapAllPartitions, (), (override));
MOCK_METHOD(bool, IsDynamicPartition, (const std::string&), (override));
+ MOCK_METHOD(bool, UpdateUsesSnapshotCompression, (), (override));
void set_fake_mapped_devices(const std::set<std::string>& fake) override {
DynamicPartitionControlAndroid::set_fake_mapped_devices(fake);
diff --git a/common/dynamic_partition_control_interface.h b/common/dynamic_partition_control_interface.h
index 4f46f74..8368eeb 100644
--- a/common/dynamic_partition_control_interface.h
+++ b/common/dynamic_partition_control_interface.h
@@ -171,6 +171,16 @@
virtual bool MapAllPartitions() = 0;
// Unmap virtual block devices for all partitions.
virtual bool UnmapAllPartitions() = 0;
+
+ // Return if snapshot compression is enabled for this update.
+ // This function should only be called after preparing for an update
+ // (PreparePartitionsForUpdate), and before merging
+ // (see GetCleanupPreviousUpdateAction and CleanupPreviousUpdateAction) or
+ // resetting it (ResetUpdate).
+ //
+ // To know if the device supports snapshot compression by itself, use
+ // GetVirtualAbCompressionFeatureFlag
+ virtual bool UpdateUsesSnapshotCompression() = 0;
};
} // namespace chromeos_update_engine
diff --git a/common/dynamic_partition_control_stub.cc b/common/dynamic_partition_control_stub.cc
index 2c6bb1b..b6eff84 100644
--- a/common/dynamic_partition_control_stub.cc
+++ b/common/dynamic_partition_control_stub.cc
@@ -116,4 +116,8 @@
return false;
}
+bool DynamicPartitionControlStub::UpdateUsesSnapshotCompression() {
+ return false;
+}
+
} // namespace chromeos_update_engine
diff --git a/common/dynamic_partition_control_stub.h b/common/dynamic_partition_control_stub.h
index 0f428ab..822fa1b 100644
--- a/common/dynamic_partition_control_stub.h
+++ b/common/dynamic_partition_control_stub.h
@@ -70,6 +70,7 @@
bool UnmapAllPartitions() override;
bool IsDynamicPartition(const std::string& part_name) override;
+ bool UpdateUsesSnapshotCompression() override;
};
} // namespace chromeos_update_engine
diff --git a/common/mock_dynamic_partition_control.h b/common/mock_dynamic_partition_control.h
index 3cbf9be..a00ec61 100644
--- a/common/mock_dynamic_partition_control.h
+++ b/common/mock_dynamic_partition_control.h
@@ -79,6 +79,7 @@
(uint32_t, uint32_t, const std::vector<std::string>&),
(override));
MOCK_METHOD(bool, IsDynamicPartition, (const std::string&), (override));
+ MOCK_METHOD(bool, UpdateUsesSnapshotCompression, (), (override));
};
} // namespace chromeos_update_engine