49 lines
1.7 KiB
HTML
49 lines
1.7 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="video-test.js"></script>
|
|
<script src="media-file.js"></script>
|
|
<script>
|
|
window.addEventListener('load', async event => {
|
|
if (!window.internals) {
|
|
failTest('This test requires window.internals.');
|
|
return;
|
|
}
|
|
|
|
consoleWrite('');
|
|
run('internals.settings.setAllowsPictureInPictureMediaPlayback(true)');
|
|
run('internals.setMockVideoPresentationModeEnabled(true)');
|
|
|
|
findMediaElement();
|
|
video.src = findMediaFile("video", "content/test");
|
|
|
|
await waitFor(video, 'canplaythrough');
|
|
|
|
runWithKeyDown(() => {
|
|
video.webkitSetPresentationMode('picture-in-picture');
|
|
});
|
|
|
|
waitForEventOnce('enterpictureinpicture', event => {
|
|
window.pipWindow = event.pictureInPictureWindow;
|
|
testExpected('pipWindow.width', 0, '>');
|
|
testExpected('pipWindow.height', 0, '>');
|
|
|
|
const observer = new MutationObserver(() => {
|
|
consoleWrite('The video element has been removed from DOM.');
|
|
setTimeout(endTest, 1000);
|
|
});
|
|
observer.observe(document.body, { childList: true });
|
|
waitForEvent('webkitpresentationmodechanged', () => {
|
|
failTest('PiP window is closed!');
|
|
});
|
|
document.body.removeChild(video);
|
|
});
|
|
});
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div>Test that removing a video element from the DOM while the video is in the picture-in-picture mode does not close the PiP window.</div>
|
|
<video controls playsinline></video>
|
|
</body>
|
|
</html>
|