| <!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> |