blob: 7553e521ef303f197fe91641e77638cbfdab3b28 [file] [log] [blame]
<!DOCTYPE html>
<html>
<title>Test that when a user clicks and drags on the overflow it does not disappear.</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../media-controls.js"></script>
<video controls width=500 preload=none src="https://need_a_url_here_to.show/download/button.mp4"></video>
<script>
async_test(t => {
const video = document.querySelector('video');
const menu = overflowMenu(video);
const overflowBtn = overflowButton(video);
const downloadBtn = downloadsOverflowItem(video);
const captionsBtn = captionsOverflowItem(video);
// Add text tracks so that the captions option appears.
[ '../track/captions-webvtt/captions-fast.vtt',
'../track/captions-webvtt/captions-rtl.vtt' ].forEach(source => {
const track = document.createElement('track');
track.src = source;
track.kind = 'captions';
video.appendChild(track);
});
enableTestMode(video);
window.addEventListener('load', t.step_func(() => {
// Open the overflow menu and click and drag on it.
singleTapOnControl(overflowBtn, t.step_func(clickAndDrag));
}), { once: true });
// Neither the downloads button nor the captions button should receive a click during the click and drag.
downloadBtn.addEventListener('click', t.unreached_func('Downloads received a click'));
captionsBtn.addEventListener('click', t.unreached_func('Captions received a click'));
function clickAndDrag() {
assert_true(isControlVisible(menu), 'Overflow menu should be visible before we start click-and-drag');
assert_true(isControlVisible(downloadBtn), 'Download button should be visible');
assert_true(isControlVisible(captionsBtn), 'Captions button should be visible');
const downloadPosition = elementCoordinates(downloadBtn);
const captionsPosition = elementCoordinates(captionsBtn);
// Click down on downloads but drag and release over captions.
chrome.gpuBenchmarking.pointerActionSequence([{
source: 'mouse',
actions: [
{ name: 'pointerDown', x: downloadPosition[0], y: downloadPosition[1] },
{ name: 'pointerMove', x: captionsPosition[0], y: captionsPosition[1] },
{ name: 'pointerUp', x: captionsPosition[0], y: captionsPosition[1] },
]
}], t.step_func_done(() => {
assert_true(isControlVisible(menu), 'Overflow menu should still be visible after click-and-drag');
}));
}
});
</script>
</html>