#ifndef RTCTrackEvent_h
#define RTCTrackEvent_h
#if ENABLE(WEB_RTC)
#include "Event.h"
#include <wtf/text/AtomicString.h>
namespace WebCore {
class MediaStream;
class MediaStreamTrack;
class RTCRtpReceiver;
class RTCRtpTransceiver;
typedef Vector<RefPtr<MediaStream>> MediaStreamArray;
struct RTCTrackEventInit : public EventInit {
RefPtr<RTCRtpReceiver> receiver;
RefPtr<MediaStreamTrack> track;
MediaStreamArray streams;
RefPtr<RTCRtpTransceiver> transceiver;
};
class RTCTrackEvent : public Event {
public:
static Ref<RTCTrackEvent> create(const AtomicString& type, bool canBubble, bool cancelable, RefPtr<RTCRtpReceiver>&&, RefPtr<MediaStreamTrack>&&, MediaStreamArray&&, RefPtr<RTCRtpTransceiver>&&);
static Ref<RTCTrackEvent> createForBindings(const AtomicString& type, const RTCTrackEventInit&);
RTCRtpReceiver* receiver() const { return m_receiver.get(); }
MediaStreamTrack* track() const { return m_track.get(); }
const MediaStreamArray& streams() const { return m_streams; }
RTCRtpTransceiver* transceiver() const { return m_transceiver.get(); }
virtual EventInterface eventInterface() const { return RTCTrackEventInterfaceType; }
private:
RTCTrackEvent(const AtomicString& type, bool canBubble, bool cancelable, RefPtr<RTCRtpReceiver>&&, RefPtr<MediaStreamTrack>&&, MediaStreamArray&&, RefPtr<RTCRtpTransceiver>&&);
RTCTrackEvent(const AtomicString& type, const RTCTrackEventInit&);
RefPtr<RTCRtpReceiver> m_receiver;
RefPtr<MediaStreamTrack> m_track;
MediaStreamArray m_streams;
RefPtr<RTCRtpTransceiver> m_transceiver;
};
}
#endif // ENABLE(WEB_RTC)
#endif // RTCTrackEvent_h