Adds CreateTimeControllerBasedCallFactory.

Bug: webrtc:11255
Change-Id: I9614823761ff5d2eb4fe03342f255a81087b6449
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/166960
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30358}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index d95f749..860ac36 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -941,7 +941,9 @@
     ]
 
     deps = [
+      ":callfactory_api",
       ":time_controller",
+      "../call:call_interfaces",
       "../test/time_controller",
     ]
   }
diff --git a/api/test/create_time_controller.cc b/api/test/create_time_controller.cc
index 1d6f24e..09682bd 100644
--- a/api/test/create_time_controller.cc
+++ b/api/test/create_time_controller.cc
@@ -12,6 +12,7 @@
 
 #include <memory>
 
+#include "call/call.h"
 #include "test/time_controller/external_time_controller.h"
 
 namespace webrtc {
@@ -21,4 +22,22 @@
   return std::make_unique<ExternalTimeController>(alarm);
 }
 
+std::unique_ptr<CallFactoryInterface> CreateTimeControllerBasedCallFactory(
+    TimeController* time_controller) {
+  class TimeControllerBasedCallFactory : public CallFactoryInterface {
+   public:
+    explicit TimeControllerBasedCallFactory(TimeController* time_controller)
+        : time_controller_(time_controller) {}
+    Call* CreateCall(const Call::Config& config) override {
+      return Call::Create(config, time_controller_->GetClock(),
+                          time_controller_->CreateProcessThread("CallModules"),
+                          time_controller_->CreateProcessThread("Pacer"));
+    }
+
+   private:
+    TimeController* time_controller_;
+  };
+  return std::make_unique<TimeControllerBasedCallFactory>(time_controller);
+}
+
 }  // namespace webrtc
diff --git a/api/test/create_time_controller.h b/api/test/create_time_controller.h
index 9c5b19b..f4bd3f2 100644
--- a/api/test/create_time_controller.h
+++ b/api/test/create_time_controller.h
@@ -12,6 +12,7 @@
 
 #include <memory>
 
+#include "api/call/call_factory_interface.h"
 #include "api/test/time_controller.h"
 
 namespace webrtc {
@@ -19,6 +20,11 @@
 std::unique_ptr<TimeController> CreateTimeController(
     ControlledAlarmClock* alarm);
 
+// This is creates a call factory that creates Call instances that are backed by
+// a time controller.
+std::unique_ptr<CallFactoryInterface> CreateTimeControllerBasedCallFactory(
+    TimeController* time_controller);
+
 }  // namespace webrtc
 
 #endif  // API_TEST_CREATE_TIME_CONTROLLER_H_