diff --git a/api/BUILD.gn b/api/BUILD.gn
index 6699b14..77246bc 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -521,6 +521,7 @@
     "../p2p:rtc_p2p",
     "../rtc_base",
     "../rtc_base/system:rtc_export",
+    "rtc_event_log:rtc_event_log",
     "//third_party/abseil-cpp/absl/memory",
   ]
 }
diff --git a/api/ice_transport_factory.cc b/api/ice_transport_factory.cc
index 6cc399a..1fb917d 100644
--- a/api/ice_transport_factory.cc
+++ b/api/ice_transport_factory.cc
@@ -51,8 +51,17 @@
 
 rtc::scoped_refptr<IceTransportInterface> CreateIceTransport(
     cricket::PortAllocator* port_allocator) {
+  IceTransportInit init;
+  init.set_port_allocator(port_allocator);
+  return CreateIceTransport(std::move(init));
+}
+
+rtc::scoped_refptr<IceTransportInterface> CreateIceTransport(
+    IceTransportInit init) {
   return new rtc::RefCountedObject<IceTransportWithTransportChannel>(
-      absl::make_unique<cricket::P2PTransportChannel>("", 0, port_allocator));
+      absl::make_unique<cricket::P2PTransportChannel>(
+          "", 0, init.port_allocator(), init.async_resolver_factory(),
+          init.event_log()));
 }
 
 }  // namespace webrtc
diff --git a/api/ice_transport_factory.h b/api/ice_transport_factory.h
index f3a174f..d981e0b 100644
--- a/api/ice_transport_factory.h
+++ b/api/ice_transport_factory.h
@@ -11,7 +11,9 @@
 #ifndef API_ICE_TRANSPORT_FACTORY_H_
 #define API_ICE_TRANSPORT_FACTORY_H_
 
+#include "api/async_resolver_factory.h"
 #include "api/ice_transport_interface.h"
+#include "api/rtc_event_log/rtc_event_log.h"
 #include "api/scoped_refptr.h"
 #include "rtc_base/system/rtc_export.h"
 
@@ -21,14 +23,57 @@
 
 namespace webrtc {
 
+struct IceTransportInit final {
+ public:
+  IceTransportInit() = default;
+  IceTransportInit(const IceTransportInit&) = delete;
+  IceTransportInit(IceTransportInit&&) = default;
+  IceTransportInit& operator=(const IceTransportInit&) = delete;
+  IceTransportInit& operator=(IceTransportInit&&) = default;
+
+  cricket::PortAllocator* port_allocator() { return port_allocator_; }
+  void set_port_allocator(cricket::PortAllocator* port_allocator) {
+    port_allocator_ = port_allocator;
+  }
+
+  AsyncResolverFactory* async_resolver_factory() {
+    return async_resolver_factory_;
+  }
+  void set_async_resolver_factory(
+      AsyncResolverFactory* async_resolver_factory) {
+    async_resolver_factory_ = async_resolver_factory;
+  }
+
+  RtcEventLog* event_log() { return event_log_; }
+  void set_event_log(RtcEventLog* event_log) { event_log_ = event_log; }
+
+ private:
+  cricket::PortAllocator* port_allocator_ = nullptr;
+  AsyncResolverFactory* async_resolver_factory_ = nullptr;
+  RtcEventLog* event_log_ = nullptr;
+};
+
 // Static factory for an IceTransport object that can be created
 // without using a webrtc::PeerConnection.
 // The returned object must be accessed and destroyed on the thread that
 // created it.
 // The PortAllocator must outlive the created IceTransportInterface object.
+// TODO(steveanton): Remove in favor of the overload that takes
+// IceTransportInit.
 RTC_EXPORT rtc::scoped_refptr<IceTransportInterface> CreateIceTransport(
     cricket::PortAllocator* port_allocator);
 
+// Static factory for an IceTransport object that can be created
+// without using a webrtc::PeerConnection.
+// The returned object must be accessed and destroyed on the thread that
+// created it.
+// |init.port_allocator()| is required and must outlive the created
+//     IceTransportInterface object.
+// |init.async_resolver_factory()| and |init.event_log()| are optional, but if
+//     provided must outlive the created IceTransportInterface object.
+RTC_EXPORT rtc::scoped_refptr<IceTransportInterface> CreateIceTransport(
+    IceTransportInit);
+
 }  // namespace webrtc
 
 #endif  // API_ICE_TRANSPORT_FACTORY_H_
diff --git a/pc/ice_transport_unittest.cc b/pc/ice_transport_unittest.cc
index 62d7953..a801bba 100644
--- a/pc/ice_transport_unittest.cc
+++ b/pc/ice_transport_unittest.cc
@@ -40,7 +40,9 @@
 TEST_F(IceTransportTest, CreateSelfDeletingTransport) {
   std::unique_ptr<cricket::FakePortAllocator> port_allocator(
       absl::make_unique<cricket::FakePortAllocator>(nullptr, nullptr));
-  auto ice_transport = CreateIceTransport(port_allocator.get());
+  IceTransportInit init;
+  init.set_port_allocator(port_allocator.get());
+  auto ice_transport = CreateIceTransport(std::move(init));
   EXPECT_NE(nullptr, ice_transport->internal());
 }
 
