Add OpenCowReader interface method to dynamic partition control

Test: treehugger
Change-Id: I393fc36372f9e979da1a6c7e49c7782a7372a5b9
diff --git a/common/dynamic_partition_control_interface.h b/common/dynamic_partition_control_interface.h
index c8a2274..a2ebfc6 100644
--- a/common/dynamic_partition_control_interface.h
+++ b/common/dynamic_partition_control_interface.h
@@ -154,6 +154,10 @@
       const std::string& unsuffixed_partition_name,
       const std::optional<std::string>&,
       bool is_append = false) = 0;
+  virtual FileDescriptorPtr OpenCowReader(
+      const std::string& unsuffixed_partition_name,
+      const std::optional<std::string>&,
+      bool is_append = false) = 0;
 
   // Create virtual block devices for all partitions.
   virtual bool MapAllPartitions() = 0;
diff --git a/common/dynamic_partition_control_stub.cc b/common/dynamic_partition_control_stub.cc
index cfc9e2e..31975b3 100644
--- a/common/dynamic_partition_control_stub.cc
+++ b/common/dynamic_partition_control_stub.cc
@@ -96,6 +96,13 @@
   return nullptr;
 }
 
+FileDescriptorPtr DynamicPartitionControlStub::OpenCowReader(
+    const std::string& unsuffixed_partition_name,
+    const std::optional<std::string>&,
+    bool /*is_append */) {
+  return nullptr;
+}
+
 bool DynamicPartitionControlStub::MapAllPartitions() {
   return false;
 }
diff --git a/common/dynamic_partition_control_stub.h b/common/dynamic_partition_control_stub.h
index 1fc8a35..94540f4 100644
--- a/common/dynamic_partition_control_stub.h
+++ b/common/dynamic_partition_control_stub.h
@@ -62,6 +62,9 @@
       const std::string& unsuffixed_partition_name,
       const std::optional<std::string>&,
       bool is_append) override;
+  FileDescriptorPtr OpenCowReader(const std::string& unsuffixed_partition_name,
+                                  const std::optional<std::string>&,
+                                  bool is_append = false) override;
 
   bool MapAllPartitions() override;
   bool UnmapAllPartitions() override;