blob: 03bad40da543de9c8bc3b03b1d3bed9ba862f935 [file] [log] [blame]
<!doctype html>
<html>
<head>
<title>Test that the overlay cast button fades at the right time (neither too soon nor too late).</title>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="media-file.js"></script>
<script src="media-controls.js"></script>
<script src="video-test.js"></script>
</head>
<body>
<video loop></video>
<script>
var controls;
var test;
// The cast button should be visible for at least the controlsMouseMovementTimeout, and no more
// than that plus the fadeout time. Allow 500ms margin at either side.
var hideTimeoutLowerBound = controlsMouseMovementTimeoutMs - 500;
var hideTimeoutUpperBound = controlsMouseMovementTimeoutMs + controlsFadeOutDurationMs + 500;
function overlayCastButton(element)
{
var controlID = "-internal-media-controls-overlay-cast-button";
var button = mediaControlsElement(window.internals.shadowRoot(element).firstChild, controlID);
return button;
}
async_test(function(t)
{
findMediaElement();
video.src = findMediaFile("video", "content/test");
video.addEventListener("playing", t.step_func(function()
{
setTimeout(t.step_func(function()
{
button = overlayCastButton(video);
// Now should have cast button
style = window.getComputedStyle(button);
visibility = style.getPropertyValue("visibility");
display = style.getPropertyValue("display");
assert_true(((display != "none")) && (visibility == "visible"),
"button should exist, display = \"" + display + '\"');
}), hideTimeoutLowerBound);
setTimeout(t.step_func(function()
{
button = overlayCastButton(video);
// Cast button shoud be gone
style = window.getComputedStyle(button);
visibility = style.getPropertyValue("visibility");
display = style.getPropertyValue("display");
assert_false(((display != "none")) && (visibility == "visible"),
"button should not exist, display = \"" + display + '\"');
t.done();
}), hideTimeoutUpperBound);
}));
internals.mediaPlayerRemoteRouteAvailabilityChanged(video, true);
video.play();
});
</script>
</body>
</html>