mirror of
https://github.com/servo/servo.git
synced 2025-06-25 17:44:33 +01:00
159 lines
4.9 KiB
HTML
159 lines
4.9 KiB
HTML
<!doctype html>
|
|
<meta charset=utf-8>
|
|
<title>RTCTrackEvent constructor</title>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script>
|
|
'use strict';
|
|
|
|
// Test is based on the following editor draft:
|
|
// https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html
|
|
|
|
/*
|
|
5.7. RTCTrackEvent
|
|
[Constructor(DOMString type, RTCTrackEventInit eventInitDict)]
|
|
interface RTCTrackEvent : Event {
|
|
readonly attribute RTCRtpReceiver receiver;
|
|
readonly attribute MediaStreamTrack track;
|
|
[SameObject]
|
|
readonly attribute FrozenArray<MediaStream> streams;
|
|
readonly attribute RTCRtpTransceiver transceiver;
|
|
};
|
|
|
|
dictionary RTCTrackEventInit : EventInit {
|
|
required RTCRtpReceiver receiver;
|
|
required MediaStreamTrack track;
|
|
sequence<MediaStream> streams = [];
|
|
required RTCRtpTransceiver transceiver;
|
|
};
|
|
*/
|
|
|
|
test(t => {
|
|
const pc = new RTCPeerConnection();
|
|
const transceiver = pc.addTransceiver('audio');
|
|
const { receiver } = transceiver;
|
|
const { track } = receiver;
|
|
|
|
const trackEvent = new RTCTrackEvent('track', {
|
|
receiver, track, transceiver
|
|
});
|
|
|
|
assert_equals(trackEvent.receiver, receiver);
|
|
assert_equals(trackEvent.track, track);
|
|
assert_array_equals(trackEvent.streams, []);
|
|
assert_equals(trackEvent.streams, trackEvent.streams, '[SameObject]');
|
|
assert_equals(trackEvent.transceiver, transceiver);
|
|
|
|
assert_equals(trackEvent.type, 'track');
|
|
assert_false(trackEvent.bubbles);
|
|
assert_false(trackEvent.cancelable);
|
|
|
|
}, `new RTCTrackEvent() with valid receiver, track, transceiver should succeed`);
|
|
|
|
test(t => {
|
|
const pc = new RTCPeerConnection();
|
|
const transceiver = pc.addTransceiver('audio');
|
|
const { receiver } = transceiver;
|
|
const { track } = receiver;
|
|
|
|
const stream = new MediaStream([track]);
|
|
|
|
const trackEvent = new RTCTrackEvent('track', {
|
|
receiver, track, transceiver,
|
|
streams: [stream]
|
|
});
|
|
|
|
assert_equals(trackEvent.receiver, receiver);
|
|
assert_equals(trackEvent.track, track);
|
|
assert_array_equals(trackEvent.streams, [stream]);
|
|
assert_equals(trackEvent.transceiver, transceiver);
|
|
|
|
}, `new RTCTrackEvent() with valid receiver, track, streams, transceiver should succeed`);
|
|
|
|
test(t => {
|
|
const pc = new RTCPeerConnection();
|
|
const transceiver = pc.addTransceiver('audio');
|
|
const { receiver } = transceiver;
|
|
const { track } = receiver;
|
|
|
|
const stream1 = new MediaStream([track]);
|
|
const stream2 = new MediaStream([track]);
|
|
|
|
const trackEvent = new RTCTrackEvent('track', {
|
|
receiver, track, transceiver,
|
|
streams: [stream1, stream2]
|
|
});
|
|
|
|
assert_equals(trackEvent.receiver, receiver);
|
|
assert_equals(trackEvent.track, track);
|
|
assert_array_equals(trackEvent.streams, [stream1, stream2]);
|
|
assert_equals(trackEvent.transceiver, transceiver);
|
|
|
|
}, `new RTCTrackEvent() with valid receiver, track, multiple streams, transceiver should succeed`);
|
|
|
|
test(t => {
|
|
const pc = new RTCPeerConnection();
|
|
const transceiver = pc.addTransceiver('audio');
|
|
const receiver = pc.addTransceiver('audio').receiver;
|
|
const track = pc.addTransceiver('audio').receiver.track;
|
|
|
|
const stream = new MediaStream();
|
|
|
|
const trackEvent = new RTCTrackEvent('track', {
|
|
receiver, track, transceiver,
|
|
streams: [stream]
|
|
});
|
|
|
|
assert_equals(trackEvent.receiver, receiver);
|
|
assert_equals(trackEvent.track, track);
|
|
assert_array_equals(trackEvent.streams, [stream]);
|
|
assert_equals(trackEvent.transceiver, transceiver);
|
|
|
|
}, `new RTCTrackEvent() with unrelated receiver, track, streams, transceiver should succeed`);
|
|
|
|
test(t => {
|
|
const pc = new RTCPeerConnection();
|
|
const transceiver = pc.addTransceiver('audio');
|
|
const { receiver } = transceiver;
|
|
const { track } = receiver;
|
|
|
|
assert_throws_js(TypeError, () =>
|
|
new RTCTrackEvent('track', {
|
|
receiver, track
|
|
}));
|
|
|
|
}, `new RTCTrackEvent() with no transceiver should throw TypeError`);
|
|
|
|
test(t => {
|
|
const pc = new RTCPeerConnection();
|
|
const transceiver = pc.addTransceiver('audio');
|
|
const { receiver } = transceiver;
|
|
|
|
assert_throws_js(TypeError, () =>
|
|
new RTCTrackEvent('track', {
|
|
receiver, transceiver
|
|
}));
|
|
|
|
}, `new RTCTrackEvent() with no track should throw TypeError`);
|
|
|
|
test(t => {
|
|
const pc = new RTCPeerConnection();
|
|
const transceiver = pc.addTransceiver('audio');
|
|
const { receiver } = transceiver;
|
|
const { track } = receiver;
|
|
|
|
assert_throws_js(TypeError, () =>
|
|
new RTCTrackEvent('track', {
|
|
track, transceiver
|
|
}));
|
|
|
|
}, `new RTCTrackEvent() with no receiver should throw TypeError`);
|
|
|
|
/*
|
|
Coverage Report
|
|
Interface tests are counted as 1 trivial test
|
|
|
|
Tested 1
|
|
Total 1
|
|
*/
|
|
</script>
|