summaryrefslogtreecommitdiffstats
path: root/dom/media/mediacontrol/MediaController.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dom/media/mediacontrol/MediaController.cpp')
-rw-r--r--dom/media/mediacontrol/MediaController.cpp20
1 files changed, 13 insertions, 7 deletions
diff --git a/dom/media/mediacontrol/MediaController.cpp b/dom/media/mediacontrol/MediaController.cpp
index bfb98f24c9..4290e952b0 100644
--- a/dom/media/mediacontrol/MediaController.cpp
+++ b/dom/media/mediacontrol/MediaController.cpp
@@ -186,9 +186,10 @@ bool MediaController::ShouldPropagateActionToAllContexts(
// These three actions have default action handler for each frame, so we
// need to propagate to all contexts. We would handle default handlers in
// `ContentMediaController::HandleMediaKey`.
- return aAction.mKey == MediaControlKey::Play ||
- aAction.mKey == MediaControlKey::Pause ||
- aAction.mKey == MediaControlKey::Stop;
+ return aAction.mKey.isSome() &&
+ (aAction.mKey.value() == MediaControlKey::Play ||
+ aAction.mKey.value() == MediaControlKey::Pause ||
+ aAction.mKey.value() == MediaControlKey::Stop);
}
void MediaController::UpdateMediaControlActionToContentMediaIfNeeded(
@@ -493,11 +494,16 @@ void MediaController::HandleSupportedMediaSessionActionsChanged(
MediaController_Binding::ClearCachedSupportedKeysValue(this);
}
-void MediaController::HandlePositionStateChanged(const PositionState& aState) {
+void MediaController::HandlePositionStateChanged(
+ const Maybe<PositionState>& aState) {
+ if (!aState) {
+ return;
+ }
+
PositionStateEventInit init;
- init.mDuration = aState.mDuration;
- init.mPlaybackRate = aState.mPlaybackRate;
- init.mPosition = aState.mLastReportedPlaybackPosition;
+ init.mDuration = aState->mDuration;
+ init.mPlaybackRate = aState->mPlaybackRate;
+ init.mPosition = aState->mLastReportedPlaybackPosition;
RefPtr<PositionStateEvent> event =
PositionStateEvent::Constructor(this, u"positionstatechange"_ns, init);
DispatchAsyncEvent(event.forget());