Consolidate TransformableVideoFrame mocks used inside webrtc

Also move the frame_transformer_factory_unittest build target into the
if(rtc_include_tests) block, so it's not compiled without the mock.

Bug: chromium:1414370
Change-Id: I12653b173b419ec20bfad904e24a4d965e7e7830
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/292863
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Auto-Submit: Tony Herre <herre@google.com>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39288}
diff --git a/api/test/mock_transformable_video_frame.h b/api/test/mock_transformable_video_frame.h
index 18b3de5..d326b2f 100644
--- a/api/test/mock_transformable_video_frame.h
+++ b/api/test/mock_transformable_video_frame.h
@@ -35,8 +35,11 @@
               SetMetadata,
               (const webrtc::VideoFrameMetadata&),
               (override));
+  MOCK_METHOD(uint8_t, GetPayloadType, (), (const, override));
 };
 
+static_assert(!std::is_abstract_v<MockTransformableVideoFrame>, "");
+
 }  // namespace webrtc
 
 #endif  // API_TEST_MOCK_TRANSFORMABLE_VIDEO_FRAME_H_
diff --git a/modules/rtp_rtcp/BUILD.gn b/modules/rtp_rtcp/BUILD.gn
index 046a279..91c4c64 100644
--- a/modules/rtp_rtcp/BUILD.gn
+++ b/modules/rtp_rtcp/BUILD.gn
@@ -702,20 +702,21 @@
       "//third_party/abseil-cpp/absl/types:optional",
     ]
   }
-}
 
-rtc_source_set("frame_transformer_factory_unittest") {
-  testonly = true
-  sources = [ "source/frame_transformer_factory_unittest.cc" ]
-  deps = [
-    "../../api:frame_transformer_factory",
-    "../../api:transport_api",
-    "../../call:video_stream_api",
-    "../../modules/rtp_rtcp",
-    "../../rtc_base:rtc_event",
-    "../../test:mock_frame_transformer",
-    "../../test:test_support",
-    "../../video",
-  ]
-  absl_deps = [ "//third_party/abseil-cpp/absl/memory" ]
+  rtc_source_set("frame_transformer_factory_unittest") {
+    testonly = true
+    sources = [ "source/frame_transformer_factory_unittest.cc" ]
+    deps = [
+      "../../api:frame_transformer_factory",
+      "../../api:mock_transformable_video_frame",
+      "../../api:transport_api",
+      "../../call:video_stream_api",
+      "../../modules/rtp_rtcp",
+      "../../rtc_base:rtc_event",
+      "../../test:mock_frame_transformer",
+      "../../test:test_support",
+      "../../video",
+    ]
+    absl_deps = [ "//third_party/abseil-cpp/absl/memory" ]
+  }
 }
diff --git a/modules/rtp_rtcp/source/frame_transformer_factory_unittest.cc b/modules/rtp_rtcp/source/frame_transformer_factory_unittest.cc
index 1a78c6d..3b2c112 100644
--- a/modules/rtp_rtcp/source/frame_transformer_factory_unittest.cc
+++ b/modules/rtp_rtcp/source/frame_transformer_factory_unittest.cc
@@ -17,6 +17,7 @@
 
 #include "absl/memory/memory.h"
 #include "api/call/transport.h"
+#include "api/test/mock_transformable_video_frame.h"
 #include "call/video_receive_stream.h"
 #include "modules/rtp_rtcp/source/rtp_descriptor_authentication.h"
 #include "rtc_base/event.h"
@@ -31,30 +32,6 @@
 using testing::Return;
 using testing::ReturnRef;
 
-class MockTransformableVideoFrame
-    : public webrtc::TransformableVideoFrameInterface {
- public:
-  MOCK_METHOD(rtc::ArrayView<const uint8_t>, GetData, (), (const override));
-  MOCK_METHOD(void, SetData, (rtc::ArrayView<const uint8_t> data), (override));
-  MOCK_METHOD(uint8_t, GetPayloadType, (), (const, override));
-  MOCK_METHOD(uint32_t, GetSsrc, (), (const, override));
-  MOCK_METHOD(uint32_t, GetTimestamp, (), (const, override));
-  MOCK_METHOD(TransformableFrameInterface::Direction,
-              GetDirection,
-              (),
-              (const, override));
-  MOCK_METHOD(bool, IsKeyFrame, (), (const, override));
-  MOCK_METHOD(std::vector<uint8_t>, GetAdditionalData, (), (const, override));
-  MOCK_METHOD(const webrtc::VideoFrameMetadata&,
-              GetMetadata,
-              (),
-              (const, override));
-  MOCK_METHOD(void,
-              SetMetadata,
-              (const webrtc::VideoFrameMetadata&),
-              (override));
-};
-
 TEST(FrameTransformerFactory, CloneVideoFrame) {
   NiceMock<MockTransformableVideoFrame> original_frame;
   uint8_t data[10];