| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../../../resources/js-test-pre.js"></script> |
| <script> |
| window.jsTestIsAsync = true; |
| |
| var child; |
| |
| if (window.testRunner) { |
| testRunner.setCanOpenWindows(true); |
| testRunner.setCloseRemainingWindowsWhenComplete(true); |
| } |
| |
| // Called by resources/picture-in-picture.html |
| function notifyDidChangePresentationMode() |
| { |
| // For some reason waiting ~200ms to allow the video to transition from the page to its |
| // picture-in-picture window seems to make triggering the assertion more reliable (why?). |
| function closeWindowAndDone() |
| { |
| child.close(); // Trigger assertion failure |
| testPassed("did not cause an assertion failure."); |
| // For some reason waiting ~500ms after closing the window seems to make triggering the assertion more reliable (why?). |
| window.setTimeout(finishJSTest, 500); |
| } |
| window.setTimeout(closeWindowAndDone, 200); |
| } |
| |
| function openNewWindow() |
| { |
| child = window.open("resources/picture-in-picture.html"); |
| document.body.removeChild(openNewWindowButton); |
| } |
| |
| window.onload = function () { |
| var openNewWindowButton = document.getElementById("openNewWindowButton"); |
| if (window.testRunner) |
| openNewWindow(); |
| else |
| openNewWindowButton.onclick = openNewWindow; |
| } |
| </script> |
| </head> |
| <body> |
| <p id="description"></p> |
| <div id="console"></div> |
| <script> |
| description("This tests that closing a window that is presenting a video in picture-in-picture does not cause an assertion failure in a debug build. To run this test by hand, click the Open new window button then click the picture-in-picture button (tap the video on iOS)."); |
| </script> |
| <button id="openNewWindowButton">Open new window</button> |
| <script src="../../../../resources/js-test-post.js"></script> |
| </body> |
| </html> |