Remove PUBLISH_OK message.

This message type is going away (in favor of REQUEST_OK) and we currently don't support PUBLISH anyway.

Part of implementing draft-17/18 PUBLISH in draft-16.

PiperOrigin-RevId: 914270574
diff --git a/quiche/quic/moqt/moqt_bidi_stream.h b/quiche/quic/moqt/moqt_bidi_stream.h
index 98971f8..e2bc925 100644
--- a/quiche/quic/moqt/moqt_bidi_stream.h
+++ b/quiche/quic/moqt/moqt_bidi_stream.h
@@ -139,9 +139,6 @@
   virtual void OnPublishMessage(const MoqtPublish& message) override {
     OnParsingError(wrong_message_error_, wrong_message_reason_);
   }
-  virtual void OnPublishOkMessage(const MoqtPublishOk& message) override {
-    OnParsingError(wrong_message_error_, wrong_message_reason_);
-  }
   virtual void OnObjectAckMessage(const MoqtObjectAck& message) override {
     OnParsingError(wrong_message_error_, wrong_message_reason_);
   }
diff --git a/quiche/quic/moqt/moqt_bidi_stream_test.cc b/quiche/quic/moqt/moqt_bidi_stream_test.cc
index dedd3c8..bc77125 100644
--- a/quiche/quic/moqt/moqt_bidi_stream_test.cc
+++ b/quiche/quic/moqt/moqt_bidi_stream_test.cc
@@ -190,13 +190,6 @@
   EXPECT_CALL(error_callback_,
               Call(MoqtError::kProtocolViolation,
                    "Message not allowed for this stream type"));
-  stream_->OnPublishOkMessage(MoqtPublishOk{});
-  stream_ = std::make_unique<MoqtBidiStreamBase>(
-      &framer_, deleted_callback_.AsStdFunction(),
-      error_callback_.AsStdFunction());
-  EXPECT_CALL(error_callback_,
-              Call(MoqtError::kProtocolViolation,
-                   "Message not allowed for this stream type"));
   stream_->OnObjectAckMessage(MoqtObjectAck{});
   stream_ = std::make_unique<MoqtBidiStreamBase>(
       &framer_, deleted_callback_.AsStdFunction(),
diff --git a/quiche/quic/moqt/moqt_framer.cc b/quiche/quic/moqt/moqt_framer.cc
index e8e2d2b..6206ff9 100644
--- a/quiche/quic/moqt/moqt_framer.cc
+++ b/quiche/quic/moqt/moqt_framer.cc
@@ -716,13 +716,6 @@
       WireKeyValuePairList(message.extensions, false));
 }
 
