xref: /aosp_15_r20/external/webrtc/api/test/mock_media_stream_interface.h (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1 /*
2  *  Copyright 2020 The WebRTC project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #ifndef API_TEST_MOCK_MEDIA_STREAM_INTERFACE_H_
12 #define API_TEST_MOCK_MEDIA_STREAM_INTERFACE_H_
13 
14 #include <string>
15 
16 #include "api/media_stream_interface.h"
17 #include "test/gmock.h"
18 
19 namespace webrtc {
20 
21 class MockAudioSource : public rtc::RefCountedObject<AudioSourceInterface> {
22  public:
Create()23   static rtc::scoped_refptr<MockAudioSource> Create() {
24     return rtc::scoped_refptr<MockAudioSource>(new MockAudioSource());
25   }
26 
27   MOCK_METHOD(void,
28               RegisterObserver,
29               (ObserverInterface * observer),
30               (override));
31   MOCK_METHOD(void,
32               UnregisterObserver,
33               (ObserverInterface * observer),
34               (override));
35   MOCK_METHOD(SourceState, state, (), (const, override));
36   MOCK_METHOD(bool, remote, (), (const, override));
37   MOCK_METHOD(void, SetVolume, (double volume), (override));
38   MOCK_METHOD(void,
39               RegisterAudioObserver,
40               (AudioObserver * observer),
41               (override));
42   MOCK_METHOD(void,
43               UnregisterAudioObserver,
44               (AudioObserver * observer),
45               (override));
46   MOCK_METHOD(void, AddSink, (AudioTrackSinkInterface * sink), (override));
47   MOCK_METHOD(void, RemoveSink, (AudioTrackSinkInterface * sink), (override));
48   MOCK_METHOD(const cricket::AudioOptions, options, (), (const, override));
49 
50  private:
51   MockAudioSource() = default;
52 };
53 
54 class MockAudioTrack : public rtc::RefCountedObject<AudioTrackInterface> {
55  public:
Create()56   static rtc::scoped_refptr<MockAudioTrack> Create() {
57     return rtc::scoped_refptr<MockAudioTrack>(new MockAudioTrack());
58   }
59 
60   MOCK_METHOD(void,
61               RegisterObserver,
62               (ObserverInterface * observer),
63               (override));
64   MOCK_METHOD(void,
65               UnregisterObserver,
66               (ObserverInterface * observer),
67               (override));
68   MOCK_METHOD(std::string, kind, (), (const, override));
69   MOCK_METHOD(std::string, id, (), (const, override));
70   MOCK_METHOD(bool, enabled, (), (const, override));
71   MOCK_METHOD(bool, set_enabled, (bool enable), (override));
72   MOCK_METHOD(TrackState, state, (), (const, override));
73   MOCK_METHOD(AudioSourceInterface*, GetSource, (), (const, override));
74   MOCK_METHOD(void, AddSink, (AudioTrackSinkInterface * sink), (override));
75   MOCK_METHOD(void, RemoveSink, (AudioTrackSinkInterface * sink), (override));
76   MOCK_METHOD(bool, GetSignalLevel, (int* level), (override));
77   MOCK_METHOD(rtc::scoped_refptr<AudioProcessorInterface>,
78               GetAudioProcessor,
79               (),
80               (override));
81 
82  private:
83   MockAudioTrack() = default;
84 };
85 
86 class MockMediaStream : public MediaStreamInterface {
87  public:
88   MOCK_METHOD(std::string, id, (), (const override));
89   MOCK_METHOD(AudioTrackVector, GetAudioTracks, (), (override));
90   MOCK_METHOD(VideoTrackVector, GetVideoTracks, (), (override));
91   MOCK_METHOD(rtc::scoped_refptr<AudioTrackInterface>,
92               FindAudioTrack,
93               (const std::string& track_id),
94               (override));
95   MOCK_METHOD(rtc::scoped_refptr<VideoTrackInterface>,
96               FindVideoTrack,
97               (const std::string& track_id),
98               (override));
99   MOCK_METHOD(bool,
100               AddTrack,
101               (rtc::scoped_refptr<AudioTrackInterface> track),
102               (override));
103   MOCK_METHOD(bool,
104               AddTrack,
105               (rtc::scoped_refptr<VideoTrackInterface> track),
106               (override));
107   MOCK_METHOD(bool,
108               RemoveTrack,
109               (rtc::scoped_refptr<AudioTrackInterface> track),
110               (override));
111   MOCK_METHOD(bool,
112               RemoveTrack,
113               (rtc::scoped_refptr<VideoTrackInterface> track),
114               (override));
115   // Old AddTrack/RemoveTrack methods - slated for removal
116   MOCK_METHOD(bool, AddTrack, (AudioTrackInterface * track), (override));
117   MOCK_METHOD(bool, AddTrack, (VideoTrackInterface * track), (override));
118   MOCK_METHOD(bool, RemoveTrack, (AudioTrackInterface * track), (override));
119   MOCK_METHOD(bool, RemoveTrack, (VideoTrackInterface * track), (override));
120   MOCK_METHOD(void,
121               RegisterObserver,
122               (ObserverInterface * observer),
123               (override));
124   MOCK_METHOD(void,
125               UnregisterObserver,
126               (ObserverInterface * observer),
127               (override));
128 };
129 
130 static_assert(!std::is_abstract_v<rtc::RefCountedObject<MockMediaStream>>, "");
131 
132 }  // namespace webrtc
133 
134 #endif  // API_TEST_MOCK_MEDIA_STREAM_INTERFACE_H_
135