diff --git a/modules/pacing/packet_router.cc b/modules/pacing/packet_router.cc
index 32df525..fa64331 100644
--- a/modules/pacing/packet_router.cc
+++ b/modules/pacing/packet_router.cc
@@ -139,7 +139,7 @@
   rtc::CritScope cs(&modules_crit_);
   // With the new pacer code path, transport sequence numbers are only set here,
   // on the pacer thread. Therefore we don't need atomics/synchronization.
-  if (packet->IsExtensionReserved<TransportSequenceNumber>()) {
+  if (packet->HasExtension<TransportSequenceNumber>()) {
     packet->SetExtension<TransportSequenceNumber>((++transport_seq_) & 0xFFFF);
   }
 
diff --git a/modules/rtp_rtcp/source/rtp_packet.cc b/modules/rtp_rtcp/source/rtp_packet.cc
index 8ca232b..5643828 100644
--- a/modules/rtp_rtcp/source/rtp_packet.cc
+++ b/modules/rtp_rtcp/source/rtp_packet.cc
@@ -618,11 +618,6 @@
 }
 
 bool RtpPacket::HasExtension(ExtensionType type) const {
-  // TODO(webrtc:7990): Add support for empty extensions (length==0).
-  return !FindExtension(type).empty();
-}
-
-bool RtpPacket::IsExtensionReserved(ExtensionType type) const {
   uint8_t id = extensions_.GetId(type);
   if (id == ExtensionManager::kInvalidId) {
     // Extension not registered.
diff --git a/modules/rtp_rtcp/source/rtp_packet.h b/modules/rtp_rtcp/source/rtp_packet.h
index 862399f..809af0c 100644
--- a/modules/rtp_rtcp/source/rtp_packet.h
+++ b/modules/rtp_rtcp/source/rtp_packet.h
@@ -112,10 +112,6 @@
   bool HasExtension() const;
   bool HasExtension(ExtensionType type) const;
 
-  template <typename Extension>
-  bool IsExtensionReserved() const;
-  bool IsExtensionReserved(ExtensionType type) const;
-
   template <typename Extension, typename FirstValue, typename... Values>
   bool GetExtension(FirstValue, Values...) const;
 
@@ -207,11 +203,6 @@
   return HasExtension(Extension::kId);
 }
 
-template <typename Extension>
-bool RtpPacket::IsExtensionReserved() const {
-  return IsExtensionReserved(Extension::kId);
-}
-
 template <typename Extension, typename FirstValue, typename... Values>
 bool RtpPacket::GetExtension(FirstValue first, Values... values) const {
   auto raw = FindExtension(Extension::kId);
diff --git a/modules/rtp_rtcp/source/rtp_packet_unittest.cc b/modules/rtp_rtcp/source/rtp_packet_unittest.cc
index 3f9fcd1..1bb4358 100644
--- a/modules/rtp_rtcp/source/rtp_packet_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_packet_unittest.cc
@@ -996,7 +996,7 @@
             kFeedbackRequest->sequence_count);
 }
 
