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