diff --git a/quic/core/http/http_decoder.cc b/quic/core/http/http_decoder.cc
index 90df506..faffdc9 100644
--- a/quic/core/http/http_decoder.cc
+++ b/quic/core/http/http_decoder.cc
@@ -4,6 +4,9 @@
 
 #include "net/third_party/quiche/src/quic/core/http/http_decoder.h"
 
+#include <cstdint>
+
+#include "net/third_party/quiche/src/quic/core/http/http_frames.h"
 #include "net/third_party/quiche/src/quic/core/quic_data_reader.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_bug_tracker.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_fallthrough.h"
@@ -11,17 +14,6 @@
 namespace quic {
 
 namespace {
-
-// Create a mask that sets the last |num_bits| to 1 and the rest to 0.
-inline uint8_t GetMaskFromNumBits(uint8_t num_bits) {
-  return (1u << num_bits) - 1;
-}
-
-// Extract |num_bits| from |flags| offset by |offset|.
-uint8_t ExtractBits(uint8_t flags, uint8_t num_bits, uint8_t offset) {
-  return (flags >> offset) & GetMaskFromNumBits(num_bits);
-}
-
 // Length of the weight field of a priority frame.
 static const size_t kPriorityWeightLength = 1;
 // Length of a priority frame's first byte.
@@ -468,12 +460,11 @@
     return false;
   }
 
-  frame->prioritized_type =
-      static_cast<PriorityElementType>(ExtractBits(flags, 2, 6));
-  frame->dependency_type =
-      static_cast<PriorityElementType>(ExtractBits(flags, 2, 4));
-  // TODO(b/137662729): Update bitmask for exclusive flag.
-  frame->exclusive = flags % 2 == 1;
+  // Assign two most significant bits to prioritized_type.
+  frame->prioritized_type = static_cast<PriorityElementType>((flags >> 6) & 3);
+  // Assign the next two most significant bits to dependency type.
+  frame->dependency_type = static_cast<PriorityElementType>((flags >> 4) & 3);
+  frame->exclusive = flags >> 3 & 1;
   // TODO(b/137359636): Handle partial delivery.
   if (frame->prioritized_type != ROOT_OF_TREE &&
       !reader->ReadVarInt62(&frame->prioritized_element_id)) {
diff --git a/quic/core/http/http_decoder_test.cc b/quic/core/http/http_decoder_test.cc
index 1c245d0..cf32171 100644
--- a/quic/core/http/http_decoder_test.cc
+++ b/quic/core/http/http_decoder_test.cc
@@ -306,7 +306,7 @@
   std::string input =
       "\x02"   // type (PRIORITY)
       "\x04"   // length
-      "\x01"   // request stream, request stream, exclusive
+      "\x08"   // request stream, request stream, exclusive
       "\x03"   // prioritized_element_id
       "\x04"   // element_dependency_id
       "\xFF";  // weight
@@ -351,7 +351,7 @@
   std::string input2 =
       "\x02"   // type (PRIORITY)
       "\x02"   // length
-      "\xf1"   // root of tree, root of tree, exclusive
+      "\xf8"   // root of tree, root of tree, exclusive
       "\xFF";  // weight
   PriorityFrame frame2;
   frame2.prioritized_type = ROOT_OF_TREE;
diff --git a/quic/core/http/http_encoder.cc b/quic/core/http/http_encoder.cc
index 2b8be8e..2306b8e 100644
--- a/quic/core/http/http_encoder.cc
+++ b/quic/core/http/http_encoder.cc
@@ -45,7 +45,7 @@
 // Length of a priority frame's first byte.
 static const size_t kPriorityFirstByteLength = 1;
 // The bit that indicates Priority frame is exclusive.
-static const uint8_t kPriorityExclusiveBit = 1;
+static const uint8_t kPriorityExclusiveBit = 8;
 
 }  // namespace
 
diff --git a/quic/core/http/http_encoder_test.cc b/quic/core/http/http_encoder_test.cc
index d0696ed..eb5e574 100644
--- a/quic/core/http/http_encoder_test.cc
+++ b/quic/core/http/http_encoder_test.cc
@@ -56,7 +56,7 @@
                    // length
                    0x4,
                    // request stream, request stream, exclusive
-                   0x01,
+                   0x08,
                    // prioritized_element_id
                    0x03,
                    // element_dependency_id
@@ -81,7 +81,7 @@
                     // length
                     0x3,
                     // root of tree, request stream, exclusive
-                    0xc1,
+                    0xc8,
                     // element_dependency_id
                     0x04,
                     // weight
@@ -101,7 +101,7 @@
                     // length
                     0x2,
                     // root of tree, root of tree, exclusive
-                    0xf1,
+                    0xf8,
                     // weight
                     0xff};
   length = encoder_.SerializePriorityFrame(priority3, &buffer);
diff --git a/quic/core/http/http_frames.h b/quic/core/http/http_frames.h
index cf282ee..b84b658 100644
--- a/quic/core/http/http_frames.h
+++ b/quic/core/http/http_frames.h
@@ -5,6 +5,7 @@
 #ifndef QUICHE_QUIC_CORE_HTTP_HTTP_FRAMES_H_
 #define QUICHE_QUIC_CORE_HTTP_HTTP_FRAMES_H_
 
+#include <cstdint>
 #include <map>
 #include <ostream>
 
@@ -48,7 +49,7 @@
 //
 //   The PRIORITY (type=0x02) frame specifies the sender-advised priority
 //   of a stream
-enum PriorityElementType {
+enum PriorityElementType : uint8_t {
   REQUEST_STREAM = 0,
   PUSH_STREAM = 1,
   PLACEHOLDER = 2,
