diff --git a/quiche/quic/core/http/quic_spdy_session.cc b/quiche/quic/core/http/quic_spdy_session.cc
index 810c77e..a74ce79 100644
--- a/quiche/quic/core/http/quic_spdy_session.cc
+++ b/quiche/quic/core/http/quic_spdy_session.cc
@@ -28,6 +28,7 @@
 #include "quiche/quic/core/http/web_transport_http3.h"
 #include "quiche/quic/core/quic_error_codes.h"
 #include "quiche/quic/core/quic_session.h"
+#include "quiche/quic/core/quic_stream_priority.h"
 #include "quiche/quic/core/quic_types.h"
 #include "quiche/quic/core/quic_utils.h"
 #include "quiche/quic/core/quic_versions.h"
@@ -735,6 +736,9 @@
 
 bool QuicSpdySession::OnPriorityUpdateForRequestStream(
     QuicStreamId stream_id, HttpStreamPriority priority) {
+  // TODO: Close the connection if the client receives a PRIORITY_UPDATE or
+  // the stream is not a request stream, per
+  // https://datatracker.ietf.org/doc/html/rfc9218#section-7.2
   if (perspective() == Perspective::IS_CLIENT ||
       !QuicUtils::IsBidirectionalStreamId(stream_id, version()) ||
       !QuicUtils::IsClientInitiatedStreamId(transport_version(), stream_id)) {
@@ -964,6 +968,7 @@
   }
 
   stream->SetPriority(QuicStreamPriority(it->second));
+  stream->set_priority_source(quic::PrioritySource::SET_BY_PRIORITY_UPDATE);
   buffered_stream_priorities_.erase(it);
 }
 
diff --git a/quiche/quic/core/http/quic_spdy_session_test.cc b/quiche/quic/core/http/quic_spdy_session_test.cc
index 286cff2..a1e8107 100644
--- a/quiche/quic/core/http/quic_spdy_session_test.cc
+++ b/quiche/quic/core/http/quic_spdy_session_test.cc
@@ -2368,11 +2368,14 @@
                 HttpStreamPriority{HttpStreamPriority::kDefaultUrgency,
                                    HttpStreamPriority::kDefaultIncremental}),
             stream1->priority());
+  EXPECT_EQ(quic::PrioritySource::NOT_SET, stream1->priority_source());
   EXPECT_CALL(debug_visitor, OnPriorityUpdateFrameReceived(priority_update1));
   session_->OnStreamFrame(data3);
   EXPECT_EQ(QuicStreamPriority(HttpStreamPriority{
                 2u, HttpStreamPriority::kDefaultIncremental}),
             stream1->priority());
+  EXPECT_EQ(quic::PrioritySource::SET_BY_PRIORITY_UPDATE,
+            stream1->priority_source());
 
   // PRIORITY_UPDATE frame for second request stream.
   const QuicStreamId stream_id2 = GetNthClientInitiatedBidirectionalId(1);
@@ -2391,6 +2394,8 @@
   TestStream* stream2 = session_->CreateIncomingStream(stream_id2);
   EXPECT_EQ(QuicStreamPriority(HttpStreamPriority{5u, true}),
             stream2->priority());
+  EXPECT_EQ(quic::PrioritySource::SET_BY_PRIORITY_UPDATE,
+            stream2->priority_source());
 }
 
 TEST_P(QuicSpdySessionTestServer, OnInvalidPriorityUpdateFrame) {
diff --git a/quiche/quic/core/quic_session.cc b/quiche/quic/core/quic_session.cc
index 9d6d245..5116dc7 100644
--- a/quiche/quic/core/quic_session.cc
+++ b/quiche/quic/core/quic_session.cc
@@ -2369,6 +2369,8 @@
   auto active_stream = stream_map_.find(stream_id);
   if (active_stream != stream_map_.end()) {
     active_stream->second->SetPriority(priority);
+    active_stream->second->set_priority_source(
+        quic::PrioritySource::SET_BY_PRIORITY_UPDATE);
     return true;
   }
 
diff --git a/quiche/quic/core/quic_stream.h b/quiche/quic/core/quic_stream.h
index c45d40f..517b551 100644
--- a/quiche/quic/core/quic_stream.h
+++ b/quiche/quic/core/quic_stream.h
@@ -233,6 +233,11 @@
 
   const QuicStreamPriority& priority() const;
 
+  PrioritySource priority_source() const { return priority_source_; }
+  void set_priority_source(PrioritySource priority_source) {
+    priority_source_ = priority_source;
+  }
+
   // Send PRIORITY_UPDATE frame if application protocol supports it.
   virtual void MaybeSendPriorityUpdateFrame() {}
 
@@ -585,6 +590,8 @@
   StreamDelegateInterface* stream_delegate_;
   // The priority of the stream, once parsed.
   QuicStreamPriority priority_;
+  // Source of the stream priority value.
+  PrioritySource priority_source_ = PrioritySource::NOT_SET;
   // Bytes read refers to payload bytes only: they do not include framing,
   // encryption overhead etc.
   uint64_t stream_bytes_read_;
diff --git a/quiche/quic/core/quic_stream_priority.h b/quiche/quic/core/quic_stream_priority.h
index 40817b6..9f5728d 100644
--- a/quiche/quic/core/quic_stream_priority.h
+++ b/quiche/quic/core/quic_stream_priority.h
@@ -19,6 +19,14 @@
 
 namespace quic {
 
+// Source of the stream priority value.
+enum class PrioritySource : uint8_t {
+  NOT_SET,
+  SET_BY_PRIORITY_UPDATE,
+  SET_BY_REQUEST_HEADER,
+  SET_BY_RESPONSE_HEADER,
+};
+
 // Represents HTTP priorities as defined by RFC 9218.
 struct QUICHE_EXPORT HttpStreamPriority {
   static constexpr int kMinimumUrgency = 0;
