Automated g4 rollback of changelist 503440382.

*** Reason for rollback ***

Unfortunately Chromium still needs this in QuicChromiumClientSession::UnregisterStreamPriority().

*** Original change description ***

Remove `is_static` argument from QuicWriteBlockedList::UnregisterStream().

This argument is unnecessary, because QuicWriteBlockedList can easily determine
whether the stream has been registered as static or not.

***

PiperOrigin-RevId: 504273217
diff --git a/quiche/quic/core/http/quic_server_session_base_test.cc b/quiche/quic/core/http/quic_server_session_base_test.cc
index 807f05f..133dcbf 100644
--- a/quiche/quic/core/http/quic_server_session_base_test.cc
+++ b/quiche/quic/core/http/quic_server_session_base_test.cc
@@ -525,7 +525,8 @@
 
   if (!VersionUsesHttp3(transport_version())) {
     session_->UnregisterStreamPriority(
-        QuicUtils::GetHeadersStreamId(transport_version()));
+        QuicUtils::GetHeadersStreamId(transport_version()),
+        /*is_static=*/true);
   }
   QuicServerSessionBasePeer::SetCryptoStream(session_.get(), nullptr);
   MockQuicCryptoServerStream* quic_crypto_stream = nullptr;
diff --git a/quiche/quic/core/quic_session.cc b/quiche/quic/core/quic_session.cc
index 4b37c76..a58e572 100644
--- a/quiche/quic/core/quic_session.cc
+++ b/quiche/quic/core/quic_session.cc
@@ -1816,8 +1816,8 @@
   write_blocked_streams()->RegisterStream(id, is_static, priority);
 }
 
-void QuicSession::UnregisterStreamPriority(QuicStreamId id) {
-  write_blocked_streams()->UnregisterStream(id);
+void QuicSession::UnregisterStreamPriority(QuicStreamId id, bool is_static) {
+  write_blocked_streams()->UnregisterStream(id, is_static);
 }
 
 void QuicSession::UpdateStreamPriority(QuicStreamId id,
diff --git a/quiche/quic/core/quic_session.h b/quiche/quic/core/quic_session.h
index f59d184..5c97f1a 100644
--- a/quiche/quic/core/quic_session.h
+++ b/quiche/quic/core/quic_session.h
@@ -334,7 +334,7 @@
   void RegisterStreamPriority(QuicStreamId id, bool is_static,
                               const QuicStreamPriority& priority) override;
   // Clears priority from the write blocked list.
-  void UnregisterStreamPriority(QuicStreamId id) override;
+  void UnregisterStreamPriority(QuicStreamId id, bool is_static) override;
   // Updates priority on the write blocked list.
   void UpdateStreamPriority(QuicStreamId id,
                             const QuicStreamPriority& new_priority) override;
diff --git a/quiche/quic/core/quic_stream.cc b/quiche/quic/core/quic_stream.cc
index 6a436ff..3fa0d01 100644
--- a/quiche/quic/core/quic_stream.cc
+++ b/quiche/quic/core/quic_stream.cc
@@ -390,7 +390,7 @@
         << ", fin_outstanding: " << fin_outstanding_;
   }
   if (stream_delegate_ != nullptr && type_ != CRYPTO) {
-    stream_delegate_->UnregisterStreamPriority(id());
+    stream_delegate_->UnregisterStreamPriority(id(), is_static_);
   }
 }
 
diff --git a/quiche/quic/core/quic_write_blocked_list.cc b/quiche/quic/core/quic_write_blocked_list.cc
index f6d00f2..2497907 100644
--- a/quiche/quic/core/quic_write_blocked_list.cc
+++ b/quiche/quic/core/quic_write_blocked_list.cc
@@ -68,8 +68,10 @@
   priority_write_scheduler_.RegisterStream(stream_id, priority);
 }
 
