positionstate.html (2638B)
1 <!DOCTYPE html> 2 <title>MediaSession.setPositionState</title> 3 <script src=/resources/testharness.js></script> 4 <script src=/resources/testharnessreport.js></script> 5 <script> 6 test(() => { 7 window.navigator.mediaSession.setPositionState(null); 8 }, 'Test setPositionState with a null value'); 9 10 test(() => { 11 window.navigator.mediaSession.setPositionState({ 12 duration: 60.9, 13 position: 10.1, 14 playbackRate: 1.5 15 }); 16 }, 'Test setPositionState with a valid value for forward playback'); 17 18 test(() => { 19 window.navigator.mediaSession.setPositionState({ 20 duration: 60.9, 21 playbackRate: 1.0 22 }); 23 }, 'Test setPositionState with optional position'); 24 25 test(() => { 26 window.navigator.mediaSession.setPositionState({ 27 duration: 60.9, 28 position: 10.1 29 }); 30 }, 'Test setPositionState with optional playback rate'); 31 32 test(() => { 33 window.navigator.mediaSession.setPositionState({ 34 duration: 60.9 35 }); 36 }, 'Test setPositionState with only duration'); 37 38 test(() => { 39 window.navigator.mediaSession.setPositionState({ 40 duration: 0 41 }); 42 }, 'Test setPositionState with zero duration'); 43 44 test(() => { 45 window.navigator.mediaSession.setPositionState({ 46 duration: 60.9, 47 position: 10.1, 48 playbackRate: -2.0 49 }); 50 }, 'Test setPositionState with negative playback rate'); 51 52 test(() => { 53 assert_throws_js( 54 TypeError, 55 _ => { 56 window.navigator.mediaSession.setPositionState({ 57 duration: -1 58 }); 59 }); 60 }, 'Test setPositionState throws a TypeError if duration is negative'); 61 62 test(() => { 63 assert_throws_js( 64 TypeError, 65 _ => { 66 window.navigator.mediaSession.setPositionState({ 67 duration: 10, 68 position: -1 69 }); 70 }); 71 }, 'Test setPositionState throws a TypeError if position is negative'); 72 73 test(() => { 74 assert_throws_js( 75 TypeError, 76 _ => { 77 window.navigator.mediaSession.setPositionState({ 78 duration: 10, 79 position: 20 80 }); 81 }); 82 }, 'Test setPositionState throws a TypeError if duration is less than position'); 83 84 test(() => { 85 assert_throws_js( 86 TypeError, 87 _ => { 88 window.navigator.mediaSession.setPositionState({ 89 duration: 60.9, 90 position: 10.1, 91 playbackRate: 0.0 92 }); 93 }); 94 }, 'Test setPositionState throws a TypeError if playback rate is zero'); 95 96 test(() => { 97 assert_throws_js( 98 TypeError, 99 _ => { 100 window.navigator.mediaSession.setPositionState({ 101 position: 10.1, 102 playbackRate: 1.0 103 }); 104 }); 105 }, 'Test setPositionState throws a TypeError if duration is not specified'); 106 </script>