
This version supports: * Firing the rtctransform event on the Worker * Passing the options parameter to the event in the worker The rest of the features will be added in follow-up patches. Bug: 354881878 Change-Id: I33c50b063e1080301b1b3e8bdce617cd8eec0a1e Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5713908 Reviewed-by: Jeremy Roman <jbroman@chromium.org> Commit-Queue: Lucía Alonso Mozo <alonsomozol@google.com> Reviewed-by: Tony Herre <toprice@chromium.org> Cr-Commit-Position: refs/heads/main@{#1338987}
111 lines
3.8 KiB
HTML
111 lines
3.8 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>RTCRtpScriptTransform-fire-event-constructor-worker - Worker</title>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src=/resources/testdriver.js></script>
|
|
<script src=/resources/testdriver-vendor.js></script>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
|
|
promise_test(async t => {
|
|
|
|
const worker = new Worker('./RTCRtpScriptTransform-fire-event-constructor-worker.js')
|
|
t.add_cleanup(() => worker.terminate());
|
|
|
|
const defaultInit = {
|
|
timestamp: 1234,
|
|
channels: 2,
|
|
sampleRate: 8000,
|
|
frames: 100,
|
|
};
|
|
|
|
const localData = new Float32Array(defaultInit.channels * defaultInit.frames);
|
|
|
|
const audioDataInit = {
|
|
timestamp: defaultInit.timestamp,
|
|
data: localData,
|
|
numberOfFrames: defaultInit.frames,
|
|
numberOfChannels: defaultInit.channels,
|
|
sampleRate: defaultInit.sampleRate,
|
|
format: 'f32-planar',
|
|
}
|
|
const data = new AudioData(audioDataInit);
|
|
const transform = new RTCRtpScriptTransform(worker, data, [data]);
|
|
|
|
return new Promise(resolve => {
|
|
worker.onmessage = t.step_func(message => {
|
|
// check the message back is correct
|
|
assert_equals(message.data.timestamp, defaultInit.timestamp);
|
|
assert_equals(message.data.numberOfFrames, defaultInit.frames);
|
|
assert_equals(message.data.numberOfChannels, defaultInit.channels);
|
|
assert_equals(message.data.sampleRate, defaultInit.sampleRate);
|
|
assert_equals(message.data.format, 'f32-planar');
|
|
|
|
// check that the data got transfered
|
|
assert_equals(data.numberOfFrames, 0);
|
|
assert_equals(data.numberOfChannels, 0);
|
|
assert_equals(data.sampleRate, 0);
|
|
assert_equals(data.format, null);
|
|
|
|
resolve();
|
|
});
|
|
});
|
|
}, 'Creating an RTCRtpScriptTransform with data fires a rtctransform event in the worker and correctly transfers the data');
|
|
|
|
promise_test(async t => {
|
|
|
|
const worker = new Worker('./RTCRtpScriptTransform-fire-event-constructor-worker.js');
|
|
const channel = new MessageChannel;
|
|
const transform = new RTCRtpScriptTransform(worker, {port: channel.port2}, [channel.port2]);
|
|
transform.port = channel.port1;
|
|
channel.port1.start();
|
|
transform.port.postMessage("ping");
|
|
return new Promise(resolve => {
|
|
transform.port.onmessage = t.step_func(message => {
|
|
assert_equals(message.data, "pong");
|
|
resolve();
|
|
});
|
|
});
|
|
}, 'Creating an RTCRtpScriptTransform with a MessagePort fires a rtctransform event in the worker and correctly transfers the MessagePort');
|
|
|
|
|
|
promise_test(async t => {
|
|
|
|
const worker = new Worker('./RTCRtpScriptTransform-fire-event-constructor-worker.js')
|
|
t.add_cleanup(() => worker.terminate());
|
|
const transform = new RTCRtpScriptTransform(worker);
|
|
const expectedFrameData = null;
|
|
return new Promise(resolve => {
|
|
worker.onmessage = t.step_func(message => {
|
|
assert_equals(message.data, expectedFrameData);
|
|
resolve();
|
|
});
|
|
});
|
|
}, 'Creating RTCRtpScriptTransform without data fires an rtctransform event in the worker and correctly sends a null options field');
|
|
|
|
promise_test(async t => {
|
|
|
|
const worker = new Worker('./RTCRtpScriptTransform-fire-event-constructor-worker.js')
|
|
t.add_cleanup(() => worker.terminate());
|
|
const data = {
|
|
name: "xxx",
|
|
count: 4,
|
|
};
|
|
const transform = new RTCRtpScriptTransform(worker, data);
|
|
return new Promise(resolve => {
|
|
worker.onmessage = t.step_func(message => {
|
|
assert_equals(data.name, "xxx");
|
|
assert_equals(data.count, 4);
|
|
assert_equals(message.data.name, data.name);
|
|
assert_equals(message.data.count, data.count);
|
|
resolve();
|
|
});
|
|
});
|
|
}, 'Creating RTCRtpScriptTransform with data fires an rtctransform event in the worker and correctly serializes data in the options field');
|
|
|
|
</script>
|
|
</body>
|
|
</html> |