| <!DOCTYPE html> |
| <title>Test that the volume slider doesn't shift during use on smaller controls</title> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script src="../media-controls.js"></script> |
| <body></body> |
| <script> |
| async_test(t => { |
| // Ensure that we will show the volume slider. |
| setPreferHiddenVolumeControlsForTest(t, false); |
| |
| let video = document.createElement('video'); |
| video.controls = true; |
| video.preload = 'none'; |
| video.width = 200; |
| video.src = '../content/test.webm' |
| document.body.append(video); |
| enableTestMode(video); |
| |
| const fullscreenBtn = fullscreenButton(video); |
| const muteBtn = muteButton(video); |
| const volumeSlider = volumeSliderElement(video); |
| |
| // Wait for preload. |
| video.addEventListener('loadedmetadata', t.step_func(() => { |
| // Ensure that the mouse is outside of the mute button to prevent an issue |
| // where the mouseover event didn't always fire correctly on the mute button. |
| hoverOverControl(fullscreenBtn, t.step_func(() => { |
| // Hover the mute button to open the volume slider. |
| hoverOverControl(muteBtn, t.step_func(() => { |
| // Wait for the volume slider to open. |
| runAfterVolumeSliderAnimationEnds(t.step_func(() => { |
| // Store initial position. |
| const initialPosition = volumeSlider.getBoundingClientRect(); |
| // Use the slider. |
| singleTapOnControl(volumeSlider, t.step_func_done(() => { |
| // Assert that the slider hasn't moved. |
| const newPosition = volumeSlider.getBoundingClientRect(); |
| ['x', 'y', 'width', 'height'].forEach(attr => { |
| assert_equals(initialPosition[attr], newPosition[attr], attr + ' should not change'); |
| }); |
| })); |
| })); |
| })); |
| })); |
| })); |
| |
| video.load(); |
| }); |
| </script> |