peerconnection: measure bundle policy usage

measured in the connectionstatechange event to connected which usually
happens once per connection.

BUG=webrtc:12383

Change-Id: Ida136c44bfe65e922627390747f8bee384603715
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/204301
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Justin Uberti <juberti@webrtc.org>
Commit-Queue: Philipp Hancke <philipp.hancke@googlemail.com>
Cr-Commit-Position: refs/heads/master@{#33207}
diff --git a/pc/peer_connection.cc b/pc/peer_connection.cc
index 2cb43bf..406c44d 100644
--- a/pc/peer_connection.cc
+++ b/pc/peer_connection.cc
@@ -1738,6 +1738,27 @@
     return;
   connection_state_ = new_state;
   Observer()->OnConnectionChange(new_state);
+
+  // The connection state change to connected usually happens once per
+  // connection which makes it a good point to report metrics.
+  if (new_state == PeerConnectionState::kConnected) {
+    // Record bundle-policy from configuration. Done here from
+    // connectionStateChange to limit to actually established connections.
+    BundlePolicyUsage policy = kBundlePolicyUsageMax;
+    switch (configuration_.bundle_policy) {
+      case kBundlePolicyBalanced:
+        policy = kBundlePolicyUsageBalanced;
+        break;
+      case kBundlePolicyMaxBundle:
+        policy = kBundlePolicyUsageMaxBundle;
+        break;
+      case kBundlePolicyMaxCompat:
+        policy = kBundlePolicyUsageMaxCompat;
+        break;
+    }
+    RTC_HISTOGRAM_ENUMERATION("WebRTC.PeerConnection.BundlePolicy", policy,
+                              kBundlePolicyUsageMax);
+  }
 }
 
 void PeerConnection::OnIceGatheringChange(