Move ownership of decoders to VCMDecoderDatabase

Bug: webrtc:14497
Change-Id: Idf719a1d1605f19fcf46eff7990c61144f2b9e3b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/277401
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38251}
diff --git a/modules/video_coding/decoder_database_unittest.cc b/modules/video_coding/decoder_database_unittest.cc
index f2f250c..2e9c91b 100644
--- a/modules/video_coding/decoder_database_unittest.cc
+++ b/modules/video_coding/decoder_database_unittest.cc
@@ -10,6 +10,9 @@
 
 #include "modules/video_coding/decoder_database.h"
 
+#include <memory>
+#include <utility>
+
 #include "api/test/mock_video_decoder.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
@@ -25,10 +28,16 @@
   constexpr int kPayloadType = 1;
   ASSERT_FALSE(db.IsExternalDecoderRegistered(kPayloadType));
 
-  NiceMock<MockVideoDecoder> decoder;
-  db.RegisterExternalDecoder(kPayloadType, &decoder);
+  auto decoder = std::make_unique<NiceMock<MockVideoDecoder>>();
+  bool decoder_deleted = false;
+  EXPECT_CALL(*decoder, Destruct).WillOnce([&decoder_deleted] {
+    decoder_deleted = true;
+  });
+
+  db.RegisterExternalDecoder(kPayloadType, std::move(decoder));
   EXPECT_TRUE(db.IsExternalDecoderRegistered(kPayloadType));
-  EXPECT_EQ(db.DeregisterExternalDecoder(kPayloadType), &decoder);
+  db.DeregisterExternalDecoder(kPayloadType);
+  EXPECT_TRUE(decoder_deleted);
   EXPECT_FALSE(db.IsExternalDecoderRegistered(kPayloadType));
 }