-quiche::QuicheBuffer MoqtFramer::SerializePublishOk(
-    const MoqtPublishOk& message) {
-  return SerializeControlMessage(
-      MoqtMessageType::kPublishOk, WireVarInt62(message.request_id),
-      WireKeyValuePairList(message.parameters.ToKeyValuePairList()));
-}
-
 quiche::QuicheBuffer MoqtFramer::SerializeObjectAck(
     const MoqtObjectAck& message) {
   return SerializeControlMessage(
diff --git a/quiche/quic/moqt/moqt_framer.h b/quiche/quic/moqt/moqt_framer.h
index f1e56e0..499ba34 100644
--- a/quiche/quic/moqt/moqt_framer.h
+++ b/quiche/quic/moqt/moqt_framer.h
@@ -75,7 +75,6 @@
   quiche::QuicheBuffer SerializeRequestsBlocked(
       const MoqtRequestsBlocked& message);
   quiche::QuicheBuffer SerializePublish(const MoqtPublish& message);
-  quiche::QuicheBuffer SerializePublishOk(const MoqtPublishOk& message);
   quiche::QuicheBuffer SerializeObjectAck(const MoqtObjectAck& message);
 
   bool using_webtrans() const { return using_webtrans_; }
diff --git a/quiche/quic/moqt/moqt_framer_test.cc b/quiche/quic/moqt/moqt_framer_test.cc
index d63e2b6..45403c7 100644
--- a/quiche/quic/moqt/moqt_framer_test.cc
+++ b/quiche/quic/moqt/moqt_framer_test.cc
@@ -57,7 +57,6 @@
       MoqtMessageType::kFetchOk,
       MoqtMessageType::kRequestsBlocked,
       MoqtMessageType::kPublish,
-      MoqtMessageType::kPublishOk,
       MoqtMessageType::kObjectAck,
       MoqtMessageType::kClientSetup,
       MoqtMessageType::kServerSetup,
@@ -207,10 +206,6 @@
         auto data = std::get<MoqtPublish>(structured_data);
         return framer_.SerializePublish(data);
       }
-      case moqt::MoqtMessageType::kPublishOk: {
-        auto data = std::get<MoqtPublishOk>(structured_data);
-        return framer_.SerializePublishOk(data);
-      }
       case moqt::MoqtMessageType::kObjectAck: {
         auto data = std::get<MoqtObjectAck>(structured_data);
         return framer_.SerializeObjectAck(data);
diff --git a/quiche/quic/moqt/moqt_messages.cc b/quiche/quic/moqt/moqt_messages.cc
index 7281cf8..ed48af6 100644
--- a/quiche/quic/moqt/moqt_messages.cc
+++ b/quiche/quic/moqt/moqt_messages.cc
@@ -50,11 +50,10 @@
     MoqtMessageType::kPublishNamespace,
     MoqtMessageType::kTrackStatus,
     MoqtMessageType::kFetch};
-const std::array<MoqtMessageType, 7> kAllowsDeliveryTimeout = {
+const std::array<MoqtMessageType, 6> kAllowsDeliveryTimeout = {
     MoqtMessageType::kTrackStatus,  MoqtMessageType::kRequestOk,
-    MoqtMessageType::kPublish,      MoqtMessageType::kPublishOk,
-    MoqtMessageType::kSubscribe,    MoqtMessageType::kSubscribeOk,
-    MoqtMessageType::kRequestUpdate};
+    MoqtMessageType::kPublish,      MoqtMessageType::kSubscribe,
+    MoqtMessageType::kSubscribeOk,  MoqtMessageType::kRequestUpdate};
 bool MessageParametersAllowedByMessage(
     const MessageParameters& parameters, MoqtMessageType message_type) {
   if (!parameters.authorization_tokens.empty() &&
@@ -109,8 +108,6 @@
       return "MAX_REQUEST_ID";
     case MoqtMessageType::kPublish:
       return "PUBLISH";
-    case MoqtMessageType::kPublishOk:
-      return "PUBLISH_OK";
     case MoqtMessageType::kFetch:
       return "FETCH";
     case MoqtMessageType::kFetchCancel:
diff --git a/quiche/quic/moqt/moqt_messages.h b/quiche/quic/moqt/moqt_messages.h
index 3c7552f..ed13591 100644
--- a/quiche/quic/moqt/moqt_messages.h
+++ b/quiche/quic/moqt/moqt_messages.h
@@ -214,7 +214,6 @@
   kFetchOk = 0x18,
   kRequestsBlocked = 0x1a,
   kPublish = 0x1d,
-  kPublishOk = 0x1e,
   kClientSetup = 0x20,
   kServerSetup = 0x21,
 
@@ -526,11 +525,6 @@
   TrackExtensions extensions;
 };
 
-struct QUICHE_EXPORT MoqtPublishOk {
-  uint64_t request_id;
-  MessageParameters parameters;
-};
-
 // All of the four values in this message are encoded as varints.
 // `delta_from_deadline` is encoded as an absolute value, with the lowest bit
 // indicating the sign (0 if positive).
diff --git a/quiche/quic/moqt/moqt_parser.cc b/quiche/quic/moqt/moqt_parser.cc
index 19d864e..310e532 100644
--- a/quiche/quic/moqt/moqt_parser.cc
+++ b/quiche/quic/moqt/moqt_parser.cc
@@ -1002,19 +1002,6 @@
   return publish;
 }
 
-absl::StatusOr<MoqtPublishOk> MoqtControlMessageParser::ProcessPublishOk(
-    absl::string_view data) const {
-  quic::QuicDataReader reader(data);
-  MoqtPublishOk publish_ok;
-  if (!reader.ReadVarInt62(&publish_ok.request_id)) {
-    return absl::InvalidArgumentError("Message missing fields");
-  }
-  QUICHE_RETURN_IF_ERROR(
-      FillAndValidateMessageParameters(reader, publish_ok.parameters));
-  QUICHE_RETURN_IF_ERROR(CheckForTrailingData(reader));
-  return publish_ok;
-}
-
 absl::StatusOr<MoqtObjectAck> MoqtControlMessageParser::ProcessObjectAck(
     absl::string_view data) const {
   quic::QuicDataReader reader(data);
diff --git a/quiche/quic/moqt/moqt_parser.h b/quiche/quic/moqt/moqt_parser.h
index 9a62066..35e3c2f 100644
--- a/quiche/quic/moqt/moqt_parser.h
+++ b/quiche/quic/moqt/moqt_parser.h
@@ -73,7 +73,6 @@
   virtual void OnFetchOkMessage(const MoqtFetchOk& message) = 0;
   virtual void OnRequestsBlockedMessage(const MoqtRequestsBlocked& message) = 0;
   virtual void OnPublishMessage(const MoqtPublish& message) = 0;
-  virtual void OnPublishOkMessage(const MoqtPublishOk& message) = 0;
   virtual void OnObjectAckMessage(const MoqtObjectAck& message) = 0;
 
   virtual void OnParsingError(MoqtError code, absl::string_view reason) = 0;
@@ -204,7 +203,6 @@
   absl::StatusOr<MoqtRequestsBlocked> ProcessRequestsBlocked(
       absl::string_view data) const;
   absl::StatusOr<MoqtPublish> ProcessPublish(absl::string_view data) const;
-  absl::StatusOr<MoqtPublishOk> ProcessPublishOk(absl::string_view data) const;
   absl::StatusOr<MoqtObjectAck> ProcessObjectAck(absl::string_view data) const;
 
   // Parse a raw message and call a callback on it if successful.
@@ -269,8 +267,6 @@
         return parse(&MoqtControlMessageParser::ProcessRequestsBlocked);
       case MoqtMessageType::kPublish:
         return parse(&MoqtControlMessageParser::ProcessPublish);
-      case MoqtMessageType::kPublishOk:
-        return parse(&MoqtControlMessageParser::ProcessPublishOk);
       case MoqtMessageType::kObjectAck:
         return parse(&MoqtControlMessageParser::ProcessObjectAck);
       default:
@@ -425,10 +421,6 @@
                            visitor_.OnPublishMessage(message);
                            return absl::OkStatus();
                          },
-                         [&](const MoqtPublishOk& message) {
-                           visitor_.OnPublishOkMessage(message);
-                           return absl::OkStatus();
-                         },
                          [&](const MoqtObjectAck& message) {
                            visitor_.OnObjectAckMessage(message);
                            return absl::OkStatus();
diff --git a/quiche/quic/moqt/moqt_parser_test.cc b/quiche/quic/moqt/moqt_parser_test.cc
index e395a82..5ad95bb 100644
--- a/quiche/quic/moqt/moqt_parser_test.cc
+++ b/quiche/quic/moqt/moqt_parser_test.cc
@@ -68,7 +68,6 @@
     MoqtMessageType::kFetchOk,
     MoqtMessageType::kRequestsBlocked,
     MoqtMessageType::kPublish,
-    MoqtMessageType::kPublishOk,
     MoqtMessageType::kObjectAck,
 };
 
diff --git a/quiche/quic/moqt/moqt_session.h b/quiche/quic/moqt/moqt_session.h
index 59e2084..13df94e 100644
--- a/quiche/quic/moqt/moqt_session.h
+++ b/quiche/quic/moqt/moqt_session.h
@@ -281,7 +281,6 @@
     void OnFetchOkMessage(const MoqtFetchOk& message) override;
     void OnRequestsBlockedMessage(const MoqtRequestsBlocked& message) override;
     void OnPublishMessage(const MoqtPublish& message) override;
-    void OnPublishOkMessage(const MoqtPublishOk& /*message*/) override {}
     void OnObjectAckMessage(const MoqtObjectAck& message) override {
       auto subscription_it =
           session_->published_subscriptions_.find(message.subscribe_id);
diff --git a/quiche/quic/moqt/test_tools/moqt_framer_utils.cc b/quiche/quic/moqt/test_tools/moqt_framer_utils.cc
index 39ea217..87dc14b 100644
--- a/quiche/quic/moqt/test_tools/moqt_framer_utils.cc
+++ b/quiche/quic/moqt/test_tools/moqt_framer_utils.cc
@@ -85,9 +85,6 @@
   quiche::QuicheBuffer operator()(const MoqtPublish& message) {
     return framer.SerializePublish(message);
   }
-  quiche::QuicheBuffer operator()(const MoqtPublishOk& message) {
-    return framer.SerializePublishOk(message);
-  }
   quiche::QuicheBuffer operator()(const MoqtObjectAck& message) {
     return framer.SerializeObjectAck(message);
   }
diff --git a/quiche/quic/moqt/test_tools/moqt_framer_utils.h b/quiche/quic/moqt/test_tools/moqt_framer_utils.h
index 0e4326b..86f1d18 100644
--- a/quiche/quic/moqt/test_tools/moqt_framer_utils.h
+++ b/quiche/quic/moqt/test_tools/moqt_framer_utils.h
@@ -19,14 +19,15 @@
 
 namespace moqt::test {
 
-using AnyMoqtControlMessage = std::variant<
-    MoqtClientSetup, MoqtServerSetup, MoqtRequestOk, MoqtRequestError,
-    MoqtSubscribe, MoqtSubscribeOk, MoqtUnsubscribe, MoqtPublishDone,
-    MoqtRequestUpdate, MoqtPublishNamespace, MoqtPublishNamespaceDone,
-    MoqtPublishNamespaceCancel, MoqtTrackStatus, MoqtGoAway,
-    MoqtSubscribeNamespace, MoqtMaxRequestId, MoqtFetch, MoqtFetchCancel,
-    MoqtFetchOk, MoqtRequestsBlocked, MoqtPublish, MoqtPublishOk, MoqtNamespace,
-    MoqtNamespaceDone, MoqtObjectAck>;
+using AnyMoqtControlMessage =
+    std::variant<MoqtClientSetup, MoqtServerSetup, MoqtRequestOk,
+                 MoqtRequestError, MoqtSubscribe, MoqtSubscribeOk,
+                 MoqtUnsubscribe, MoqtPublishDone, MoqtRequestUpdate,
+                 MoqtPublishNamespace, MoqtPublishNamespaceDone,
+                 MoqtPublishNamespaceCancel, MoqtTrackStatus, MoqtGoAway,
+                 MoqtSubscribeNamespace, MoqtMaxRequestId, MoqtFetch,
+                 MoqtFetchCancel, MoqtFetchOk, MoqtRequestsBlocked, MoqtPublish,
+                 MoqtNamespace, MoqtNamespaceDone, MoqtObjectAck>;
 
 std::string SerializeGenericMessage(const AnyMoqtControlMessage& frame,
                                     bool use_webtrans = false);
diff --git a/quiche/quic/moqt/test_tools/moqt_test_message.h b/quiche/quic/moqt/test_tools/moqt_test_message.h
index f1da5ad..b502e14 100644
--- a/quiche/quic/moqt/test_tools/moqt_test_message.h
+++ b/quiche/quic/moqt/test_tools/moqt_test_message.h
@@ -113,7 +113,7 @@
       MoqtPublishNamespaceDone, MoqtPublishNamespaceCancel, MoqtTrackStatus,
       MoqtGoAway, MoqtSubscribeNamespace, MoqtMaxRequestId, MoqtFetch,
       MoqtFetchCancel, MoqtFetchOk, MoqtRequestsBlocked, MoqtPublish,
-      MoqtPublishOk, MoqtNamespace, MoqtNamespaceDone, MoqtObjectAck>;
+      MoqtNamespace, MoqtNamespaceDone, MoqtObjectAck>;
 
   // The total actual size of the message.
   size_t total_message_size() const { return wire_image_size_; }
@@ -1745,54 +1745,6 @@
   };
 };
 
-class QUICHE_NO_EXPORT PublishOkMessage : public TestMessageBase {
- public:
-  PublishOkMessage() : TestMessageBase() {
-    SetWireImage(raw_packet_, sizeof(raw_packet_));
-    publish_ok_.parameters.delivery_timeout =
-        quic::QuicTimeDelta::FromMilliseconds(10000);
-    publish_ok_.parameters.set_forward(true);
-    publish_ok_.parameters.subscriber_priority = 2;
-    publish_ok_.parameters.group_order = MoqtDeliveryOrder::kAscending;
-    publish_ok_.parameters.subscription_filter =
-        SubscriptionFilter(Location(5, 4), 6);
-  }
-  bool EqualFieldValues(const MessageStructuredData& values) const override {
-    auto cast = std::get<MoqtPublishOk>(values);
-    if (cast.request_id != publish_ok_.request_id) {
-      QUIC_LOG(INFO) << "PUBLISH_OK request_id mismatch";
-      return false;
-    }
-    if (cast.parameters != publish_ok_.parameters) {
-      QUIC_LOG(INFO) << "PUBLISH_OK parameters mismatch";
-      return false;
-    }
-    return true;
-  }
-
-  void ExpandVarints() override { ExpandVarintsImpl("vvv--vvvvvv----vv"); }
-
-  MessageStructuredData structured_data() const override {
-    return TestMessageBase::MessageStructuredData(publish_ok_);
-  }
-
- private:
-  uint8_t raw_packet_[20] = {
-      0x1e, 0x00, 0x11,
-      0x01,                                // request_id = 1
-      0x05,                                // 5 parameters
-      0x02, 0x67, 0x10,                    // delivery_timeout = 10000 ms
-      0x0e, 0x01,                          // forward = true
-      0x10, 0x02,                          // subscriber_priority = 2
-      0x01, 0x04, 0x04, 0x05, 0x04, 0x06,  // subscription filter: (5, 4) to 6
-      0x01, 0x01,                          // group_order = kAscending
-  };
-  MoqtPublishOk publish_ok_ = {
-      /*request_id=*/1,
-      MessageParameters(),  // set in constructor.
-  };
-};
-
 class QUICHE_NO_EXPORT ObjectAckMessage : public TestMessageBase {
  public:
   ObjectAckMessage() : TestMessageBase() {
@@ -1887,8 +1839,6 @@
       return std::make_unique<RequestsBlockedMessage>();
     case MoqtMessageType::kPublish:
       return std::make_unique<PublishMessage>();
-    case MoqtMessageType::kPublishOk:
-      return std::make_unique<PublishOkMessage>();
     case MoqtMessageType::kObjectAck:
       return std::make_unique<ObjectAckMessage>();
     case MoqtMessageType::kClientSetup: