59 lines
2 KiB
JavaScript
59 lines
2 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
/**
|
|
* This test checks that the media stream video format has functional
|
|
* support for PiP
|
|
*/
|
|
add_task(async function test_mediaStreamVideos() {
|
|
await testToggle(
|
|
TEST_ROOT + "test-media-stream.html",
|
|
{
|
|
"with-controls": { canToggle: true },
|
|
"no-controls": { canToggle: true },
|
|
},
|
|
async browser => {
|
|
await SpecialPowers.spawn(browser, [], async () => {
|
|
// Construct a new video element, and capture a stream from it
|
|
// to redirect to both testing videos. Create the captureStreams after
|
|
// we have metadata so tracks are immediately available, but wait with
|
|
// playback until the setup is done.
|
|
|
|
function logEvent(element, ev) {
|
|
element.addEventListener(ev, () =>
|
|
info(
|
|
`${element.id} got event ${ev}. currentTime=${element.currentTime}`
|
|
)
|
|
);
|
|
}
|
|
|
|
const newVideo = content.document.createElement("video");
|
|
newVideo.id = "new-video";
|
|
newVideo.src = "test-video.mp4";
|
|
newVideo.preload = "auto";
|
|
logEvent(newVideo, "timeupdate");
|
|
logEvent(newVideo, "ended");
|
|
content.document.body.appendChild(newVideo);
|
|
await ContentTaskUtils.waitForEvent(newVideo, "loadedmetadata");
|
|
|
|
const mediastreamPlayingPromises = [];
|
|
for (let videoID of ["with-controls", "no-controls"]) {
|
|
const testedVideo = content.document.createElement("video");
|
|
testedVideo.id = videoID;
|
|
testedVideo.srcObject = newVideo.mozCaptureStream();
|
|
testedVideo.play();
|
|
mediastreamPlayingPromises.push(
|
|
new Promise(r => (testedVideo.onplaying = r))
|
|
);
|
|
content.document.body.prepend(testedVideo);
|
|
}
|
|
|
|
await newVideo.play();
|
|
await Promise.all(mediastreamPlayingPromises);
|
|
newVideo.pause();
|
|
});
|
|
}
|
|
);
|
|
});
|