leave-picture-in-picture.html (2087B)
1 <!DOCTYPE html> 2 <title>Test leavepictureinpicture event</title> 3 <meta name="timeout" content="long"> 4 <script src="/common/media.js"></script> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 <script src="/resources/testdriver.js"></script> 8 <script src="/resources/testdriver-vendor.js"></script> 9 <script src="resources/picture-in-picture-helpers.js"></script> 10 <body></body> 11 <script> 12 promise_test(async t => { 13 let pictureInPictureWindow; 14 const video = await loadVideo(); 15 16 video.addEventListener('enterpictureinpicture', t.step_func_done(event => { 17 pictureInPictureWindow = event.pictureInPictureWindow; 18 })); 19 20 video.addEventListener('leavepictureinpicture', t.step_func_done(event => { 21 assert_equals(pictureInPictureWindow, event.pictureInPictureWindow); 22 23 assert_equals(event.target, video); 24 assert_equals(event.bubbles, true); 25 assert_equals(event.cancelable, false); 26 assert_equals(event.composed, false); 27 assert_equals(document.pictureInPictureElement, null); 28 })); 29 30 return requestPictureInPictureWithTrustedClick(video) 31 .then(() => document.exitPictureInPicture()); 32 }, 'leavepictureinpicture event is fired if document.exitPictureInPicture'); 33 34 promise_test(async t => { 35 let pictureInPictureWindow; 36 const video = await loadVideo(); 37 38 video.addEventListener('enterpictureinpicture', t.step_func_done(event => { 39 pictureInPictureWindow = event.pictureInPictureWindow; 40 })); 41 42 video.addEventListener('leavepictureinpicture', t.step_func_done(event => { 43 assert_equals(pictureInPictureWindow, event.pictureInPictureWindow); 44 assert_equals(event.target, video); 45 assert_equals(event.bubbles, true); 46 assert_equals(event.cancelable, false); 47 assert_equals(event.composed, false); 48 assert_equals(document.pictureInPictureElement, null); 49 })); 50 51 return requestPictureInPictureWithTrustedClick(video) 52 .then(() => { 53 video.disablePictureInPicture = true; 54 }); 55 }, 'leavepictureinpicture event is fired if video.disablePictureInPicture is set to true'); 56 </script>