Change PeerConnection creation to use a static "Create" method

This allows making more members (including IsUnifiedPlan) const in a future CL.

Also revises the test for ReportUsageHistogram to use a configuration member
variable rather than a hook function in PeerConnectionFactory.

Bug: webrtc:12079
Change-Id: I6f1af7d6164c8a0d8466f76378a925d72d57d685
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/190280
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#32485}
diff --git a/pc/peer_connection_histogram_unittest.cc b/pc/peer_connection_histogram_unittest.cc
index a9c5c9b..8730ac4 100644
--- a/pc/peer_connection_histogram_unittest.cc
+++ b/pc/peer_connection_histogram_unittest.cc
@@ -85,18 +85,6 @@
           dependencies.call_factory = CreateCallFactory();
           return dependencies;
         }()) {}
-
-  void ActionsBeforeInitializeForTesting(PeerConnectionInterface* pc) override {
-    PeerConnection* internal_pc = static_cast<PeerConnection*>(pc);
-    if (return_histogram_very_quickly_) {
-      internal_pc->ReturnHistogramVeryQuicklyForTesting();
-    }
-  }
-
-  void ReturnHistogramVeryQuickly() { return_histogram_very_quickly_ = true; }
-
- private:
-  bool return_histogram_very_quickly_ = false;
 };
 
 class PeerConnectionWrapperForUsageHistogramTest;
@@ -255,14 +243,13 @@
   }
 
   WrapperPtr CreatePeerConnection() {
-    return CreatePeerConnection(RTCConfiguration(),
-                                PeerConnectionFactoryInterface::Options(),
-                                nullptr, false);
+    return CreatePeerConnection(
+        RTCConfiguration(), PeerConnectionFactoryInterface::Options(), nullptr);
   }
 
   WrapperPtr CreatePeerConnection(const RTCConfiguration& config) {
     return CreatePeerConnection(
-        config, PeerConnectionFactoryInterface::Options(), nullptr, false);
+        config, PeerConnectionFactoryInterface::Options(), nullptr);
   }
 
   WrapperPtr CreatePeerConnectionWithMdns(const RTCConfiguration& config) {
@@ -282,15 +269,15 @@
     deps.async_resolver_factory = std::move(resolver_factory);
     deps.allocator = std::move(port_allocator);
 
-    return CreatePeerConnection(config,
-                                PeerConnectionFactoryInterface::Options(),
-                                std::move(deps), false);
+    return CreatePeerConnection(
+        config, PeerConnectionFactoryInterface::Options(), std::move(deps));
   }
 
   WrapperPtr CreatePeerConnectionWithImmediateReport() {
-    return CreatePeerConnection(RTCConfiguration(),
-                                PeerConnectionFactoryInterface::Options(),
-                                nullptr, true);
+    RTCConfiguration configuration;
+    configuration.report_usage_pattern_delay_ms = 0;
+    return CreatePeerConnection(
+        configuration, PeerConnectionFactoryInterface::Options(), nullptr);
   }
 
   WrapperPtr CreatePeerConnectionWithPrivateLocalAddresses() {
@@ -300,10 +287,9 @@
 
     auto port_allocator =
         std::make_unique<cricket::BasicPortAllocator>(fake_network);
-
     return CreatePeerConnection(RTCConfiguration(),
                                 PeerConnectionFactoryInterface::Options(),
-                                std::move(port_allocator), false);
+                                std::move(port_allocator));
   }
 
   WrapperPtr CreatePeerConnectionWithPrivateIpv6LocalAddresses() {
@@ -316,32 +302,26 @@
 
     return CreatePeerConnection(RTCConfiguration(),
                                 PeerConnectionFactoryInterface::Options(),
-                                std::move(port_allocator), false);
+                                std::move(port_allocator));
   }
 
   WrapperPtr CreatePeerConnection(
       const RTCConfiguration& config,
       const PeerConnectionFactoryInterface::Options factory_options,
-      std::unique_ptr<cricket::PortAllocator> allocator,
-      bool immediate_report) {
+      std::unique_ptr<cricket::PortAllocator> allocator) {
     PeerConnectionDependencies deps(nullptr);
     deps.allocator = std::move(allocator);
 
-    return CreatePeerConnection(config, factory_options, std::move(deps),
-                                immediate_report);
+    return CreatePeerConnection(config, factory_options, std::move(deps));
   }
 
   WrapperPtr CreatePeerConnection(
       const RTCConfiguration& config,
       const PeerConnectionFactoryInterface::Options factory_options,
-      PeerConnectionDependencies deps,
-      bool immediate_report) {
+      PeerConnectionDependencies deps) {
     rtc::scoped_refptr<PeerConnectionFactoryForUsageHistogramTest> pc_factory(
         new PeerConnectionFactoryForUsageHistogramTest());
     pc_factory->SetOptions(factory_options);
-    if (immediate_report) {
-      pc_factory->ReturnHistogramVeryQuickly();
-    }
 
     // If no allocator is provided, one will be created using a network manager
     // that uses the host network. This doesn't work on all trybots.