| Index: third_party/WebKit/Source/modules/mediasession/MediaSession.cpp
|
| diff --git a/third_party/WebKit/Source/modules/mediasession/MediaSession.cpp b/third_party/WebKit/Source/modules/mediasession/MediaSession.cpp
|
| index e4579cbef0a803d6f2506b0999b0c8820e6110cc..a1d0e462e4638bdc5dfb0cec0dc7fe2aeccd38a0 100644
|
| --- a/third_party/WebKit/Source/modules/mediasession/MediaSession.cpp
|
| +++ b/third_party/WebKit/Source/modules/mediasession/MediaSession.cpp
|
| @@ -29,8 +29,6 @@ const AtomicString& mojomActionToEventName(MediaSessionAction action) {
|
| return EventTypeNames::play;
|
| case MediaSessionAction::PAUSE:
|
| return EventTypeNames::pause;
|
| - case MediaSessionAction::PLAY_PAUSE:
|
| - return EventTypeNames::playpause;
|
| case MediaSessionAction::PREVIOUS_TRACK:
|
| return EventTypeNames::previoustrack;
|
| case MediaSessionAction::NEXT_TRACK:
|
| @@ -51,8 +49,6 @@ WTF::Optional<MediaSessionAction> eventNameToMojomAction(
|
| return MediaSessionAction::PLAY;
|
| if (EventTypeNames::pause == eventName)
|
| return MediaSessionAction::PAUSE;
|
| - if (EventTypeNames::playpause == eventName)
|
| - return MediaSessionAction::PLAY_PAUSE;
|
| if (EventTypeNames::previoustrack == eventName)
|
| return MediaSessionAction::PREVIOUS_TRACK;
|
| if (EventTypeNames::nexttrack == eventName)
|
| @@ -66,10 +62,40 @@ WTF::Optional<MediaSessionAction> eventNameToMojomAction(
|
| return WTF::nullopt;
|
| }
|
|
|
| +const AtomicString& mediaSessionPlaybackStateToString(
|
| + mojom::blink::MediaSessionPlaybackState state) {
|
| + DEFINE_STATIC_LOCAL(const AtomicString, noneValue, ("none"));
|
| + DEFINE_STATIC_LOCAL(const AtomicString, pausedValue, ("paused"));
|
| + DEFINE_STATIC_LOCAL(const AtomicString, playingValue, ("playing"));
|
| +
|
| + switch (state) {
|
| + case mojom::blink::MediaSessionPlaybackState::NONE:
|
| + return noneValue;
|
| + case mojom::blink::MediaSessionPlaybackState::PAUSED:
|
| + return pausedValue;
|
| + case mojom::blink::MediaSessionPlaybackState::PLAYING:
|
| + return playingValue;
|
| + }
|
| + NOTREACHED();
|
| + return WTF::emptyAtom;
|
| +}
|
| +
|
| +mojom::blink::MediaSessionPlaybackState stringToMediaSessionPlaybackState(
|
| + const String& stateName) {
|
| + if (stateName == "none")
|
| + return mojom::blink::MediaSessionPlaybackState::NONE;
|
| + if (stateName == "paused")
|
| + return mojom::blink::MediaSessionPlaybackState::PAUSED;
|
| + DCHECK_EQ(stateName, "playing");
|
| + return mojom::blink::MediaSessionPlaybackState::PLAYING;
|
| +}
|
| +
|
| } // anonymous namespace
|
|
|
| MediaSession::MediaSession(ExecutionContext* executionContext)
|
| - : ContextLifecycleObserver(executionContext), m_clientBinding(this) {}
|
| + : ContextLifecycleObserver(executionContext),
|
| + m_playbackState(mojom::blink::MediaSessionPlaybackState::NONE),
|
| + m_clientBinding(this) {}
|
|
|
| MediaSession* MediaSession::create(ExecutionContext* executionContext) {
|
| return new MediaSession(executionContext);
|
| @@ -79,6 +105,17 @@ void MediaSession::dispose() {
|
| m_clientBinding.Close();
|
| }
|
|
|
| +void MediaSession::setPlaybackState(const String& playbackState) {
|
| + m_playbackState = stringToMediaSessionPlaybackState(playbackState);
|
| + mojom::blink::MediaSessionService* service = getService();
|
| + if (service)
|
| + service->SetPlaybackState(m_playbackState);
|
| +}
|
| +
|
| +String MediaSession::playbackState() {
|
| + return mediaSessionPlaybackStateToString(m_playbackState);
|
| +}
|
| +
|
| void MediaSession::setMetadata(MediaMetadata* metadata) {
|
| if (metadata)
|
| metadata->setSession(this);
|
|
|