Skip to content
This repository was archived by the owner on Mar 19, 2021. It is now read-only.

Commit b362430

Browse files
[Media Session] Implement position state API
Implement the new setPositionState API in Blink. BUG=984620 Change-Id: I7a6eb1849f4e4afba2fb51771a6485aa58a7cdaf Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1730773 Reviewed-by: Daniel Cheng <[email protected]> Reviewed-by: Mounir Lamouri <[email protected]> Commit-Queue: Becca Hughes <[email protected]> Cr-Commit-Position: refs/heads/master@{#684943}
1 parent dd38623 commit b362430

File tree

2 files changed

+111
-1
lines changed

2 files changed

+111
-1
lines changed

mediasession/idlharness.window.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// META: script=/resources/WebIDLParser.js
22
// META: script=/resources/idlharness.js
33

4-
// https://wicg.github.io/mediasession/
4+
// https://w3c.github.io/mediasession/
55

66
'use strict';
77

mediasession/positionstate.html

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
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+
assert_throws(
46+
new TypeError,
47+
_ => {
48+
window.navigator.mediaSession.setPositionState({
49+
duration: 60.9,
50+
position: 10.1,
51+
playbackRate: -2.0
52+
});
53+
});
54+
}, 'Test setPositionState throws a TypeError if playback rate is negative');
55+
56+
test(() => {
57+
assert_throws(
58+
new TypeError,
59+
_ => {
60+
window.navigator.mediaSession.setPositionState({
61+
duration: -1
62+
});
63+
});
64+
}, 'Test setPositionState throws a TypeError if duration is negative');
65+
66+
test(() => {
67+
assert_throws(
68+
new TypeError,
69+
_ => {
70+
window.navigator.mediaSession.setPositionState({
71+
duration: 10,
72+
position: -1
73+
});
74+
});
75+
}, 'Test setPositionState throws a TypeError if position is negative');
76+
77+
test(() => {
78+
assert_throws(
79+
new TypeError,
80+
_ => {
81+
window.navigator.mediaSession.setPositionState({
82+
duration: 10,
83+
position: 20
84+
});
85+
});
86+
}, 'Test setPositionState throws a TypeError if duration is less than position');
87+
88+
test(() => {
89+
assert_throws(
90+
new TypeError,
91+
_ => {
92+
window.navigator.mediaSession.setPositionState({
93+
duration: 60.9,
94+
position: 10.1,
95+
playbackRate: 0.0
96+
});
97+
});
98+
}, 'Test setPositionState throws a TypeError if playback rate is zero');
99+
100+
test(() => {
101+
assert_throws(
102+
new TypeError,
103+
_ => {
104+
window.navigator.mediaSession.setPositionState({
105+
position: 10.1,
106+
playbackRate: 1.0
107+
});
108+
});
109+
}, 'Test setPositionState throws a TypeError if duration is not specified');
110+
</script>

0 commit comments

Comments
 (0)