| <!DOCTYPE html> |
| <title>MediaSession.setPositionState</title> |
| <script src=/resources/testharness.js></script> |
| <script src=/resources/testharnessreport.js></script> |
| <script> |
| test(() => { |
| window.navigator.mediaSession.setPositionState(null); |
| }, 'Test setPositionState with a null value'); |
| |
| test(() => { |
| window.navigator.mediaSession.setPositionState({ |
| duration: 60.9, |
| position: 10.1, |
| playbackRate: 1.5 |
| }); |
| }, 'Test setPositionState with a valid value for forward playback'); |
| |
| test(() => { |
| window.navigator.mediaSession.setPositionState({ |
| duration: 60.9, |
| playbackRate: 1.0 |
| }); |
| }, 'Test setPositionState with optional position'); |
| |
| test(() => { |
| window.navigator.mediaSession.setPositionState({ |
| duration: 60.9, |
| position: 10.1 |
| }); |
| }, 'Test setPositionState with optional playback rate'); |
| |
| test(() => { |
| window.navigator.mediaSession.setPositionState({ |
| duration: 60.9 |
| }); |
| }, 'Test setPositionState with only duration'); |
| |
| test(() => { |
| window.navigator.mediaSession.setPositionState({ |
| duration: 0 |
| }); |
| }, 'Test setPositionState with zero duration'); |
| |
| test(() => { |
| window.navigator.mediaSession.setPositionState({ |
| duration: 60.9, |
| position: 10.1, |
| playbackRate: -2.0 |
| }); |
| }, 'Test setPositionState with negative playback rate'); |
| |
| test(() => { |
| assert_throws_js( |
| TypeError, |
| _ => { |
| window.navigator.mediaSession.setPositionState({ |
| duration: -1 |
| }); |
| }); |
| }, 'Test setPositionState throws a TypeError if duration is negative'); |
| |
| test(() => { |
| assert_throws_js( |
| TypeError, |
| _ => { |
| window.navigator.mediaSession.setPositionState({ |
| duration: 10, |
| position: -1 |
| }); |
| }); |
| }, 'Test setPositionState throws a TypeError if position is negative'); |
| |
| test(() => { |
| assert_throws_js( |
| TypeError, |
| _ => { |
| window.navigator.mediaSession.setPositionState({ |
| duration: 10, |
| position: 20 |
| }); |
| }); |
| }, 'Test setPositionState throws a TypeError if duration is less than position'); |
| |
| test(() => { |
| assert_throws_js( |
| TypeError, |
| _ => { |
| window.navigator.mediaSession.setPositionState({ |
| duration: 60.9, |
| position: 10.1, |
| playbackRate: 0.0 |
| }); |
| }); |
| }, 'Test setPositionState throws a TypeError if playback rate is zero'); |
| |
| test(() => { |
| assert_throws_js( |
| TypeError, |
| _ => { |
| window.navigator.mediaSession.setPositionState({ |
| position: 10.1, |
| playbackRate: 1.0 |
| }); |
| }); |
| }, 'Test setPositionState throws a TypeError if duration is not specified'); |
| </script> |