| <!DOCTYPE html> |
| <title>Test that hiding volume / mute button works as expected.</title> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script src="media-controls.js"></script> |
| <video controls></video> |
| <script> |
| async_test(function(t) { |
| var video = document.querySelector("video"); |
| |
| video.oncanplaythrough = t.step_func(function() { |
| // Request non-hidden audio controls. |
| internals.settings.setPreferHiddenVolumeControls(false); |
| video.muted = false; |
| muteButton = mediaControlsButton(video, "mute-button"); |
| |
| // Make sure that it's visible. |
| assert_not_equals(getComputedStyle(muteButton).display, "none"); |
| |
| video.onvolumechange = t.step_func(_ => { |
| assert_not_equals(getComputedStyle(muteButton).display, "none"); |
| |
| video.onvolumechange = t.step_func(_ => { |
| assert_not_equals(getComputedStyle(muteButton).display, "none"); |
| |
| video.onvolumechange = t.step_func_done(_ => { |
| assert_not_equals(getComputedStyle(muteButton).display, "none"); |
| }); |
| |
| // For muted video, the volume slider will hide but the mute button |
| // should stay, since we always have it present for media which have audio. |
| video.muted = true; |
| }); |
| |
| // Switch back to unmuted video and hide volume slider. |
| internals.settings.setPreferHiddenVolumeControls(true); |
| video.muted = false; |
| }); |
| |
| // Switch to muted video. Both should still be visible. |
| video.muted = true; |
| }); |
| |
| video.src = "content/test.ogv"; |
| }) |
| </script> |