Add publicly visible mock for PeerConnectionFactoryInterface

Bug: webrtc:11642
Change-Id: I71c99034a70780d4d1ffc8330836c76c6105bc96
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176421
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31430}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index ac36c44..547d79d 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -872,6 +872,17 @@
     ]
   }
 
+  rtc_source_set("mock_peer_connection_factory_interface") {
+    visibility = [ "*" ]
+    testonly = true
+    sources = [ "test/mock_peer_connection_factory_interface.h" ]
+
+    deps = [
+      ":libjingle_peerconnection_api",
+      "../test:test_support",
+    ]
+  }
+
   rtc_source_set("mock_rtp") {
     testonly = true
     sources = [
@@ -1059,6 +1070,7 @@
       ":mock_audio_mixer",
       ":mock_frame_decryptor",
       ":mock_frame_encryptor",
+      ":mock_peer_connection_factory_interface",
       ":mock_peerconnectioninterface",
       ":mock_rtp",
       ":mock_transformable_video_frame",
diff --git a/api/test/compile_all_headers.cc b/api/test/compile_all_headers.cc
index d9cc82c..f7d84da 100644
--- a/api/test/compile_all_headers.cc
+++ b/api/test/compile_all_headers.cc
@@ -34,6 +34,7 @@
 #include "api/test/mock_audio_mixer.h"
 #include "api/test/mock_frame_decryptor.h"
 #include "api/test/mock_frame_encryptor.h"
+#include "api/test/mock_peer_connection_factory_interface.h"
 #include "api/test/mock_peerconnectioninterface.h"
 #include "api/test/mock_rtpreceiver.h"
 #include "api/test/mock_rtpsender.h"
diff --git a/api/test/mock_peer_connection_factory_interface.h b/api/test/mock_peer_connection_factory_interface.h
new file mode 100644
index 0000000..19c3f40
--- /dev/null
+++ b/api/test/mock_peer_connection_factory_interface.h
@@ -0,0 +1,75 @@
+/*
+ *  Copyright 2020 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef API_TEST_MOCK_PEER_CONNECTION_FACTORY_INTERFACE_H_
+#define API_TEST_MOCK_PEER_CONNECTION_FACTORY_INTERFACE_H_
+
+#include <memory>
+#include <string>
+
+#include "api/peer_connection_interface.h"
+#include "test/gmock.h"
+
+namespace webrtc {
+
+class MockPeerConnectionFactoryInterface final
+    : public rtc::RefCountedObject<webrtc::PeerConnectionFactoryInterface> {
+ public:
+  rtc::scoped_refptr<MockPeerConnectionFactoryInterface> Create() {
+    return new MockPeerConnectionFactoryInterface();
+  }
+
+  MOCK_METHOD(void, SetOptions, (const Options&), (override));
+  MOCK_METHOD(rtc::scoped_refptr<PeerConnectionInterface>,
+              CreatePeerConnection,
+              (const PeerConnectionInterface::RTCConfiguration&,
+               PeerConnectionDependencies),
+              (override));
+  MOCK_METHOD(rtc::scoped_refptr<PeerConnectionInterface>,
+              CreatePeerConnection,
+              (const PeerConnectionInterface::RTCConfiguration&,
+               std::unique_ptr<cricket::PortAllocator>,
+               std::unique_ptr<rtc::RTCCertificateGeneratorInterface>,
+               PeerConnectionObserver*),
+              (override));
+  MOCK_METHOD(RtpCapabilities,
+              GetRtpSenderCapabilities,
+              (cricket::MediaType),
+              (const override));
+  MOCK_METHOD(RtpCapabilities,
+              GetRtpReceiverCapabilities,
+              (cricket::MediaType),
+              (const override));
+  MOCK_METHOD(rtc::scoped_refptr<MediaStreamInterface>,
+              CreateLocalMediaStream,
+              (const std::string&),
+              (override));
+  MOCK_METHOD(rtc::scoped_refptr<AudioSourceInterface>,
+              CreateAudioSource,
+              (const cricket::AudioOptions&),
+              (override));
+  MOCK_METHOD(rtc::scoped_refptr<VideoTrackInterface>,
+              CreateVideoTrack,
+              (const std::string&, VideoTrackSourceInterface*),
+              (override));
+  MOCK_METHOD(rtc::scoped_refptr<AudioTrackInterface>,
+              CreateAudioTrack,
+              (const std::string&, AudioSourceInterface*),
+              (override));
+  MOCK_METHOD(bool, StartAecDump, (FILE*, int64_t), (override));
+  MOCK_METHOD(void, StopAecDump, (), (override));
+
+ protected:
+  MockPeerConnectionFactoryInterface() = default;
+};
+
+}  // namespace webrtc
+
+#endif  // API_TEST_MOCK_PEER_CONNECTION_FACTORY_INTERFACE_H_