1 // Copyright 2023 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef QUICHE_QUIC_MOQT_TOOLS_MOQT_MOCK_VISITOR_H_ 6 #define QUICHE_QUIC_MOQT_TOOLS_MOQT_MOCK_VISITOR_H_ 7 8 #include <cstdint> 9 #include <optional> 10 11 #include "absl/strings/string_view.h" 12 #include "quiche/quic/moqt/moqt_messages.h" 13 #include "quiche/quic/moqt/moqt_session.h" 14 #include "quiche/quic/moqt/moqt_subscribe_windows.h" 15 #include "quiche/quic/moqt/moqt_track.h" 16 #include "quiche/quic/platform/api/quic_test.h" 17 18 namespace moqt::test { 19 20 struct MockSessionCallbacks { 21 testing::MockFunction<void()> session_established_callback; 22 testing::MockFunction<void(absl::string_view)> session_terminated_callback; 23 testing::MockFunction<void()> session_deleted_callback; 24 testing::MockFunction<std::optional<MoqtAnnounceErrorReason>( 25 absl::string_view)> 26 incoming_announce_callback; 27 MockSessionCallbacksMockSessionCallbacks28 MockSessionCallbacks() { 29 ON_CALL(incoming_announce_callback, Call(testing::_)) 30 .WillByDefault(DefaultIncomingAnnounceCallback); 31 } 32 AsSessionCallbacksMockSessionCallbacks33 MoqtSessionCallbacks AsSessionCallbacks() { 34 return MoqtSessionCallbacks{session_established_callback.AsStdFunction(), 35 session_terminated_callback.AsStdFunction(), 36 session_deleted_callback.AsStdFunction(), 37 incoming_announce_callback.AsStdFunction()}; 38 } 39 }; 40 41 class MockLocalTrackVisitor : public LocalTrack::Visitor { 42 public: 43 MOCK_METHOD(std::optional<absl::string_view>, OnSubscribeForPast, 44 (const SubscribeWindow& window), (override)); 45 }; 46 47 class MockRemoteTrackVisitor : public RemoteTrack::Visitor { 48 public: 49 MOCK_METHOD(void, OnReply, 50 (const FullTrackName& full_track_name, 51 std::optional<absl::string_view> error_reason_phrase), 52 (override)); 53 MOCK_METHOD(void, OnObjectFragment, 54 (const FullTrackName& full_track_name, uint64_t group_sequence, 55 uint64_t object_sequence, uint64_t object_send_order, 56 MoqtForwardingPreference forwarding_preference, 57 absl::string_view object, bool end_of_message), 58 (override)); 59 }; 60 61 } // namespace moqt::test 62 63 #endif // QUICHE_QUIC_MOQT_TOOLS_MOQT_MOCK_VISITOR_H_ 64