Add SpdyFramerVisitorInterface::OnPriorityUpdate().

This method is not yet used.  It will be called from Http2FrameDecoder in the
next CL.

PiperOrigin-RevId: 348086749
Change-Id: Ie76e161b77fc16222461270a775d827d6e660c9a
diff --git a/quic/core/http/quic_headers_stream_test.cc b/quic/core/http/quic_headers_stream_test.cc
index dc6a46d..cd8120d 100644
--- a/quic/core/http/quic_headers_stream_test.cc
+++ b/quic/core/http/quic_headers_stream_test.cc
@@ -162,6 +162,11 @@
                int weight,
                bool exclusive),
               (override));
+  MOCK_METHOD(void,
+              OnPriorityUpdate,
+              (SpdyStreamId prioritized_stream_id,
+               absl::string_view priority_field_value),
+              (override));
   MOCK_METHOD(bool,
               OnUnknownFrame,
               (SpdyStreamId stream_id, uint8_t frame_type),
diff --git a/quic/core/http/quic_spdy_session.cc b/quic/core/http/quic_spdy_session.cc
index a86aefa..28da458 100644
--- a/quic/core/http/quic_spdy_session.cc
+++ b/quic/core/http/quic_spdy_session.cc
@@ -315,6 +315,12 @@
     session_->OnPriority(stream_id, spdy::SpdyStreamPrecedence(priority));
   }
 
+  void OnPriorityUpdate(SpdyStreamId /*prioritized_stream_id*/,
+                        absl::string_view /*priority_field_value*/) override {
+    // TODO(b/171470299): Parse and call
+    // QuicSpdySession::OnPriorityUpdateForRequestStream().
+  }
+
   bool OnUnknownFrame(SpdyStreamId /*stream_id*/,
                       uint8_t /*frame_type*/) override {
     CloseConnection("Unknown frame type received.",
diff --git a/spdy/core/http2_frame_decoder_adapter.h b/spdy/core/http2_frame_decoder_adapter.h
index 89d7fdc..2058de4 100644
--- a/spdy/core/http2_frame_decoder_adapter.h
+++ b/spdy/core/http2_frame_decoder_adapter.h
@@ -509,6 +509,13 @@
                           int weight,
                           bool exclusive) = 0;
 
+  // Called when a PRIORITY_UPDATE frame is received on stream 0.
+  // |prioritized_stream_id| is the Prioritized Stream ID and
+  // |priority_field_value| is the Priority Field Value
+  // parsed from the frame payload.
+  virtual void OnPriorityUpdate(SpdyStreamId prioritized_stream_id,
+                                absl::string_view priority_field_value) = 0;
+
   // Called when a frame type we don't recognize is received.
   // Return true if this appears to be a valid extension frame, false otherwise.
   // We distinguish between extension frames and nonsense by checking
diff --git a/spdy/core/mock_spdy_framer_visitor.h b/spdy/core/mock_spdy_framer_visitor.h
index 5faf2fb..8732f70 100644
--- a/spdy/core/mock_spdy_framer_visitor.h
+++ b/spdy/core/mock_spdy_framer_visitor.h
@@ -101,6 +101,11 @@
                int weight,
                bool exclusive),
               (override));
+  MOCK_METHOD(void,
+              OnPriorityUpdate,
+              (SpdyStreamId prioritized_stream_id,
+               absl::string_view priority_field_value),
+              (override));
   MOCK_METHOD(bool,
               OnUnknownFrame,
               (SpdyStreamId stream_id, uint8_t frame_type),
diff --git a/spdy/core/spdy_framer_test.cc b/spdy/core/spdy_framer_test.cc
index a1d7a79..da23f11 100644
--- a/spdy/core/spdy_framer_test.cc
+++ b/spdy/core/spdy_framer_test.cc
@@ -428,6 +428,12 @@
     ++priority_count_;
   }
 
+  void OnPriorityUpdate(SpdyStreamId prioritized_stream_id,
+                        absl::string_view priority_field_value) override {
+    SPDY_VLOG(1) << "OnPriorityUpdate(" << prioritized_stream_id << ", "
+                 << priority_field_value << ")";
+  }
+
   bool OnUnknownFrame(SpdyStreamId stream_id, uint8_t frame_type) override {
     SPDY_VLOG(1) << "OnUnknownFrame(" << stream_id << ", " << frame_type << ")";
     return on_unknown_frame_result_;
diff --git a/spdy/core/spdy_no_op_visitor.h b/spdy/core/spdy_no_op_visitor.h
index 26bab9c..da272b3 100644
--- a/spdy/core/spdy_no_op_visitor.h
+++ b/spdy/core/spdy_no_op_visitor.h
@@ -68,6 +68,8 @@
                   SpdyStreamId /*parent_stream_id*/,
                   int /*weight*/,
                   bool /*exclusive*/) override {}
+  void OnPriorityUpdate(SpdyStreamId /*prioritized_stream_id*/,
+                        absl::string_view /*priority_field_value*/) override {}
   bool OnUnknownFrame(SpdyStreamId /*stream_id*/,
                       uint8_t /*frame_type*/) override;