Adds simulated time controller API.

Bug: webrtc:11255
Change-Id: I68289a45b9441b5e612433acd96dc3cb24e47ce4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/168122
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30443}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index 860ac36..82dc308 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -943,6 +943,7 @@
     deps = [
       ":callfactory_api",
       ":time_controller",
+      "../call",
       "../call:call_interfaces",
       "../test/time_controller",
     ]
diff --git a/api/test/create_time_controller.cc b/api/test/create_time_controller.cc
index 09682bd..794f7cc 100644
--- a/api/test/create_time_controller.cc
+++ b/api/test/create_time_controller.cc
@@ -14,6 +14,7 @@
 
 #include "call/call.h"
 #include "test/time_controller/external_time_controller.h"
+#include "test/time_controller/simulated_time_controller.h"
 
 namespace webrtc {
 
@@ -22,6 +23,11 @@
   return std::make_unique<ExternalTimeController>(alarm);
 }
 
+std::unique_ptr<TimeController> CreateSimulatedTimeController() {
+  return std::make_unique<GlobalSimulatedTimeController>(
+      Timestamp::seconds(10000));
+}
+
 std::unique_ptr<CallFactoryInterface> CreateTimeControllerBasedCallFactory(
     TimeController* time_controller) {
   class TimeControllerBasedCallFactory : public CallFactoryInterface {
diff --git a/api/test/create_time_controller.h b/api/test/create_time_controller.h
index f4bd3f2..1b6896f 100644
--- a/api/test/create_time_controller.h
+++ b/api/test/create_time_controller.h
@@ -17,9 +17,13 @@
 
 namespace webrtc {
 
+// Creates a time coltroller that wraps |alarm|.
 std::unique_ptr<TimeController> CreateTimeController(
     ControlledAlarmClock* alarm);
 
+// Creates a time controller that runs in simulated time.
+std::unique_ptr<TimeController> CreateSimulatedTimeController();
+
 // This is creates a call factory that creates Call instances that are backed by
 // a time controller.
 std::unique_ptr<CallFactoryInterface> CreateTimeControllerBasedCallFactory(