MockMediaEndpoint.h [plain text]
#pragma once
#if ENABLE(WEB_RTC)
#include "MediaEndpoint.h"
#include "RTCIceTransportState.h"
#include "Timer.h"
namespace WebCore {
class MockMediaEndpoint final : public MediaEndpoint {
public:
WEBCORE_EXPORT static std::unique_ptr<MediaEndpoint> create(MediaEndpointClient&);
MockMediaEndpoint(MediaEndpointClient&);
~MockMediaEndpoint();
void setConfiguration(MediaEndpointConfiguration&&) final { };
void generateDtlsInfo() final;
MediaPayloadVector getDefaultAudioPayloads() final;
MediaPayloadVector getDefaultVideoPayloads() final;
MediaPayloadVector filterPayloads(const MediaPayloadVector& remotePayloads, const MediaPayloadVector& defaultPayloads) final;
UpdateResult updateReceiveConfiguration(MediaEndpointSessionConfiguration*, bool isInitiator) final;
UpdateResult updateSendConfiguration(MediaEndpointSessionConfiguration*, const RealtimeMediaSourceMap&, bool isInitiator) final;
void addRemoteCandidate(const IceCandidate&, const String& mid, const String& ufrag, const String& password) final;
Ref<RealtimeMediaSource> createMutedRemoteSource(const String& mid, RealtimeMediaSource::Type) final;
void replaceSendSource(RealtimeMediaSource&, const String& mid) final;
void replaceMutedRemoteSourceMid(const String& oldMid, const String& newMid) final;
void stop() final;
void emulatePlatformEvent(const String& action) final;
private:
void updateConfigurationMids(const MediaEndpointSessionConfiguration&);
std::unique_ptr<RTCDataChannelHandler> createDataChannelHandler(const String&, const RTCDataChannelInit&) final;
void dispatchFakeIceCandidates();
void iceCandidateTimerFired();
void stepIceTransportStates();
void iceTransportTimerFired();
void unmuteRemoteSourcesByMid();
void unmuteTimerFired();
MediaEndpointClient& m_client;
Vector<String> m_mids;
HashMap<String, RefPtr<RealtimeMediaSource>> m_mutedRemoteSources;
Vector<IceCandidate> m_fakeIceCandidates;
Timer m_iceCandidateTimer;
Vector<std::pair<String, RTCIceTransportState>> m_iceTransportStateChanges;
Timer m_iceTransportTimer;
Vector<String> m_midsOfSourcesToUnmute;
Timer m_unmuteTimer;
WeakPtrFactory<MockMediaEndpoint> m_weakPtrFactory;
};
}
#endif // ENABLE(WEB_RTC)