Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

webrtc wpt: add cleanup to insertable streams worker #26290

Merged
merged 1 commit into from Oct 26, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -162,56 +162,6 @@
return ontrackPromise;
}, 'RTCRtpReceiver.createEncodedStream() throws if not requested in PC configuration');

promise_test(async t => {
const caller = new RTCPeerConnection({encodedInsertableStreams:true});
t.add_cleanup(() => caller.close());
const callee = new RTCPeerConnection();
t.add_cleanup(() => callee.close());

const stream = await navigator.mediaDevices.getUserMedia({audio:true});
const track = stream.getTracks()[0];
t.add_cleanup(() => track.stop());

const sender = caller.addTrack(track)
const senderStreams = sender.createEncodedStreams();

const senderWorker = new Worker('RTCPeerConnection-sender-worker-single-frame.js')
senderWorker.postMessage(
{readableStream: senderStreams.readable},
[senderStreams.readable]);

let expectedFrameData = null;
let verifiedFrameData = false;
let numVerifiedFrames = 0;
const onmessagePromise = new Promise(resolve => {
senderWorker.onmessage = t.step_func(message => {
if (!(message.data instanceof RTCEncodedAudioFrame)) {
// This is the first message sent from the Worker to the test.
// It contains an object (not an RTCEncodedAudioFrame) with the same
// fields as the RTCEncodedAudioFrame to be sent in follow-up messages.
// These serve as expected values to validate that the
// RTCEncodedAudioFrame is sent correctly back to the test in the next
// message.
expectedFrameData = message.data;
} else {
// This is the frame sent by the Worker after reading it from the
// readable stream. The Worker sends it twice after sending the
// verification message.
assert_equals(message.data.type, expectedFrameData.type);
assert_equals(message.data.timestamp, expectedFrameData.timestamp);
assert_true(areArrayBuffersEqual(message.data.data, expectedFrameData.data));
if (++numVerifiedFrames == 2)
resolve();
}
});
});

exchangeIceCandidates(caller, callee);
await exchangeOfferAnswer(caller, callee);

return onmessagePromise;
}, 'RTCRtpSender readable stream transferred to a Worker and the Worker sends an RTCEncodedAudioFrame back');

promise_test(async t => {
const caller = new RTCPeerConnection({encodedInsertableStreams:true});
t.add_cleanup(() => caller.close());
Expand Down
Expand Up @@ -9,6 +9,57 @@
</head>
<body>
<script>
promise_test(async t => {
const caller = new RTCPeerConnection({encodedInsertableStreams:true});
t.add_cleanup(() => caller.close());
const callee = new RTCPeerConnection();
t.add_cleanup(() => callee.close());

const stream = await navigator.mediaDevices.getUserMedia({audio:true});
const track = stream.getTracks()[0];
t.add_cleanup(() => track.stop());

const sender = caller.addTrack(track)
const senderStreams = sender.createEncodedStreams();

const senderWorker = new Worker('RTCPeerConnection-sender-worker-single-frame.js')
t.add_cleanup(() => senderWorker.terminate());
senderWorker.postMessage(
{readableStream: senderStreams.readable},
[senderStreams.readable]);

let expectedFrameData = null;
let verifiedFrameData = false;
let numVerifiedFrames = 0;
const onmessagePromise = new Promise(resolve => {
senderWorker.onmessage = t.step_func(message => {
if (!(message.data instanceof RTCEncodedAudioFrame)) {
// This is the first message sent from the Worker to the test.
// It contains an object (not an RTCEncodedAudioFrame) with the same
// fields as the RTCEncodedAudioFrame to be sent in follow-up messages.
// These serve as expected values to validate that the
// RTCEncodedAudioFrame is sent correctly back to the test in the next
// message.
expectedFrameData = message.data;
} else {
// This is the frame sent by the Worker after reading it from the
// readable stream. The Worker sends it twice after sending the
// verification message.
assert_equals(message.data.type, expectedFrameData.type);
assert_equals(message.data.timestamp, expectedFrameData.timestamp);
assert_true(areArrayBuffersEqual(message.data.data, expectedFrameData.data));
if (++numVerifiedFrames == 2)
resolve();
}
});
});

exchangeIceCandidates(caller, callee);
await exchangeOfferAnswer(caller, callee);

return onmessagePromise;
}, 'RTCRtpSender readable stream transferred to a Worker and the Worker sends an RTCEncodedAudioFrame back');

promise_test(async t => {
const caller = new RTCPeerConnection({encodedInsertableStreams:true});
t.add_cleanup(() => caller.close());
Expand All @@ -23,6 +74,7 @@
const senderStreams = videoSender.createEncodedStreams();

const senderWorker = new Worker('RTCPeerConnection-sender-worker-single-frame.js')
t.add_cleanup(() => senderWorker.terminate());
senderWorker.postMessage(
{readableStream: senderStreams.readable},
[senderStreams.readable]);
Expand Down