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/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