[Picture-in-Picture] Add leavepictureinpicture video event
Bug: 806249
Change-Id: I443cedc0b6d0d72f98a61dd8bf5bb8c79da0d490
Reviewed-on: https://chromium-review.googlesource.com/895309
Reviewed-by: Mounir Lamouri (slow) <mlamouri@chromium.org>
Reviewed-by: Mike West <mkwst@chromium.org>
Reviewed-by: apacible <apacible@chromium.org>
Commit-Queue: Mounir Lamouri (slow) <mlamouri@chromium.org>
Cr-Commit-Position: refs/heads/master@{#534388}
diff --git a/picture-in-picture/enter-picture-in-picture.html b/picture-in-picture/enter-picture-in-picture.html
index e44087c..8830ab0 100644
--- a/picture-in-picture/enter-picture-in-picture.html
+++ b/picture-in-picture/enter-picture-in-picture.html
@@ -7,7 +7,7 @@
<script src="resources/picture-in-picture-helpers.js"></script>
<body></body>
<script>
-async_test(t => {
+promise_test(t => {
const video = document.createElement('video');
video.addEventListener('enterpictureinpicture', t.step_func_done(event => {
diff --git a/picture-in-picture/leave-picture-in-picture.html b/picture-in-picture/leave-picture-in-picture.html
new file mode 100644
index 0000000..a0d4cc2
--- /dev/null
+++ b/picture-in-picture/leave-picture-in-picture.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<title>Test leavepictureinpicture event</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="resources/picture-in-picture-helpers.js"></script>
+<body></body>
+<script>
+promise_test(t => {
+ const video = document.createElement('video');
+
+ video.addEventListener('leavepictureinpicture', t.step_func_done(event => {
+ assert_equals(event.target, video);
+ assert_equals(event.bubbles, true);
+ assert_equals(event.cancelable, false);
+ assert_equals(event.composed, false);
+ assert_equals(document.pictureInPictureElement, null);
+ }));
+
+ return requestPictureInPictureWithTrustedClick(video)
+ .then(() => document.exitPictureInPicture())
+}, 'leavepictureinpicture event is fired if document.exitPictureInPicture');
+
+promise_test(t => {
+ const video = document.createElement('video');
+
+ video.addEventListener('leavepictureinpicture', t.step_func_done(event => {
+ assert_equals(event.target, video);
+ assert_equals(event.bubbles, true);
+ assert_equals(event.cancelable, false);
+ assert_equals(event.composed, false);
+ assert_equals(document.pictureInPictureElement, null);
+ }));
+
+ return requestPictureInPictureWithTrustedClick(video)
+ .then(() => {
+ video.disablePictureInPicture = true;
+ });
+}, 'leavepictureinpicture event is fired if video.disablePictureInPicture is set to true');
+</script>