blob: f6d08db22dfefddcdca19b6793eb336a02e94c14 [file] [edit]
<!-- webkit-test-runner [ IPCTestingAPIEnabled=true ] -->
<p>This test passes if WebKit does not crash.</p>
<script>
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
function done() { window.testRunner?.notifyDone(); }
async function run() {
const { CoreIPC, IPCWireTap } = await import('./coreipc.js');
let playerId = null;
const playerIdPromise = new Promise(resolve => {
const tap = new IPCWireTap('GPU', 'Outgoing');
tap.tapNext(CoreIPC.messages['RemoteMediaPlayerManagerProxy_CreateMediaPlayer'].name,
(proc, connId, msgName, typed, parsed) => {
playerId = parsed.identifier;
resolve();
});
});
const video = document.createElement('video');
video.style.display = 'none';
video.src = '../media/content/test.mp4';
document.body.appendChild(video);
const metadataPromise = new Promise(resolve =>
video.addEventListener('loadedmetadata', resolve, { once: true }));
const timeout = new Promise((_, reject) =>
setTimeout(() => reject(new Error('timeout')), 10000));
await Promise.race([Promise.all([playerIdPromise, metadataPromise]), timeout]);
for (let i = 0; i < 5; i++) {
CoreIPC.GPU.RemoteMediaPlayerProxy.SetShouldEnableAudioSourceProvider(playerId, { shouldEnable: true });
CoreIPC.GPU.RemoteMediaPlayerProxy.CreateAudioSourceProvider(playerId, {});
await new Promise(resolve => setTimeout(resolve, 20));
}
done();
}
if (!window.IPC)
done();
else
run().catch(done);
</script>