Make ICE transports injectable.

Bug: chromium:1024965
Change-Id: I4961f50aee34c82701299f59a95cb90d231db6f5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158820
Commit-Queue: Qingsi Wang <qingsi@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Honghai Zhang <honghaiz@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29807}
diff --git a/pc/jsep_transport_controller_unittest.cc b/pc/jsep_transport_controller_unittest.cc
index 408cb01..b96a999 100644
--- a/pc/jsep_transport_controller_unittest.cc
+++ b/pc/jsep_transport_controller_unittest.cc
@@ -16,10 +16,10 @@
 #include "api/test/fake_media_transport.h"
 #include "api/test/loopback_media_transport.h"
 #include "api/transport/media/media_transport_interface.h"
+#include "p2p/base/dtls_transport_factory.h"
 #include "p2p/base/fake_dtls_transport.h"
 #include "p2p/base/fake_ice_transport.h"
 #include "p2p/base/no_op_dtls_transport.h"
-#include "p2p/base/transport_factory_interface.h"
 #include "p2p/base/transport_info.h"
 #include "rtc_base/gunit.h"
 #include "rtc_base/thread.h"
@@ -59,15 +59,20 @@
 
 }  // namespace
 
-class FakeTransportFactory : public cricket::TransportFactoryInterface {
+class FakeIceTransportFactory : public webrtc::IceTransportFactory {
  public:
-  std::unique_ptr<cricket::IceTransportInternal> CreateIceTransport(
+  ~FakeIceTransportFactory() override = default;
+  rtc::scoped_refptr<IceTransportInterface> CreateIceTransport(
       const std::string& transport_name,
-      int component) override {
-    return std::make_unique<cricket::FakeIceTransport>(transport_name,
-                                                       component);
+      int component,
+      IceTransportInit init) override {
+    return new rtc::RefCountedObject<cricket::FakeIceTransportWrapper>(
+        std::make_unique<cricket::FakeIceTransport>(transport_name, component));
   }
+};
 
+class FakeDtlsTransportFactory : public cricket::DtlsTransportFactory {
+ public:
   std::unique_ptr<cricket::DtlsTransportInternal> CreateDtlsTransport(
       cricket::IceTransportInternal* ice,
       const webrtc::CryptoOptions& crypto_options) override {
@@ -81,7 +86,8 @@
                                     public sigslot::has_slots<> {
  public:
   JsepTransportControllerTest() : signaling_thread_(rtc::Thread::Current()) {
-    fake_transport_factory_ = std::make_unique<FakeTransportFactory>();
+    fake_ice_transport_factory_ = std::make_unique<FakeIceTransportFactory>();
+    fake_dtls_transport_factory_ = std::make_unique<FakeDtlsTransportFactory>();
   }
 
   void CreateJsepTransportController(
@@ -92,8 +98,8 @@
     config.transport_observer = this;
     config.rtcp_handler = [](const rtc::CopyOnWriteBuffer& packet,
                              int64_t packet_time_us) { RTC_NOTREACHED(); };
-    // The tests only works with |fake_transport_factory|;
-    config.external_transport_factory = fake_transport_factory_.get();
+    config.ice_transport_factory = fake_ice_transport_factory_.get();
+    config.dtls_transport_factory = fake_dtls_transport_factory_.get();
     // TODO(zstein): Provide an AsyncResolverFactory once it is required.
     transport_controller_ = std::make_unique<JsepTransportController>(
         signaling_thread, network_thread, port_allocator, nullptr, config);
@@ -358,7 +364,8 @@
 
   // |network_thread_| should be destroyed after |transport_controller_|
   std::unique_ptr<rtc::Thread> network_thread_;
-  std::unique_ptr<FakeTransportFactory> fake_transport_factory_;
+  std::unique_ptr<FakeIceTransportFactory> fake_ice_transport_factory_;
+  std::unique_ptr<FakeDtlsTransportFactory> fake_dtls_transport_factory_;
   rtc::Thread* const signaling_thread_ = nullptr;
   bool signaled_on_non_signaling_thread_ = false;
   // Used to verify the SignalRtpTransportChanged/SignalDtlsTransportChanged are