Improve configurability of uStreamer QUIC experiments.

Currently, two experiment flags are used to
1) Enable BBRv2, and
2) Enable bandwidth overestimate avoidance in the send algorithm.

The CL replaces them with a single protobuf experiment flag, which allows more QUIC connection options to be configured from uStreamer experiment mendel configs.

After this CL, I plan to add a long-running QUIC study in which QUIC team will try various connection options in uStreamer.

PiperOrigin-RevId: 360529780
Change-Id: I18b7a70b2f72b7de0fd4edeab5f1648940651fa9
diff --git a/quic/core/quic_sent_packet_manager.cc b/quic/core/quic_sent_packet_manager.cc
index 97c7c25..ce0ccf4 100644
--- a/quic/core/quic_sent_packet_manager.cc
+++ b/quic/core/quic_sent_packet_manager.cc
@@ -339,6 +339,21 @@
 
 void QuicSentPacketManager::ApplyConnectionOptions(
     const QuicTagVector& connection_options) {
+  absl::optional<CongestionControlType> cc_type;
+  if (ContainsQuicTag(connection_options, kB2ON)) {
+    cc_type = kBBRv2;
+  } else if (ContainsQuicTag(connection_options, kTBBR)) {
+    cc_type = kBBR;
+  } else if (ContainsQuicTag(connection_options, kRENO)) {
+    cc_type = kRenoBytes;
+  } else if (ContainsQuicTag(connection_options, kQBIC)) {
+    cc_type = kCubicBytes;
+  }
+
+  if (cc_type.has_value()) {
+    SetSendAlgorithm(*cc_type);
+  }
+
   send_algorithm_->ApplyConnectionOptions(connection_options);
 }