Add PriorityWriteScheduler::kLowestPriority and PriorityWriteScheduler::kHighestPriority.

PiperOrigin-RevId: 499923094
diff --git a/quiche/http2/core/priority_write_scheduler.h b/quiche/http2/core/priority_write_scheduler.h
index 1c3820d..ff867a9 100644
--- a/quiche/http2/core/priority_write_scheduler.h
+++ b/quiche/http2/core/priority_write_scheduler.h
@@ -46,6 +46,12 @@
  public:
   using StreamPrecedenceType = spdy::StreamPrecedence<StreamIdType>;
 
+  static constexpr int kHighestPriority = 0;
+  static constexpr int kLowestPriority = 7;
+
+  static_assert(spdy::kV3HighestPriority == kHighestPriority);
+  static_assert(spdy::kV3LowestPriority == kLowestPriority);
+
   // Registers new stream `stream_id` with the scheduler, assigning it the
   // given precedence. If the scheduler supports stream dependencies, the
   // stream is inserted into the dependency tree under
@@ -98,7 +104,7 @@
     auto it = stream_infos_.find(stream_id);
     if (it == stream_infos_.end()) {
       QUICHE_DVLOG(1) << "Stream " << stream_id << " not registered";
-      return StreamPrecedenceType(spdy::kV3LowestPriority);
+      return StreamPrecedenceType(kLowestPriority);
     }
     return StreamPrecedenceType(it->second->priority);
   }
@@ -169,8 +175,8 @@
     }
     int64_t last_event_time_usec = 0;
     const StreamInfo* const stream_info = it->second.get();
-    for (spdy::SpdyPriority p = spdy::kV3HighestPriority;
-         p < stream_info->priority; ++p) {
+    for (spdy::SpdyPriority p = kHighestPriority; p < stream_info->priority;
+         ++p) {
       last_event_time_usec = std::max(last_event_time_usec,
                                       priority_infos_[p].last_event_time_usec);
     }
@@ -193,8 +199,7 @@
   // Preconditions: `HasReadyStreams() == true`
   std::tuple<StreamIdType, StreamPrecedenceType>
   PopNextReadyStreamAndPrecedence() {
-    for (spdy::SpdyPriority p = spdy::kV3HighestPriority;
-         p <= spdy::kV3LowestPriority; ++p) {
+    for (spdy::SpdyPriority p = kHighestPriority; p <= kLowestPriority; ++p) {
       ReadyList& ready_list = priority_infos_[p].ready_list;
       if (!ready_list.empty()) {
         StreamInfo* const info = ready_list.front();
@@ -209,7 +214,7 @@
       }
     }
     QUICHE_BUG(spdy_bug_19_6) << "No ready streams available";
-    return std::make_tuple(0, StreamPrecedenceType(spdy::kV3LowestPriority));
+    return std::make_tuple(0, StreamPrecedenceType(kLowestPriority));
   }
 
   // Returns true if there's another stream ahead of the given stream in the
@@ -226,8 +231,8 @@
 
     // If there's a higher priority stream, this stream should yield.
     const StreamInfo* const stream_info = it->second.get();
-    for (spdy::SpdyPriority p = spdy::kV3HighestPriority;
-         p < stream_info->priority; ++p) {
+    for (spdy::SpdyPriority p = kHighestPriority; p < stream_info->priority;
+         ++p) {
       if (!priority_infos_[p].ready_list.empty()) {
         return true;
       }
@@ -359,7 +364,7 @@
   // Number of ready streams.
   size_t num_ready_streams_ = 0;
   // Per-priority state, including ready lists.
-  PriorityInfo priority_infos_[spdy::kV3LowestPriority + 1];
+  PriorityInfo priority_infos_[kLowestPriority + 1];
   // StreamInfos for all registered streams.
   StreamInfoMap stream_infos_;
 };
diff --git a/quiche/http2/core/priority_write_scheduler_test.cc b/quiche/http2/core/priority_write_scheduler_test.cc
index e94e522..e8a54dd 100644
--- a/quiche/http2/core/priority_write_scheduler_test.cc
+++ b/quiche/http2/core/priority_write_scheduler_test.cc
@@ -13,7 +13,6 @@
 namespace test {
 
 using ::spdy::kHttp2RootStreamId;
-using ::spdy::kV3LowestPriority;
 using ::spdy::SpdyPriority;
 using ::spdy::SpdyStreamId;
 using ::spdy::SpdyStreamPrecedence;
@@ -37,6 +36,9 @@
 
 class PriorityWriteSchedulerTest : public quiche::test::QuicheTest {
  public:
+  static constexpr int kLowestPriority =
+      PriorityWriteScheduler<SpdyStreamId>::kLowestPriority;
+
   PriorityWriteSchedulerTest() : peer_(&scheduler_) {}
 
   PriorityWriteScheduler<SpdyStreamId> scheduler_;
@@ -105,7 +107,7 @@
 TEST_F(PriorityWriteSchedulerTest, GetStreamPrecedence) {
   // Unknown streams tolerated due to b/15676312. However, return lowest
   // priority.
-  EXPECT_EQ(kV3LowestPriority,
+  EXPECT_EQ(kLowestPriority,
             scheduler_.GetStreamPrecedence(1).spdy3_priority());
 
   scheduler_.RegisterStream(1, SpdyStreamPrecedence(3));
@@ -135,7 +137,7 @@
   EXPECT_EQ(6, scheduler_.GetStreamPrecedence(1).spdy3_priority());
 
   scheduler_.UnregisterStream(1);
-  EXPECT_EQ(kV3LowestPriority,
+  EXPECT_EQ(kLowestPriority,
             scheduler_.GetStreamPrecedence(1).spdy3_priority());
 }
 
@@ -151,12 +153,12 @@
   // For the moment, updating stream precedence on a non-registered stream
   // should have no effect. In the future, it will lazily cause the stream to
   // be registered (b/15676312).
-  EXPECT_EQ(kV3LowestPriority,
+  EXPECT_EQ(kLowestPriority,
             scheduler_.GetStreamPrecedence(3).spdy3_priority());
   EXPECT_FALSE(scheduler_.StreamRegistered(3));
   scheduler_.UpdateStreamPrecedence(3, SpdyStreamPrecedence(1));
   EXPECT_FALSE(scheduler_.StreamRegistered(3));
-  EXPECT_EQ(kV3LowestPriority,
+  EXPECT_EQ(kLowestPriority,
             scheduler_.GetStreamPrecedence(3).spdy3_priority());
 
   scheduler_.RegisterStream(3, SpdyStreamPrecedence(1));