hermes: Fix memory leak due to non-virtual destructor

Create ManagerDbusInterface to provide a virtual destructor for
ManagerDbusAdaptor.

BUG=b:165661132
TEST=Ran valgrind on hatch. Procedure at https://groups.google.com/a/google.com/g/chromeos-chatty-eng/c/Sar_iRtykzU/m/HGE-yu-fBQAJ

Change-Id: I42f095a6b553217551d8cc529aa097d930aa7eb9
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/2412782
Reviewed-by: Pavan Holla <pholla@google.com>
Reviewed-by: Steven Bennetts <stevenjb@chromium.org>
Tested-by: Pavan Holla <pholla@google.com>
Commit-Queue: Pavan Holla <pholla@google.com>
diff --git a/hermes/adaptor_factory.cc b/hermes/adaptor_factory.cc
index ce065cc..949fdbe 100644
--- a/hermes/adaptor_factory.cc
+++ b/hermes/adaptor_factory.cc
@@ -14,8 +14,8 @@
   return std::make_unique<EuiccDBusAdaptor>(euicc);
 }
 
-std::unique_ptr<org::chromium::Hermes::ManagerAdaptor>
-AdaptorFactory::CreateManagerAdaptor(Manager* manager) {
+std::unique_ptr<ManagerAdaptorInterface> AdaptorFactory::CreateManagerAdaptor(
+    Manager* manager) {
   return std::make_unique<ManagerDBusAdaptor>(manager);
 }
 
diff --git a/hermes/adaptor_factory.h b/hermes/adaptor_factory.h
index 95a5402..a258f66 100644
--- a/hermes/adaptor_factory.h
+++ b/hermes/adaptor_factory.h
@@ -15,7 +15,7 @@
  public:
   std::unique_ptr<EuiccAdaptorInterface> CreateEuiccAdaptor(
       Euicc* euicc) override;
-  std::unique_ptr<org::chromium::Hermes::ManagerAdaptor> CreateManagerAdaptor(
+  std::unique_ptr<ManagerAdaptorInterface> CreateManagerAdaptor(
       Manager* manager) override;
 };
 
diff --git a/hermes/adaptor_factory_interface.h b/hermes/adaptor_factory_interface.h
index 28c9117..2f83d94 100644
--- a/hermes/adaptor_factory_interface.h
+++ b/hermes/adaptor_factory_interface.h
@@ -21,8 +21,8 @@
   virtual ~AdaptorFactoryInterface() = default;
   virtual std::unique_ptr<EuiccAdaptorInterface> CreateEuiccAdaptor(
       Euicc* euicc) = 0;
-  virtual std::unique_ptr<org::chromium::Hermes::ManagerAdaptor>
-  CreateManagerAdaptor(Manager* manager) = 0;
+  virtual std::unique_ptr<ManagerAdaptorInterface> CreateManagerAdaptor(
+      Manager* manager) = 0;
 };
 
 }  // namespace hermes
diff --git a/hermes/adaptor_interfaces.h b/hermes/adaptor_interfaces.h
index 84349d5..e3a2001 100644
--- a/hermes/adaptor_interfaces.h
+++ b/hermes/adaptor_interfaces.h
@@ -6,6 +6,7 @@
 #define HERMES_ADAPTOR_INTERFACES_H_
 
 #include "hermes/dbus_bindings/org.chromium.Hermes.Euicc.h"
+#include "hermes/dbus_bindings/org.chromium.Hermes.Manager.h"
 
 namespace hermes {
 
@@ -19,6 +20,14 @@
   virtual dbus::ObjectPath object_path() const = 0;
 };
 
+class ManagerAdaptorInterface : public org::chromium::Hermes::ManagerAdaptor {
+ public:
+  explicit ManagerAdaptorInterface(
+      org::chromium::Hermes::ManagerInterface* interface)
+      : org::chromium::Hermes::ManagerAdaptor(interface) {}
+  virtual ~ManagerAdaptorInterface() = default;
+};
+
 }  // namespace hermes
 
 #endif  // HERMES_ADAPTOR_INTERFACES_H_
diff --git a/hermes/manager.h b/hermes/manager.h
index 6fcc258..83d7022 100644
--- a/hermes/manager.h
+++ b/hermes/manager.h
@@ -31,7 +31,7 @@
   void UpdateAvailableEuiccsProperty();
 
   Context* context_;
-  std::unique_ptr<org::chromium::Hermes::ManagerAdaptor> dbus_adaptor_;
+  std::unique_ptr<ManagerAdaptorInterface> dbus_adaptor_;
 
   // Map of physical SIM slot -> Euicc.
   std::map<uint8_t, std::unique_ptr<Euicc>> available_euiccs_;
diff --git a/hermes/manager_dbus_adaptor.cc b/hermes/manager_dbus_adaptor.cc
index ca0387a..6ab9cd9 100644
--- a/hermes/manager_dbus_adaptor.cc
+++ b/hermes/manager_dbus_adaptor.cc
@@ -19,7 +19,7 @@
 namespace hermes {
 
 ManagerDBusAdaptor::ManagerDBusAdaptor(Manager* manager)
-    : org::chromium::Hermes::ManagerAdaptor(this),
+    : ManagerAdaptorInterface(this),
       manager_(manager),
       dbus_object_(nullptr,
                    Context::Get()->bus(),
diff --git a/hermes/manager_dbus_adaptor.h b/hermes/manager_dbus_adaptor.h
index c78b527..673e6da 100644
--- a/hermes/manager_dbus_adaptor.h
+++ b/hermes/manager_dbus_adaptor.h
@@ -5,6 +5,7 @@
 #ifndef HERMES_MANAGER_DBUS_ADAPTOR_H_
 #define HERMES_MANAGER_DBUS_ADAPTOR_H_
 
+#include "hermes/adaptor_interfaces.h"
 #include "hermes/dbus_bindings/org.chromium.Hermes.Manager.h"
 
 namespace hermes {
@@ -12,7 +13,7 @@
 class Manager;
 
 class ManagerDBusAdaptor : public org::chromium::Hermes::ManagerInterface,
-                           public org::chromium::Hermes::ManagerAdaptor {
+                           public ManagerAdaptorInterface {
  public:
   explicit ManagerDBusAdaptor(Manager* manager);