xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/quic/moqt/tools/moqt_mock_visitor.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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