Bootstrap CWND with cached bandwidth for BOW traffic.

tested: --test_filter=*EndToEndTest.IncreaseCWNDWithCachedBandwidthForBowTraffic* --test_arg=--gfe2_invert_all_feature_flags_for_test=true --runs_per_test=1000

The feature is also guarded by connection option BWID & BWR1 on the client side.

Protected by FLAGS_quic_restart_flag_quic_enable_sending_bandwidth_estimate_when_network_idle.

PiperOrigin-RevId: 449221379
diff --git a/quiche/quic/core/crypto/crypto_protocol.h b/quiche/quic/core/crypto/crypto_protocol.h
index 855826b..352242f 100644
--- a/quiche/quic/core/crypto/crypto_protocol.h
+++ b/quiche/quic/core/crypto/crypto_protocol.h
@@ -301,6 +301,7 @@
 const QuicTag kBWRE = TAG('B', 'W', 'R', 'E');  // Bandwidth resumption.
 const QuicTag kBWMX = TAG('B', 'W', 'M', 'X');  // Max bandwidth resumption.
 const QuicTag kBWID = TAG('B', 'W', 'I', 'D');  // Send bandwidth when idle.
+const QuicTag kBWR1 = TAG('B', 'W', 'I', '1');  // Resume bandwidth experiment 1
 const QuicTag kBWRS = TAG('B', 'W', 'R', 'S');  // Server bandwidth resumption.
 const QuicTag kBWS2 = TAG('B', 'W', 'S', '2');  // Server bw resumption v2.
 const QuicTag kBWS3 = TAG('B', 'W', 'S', '3');  // QUIC Initial CWND - Control.
diff --git a/quiche/quic/core/http/quic_server_session_base.h b/quiche/quic/core/http/quic_server_session_base.h
index 7fbbf8b..fcfda0e 100644
--- a/quiche/quic/core/http/quic_server_session_base.h
+++ b/quiche/quic/core/http/quic_server_session_base.h
@@ -75,6 +75,10 @@
 
   QuicSSLConfig GetSSLConfig() const override;
 
+  bool enable_sending_bandwidth_estimate_when_network_idle() const {
+    return enable_sending_bandwidth_estimate_when_network_idle_;
+  }
+
  protected:
   // QuicSession methods(override them with return type of QuicSpdyStream*):
   QuicCryptoServerStreamBase* GetMutableCryptoStream() override;