Revision 98932eb7420923b691dacea405b3bb4bb105016a authored by Emilio Cobos Álvarez on 10 April 2018, 20:19:22 UTC, committed by moz-wptsync-bot on 10 April 2018, 20:19:22 UTC
bugzilla-url: https://bugzilla.mozilla.org/show_bug.cgi?id=1452640 gecko-commit: 00ac14e011212f55d75afd6043ac8e41636dec5f gecko-integration-branch: central gecko-reviewers: xidorn
1 parent e504871
RTCTrackEvent-constructor.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(new 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(new 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(new 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>
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...