зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1582508 - part1 : implement 'MediaSessionPlaybackState'. r=webidl,chunmin,Ehsan
Implement `playbackstate`[1] attribute for media session interface. [1] https://w3c.github.io/mediasession/#dom-mediasession-playbackstate Differential Revision: https://phabricator.services.mozilla.com/D66338 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
0913d9141d
Коммит
9bf5424e0e
|
@ -39,6 +39,20 @@ void MediaSession::SetMetadata(MediaMetadata* aMetadata) {
|
|||
NotifyMetadataUpdated();
|
||||
}
|
||||
|
||||
void MediaSession::SetPlaybackState(
|
||||
const MediaSessionPlaybackState& aPlaybackState) {
|
||||
if (mDeclaredPlaybackState == aPlaybackState) {
|
||||
return;
|
||||
}
|
||||
mDeclaredPlaybackState = aPlaybackState;
|
||||
// TODO : propagate declared state to the media controller in chrome process
|
||||
// in order to call `media session actions update algorithm`.
|
||||
}
|
||||
|
||||
MediaSessionPlaybackState MediaSession::PlaybackState() const {
|
||||
return mDeclaredPlaybackState;
|
||||
}
|
||||
|
||||
void MediaSession::SetActionHandler(MediaSessionAction aAction,
|
||||
MediaSessionActionHandler* aHandler) {
|
||||
size_t index = static_cast<size_t>(aAction);
|
||||
|
|
|
@ -39,6 +39,10 @@ class MediaSession final : public nsISupports, public nsWrapperCache {
|
|||
|
||||
void SetMetadata(MediaMetadata* aMetadata);
|
||||
|
||||
void SetPlaybackState(const MediaSessionPlaybackState& aPlaybackState);
|
||||
|
||||
MediaSessionPlaybackState PlaybackState() const;
|
||||
|
||||
void SetActionHandler(MediaSessionAction aAction,
|
||||
MediaSessionActionHandler* aHandler);
|
||||
|
||||
|
@ -72,6 +76,12 @@ class MediaSession final : public nsISupports, public nsWrapperCache {
|
|||
RefPtr<MediaMetadata> mMediaMetadata;
|
||||
static const size_t ACTIONS = MediaSessionActionValues::Count;
|
||||
RefPtr<MediaSessionActionHandler> mActionHandlers[ACTIONS] = {nullptr};
|
||||
|
||||
// This is used as is a hint for the user agent to determine whether the
|
||||
// browsing context is playing or paused.
|
||||
// https://w3c.github.io/mediasession/#declared-playback-state
|
||||
MediaSessionPlaybackState mDeclaredPlaybackState =
|
||||
MediaSessionPlaybackState::None;
|
||||
};
|
||||
|
||||
} // namespace dom
|
||||
|
|
|
@ -7,7 +7,11 @@
|
|||
* https://w3c.github.io/mediasession/#idl-index
|
||||
*/
|
||||
|
||||
// TODO: Implement MediaSessionPlaybackState (bug 1582508)
|
||||
enum MediaSessionPlaybackState {
|
||||
"none",
|
||||
"paused",
|
||||
"playing"
|
||||
};
|
||||
|
||||
// TODO: Implement the missing seek* (bug 1580623) and skipad (bug 1582569) actions
|
||||
enum MediaSessionAction {
|
||||
|
@ -24,7 +28,7 @@ callback MediaSessionActionHandler = void(MediaSessionActionDetails details);
|
|||
interface MediaSession {
|
||||
attribute MediaMetadata? metadata;
|
||||
|
||||
// TODO: attribute MediaSessionPlaybackState playbackState; (bug 1582508)
|
||||
attribute MediaSessionPlaybackState playbackState;
|
||||
|
||||
void setActionHandler(MediaSessionAction action, MediaSessionActionHandler? handler);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче