MockRealtimeMediaSource.h [plain text]
#pragma once
#if ENABLE(MEDIA_STREAM)
#include "CaptureDevice.h"
#include "MockMediaDevice.h"
#include "RealtimeMediaSource.h"
namespace WebCore {
class MockRealtimeMediaSource : public RealtimeMediaSource {
public:
virtual ~MockRealtimeMediaSource() = default;
static void setDevices(Vector<MockMediaDevice>&&);
static void addDevice(const MockMediaDevice&);
static void removeDevice(const String& persistentId);
WEBCORE_EXPORT static void resetDevices();
static Vector<CaptureDevice>& audioDevices();
static Vector<CaptureDevice>& videoDevices();
static Vector<CaptureDevice>& displayDevices();
static std::optional<CaptureDevice> captureDeviceWithPersistentID(CaptureDevice::DeviceType, const String&);
protected:
MockRealtimeMediaSource(const String& id, Type, const String& name);
static void createCaptureDevice(const MockMediaDevice&);
virtual void updateSettings(RealtimeMediaSourceSettings&) = 0;
virtual void initializeCapabilities(RealtimeMediaSourceCapabilities&) = 0;
virtual void initializeSupportedConstraints(RealtimeMediaSourceSupportedConstraints&) = 0;
const RealtimeMediaSourceCapabilities& capabilities() const override;
const RealtimeMediaSourceSettings& settings() const override;
RealtimeMediaSourceSupportedConstraints& supportedConstraints();
const MockMediaDevice& device() const { return m_device; }
MockMediaDevice m_device;
private:
void initializeCapabilities();
void initializeSettings();
RealtimeMediaSourceSettings m_currentSettings;
RealtimeMediaSourceSupportedConstraints m_supportedConstraints;
std::unique_ptr<RealtimeMediaSourceCapabilities> m_capabilities;
};
}
#endif // ENABLE(MEDIA_STREAM)