blob: ef3bcde2b570bd9da8c3b4095eb9285856e0d047 [file] [log] [blame]
<!DOCTYPE html>
<html>
<title>Test that player will behave correctly when scrubbing.</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../media-controls.js"></script>
<video controls width=400 src="../content/60_sec_video.webm"></video>
<script>
async_test(t => {
const video = document.querySelector('video');
const timeline = timelineElement(video);
const thumb = timelineThumb(video);
const scrubbingMessage = scrubbingMessageElement(video);
let seeked = false;
video.addEventListener('playing', t.step_func(() => {
// Get the coordinates of the thumb and the timeline.
const c = elementCoordinates(thumb);
const c2 = elementCoordinates(timeline);
const leftButton = 0;
// Add an event listener for when we start playing again after seeking.
video.addEventListener('playing', t.step_func_done(() => {
assert_true(seeked);
checkControlsDoesNotHaveClass(video, 'state-scrubbing');
// Check the scrubbing message not shown.
assert_false(isControlVisible(scrubbingMessage));
}), { once: true });
// Simulate a mouse down on those coordinates.
chrome.gpuBenchmarking.pointerActionSequence([
{
source: 'mouse',
actions: [
{ name: 'pointerMove', x: c[0], y: c[1] },
{ name: 'pointerDown', x: c[0], y: c[1], button: leftButton },
{ name: 'pointerMove', x: c2[0], y: c2[1]},
{ name: 'pause', duration: 5000 },
{ name: 'pointerUp', button: leftButton }
]
}
]);
}), { once: true });
video.addEventListener('seeking', t.step_func(() => {
checkControlsHasClass(video, 'state-scrubbing');
// Check the scrubbing message is not shown since we're scrubbing with the mouse.
assert_false(isControlVisible(scrubbingMessage));
}), { once: true });
video.addEventListener('seeked', t.step_func(() => {
seeked = true;
}), { once: true });
video.play();
});
</script>
</html>