chromium/third_party/blink/web_tests/wpt_internal/picture-in-picture/picture-in-picture-service-error.html

<!DOCTYPE html>
<title>Test Picture-in-Picture service error</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="/picture-in-picture/resources/picture-in-picture-helpers.js"></script>
<body></body>
<script type="module">
import {PictureInPictureService, PictureInPictureServiceReceiver} from '/gen/third_party/blink/public/mojom/picture_in_picture/picture_in_picture.mojom.m.js';

class PictureInPictureServiceMock {
  constructor() {
    this.receiver_ = new PictureInPictureServiceReceiver(this);

    this.interceptor_ =
        new MojoInterfaceInterceptor(PictureInPictureService.$interfaceName);
    this.interceptor_.oninterfacerequest =
        e => this.receiver_.$.bindHandle(e.handle);
    this.interceptor_.start();
  }

  async startSession(playerId, surfaceId, naturalSize, showPlayPauseButton,
        observer, callback) {
    return {session: null, size: {width: 0, height: 0}};
  }
};

promise_test(async t => {
  new PictureInPictureServiceMock();

  const video = await loadVideo(document, '/media/test.ogv');
  return promise_rejects_dom(t, 'NotSupportedError',
    requestPictureInPictureWithTrustedClick(video));
});
</script>