mirror of
https://github.com/servo/servo
synced 2026-05-09 00:22:16 +02:00
The MediaSession `setPositionState` method should only update the
position state and propagate it to the platform media session UI
controller and shouldn't change somehow the properties of the media
element directly (duration, playback rate or position).
See
https://w3c.github.io/mediasession/#dom-mediasession-setpositionstate
Testing: Improvements in the following tests
- /mediasession/positionstate.html
The media session UI functionality is implemented for Android and didn't
test due lack of testing sample.
Signed-off-by: Andrei Volykhin <andrei.volykhin@gmail.com>
63 lines
1.4 KiB
Plaintext
63 lines
1.4 KiB
Plaintext
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
/*
|
|
* The origin of this IDL file is
|
|
* https://w3c.github.io/mediasession/#mediasession
|
|
*/
|
|
|
|
[Exposed=Window]
|
|
partial interface Navigator {
|
|
[SameObject] readonly attribute MediaSession mediaSession;
|
|
};
|
|
|
|
enum MediaSessionPlaybackState {
|
|
"none",
|
|
"paused",
|
|
"playing"
|
|
};
|
|
|
|
enum MediaSessionAction {
|
|
"play",
|
|
"pause",
|
|
"seekbackward",
|
|
"seekforward",
|
|
"previoustrack",
|
|
"nexttrack",
|
|
"skipad",
|
|
"stop",
|
|
"seekto"
|
|
};
|
|
|
|
dictionary MediaSessionActionDetails {
|
|
required MediaSessionAction action;
|
|
};
|
|
|
|
dictionary MediaSessionSeekActionDetails : MediaSessionActionDetails {
|
|
double? seekOffset;
|
|
};
|
|
|
|
dictionary MediaSessionSeekToActionDetails : MediaSessionActionDetails {
|
|
required double seekTime;
|
|
boolean? fastSeek;
|
|
};
|
|
|
|
dictionary MediaPositionState {
|
|
unrestricted double duration;
|
|
double playbackRate;
|
|
double position;
|
|
};
|
|
|
|
callback MediaSessionActionHandler = undefined(/*MediaSessionActionDetails details*/);
|
|
|
|
[Exposed=Window]
|
|
interface MediaSession {
|
|
attribute MediaMetadata? metadata;
|
|
|
|
attribute MediaSessionPlaybackState playbackState;
|
|
|
|
undefined setActionHandler(MediaSessionAction action, MediaSessionActionHandler? handler);
|
|
|
|
[Throws] undefined setPositionState(optional MediaPositionState state = {});
|
|
};
|