<!DOCTYPE html>
<html>
<head>
<script src="../../../../resources/js-test-pre.js"></script>
<script>
window.jsTestIsAsync = true;

var child;

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