Adds injectable trials from peerconnection down to transport controller.

This will be immediately useful to guarantee consistent state across
components referencing the pacer, but will be a net benefit overall
imo.

Bug: webrtc:10809
Change-Id: I49630696f757a832ccf2e4c8597193bf087ce53b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159885
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29859}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index 8bb4f24..6847a12 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -188,6 +188,7 @@
     "transport:datagram_transport_interface",
     "transport:enums",
     "transport:network_control",
+    "transport:webrtc_key_value_config",
     "transport/media:audio_interfaces",
     "transport/media:media_transport_interface",
     "transport/media:video_interfaces",
diff --git a/api/peer_connection_interface.h b/api/peer_connection_interface.h
index f2ef336..5047eef 100644
--- a/api/peer_connection_interface.h
+++ b/api/peer_connection_interface.h
@@ -104,6 +104,7 @@
 #include "api/transport/enums.h"
 #include "api/transport/media/media_transport_interface.h"
 #include "api/transport/network_control.h"
+#include "api/transport/webrtc_key_value_config.h"
 #include "api/turn_customizer.h"
 #include "media/base/media_config.h"
 #include "media/base/media_engine.h"
@@ -1329,6 +1330,7 @@
   std::unique_ptr<NetworkControllerFactoryInterface> network_controller_factory;
   std::unique_ptr<MediaTransportFactory> media_transport_factory;
   std::unique_ptr<NetEqFactory> neteq_factory;
+  std::unique_ptr<WebRtcKeyValueConfig> trials;
 };
 
 // PeerConnectionFactoryInterface is the factory interface used for creating
diff --git a/api/transport/BUILD.gn b/api/transport/BUILD.gn
index 3710aa5..d9260c5 100644
--- a/api/transport/BUILD.gn
+++ b/api/transport/BUILD.gn
@@ -54,6 +54,7 @@
     "webrtc_key_value_config.h",
   ]
   deps = [
+    "../../rtc_base/system:rtc_export",
     "//third_party/abseil-cpp/absl/strings",
   ]
 }
diff --git a/api/transport/webrtc_key_value_config.h b/api/transport/webrtc_key_value_config.h
index 0522629..5666a82 100644
--- a/api/transport/webrtc_key_value_config.h
+++ b/api/transport/webrtc_key_value_config.h
@@ -13,6 +13,7 @@
 #include <string>
 
 #include "absl/strings/string_view.h"
+#include "rtc_base/system/rtc_export.h"
 
 namespace webrtc {
 
@@ -21,7 +22,7 @@
 // particular key value mapping will be preserved over time and no announcements
 // will be made if they are changed. It's up to the library user to ensure that
 // the behavior does not break.
-class WebRtcKeyValueConfig {
+class RTC_EXPORT WebRtcKeyValueConfig {
  public:
   virtual ~WebRtcKeyValueConfig() = default;
   // The configured value for the given key. Defaults to an empty string.