-TEST(RtpPacketTest, IsExtensionReserved) {
+TEST(RtpPacketTest, ReservedExtensionsCountedAsSetExtension) {
   // Register two extensions.
   RtpPacketToSend::ExtensionManager extensions;
   extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
@@ -1011,9 +1011,9 @@
 
   // Only the extension that is both registered and reserved matches
   // IsExtensionReserved().
-  EXPECT_FALSE(packet.IsExtensionReserved<VideoContentTypeExtension>());
-  EXPECT_FALSE(packet.IsExtensionReserved<AudioLevel>());
-  EXPECT_TRUE(packet.IsExtensionReserved<TransmissionOffset>());
+  EXPECT_FALSE(packet.HasExtension<VideoContentTypeExtension>());
+  EXPECT_FALSE(packet.HasExtension<AudioLevel>());
+  EXPECT_TRUE(packet.HasExtension<TransmissionOffset>());
 }
 
 // Tests that RtpPacket::RemoveExtension can successfully remove extensions.
diff --git a/modules/rtp_rtcp/source/rtp_sender_egress.cc b/modules/rtp_rtcp/source/rtp_sender_egress.cc
index b602eb6..2244927 100644
--- a/modules/rtp_rtcp/source/rtp_sender_egress.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_egress.cc
@@ -124,10 +124,10 @@
   // data after rtp header may be corrupted if these packets are protected by
   // the FEC.
   int64_t diff_ms = now_ms - packet->capture_time_ms();
-  if (packet->IsExtensionReserved<TransmissionOffset>()) {
+  if (packet->HasExtension<TransmissionOffset>()) {
     packet->SetExtension<TransmissionOffset>(kTimestampTicksPerMs * diff_ms);
   }
-  if (packet->IsExtensionReserved<AbsoluteSendTime>()) {
+  if (packet->HasExtension<AbsoluteSendTime>()) {
     packet->SetExtension<AbsoluteSendTime>(
         AbsoluteSendTime::MsTo24Bits(now_ms));
   }
diff --git a/modules/rtp_rtcp/source/rtp_sender_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_unittest.cc
index 25b7c56..5ca4e70 100644
--- a/modules/rtp_rtcp/source/rtp_sender_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_unittest.cc
@@ -2239,9 +2239,9 @@
   EXPECT_EQ(padding_packet->Ssrc(), kRtxSsrc);
   EXPECT_EQ(padding_packet->payload_size(),
             kPayloadPacketSize + kRtxHeaderSize);
-  EXPECT_TRUE(padding_packet->IsExtensionReserved<TransportSequenceNumber>());
-  EXPECT_TRUE(padding_packet->IsExtensionReserved<AbsoluteSendTime>());
-  EXPECT_TRUE(padding_packet->IsExtensionReserved<TransmissionOffset>());
+  EXPECT_TRUE(padding_packet->HasExtension<TransportSequenceNumber>());
+  EXPECT_TRUE(padding_packet->HasExtension<AbsoluteSendTime>());
+  EXPECT_TRUE(padding_packet->HasExtension<TransmissionOffset>());
 
   // Verify all header extensions are received.
   rtp_egress()->SendPacket(padding_packet.get(), PacedPacketInfo());
@@ -2265,9 +2265,9 @@
     EXPECT_GT(packet->padding_size(), 0u);
     padding_bytes_generated += packet->padding_size();
 
-    EXPECT_TRUE(packet->IsExtensionReserved<TransportSequenceNumber>());
-    EXPECT_TRUE(packet->IsExtensionReserved<AbsoluteSendTime>());
-    EXPECT_TRUE(packet->IsExtensionReserved<TransmissionOffset>());
+    EXPECT_TRUE(packet->HasExtension<TransportSequenceNumber>());
+    EXPECT_TRUE(packet->HasExtension<AbsoluteSendTime>());
+    EXPECT_TRUE(packet->HasExtension<TransmissionOffset>());
 
     // Verify all header extensions are received.
     rtp_egress()->SendPacket(packet.get(), PacedPacketInfo());
@@ -2323,9 +2323,9 @@
     EXPECT_EQ(packet->payload_size(), 0u);
     EXPECT_GT(packet->padding_size(), 0u);
     padding_bytes_generated += packet->padding_size();
-    EXPECT_TRUE(packet->IsExtensionReserved<TransportSequenceNumber>());
-    EXPECT_TRUE(packet->IsExtensionReserved<AbsoluteSendTime>());
-    EXPECT_TRUE(packet->IsExtensionReserved<TransmissionOffset>());
+    EXPECT_TRUE(packet->HasExtension<TransportSequenceNumber>());
+    EXPECT_TRUE(packet->HasExtension<AbsoluteSendTime>());
+    EXPECT_TRUE(packet->HasExtension<TransmissionOffset>());
 
     // Verify all header extensions are received.
     rtp_egress()->SendPacket(packet.get(), PacedPacketInfo());
