diff --git a/quic/core/http/http_frames.h b/quic/core/http/http_frames.h
index 286e8f7..6a00ad7 100644
--- a/quic/core/http/http_frames.h
+++ b/quic/core/http/http_frames.h
@@ -20,6 +20,9 @@
 
 namespace quic {
 
+// TODO(b/171463363): Remove.
+using PushId = uint64_t;
+
 enum class HttpFrameType {
   DATA = 0x0,
   HEADERS = 0x1,
@@ -52,20 +55,6 @@
   absl::string_view headers;
 };
 
-// 7.2.3.  CANCEL_PUSH
-//
-//   The CANCEL_PUSH frame (type=0x3) is used to request cancellation of
-//   server push prior to the push stream being created.
-using PushId = uint64_t;
-
-struct QUIC_EXPORT_PRIVATE CancelPushFrame {
-  PushId push_id;
-
-  bool operator==(const CancelPushFrame& rhs) const {
-    return push_id == rhs.push_id;
-  }
-};
-
 // 7.2.4.  SETTINGS
 //
 //   The SETTINGS frame (type=0x4) conveys configuration parameters that
@@ -99,20 +88,6 @@
   }
 };
 
-// 7.2.5.  PUSH_PROMISE
-//
-//   The PUSH_PROMISE frame (type=0x05) is used to carry a request header
-//   set from server to client, as in HTTP/2.
-// TODO(b/171463363): Remove.
-struct QUIC_EXPORT_PRIVATE PushPromiseFrame {
-  PushId push_id;
-  absl::string_view headers;
-
-  bool operator==(const PushPromiseFrame& rhs) const {
-    return push_id == rhs.push_id && headers == rhs.headers;
-  }
-};
-
 // 7.2.6.  GOAWAY
 //
 //   The GOAWAY frame (type=0x7) is used to initiate shutdown of a connection by
diff --git a/quic/core/http/http_frames_test.cc b/quic/core/http/http_frames_test.cc
index c9a285d..24fd578 100644
--- a/quic/core/http/http_frames_test.cc
+++ b/quic/core/http/http_frames_test.cc
@@ -12,17 +12,6 @@
 namespace quic {
 namespace test {
 
-TEST(HttpFramesTest, CancelPushFrame) {
-  CancelPushFrame a{1};
-  EXPECT_TRUE(a == a);
-
-  CancelPushFrame b{1};
-  EXPECT_TRUE(a == b);
-
-  b.push_id = 2;
-  EXPECT_FALSE(a == b);
-}
-
 TEST(HttpFramesTest, SettingsFrame) {
   SettingsFrame a;
   EXPECT_TRUE(a == a);
@@ -44,21 +33,6 @@
   EXPECT_EQ("SETTINGS_QPACK_MAX_TABLE_CAPACITY = 1; ", s.str());
 }
 
-TEST(HttpFramesTest, PushPromiseFrame) {
-  PushPromiseFrame a{1, ""};
-  EXPECT_TRUE(a == a);
-
-  PushPromiseFrame b{2, ""};
-  EXPECT_FALSE(a == b);
-
-  b.push_id = 1;
-  EXPECT_TRUE(a == b);
-
-  b.headers = "foo";
-  EXPECT_FALSE(a == b);
-  EXPECT_TRUE(b == b);
-}
-
 TEST(HttpFramesTest, GoAwayFrame) {
   GoAwayFrame a{1};
   EXPECT_TRUE(a == a);
diff --git a/quic/core/http/quic_spdy_session.h b/quic/core/http/quic_spdy_session.h
index 940d54a..8085dd8 100644
--- a/quic/core/http/quic_spdy_session.h
+++ b/quic/core/http/quic_spdy_session.h
@@ -114,12 +114,6 @@
   virtual void OnHeadersFrameSent(
       QuicStreamId /*stream_id*/,
       const spdy::SpdyHeaderBlock& /*header_block*/) {}
-  // TODO(b/171463363): Remove.
-  virtual void OnPushPromiseFrameSent(
-      QuicStreamId /*stream_id*/,
-      QuicStreamId
-      /*push_id*/,
-      const spdy::SpdyHeaderBlock& /*header_block*/) {}
 
   // 0-RTT related events.
   virtual void OnSettingsFrameResumed(const SettingsFrame& /*frame*/) {}
diff --git a/quic/core/http/quic_spdy_stream.h b/quic/core/http/quic_spdy_stream.h
index 8a219d1..4df1196 100644
--- a/quic/core/http/quic_spdy_stream.h
+++ b/quic/core/http/quic_spdy_stream.h
@@ -389,12 +389,6 @@
                            QuicByteCount payload_length);
   bool OnHeadersFramePayload(absl::string_view payload);
   bool OnHeadersFrameEnd();
-  bool OnPushPromiseFrameStart(QuicByteCount header_length);
-  bool OnPushPromiseFramePushId(PushId push_id,
-                                QuicByteCount push_id_length,
-                                QuicByteCount header_block_length);
-  bool OnPushPromiseFramePayload(absl::string_view payload);
-  bool OnPushPromiseFrameEnd();
   void OnWebTransportStreamFrameType(QuicByteCount header_length,
                                      WebTransportSessionId session_id);
   bool OnUnknownFrameStart(uint64_t frame_type,
diff --git a/quic/test_tools/quic_test_utils.h b/quic/test_tools/quic_test_utils.h
index ccd5039..e10d9c1 100644
--- a/quic/test_tools/quic_test_utils.h
+++ b/quic/test_tools/quic_test_utils.h
@@ -1177,10 +1177,6 @@
               OnHeadersFrameSent,
               (QuicStreamId, const spdy::SpdyHeaderBlock&),
               (override));
-  MOCK_METHOD(void,
-              OnPushPromiseFrameSent,
-              (QuicStreamId, QuicStreamId, const spdy::SpdyHeaderBlock&),
-              (override));
 };
 
 class TestQuicSpdyServerSession : public QuicServerSessionBase {
