picture-in-picture-reporting.html (1812B)
1 <!DOCTYPE html> 2 <html> 3 <head> 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.js'></script> 10 </head> 11 <body> 12 <script> 13 const check_report_format = (reports, observer) => { 14 const report = reports[0]; 15 assert_equals(report.type, "permissions-policy-violation"); 16 assert_equals(report.url, document.location.href); 17 assert_equals(report.body.featureId, "picture-in-picture"); 18 assert_equals(report.body.sourceFile, document.location.href); 19 assert_equals(typeof report.body.lineNumber, "number"); 20 assert_equals(typeof report.body.columnNumber, "number"); 21 assert_equals(report.body.disposition, "enforce"); 22 }; 23 24 const loadVideo = () => new Promise(resolve => { 25 const video = document.createElement('video'); 26 video.src = getVideoURI('/media/movie_5'); 27 video.addEventListener('loadedmetadata', () => { 28 resolve(video); 29 }, { once: true }); 30 }); 31 32 promise_pip_test(async (t) => { 33 const report = new Promise(resolve => { 34 new ReportingObserver((reports, observer) => resolve([reports, observer]), 35 {types: ['permissions-policy-violation']}).observe(); 36 }); 37 const videoElement = await loadVideo(); 38 await test_driver.bless('picture-in-picture'); 39 await promise_rejects_dom(t, 'SecurityError', videoElement.requestPictureInPicture(), 40 "Picture-in-Picture should not be allowed in this document."); 41 const [reports, observer] = await report; 42 check_report_format(reports, observer); 43 }, "Picture-in-Picture Report Format"); 44 </script> 45 </body> 46 </html>