Support serialization and parsing for MoQT draft-05 publisher priority.

PiperOrigin-RevId: 653855555
diff --git a/quiche/quic/moqt/moqt_framer.cc b/quiche/quic/moqt/moqt_framer.cc
index fd9aeef..78c9e3a 100644
--- a/quiche/quic/moqt/moqt_framer.cc
+++ b/quiche/quic/moqt/moqt_framer.cc
@@ -176,7 +176,7 @@
                  ? Serialize(WireVarInt62(message_type),
                              WireVarInt62(message.subscribe_id),
                              WireVarInt62(message.track_alias),
-                             WireVarInt62(message.object_send_order),
+                             WireUint8(message.publisher_priority),
                              WireVarInt62(message.group_id),
                              WireVarInt62(message.object_id),
                              WireVarInt62(*message.payload_length),
@@ -184,7 +184,7 @@
                  : Serialize(WireVarInt62(message_type),
                              WireVarInt62(message.subscribe_id),
                              WireVarInt62(message.track_alias),
-                             WireVarInt62(message.object_send_order),
+                             WireUint8(message.publisher_priority),
                              WireVarInt62(message.group_id),
                              WireVarInt62(message.object_id),
                              WireVarInt62(*message.payload_length));
@@ -194,7 +194,7 @@
                              WireVarInt62(message.subscribe_id),
                              WireVarInt62(message.track_alias),
                              WireVarInt62(message.group_id),
-                             WireVarInt62(message.object_send_order),
+                             WireUint8(message.publisher_priority),
                              WireVarInt62(message.object_id),
                              WireVarInt62(*message.payload_length),
                              WireVarInt62(message.object_status))
@@ -202,7 +202,7 @@
                              WireVarInt62(message.subscribe_id),
                              WireVarInt62(message.track_alias),
                              WireVarInt62(message.group_id),
-                             WireVarInt62(message.object_send_order),
+                             WireUint8(message.publisher_priority),
                              WireVarInt62(message.object_id),
                              WireVarInt62(*message.payload_length));
     case MoqtForwardingPreference::kObject:
@@ -211,7 +211,7 @@
           WireVarInt62(message_type), WireVarInt62(message.subscribe_id),
           WireVarInt62(message.track_alias), WireVarInt62(message.group_id),
           WireVarInt62(message.object_id),
-          WireVarInt62(message.object_send_order),
+          WireUint8(message.publisher_priority),
           WireVarInt62(message.object_status));
   }
 }
@@ -227,7 +227,7 @@
       WireVarInt62(MoqtMessageType::kObjectDatagram),
       WireVarInt62(message.subscribe_id), WireVarInt62(message.track_alias),
       WireVarInt62(message.group_id), WireVarInt62(message.object_id),
-      WireVarInt62(message.object_send_order),
+      WireUint8(message.publisher_priority),
       WireVarInt62(static_cast<uint64_t>(message.object_status)),
       WireBytes(payload));
 }
diff --git a/quiche/quic/moqt/moqt_framer_test.cc b/quiche/quic/moqt/moqt_framer_test.cc
index 916ac1d..6be927d 100644
--- a/quiche/quic/moqt/moqt_framer_test.cc
+++ b/quiche/quic/moqt/moqt_framer_test.cc
@@ -240,7 +240,7 @@
       /*track_alias=*/4,
       /*group_id=*/5,
       /*object_id=*/6,
-      /*object_send_order=*/7,
+      /*publisher_priority=*/7,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kObject,
       /*payload_length=*/std::nullopt,
@@ -268,7 +268,7 @@
       /*track_alias=*/4,
       /*group_id=*/5,
       /*object_id=*/6,
-      /*object_send_order=*/7,
+      /*publisher_priority=*/7,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kObject,
       /*payload_length=*/std::nullopt,
