diff --git a/components/script/dom/mediasession.rs b/components/script/dom/mediasession.rs index 4105ddb3b5f..139264953ca 100644 --- a/components/script/dom/mediasession.rs +++ b/components/script/dom/mediasession.rs @@ -2,6 +2,7 @@ * 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/. */ +use crate::dom::bindings::callback::ExceptionHandling; use crate::dom::bindings::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::MediaSessionBinding; use crate::dom::bindings::codegen::Bindings::MediaSessionBinding::MediaSessionAction; @@ -54,7 +55,13 @@ impl MediaSession { } pub fn handle_action(&self, action: MediaSessionActionType) { - // TODO + if let Some(handler) = self.action_handlers.borrow().get(&action) { + if handler.Call__(ExceptionHandling::Report).is_err() { + warn!("Error calling MediaSessionActionHandler callback"); + } + return; + } + // TODO default action. } } diff --git a/components/script/dom/webidls/MediaSession.webidl b/components/script/dom/webidls/MediaSession.webidl index 0096a0ffa50..12b3fe062ba 100644 --- a/components/script/dom/webidls/MediaSession.webidl +++ b/components/script/dom/webidls/MediaSession.webidl @@ -42,7 +42,7 @@ dictionary MediaSessionSeekToActionDetails : MediaSessionActionDetails { boolean? fastSeek; }; -callback MediaSessionActionHandler = void(MediaSessionActionDetails details); +callback MediaSessionActionHandler = void(/*MediaSessionActionDetails details*/); [Exposed=Window] interface MediaSession {