| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>Navigate to another page while video is playing in pip should not crash</title> |
| <script src="media-file.js"></script> |
| <script src="video-test.js"></script> |
| <script> |
| var mediaElement; |
| var videoframe; |
| |
| if (window.internals) { |
| internals.settings.setAllowsPictureInPictureMediaPlayback(true); |
| internals.setMockVideoPresentationModeEnabled(true); |
| } |
| |
| function init() |
| { |
| videoframe = document.getElementById("videoframe"); |
| videoframe.onload = frameLoaded; |
| videoframe.src = findMediaFile("video", "content/test"); |
| } |
| |
| function frameLoaded() |
| { |
| consoleWrite("Video frame loaded."); |
| |
| var standaloneMediaDocument = document.getElementById("videoframe").contentDocument; |
| mediaElement = standaloneMediaDocument.querySelector("video"); |
| if (!mediaElement) { |
| failTest("ERROR: Video element was not found in frameLoaded()."); |
| return; |
| } |
| |
| runWithKeyDown(function(){ mediaElement.play(); }); |
| |
| if (!('webkitSupportsPresentationMode' in mediaElement && 'webkitPresentationMode' in mediaElement)) { |
| failTest("Presentation mode is not supported in this video element.") |
| return; |
| } |
| |
| consoleWrite("Going into Picture-in-Picture"); |
| mediaElement.addEventListener('webkitpresentationmodechanged', onpresentationmodechanged); |
| runWithKeyDown(function(){ mediaElement.webkitSetPresentationMode('picture-in-picture'); }); |
| } |
| |
| function onpresentationmodechanged() |
| { |
| testExpected("mediaElement.webkitPresentationMode", "picture-in-picture"); |
| testExpected("mediaElement.paused", false); |
| |
| videoframe.onload = checkCompletedNavigation; |
| videoframe.src = "about:blank"; |
| } |
| |
| function checkCompletedNavigation() |
| { |
| testExpected("videoframe.contentDocument.location", "about:blank"); |
| endTest(); |
| } |
| |
| </script> |
| </head> |
| <body onload="init()"> |
| <p>Navigate to another page while video is playing in pip should not crash</p> |
| <iframe id="videoframe" width=400 height=300></iframe> |
| </body> |
| </html> |
| |