diff --git a/quiche/quic/moqt/moqt_integration_test.cc b/quiche/quic/moqt/moqt_integration_test.cc
index 66df451..80710e5 100644
--- a/quiche/quic/moqt/moqt_integration_test.cc
+++ b/quiche/quic/moqt/moqt_integration_test.cc
@@ -195,7 +195,8 @@
   EXPECT_CALL(server_visitor, OnObjectFragment(_, _, _, _, _, _, _, _))
       .WillOnce([&](const FullTrackName& full_track_name,
                     uint64_t group_sequence, uint64_t object_sequence,
-                    uint64_t /*object_send_order*/, MoqtObjectStatus status,
+                    MoqtPriority /*publisher_priority*/,
+                    MoqtObjectStatus status,
                     MoqtForwardingPreference forwarding_preference,
                     absl::string_view object, bool end_of_message) {
         EXPECT_EQ(full_track_name.track_namespace, "test");
diff --git a/quiche/quic/moqt/moqt_messages.h b/quiche/quic/moqt/moqt_messages.h
index 61015be..5521e36 100644
--- a/quiche/quic/moqt/moqt_messages.h
+++ b/quiche/quic/moqt/moqt_messages.h
@@ -19,6 +19,7 @@
 #include "quiche/quic/core/quic_time.h"
 #include "quiche/quic/core/quic_types.h"
 #include "quiche/quic/core/quic_versions.h"
+#include "quiche/quic/moqt/moqt_priority.h"
 #include "quiche/common/platform/api/quiche_export.h"
 
 namespace moqt {
@@ -223,7 +224,7 @@
   uint64_t track_alias;
   uint64_t group_id;
   uint64_t object_id;
-  uint64_t object_send_order;
+  MoqtPriority publisher_priority;
   MoqtObjectStatus object_status;
   MoqtForwardingPreference forwarding_preference;
   std::optional<uint64_t> payload_length;
diff --git a/quiche/quic/moqt/moqt_outgoing_queue.h b/quiche/quic/moqt/moqt_outgoing_queue.h
index 4daa389..42d6425 100644
--- a/quiche/quic/moqt/moqt_outgoing_queue.h
+++ b/quiche/quic/moqt/moqt_outgoing_queue.h
@@ -16,6 +16,7 @@
 #include "absl/status/statusor.h"
 #include "quiche/quic/moqt/moqt_cached_object.h"
 #include "quiche/quic/moqt/moqt_messages.h"
+#include "quiche/quic/moqt/moqt_priority.h"
 #include "quiche/quic/moqt/moqt_publisher.h"
 #include "quiche/quic/moqt/moqt_session.h"
 #include "quiche/common/platform/api/quiche_mem_slice.h"
@@ -63,6 +64,9 @@
   MoqtForwardingPreference GetForwardingPreference() const override {
     return forwarding_preference_;
   }
+  MoqtPriority GetPublisherPriority() const override {
+    return publisher_priority_;
+  }
 
   bool HasSubscribers() const { return !listeners_.empty(); }
 
@@ -82,6 +86,7 @@
   MoqtSession* session_;  // Not owned.
   FullTrackName track_;
   MoqtForwardingPreference forwarding_preference_;
+  MoqtPriority publisher_priority_ = 128;
   absl::InlinedVector<Group, kMaxQueuedGroups> queue_;
   uint64_t current_group_id_ = -1;
   absl::flat_hash_set<MoqtObjectListener*> listeners_;
diff --git a/quiche/quic/moqt/moqt_parser.cc b/quiche/quic/moqt/moqt_parser.cc
index c026246..a5b180d 100644
--- a/quiche/quic/moqt/moqt_parser.cc
+++ b/quiche/quic/moqt/moqt_parser.cc
@@ -741,7 +741,7 @@
       !reader.ReadVarInt62(&object.object_id)) {
     return 0;
   }
-  if (!reader.ReadVarInt62(&object.object_send_order)) {
+  if (!reader.ReadUInt8(&object.publisher_priority)) {
     return 0;
   }
   uint64_t status = 0;  // Defaults to kNormal.
diff --git a/quiche/quic/moqt/moqt_publisher.h b/quiche/quic/moqt/moqt_publisher.h
index ab163d5..4c66001 100644
--- a/quiche/quic/moqt/moqt_publisher.h
+++ b/quiche/quic/moqt/moqt_publisher.h
@@ -11,6 +11,7 @@
 
 #include "absl/status/statusor.h"
 #include "quiche/quic/moqt/moqt_messages.h"
+#include "quiche/quic/moqt/moqt_priority.h"
 #include "quiche/common/platform/api/quiche_mem_slice.h"
 
 namespace moqt {
@@ -90,6 +91,9 @@
   // This method may only be called if
   // DoesTrackStatusImplyHavingData(GetTrackStatus()) is true.
   virtual MoqtForwardingPreference GetForwardingPreference() const = 0;
+
+  // Returns the current forwarding priority of the track.
+  virtual MoqtPriority GetPublisherPriority() const = 0;
 };
 
 // MoqtPublisher is an interface to a publisher that allows it to publish
diff --git a/quiche/quic/moqt/moqt_session.cc b/quiche/quic/moqt/moqt_session.cc
index 154c8ba..db716fb 100644
--- a/quiche/quic/moqt/moqt_session.cc
+++ b/quiche/quic/moqt/moqt_session.cc
@@ -187,12 +187,12 @@
                     << message.subscribe_id << " for track alias "
                     << message.track_alias << " with sequence "
                     << message.group_id << ":" << message.object_id
-                    << " send_order " << message.object_send_order << " length "
+                    << " priority " << message.publisher_priority << " length "
                     << payload.size();
   auto [full_track_name, visitor] = TrackPropertiesFromAlias(message);
   if (visitor != nullptr) {
     visitor->OnObjectFragment(full_track_name, message.group_id,
-                              message.object_id, message.object_send_order,
+                              message.object_id, message.publisher_priority,
                               message.object_status,
                               message.forwarding_preference, payload, true);
   }
@@ -799,8 +799,8 @@
       << ENDPOINT << "Received OBJECT message on stream "
       << stream_->GetStreamId() << " for subscribe_id " << message.subscribe_id
       << " for track alias " << message.track_alias << " with sequence "
-      << message.group_id << ":" << message.object_id << " send_order "
-      << message.object_send_order << " forwarding_preference "
+      << message.group_id << ":" << message.object_id << " priority "
+      << message.publisher_priority << " forwarding_preference "
       << MoqtForwardingPreferenceToString(message.forwarding_preference)
       << " length " << payload.size() << " explicit length "
       << (message.payload_length.has_value() ? (int)*message.payload_length
@@ -820,7 +820,7 @@
   if (visitor != nullptr) {
     visitor->OnObjectFragment(
         full_track_name, message.group_id, message.object_id,
-        message.object_send_order, message.object_status,
+        message.publisher_priority, message.object_status,
         message.forwarding_preference, payload, end_of_message);
   }
   partial_object_.clear();
@@ -1059,7 +1059,7 @@
   header.track_alias = subscription.track_alias();
   header.group_id = object.sequence.group;
   header.object_id = object.sequence.object;
-  header.object_send_order = 0;  // TODO: remove in draft-05
+  header.publisher_priority = publisher.GetPublisherPriority();
   header.object_status = object.status;
   header.forwarding_preference = forwarding_preference;
   header.payload_length = object.payload.length();
@@ -1136,7 +1136,7 @@
   header.track_alias = track_alias();
   header.group_id = object->sequence.group;
   header.object_id = object->sequence.object;
-  header.object_send_order = 0;  // TODO: remove in draft-05
+  header.publisher_priority = track_publisher_->GetPublisherPriority();
   header.object_status = object->status;
   header.forwarding_preference = MoqtForwardingPreference::kDatagram;
   quiche::QuicheBuffer datagram = session_->framer_.SerializeObjectDatagram(
diff --git a/quiche/quic/moqt/moqt_session_test.cc b/quiche/quic/moqt/moqt_session_test.cc
index 1c8162b..1b5b2e4 100644
--- a/quiche/quic/moqt/moqt_session_test.cc
+++ b/quiche/quic/moqt/moqt_session_test.cc
@@ -21,6 +21,7 @@
 #include "quiche/quic/moqt/moqt_known_track_publisher.h"
 #include "quiche/quic/moqt/moqt_messages.h"
 #include "quiche/quic/moqt/moqt_parser.h"
+#include "quiche/quic/moqt/moqt_priority.h"
 #include "quiche/quic/moqt/moqt_publisher.h"
 #include "quiche/quic/moqt/moqt_track.h"
 #include "quiche/quic/moqt/tools/moqt_mock_visitor.h"
@@ -555,7 +556,7 @@
       /*track_alias=*/2,
       /*group_sequence=*/0,
       /*object_sequence=*/0,
-      /*object_send_order=*/0,
+      /*publisher_priority=*/0,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kGroup,
       /*payload_length=*/8,
@@ -580,7 +581,7 @@
       /*track_alias=*/2,
       /*group_sequence=*/0,
       /*object_sequence=*/0,
-      /*object_send_order=*/0,
+      /*publisher_priority=*/0,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kGroup,
       /*payload_length=*/16,
@@ -615,7 +616,7 @@
       /*track_alias=*/2,
       /*group_sequence=*/0,
       /*object_sequence=*/0,
-      /*object_send_order=*/0,
+      /*publisher_priority=*/0,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kGroup,
       /*payload_length=*/16,
@@ -651,7 +652,7 @@
       /*track_alias=*/2,
       /*group_sequence=*/0,
       /*object_sequence=*/0,
-      /*object_send_order=*/0,
+      /*publisher_priority=*/0,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kGroup,
       /*payload_length=*/8,
@@ -663,7 +664,7 @@
   EXPECT_CALL(visitor_, OnObjectFragment(_, _, _, _, _, _, _, _))
       .WillOnce([&](const FullTrackName& full_track_name,
                     uint64_t group_sequence, uint64_t object_sequence,
-                    uint64_t object_send_order, MoqtObjectStatus status,
+                    MoqtPriority publisher_priority, MoqtObjectStatus status,
                     MoqtForwardingPreference forwarding_preference,
                     absl::string_view payload, bool end_of_message) {
         EXPECT_EQ(full_track_name, ftn);
@@ -707,7 +708,7 @@
       /*track_alias=*/2,
       /*group_sequence=*/0,
       /*object_sequence=*/0,
-      /*object_send_order=*/0,
+      /*publisher_priority=*/0,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kGroup,
       /*payload_length=*/8,
@@ -719,7 +720,7 @@
   EXPECT_CALL(visitor, OnObjectFragment(_, _, _, _, _, _, _, _))
       .WillOnce([&](const FullTrackName& full_track_name,
                     uint64_t group_sequence, uint64_t object_sequence,
-                    uint64_t object_send_order, MoqtObjectStatus status,
+                    MoqtPriority publisher_priority, MoqtObjectStatus status,
                     MoqtForwardingPreference forwarding_preference,
                     absl::string_view payload, bool end_of_message) {
         EXPECT_EQ(full_track_name, ftn);
@@ -767,7 +768,7 @@
       /*track_alias=*/2,
       /*group_sequence=*/0,
       /*object_sequence=*/0,
-      /*object_send_order=*/0,
+      /*publisher_priority=*/0,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kGroup,
       /*payload_length=*/8,
@@ -779,7 +780,7 @@
   EXPECT_CALL(visitor, OnObjectFragment(_, _, _, _, _, _, _, _))
       .WillOnce([&](const FullTrackName& full_track_name,
                     uint64_t group_sequence, uint64_t object_sequence,
-                    uint64_t object_send_order, MoqtObjectStatus status,
+                    MoqtPriority publisher_priority, MoqtObjectStatus status,
                     MoqtForwardingPreference forwarding_preference,
                     absl::string_view payload, bool end_of_message) {
         EXPECT_EQ(full_track_name, ftn);
@@ -818,7 +819,7 @@
       /*track_alias=*/2,
       /*group_sequence=*/0,
       /*object_sequence=*/0,
-      /*object_send_order=*/0,
+      /*publisher_priority=*/0,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kGroup,
       /*payload_length=*/8,
@@ -830,7 +831,7 @@
   EXPECT_CALL(visitor, OnObjectFragment(_, _, _, _, _, _, _, _))
       .WillOnce([&](const FullTrackName& full_track_name,
                     uint64_t group_sequence, uint64_t object_sequence,
-                    uint64_t object_send_order, MoqtObjectStatus status,
+                    MoqtPriority publisher_priority, MoqtObjectStatus status,
                     MoqtForwardingPreference forwarding_preference,
                     absl::string_view payload, bool end_of_message) {
         EXPECT_EQ(full_track_name, ftn);
@@ -1153,7 +1154,7 @@
       /*track_alias=*/2,
       /*group_sequence=*/0,
       /*object_sequence=*/0,
-      /*object_send_order=*/0,
+      /*publisher_priority=*/0,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kDatagram,
       /*payload_length=*/8,
@@ -1162,7 +1163,7 @@
                      0x65, 0x61, 0x64, 0x62, 0x65, 0x65, 0x66};
   EXPECT_CALL(visitor_,
               OnObjectFragment(ftn, object.group_id, object.object_id,
-                               object.object_send_order, object.object_status,
+                               object.publisher_priority, object.object_status,
                                object.forwarding_preference, payload, true))
       .Times(1);
   session_.OnDatagramReceived(absl::string_view(datagram, sizeof(datagram)));
@@ -1178,7 +1179,7 @@
       /*track_alias=*/2,
       /*group_sequence=*/0,
       /*object_sequence=*/0,
-      /*object_send_order=*/0,
+      /*publisher_priority=*/0,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kGroup,
       /*payload_length=*/8,
diff --git a/quiche/quic/moqt/moqt_track.h b/quiche/quic/moqt/moqt_track.h
index 3fefee5..37636b7 100644
--- a/quiche/quic/moqt/moqt_track.h
+++ b/quiche/quic/moqt/moqt_track.h
@@ -10,6 +10,7 @@
 
 #include "absl/strings/string_view.h"
 #include "quiche/quic/moqt/moqt_messages.h"
+#include "quiche/quic/moqt/moqt_priority.h"
 
 namespace moqt {
 
@@ -27,7 +28,7 @@
         std::optional<absl::string_view> error_reason_phrase) = 0;
     virtual void OnObjectFragment(
         const FullTrackName& full_track_name, uint64_t group_sequence,
-        uint64_t object_sequence, uint64_t object_send_order,
+        uint64_t object_sequence, MoqtPriority publisher_priority,
         MoqtObjectStatus object_status,
         MoqtForwardingPreference forwarding_preference,
         absl::string_view object, bool end_of_message) = 0;
diff --git a/quiche/quic/moqt/test_tools/moqt_test_message.h b/quiche/quic/moqt/test_tools/moqt_test_message.h
index 2c2c323..c4f4976 100644
--- a/quiche/quic/moqt/test_tools/moqt_test_message.h
+++ b/quiche/quic/moqt/test_tools/moqt_test_message.h
@@ -135,8 +135,8 @@
       QUIC_LOG(INFO) << "OBJECT Object Sequence mismatch";
       return false;
     }
-    if (cast.object_send_order != object_.object_send_order) {
-      QUIC_LOG(INFO) << "OBJECT Object Send Order mismatch";
+    if (cast.publisher_priority != object_.publisher_priority) {
+      QUIC_LOG(INFO) << "OBJECT Publisher Priority mismatch";
       return false;
     }
     if (cast.object_status != object_.object_status) {
@@ -164,7 +164,7 @@
       /*track_alias=*/4,
       /*group_id*/ 5,
       /*object_id=*/6,
-      /*object_send_order=*/7,
+      /*publisher_priority=*/7,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kTrack,
       /*payload_length=*/std::nullopt,
@@ -178,9 +178,7 @@
     object_.forwarding_preference = MoqtForwardingPreference::kObject;
   }
 
-  void ExpandVarints() override {
-    ExpandVarintsImpl("vvvvvvv---");  // first six fields are varints
-  }
+  void ExpandVarints() override { ExpandVarintsImpl("vvvvv-v---"); }
 
  private:
   uint8_t raw_packet_[10] = {
@@ -196,9 +194,7 @@
     object_.forwarding_preference = MoqtForwardingPreference::kDatagram;
   }
 
-  void ExpandVarints() override {
-    ExpandVarintsImpl("vvvvvvv---");  // first six fields are varints
-  }
+  void ExpandVarints() override { ExpandVarintsImpl("vvvvv-v---"); }
 
  private:
   uint8_t raw_packet_[10] = {
@@ -218,9 +214,7 @@
     object_.payload_length = 3;
   }
 
-  void ExpandVarints() override {
-    ExpandVarintsImpl("--vvvvvv");  // six one-byte varints
-  }
+  void ExpandVarints() override { ExpandVarintsImpl("--vv-vvv"); }
 
  private:
   // Some tests check that a FIN sent at the halfway point of a message results
@@ -265,9 +259,7 @@
     object_.payload_length = 3;
   }
 
-  void ExpandVarints() override {
-    ExpandVarintsImpl("--vvvvvv");  // six one-byte varints
-  }
+  void ExpandVarints() override { ExpandVarintsImpl("--vvv-vv"); }
 
  private:
   uint8_t raw_packet_[11] = {
diff --git a/quiche/quic/moqt/tools/chat_client_bin.cc b/quiche/quic/moqt/tools/chat_client_bin.cc
index a344a7d..5792b87 100644
--- a/quiche/quic/moqt/tools/chat_client_bin.cc
+++ b/quiche/quic/moqt/tools/chat_client_bin.cc
@@ -27,6 +27,7 @@
 #include "quiche/quic/core/quic_time.h"
 #include "quiche/quic/moqt/moqt_messages.h"
 #include "quiche/quic/moqt/moqt_outgoing_queue.h"
+#include "quiche/quic/moqt/moqt_priority.h"
 #include "quiche/quic/moqt/moqt_session.h"
 #include "quiche/quic/moqt/moqt_track.h"
 #include "quiche/quic/moqt/tools/moqt_client.h"
@@ -155,7 +156,7 @@
 
     void OnObjectFragment(
         const moqt::FullTrackName& full_track_name, uint64_t group_sequence,
-        uint64_t object_sequence, uint64_t /*object_send_order*/,
+        uint64_t object_sequence, moqt::MoqtPriority /*publisher_priority*/,
         moqt::MoqtObjectStatus /*status*/,
         moqt::MoqtForwardingPreference /*forwarding_preference*/,
         absl::string_view object, bool end_of_message) override {
diff --git a/quiche/quic/moqt/tools/moqt_ingestion_server_bin.cc b/quiche/quic/moqt/tools/moqt_ingestion_server_bin.cc
index eec2b5b..01d010d 100644
--- a/quiche/quic/moqt/tools/moqt_ingestion_server_bin.cc
+++ b/quiche/quic/moqt/tools/moqt_ingestion_server_bin.cc
@@ -29,6 +29,7 @@
 #include "absl/time/clock.h"
 #include "absl/time/time.h"
 #include "quiche/quic/moqt/moqt_messages.h"
+#include "quiche/quic/moqt/moqt_priority.h"
 #include "quiche/quic/moqt/moqt_session.h"
 #include "quiche/quic/moqt/moqt_track.h"
 #include "quiche/quic/moqt/tools/moqt_server.h"
@@ -166,7 +167,7 @@
 
     void OnObjectFragment(const FullTrackName& full_track_name,
                           uint64_t group_sequence, uint64_t object_sequence,
-                          uint64_t /*object_send_order*/,
+                          MoqtPriority /*publisher_priority*/,
                           MoqtObjectStatus /*status*/,
                           MoqtForwardingPreference /*forwarding_preference*/,
                           absl::string_view object,
diff --git a/quiche/quic/moqt/tools/moqt_mock_visitor.h b/quiche/quic/moqt/tools/moqt_mock_visitor.h
index 3dc5741..5ab728a 100644
--- a/quiche/quic/moqt/tools/moqt_mock_visitor.h
+++ b/quiche/quic/moqt/tools/moqt_mock_visitor.h
@@ -13,6 +13,7 @@
 #include "absl/status/statusor.h"
 #include "absl/strings/string_view.h"
 #include "quiche/quic/moqt/moqt_messages.h"
+#include "quiche/quic/moqt/moqt_priority.h"
 #include "quiche/quic/moqt/moqt_publisher.h"
 #include "quiche/quic/moqt/moqt_session.h"
 #include "quiche/quic/moqt/moqt_track.h"
@@ -60,6 +61,7 @@
   MOCK_METHOD(FullSequence, GetLargestSequence, (), (const, override));
   MOCK_METHOD(MoqtForwardingPreference, GetForwardingPreference, (),
               (const, override));
+  MOCK_METHOD(MoqtPriority, GetPublisherPriority, (), (const, override));
 
  private:
   FullTrackName track_name_;
@@ -73,7 +75,7 @@
               (override));
   MOCK_METHOD(void, OnObjectFragment,
               (const FullTrackName& full_track_name, uint64_t group_sequence,
-               uint64_t object_sequence, uint64_t object_send_order,
+               uint64_t object_sequence, MoqtPriority publisher_priority,
                MoqtObjectStatus status,
                MoqtForwardingPreference forwarding_preference,
                absl::string_view object, bool end_of_message),
diff --git a/quiche/quic/moqt/tools/moqt_simulator_bin.cc b/quiche/quic/moqt/tools/moqt_simulator_bin.cc
index 6aa5d01..7a2eb30 100644
--- a/quiche/quic/moqt/tools/moqt_simulator_bin.cc
+++ b/quiche/quic/moqt/tools/moqt_simulator_bin.cc
@@ -26,6 +26,7 @@
 #include "quiche/quic/moqt/moqt_known_track_publisher.h"
 #include "quiche/quic/moqt/moqt_messages.h"
 #include "quiche/quic/moqt/moqt_outgoing_queue.h"
+#include "quiche/quic/moqt/moqt_priority.h"
 #include "quiche/quic/moqt/moqt_session.h"
 #include "quiche/quic/moqt/moqt_track.h"
 #include "quiche/quic/moqt/test_tools/moqt_simulator_harness.h"
@@ -157,7 +158,7 @@
 
   void OnObjectFragment(const FullTrackName& full_track_name,
                         uint64_t group_sequence, uint64_t object_sequence,
-                        uint64_t /*object_send_order*/,
+                        MoqtPriority /*publisher_priority*/,
                         MoqtObjectStatus /*status*/,
                         MoqtForwardingPreference /*forwarding_preference*/,
                         absl::string_view object,