Index: LayoutTests/media/controls-cast-overlay-slow-fade.html |
diff --git a/LayoutTests/media/controls-cast-overlay-slow-fade.html b/LayoutTests/media/controls-cast-overlay-slow-fade.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..03bad40da543de9c8bc3b03b1d3bed9ba862f935 |
--- /dev/null |
+++ b/LayoutTests/media/controls-cast-overlay-slow-fade.html |
@@ -0,0 +1,59 @@ |
+<!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> |