| <!DOCTYPE html> | |
| <title>Test of picture-in-picture</title> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script src="/common/utils.js"></script> | |
| <script src="/common/dispatcher/dispatcher.js"></script> | |
| <script src="resources/utils.js"></script> | |
| <body> | |
| <script> | |
| promise_test(async () => { | |
| const frame = attachFencedFrameContext(); | |
| const result = await frame.execute(async () => { | |
| const video = document.body.appendChild(document.createElement("video")); | |
| try { | |
| await video.requestPictureInPicture(); | |
| return 'PIP request succeeded.'; | |
| } catch (e) { | |
| if (e.name == 'SecurityError') { | |
| return 'PIP request failed'; | |
| } else { | |
| return `PIP request failed but not with SecurityError - ${e.name}: ${e.message}`; | |
| } | |
| } | |
| }); | |
| assert_equals( | |
| result, 'PIP request failed', | |
| 'PIP request must fail in a fenced frame by permissions policy.'); | |
| }, 'Test HTMLVideoElement.requestPictureInPicture'); | |
| </script> | |
| </body> |