-void QuicWriteBlockedList::UnregisterStream(QuicStreamId stream_id) {
-  if (static_stream_collection_.Unregister(stream_id)) {
+void QuicWriteBlockedList::UnregisterStream(QuicStreamId stream_id,
+                                            bool is_static) {
+  if (is_static) {
+    static_stream_collection_.Unregister(stream_id);
     return;
   }
   priority_write_scheduler_.UnregisterStream(stream_id);
@@ -127,17 +129,17 @@
   return false;
 }
 
-bool QuicWriteBlockedList::StaticStreamCollection::Unregister(QuicStreamId id) {
+void QuicWriteBlockedList::StaticStreamCollection::Unregister(QuicStreamId id) {
   for (auto it = streams_.begin(); it != streams_.end(); ++it) {
     if (it->id == id) {
       if (it->is_blocked) {
         --num_blocked_;
       }
       streams_.erase(it);
-      return true;
+      return;
     }
   }
-  return false;
+  QUICHE_DCHECK(false) << "Erasing a non-exist stream with id " << id;
 }
 
 bool QuicWriteBlockedList::StaticStreamCollection::SetBlocked(QuicStreamId id) {
diff --git a/quiche/quic/core/quic_write_blocked_list.h b/quiche/quic/core/quic_write_blocked_list.h
index b366eaf..0ad2c2d 100644
--- a/quiche/quic/core/quic_write_blocked_list.h
+++ b/quiche/quic/core/quic_write_blocked_list.h
@@ -63,9 +63,7 @@
   void RegisterStream(QuicStreamId stream_id, bool is_static_stream,
                       const QuicStreamPriority& priority);
 
-  // Unregister a stream.  `stream_id` must be registered, either as a static
-  // stream or as a non-static stream.
-  void UnregisterStream(QuicStreamId stream_id);
+  void UnregisterStream(QuicStreamId stream_id, bool is_static);
 
   // Updates the stored priority of a stream.  Must not be called for static
   // streams.
@@ -126,9 +124,9 @@
     // True if |id| is in the collection, regardless of its state.
     bool IsRegistered(QuicStreamId id) const;
 
-    // Remove |id| from the collection.  If it is in the blocked state, reduce
-    // |num_blocked_| by 1.  Returns true if |id| was in the collection.
-    bool Unregister(QuicStreamId id);
+    // Remove |id| from the collection, if it is in the blocked state, reduce
+    // |num_blocked_| by 1.
+    void Unregister(QuicStreamId id);
 
     // Set |id| to be blocked. If |id| is not already blocked, increase
     // |num_blocked_| by 1.
diff --git a/quiche/quic/core/quic_write_blocked_list_test.cc b/quiche/quic/core/quic_write_blocked_list_test.cc
index e69e071..1847993 100644
--- a/quiche/quic/core/quic_write_blocked_list_test.cc
+++ b/quiche/quic/core/quic_write_blocked_list_test.cc
@@ -6,7 +6,6 @@
 
 #include "quiche/quic/platform/api/quic_test.h"
 #include "quiche/quic/test_tools/quic_test_utils.h"
-#include "quiche/common/platform/api/quiche_expect_bug.h"
 
 using spdy::kV3HighestPriority;
 using spdy::kV3LowestPriority;
@@ -54,8 +53,8 @@
     write_blocked_list_.RegisterStream(stream_id, is_static_stream, priority);
   }
 
-  void UnregisterStream(QuicStreamId stream_id) {
-    write_blocked_list_.UnregisterStream(stream_id);
+  void UnregisterStream(QuicStreamId stream_id, bool is_static) {
+    write_blocked_list_.UnregisterStream(stream_id, is_static);
   }
 
   void UpdateStreamPriority(QuicStreamId stream_id,
@@ -296,8 +295,8 @@
   AddStream(1);
   AddStream(3);
 
-  UnregisterStream(23);
-  UnregisterStream(1);
+  UnregisterStream(23, kNotStatic);
+  UnregisterStream(1, kStatic);
 
   EXPECT_EQ(3u, PopFront());
   EXPECT_EQ(17u, PopFront());
@@ -305,14 +304,6 @@
   EXPECT_EQ(40, PopFront());
 }
 
-TEST_F(QuicWriteBlockedListTest, UnregisterNotRegisteredStream) {
-  EXPECT_QUICHE_BUG(UnregisterStream(1), "Stream 1 not registered");
-
-  RegisterStream(2, kNotStatic, {kV3HighestPriority, kIncremental});
-  UnregisterStream(2);
-  EXPECT_QUICHE_BUG(UnregisterStream(2), "Stream 2 not registered");
-}
-
 TEST_F(QuicWriteBlockedListTest, UpdateStreamPriority) {
   RegisterStream(40, kNotStatic, {kV3LowestPriority, kNotIncremental});
   RegisterStream(23, kNotStatic, {6, kIncremental});
diff --git a/quiche/quic/core/stream_delegate_interface.h b/quiche/quic/core/stream_delegate_interface.h
index a5f03f0..b6db350 100644
--- a/quiche/quic/core/stream_delegate_interface.h
+++ b/quiche/quic/core/stream_delegate_interface.h
@@ -44,7 +44,7 @@
   virtual void RegisterStreamPriority(QuicStreamId id, bool is_static,
                                       const QuicStreamPriority& priority) = 0;
   // Called on stream destruction to clear priority.
-  virtual void UnregisterStreamPriority(QuicStreamId id) = 0;
+  virtual void UnregisterStreamPriority(QuicStreamId id, bool is_static) = 0;
   // Called by the stream on SetPriority to update priority.
   virtual void UpdateStreamPriority(QuicStreamId id,
                                     const QuicStreamPriority& new_priority) = 0;
diff --git a/quiche/quic/tools/quic_simple_server_session_test.cc b/quiche/quic/tools/quic_simple_server_session_test.cc
index c30283c..d6eb67f 100644
--- a/quiche/quic/tools/quic_simple_server_session_test.cc
+++ b/quiche/quic/tools/quic_simple_server_session_test.cc
@@ -491,7 +491,8 @@
 
   if (!VersionUsesHttp3(transport_version())) {
     session_->UnregisterStreamPriority(
-        QuicUtils::GetHeadersStreamId(transport_version()));
+        QuicUtils::GetHeadersStreamId(transport_version()),
+        /*is_static=*/true);
   }
   // Assume encryption already established.
   QuicSimpleServerSessionPeer::SetCryptoStream(session_.get(), nullptr);