function async_pip_test(func, name) { async_test(t => { assert_true('pictureInPictureEnabled' in document, 'Picture-in-Picture API is available'); func(t); }, name); } function promise_pip_test(func, name) { promise_test(async t => { assert_true('pictureInPictureEnabled' in document, 'Picture-in-Picture API is available'); return func(t); }, name); } function isPictureInPictureAllowed() { return new Promise(resolve => { let video = document.createElement('video'); video.src = getVideoURI('/media/movie_5'); video.onloadedmetadata = () => { video.requestPictureInPicture() .then(() => resolve(document.pictureInPictureEnabled)) .catch(e => { if (e.name == 'NotAllowedError') resolve(document.pictureInPictureEnabled); else resolve(false); }); }; }); }