Send QPACK Stream Cancellation instruction.

This relands the part of cl/282861038 that was reverted in cl/283820632.

gfe-relnote: n/a, change to QUIC v99-only code.  Protected by existing disabled gfe2_reloadable_flag_quic_enable_version_99.
PiperOrigin-RevId: 285381536
Change-Id: I9c3b914eba11cf53db1617ce350935f6a2dbbdd6
diff --git a/quic/core/http/quic_spdy_stream.cc b/quic/core/http/quic_spdy_stream.cc
index 78d8593..bf1f127 100644
--- a/quic/core/http/quic_spdy_stream.cc
+++ b/quic/core/http/quic_spdy_stream.cc
@@ -680,7 +680,10 @@
 
 void QuicSpdyStream::OnStreamReset(const QuicRstStreamFrame& frame) {
   if (frame.error_code != QUIC_STREAM_NO_ERROR) {
-    // TODO(b/145684124) Call QpackDecoder::OnStreamReset().
+    if (VersionUsesHttp3(transport_version()) && !fin_received() &&
+        spdy_session_->qpack_decoder()) {
+      spdy_session_->qpack_decoder()->OnStreamReset(id());
+    }
 
     QuicStream::OnStreamReset(frame);
     return;
@@ -695,7 +698,10 @@
 }
 
 void QuicSpdyStream::Reset(QuicRstStreamErrorCode error) {
-  // TODO(b/145684124) Call QpackDecoder::OnStreamReset().
+  if (VersionUsesHttp3(transport_version()) && !fin_received() &&
+      spdy_session_->qpack_decoder()) {
+    spdy_session_->qpack_decoder()->OnStreamReset(id());
+  }
 
   QuicStream::Reset(error);
 }
diff --git a/quic/core/http/quic_spdy_stream_test.cc b/quic/core/http/quic_spdy_stream_test.cc
index bc85384..efb34ac 100644
--- a/quic/core/http/quic_spdy_stream_test.cc
+++ b/quic/core/http/quic_spdy_stream_test.cc
@@ -2534,8 +2534,7 @@
 
 // Stream Cancellation instruction is sent on QPACK decoder stream
 // when stream is reset.
-// TODO(b/145684124) Re-enable.
-TEST_P(QuicSpdyStreamTest, DISABLED_StreamCancellationWhenStreamReset) {
+TEST_P(QuicSpdyStreamTest, StreamCancellationWhenStreamReset) {
   if (!UsesHttp3()) {
     return;
   }
@@ -2554,8 +2553,7 @@
 
 // Stream Cancellation instruction is sent on QPACK decoder stream
 // when RESET_STREAM frame is received.
-// TODO(b/145684124) Re-enable.
-TEST_P(QuicSpdyStreamTest, DISABLED_StreamCancellationOnResetReceived) {
+TEST_P(QuicSpdyStreamTest, StreamCancellationOnResetReceived) {
   if (!UsesHttp3()) {
     return;
   }