Add OpenCowReader interface method to dynamic partition control
Test: treehugger
Change-Id: I393fc36372f9e979da1a6c7e49c7782a7372a5b9
diff --git a/aosp/dynamic_partition_control_android.cc b/aosp/dynamic_partition_control_android.cc
index d296c53..7ccc39a 100644
--- a/aosp/dynamic_partition_control_android.cc
+++ b/aosp/dynamic_partition_control_android.cc
@@ -1256,6 +1256,18 @@
return snapshot_->OpenSnapshotWriter(params, std::move(source_path));
} // namespace chromeos_update_engine
+FileDescriptorPtr DynamicPartitionControlAndroid::OpenCowReader(
+ const std::string& unsuffixed_partition_name,
+ const std::optional<std::string>& source_path,
+ bool is_append) {
+ auto cow_writer =
+ OpenCowWriter(unsuffixed_partition_name, source_path, is_append);
+ if (cow_writer == nullptr) {
+ return nullptr;
+ }
+ return cow_writer->OpenReader();
+}
+
std::optional<base::FilePath> DynamicPartitionControlAndroid::GetSuperDevice() {
std::string device_dir_str;
if (!GetDeviceDir(&device_dir_str)) {
diff --git a/aosp/dynamic_partition_control_android.h b/aosp/dynamic_partition_control_android.h
index a4064e9..a2a42cc 100644
--- a/aosp/dynamic_partition_control_android.h
+++ b/aosp/dynamic_partition_control_android.h
@@ -89,6 +89,9 @@
const std::string& unsuffixed_partition_name,
const std::optional<std::string>& source_path,
bool is_append) override;
+ FileDescriptorPtr OpenCowReader(const std::string& unsuffixed_partition_name,
+ const std::optional<std::string>&,
+ bool is_append = false) override;
bool UnmapAllPartitions() override;
diff --git a/aosp/mock_dynamic_partition_control.h b/aosp/mock_dynamic_partition_control.h
index df7208e..d281803 100644
--- a/aosp/mock_dynamic_partition_control.h
+++ b/aosp/mock_dynamic_partition_control.h
@@ -25,6 +25,7 @@
#include <libsnapshot/cow_writer.h>
#include <libsnapshot/snapshot_writer.h>
+#include "payload_consumer/file_descriptor.h"
#include "update_engine/aosp/dynamic_partition_control_android.h"
#include "update_engine/common/boot_control_interface.h"
#include "update_engine/common/dynamic_partition_control_interface.h"
@@ -90,6 +91,12 @@
const std::optional<std::string>& source_path,
bool is_append),
(override));
+ MOCK_METHOD(FileDescriptorPtr,
+ OpenCowReader,
+ (const std::string& unsuffixed_partition_name,
+ const std::optional<std::string>& source_path,
+ bool is_append),
+ (override));
MOCK_METHOD(bool, MapAllPartitions, (), (override));
MOCK_METHOD(bool, UnmapAllPartitions, (), (override));