blob: d3a019e0f33c43fd4eb57223b9b8ad1c875b7bc9 [file] [log] [blame]
<!DOCTYPE html>
<title>media controls cast button</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>
<video></video>
<script>
async_test(function(t) {
var video = document.querySelector("video");
video.src = findMediaFile("video", "content/test");
video.onloadedmetadata = t.step_func_done(function() {
// Should not have a cast button by default
var button = overlayCastButton(video);
assert_equals(button.style.display, "none", "button should not be visible with no cast devices");
// Pretend we have a cast device
internals.mediaPlayerRemoteRouteAvailabilityChanged(video, true);
// Now should have cast button
assert_false(("display" in button.style) && (button.style.display == "none"), "button should exist");
var rect = button.getBoundingClientRect();
assert_not_equals(rect.width, 0, "button should exist");
assert_not_equals(rect.height, 0, "button should exist");
// Check position, should be in the top left corner of the video
var videoRect = video.getBoundingClientRect();
assert_greater_than_equal(rect.top, videoRect.top, "button should be at top left of video");
assert_greater_than_equal(rect.left, videoRect.left, "button should be at top left of video");
assert_less_than_equal(rect.bottom, videoRect.top + videoRect.height / 2, "button should be at top left of video");
assert_less_than_equal(rect.right, videoRect.left + videoRect.width / 2, "button should be at top left of video");
// Remove cast device - cast button should go away
internals.mediaPlayerRemoteRouteAvailabilityChanged(video, false);
assert_equals(button.style.display, "none", "button should not be visible after cast device goes away");
});
function overlayCastButton(element) {
var controlID = "-internal-media-controls-overlay-cast-button";
var button = mediaControlsElement(internals.shadowRoot(element).firstChild, controlID);
if (!button)
throw "Failed to find cast button";
return button;
}
});
</script>