Add IsDynamicPartition API to easily check if a partition is dynamic

Test: treehugger
Change-Id: I655e4d6114a25c58857679985cd5e08581c0faab
diff --git a/common/dynamic_partition_control_interface.h b/common/dynamic_partition_control_interface.h
index a2ebfc6..1362c19 100644
--- a/common/dynamic_partition_control_interface.h
+++ b/common/dynamic_partition_control_interface.h
@@ -159,6 +159,8 @@
       const std::optional<std::string>&,
       bool is_append = false) = 0;
 
+  virtual bool IsDynamicPartition(const std::string& part_name) = 0;
+
   // Create virtual block devices for all partitions.
   virtual bool MapAllPartitions() = 0;
   // Unmap virtual block devices for all partitions.
diff --git a/common/dynamic_partition_control_stub.cc b/common/dynamic_partition_control_stub.cc
index 31975b3..2c6bb1b 100644
--- a/common/dynamic_partition_control_stub.cc
+++ b/common/dynamic_partition_control_stub.cc
@@ -111,4 +111,9 @@
   return false;
 }
 
+bool DynamicPartitionControlStub::IsDynamicPartition(
+    const std::string& part_name) {
+  return false;
+}
+
 }  // namespace chromeos_update_engine
diff --git a/common/dynamic_partition_control_stub.h b/common/dynamic_partition_control_stub.h
index 94540f4..0f428ab 100644
--- a/common/dynamic_partition_control_stub.h
+++ b/common/dynamic_partition_control_stub.h
@@ -68,6 +68,8 @@
 
   bool MapAllPartitions() override;
   bool UnmapAllPartitions() override;
+
+  bool IsDynamicPartition(const std::string& part_name) override;
 };
 }  // namespace chromeos_update_engine