зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1580623 - P1: Add `seek{back,for}ward` to MediaSessionAction and implement `seekOffset` r=webidl,alwu,baku
Differential Revision: https://phabricator.services.mozilla.com/D45459 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
7dbc543b13
Коммит
c0d25f3402
|
@ -96,21 +96,19 @@ void MediaSession::DispatchNotifyHandler(
|
|||
const MediaSessionActionDetails& aDetails)
|
||||
: mozilla::Runnable("MediaSession::DispatchNotifyHandler"),
|
||||
mSession(aSession),
|
||||
mAction(aDetails.mAction) {}
|
||||
mDetails(aDetails) {}
|
||||
|
||||
MOZ_CAN_RUN_SCRIPT_BOUNDARY NS_IMETHOD Run() override {
|
||||
if (RefPtr<MediaSessionActionHandler> handler =
|
||||
mSession->GetActionHandler(mAction)) {
|
||||
MediaSessionActionDetails details;
|
||||
details.mAction = mAction;
|
||||
handler->Call(details);
|
||||
mSession->GetActionHandler(mDetails.mAction)) {
|
||||
handler->Call(mDetails);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
private:
|
||||
RefPtr<const MediaSession> mSession;
|
||||
MediaSessionAction mAction;
|
||||
MediaSessionActionDetails mDetails;
|
||||
};
|
||||
|
||||
RefPtr<nsIRunnable> runnable = new Runnable(this, aDetails);
|
||||
|
|
|
@ -13,6 +13,8 @@ SimpleTest.waitForExplicitFinish();
|
|||
const ACTIONS = [
|
||||
"play",
|
||||
"pause",
|
||||
"seekbackward",
|
||||
"seekforward",
|
||||
"previoustrack",
|
||||
"nexttrack",
|
||||
"stop",
|
||||
|
@ -55,6 +57,9 @@ function generateAction(action) {
|
|||
|
||||
function generateActionDetails(action) {
|
||||
let details = { action };
|
||||
if (action == "seekbackward" || action == "seekforward") {
|
||||
details.seekOffset = 3.14159;
|
||||
}
|
||||
return details;
|
||||
}
|
||||
|
||||
|
|
|
@ -13,10 +13,12 @@ enum MediaSessionPlaybackState {
|
|||
"playing"
|
||||
};
|
||||
|
||||
// TODO: Implement the missing seek* (bug 1580623) and skipad (bug 1582569) actions
|
||||
// TODO: Implement the missing seekto (bug 1621403) and skipad (bug 1582569) actions
|
||||
enum MediaSessionAction {
|
||||
"play",
|
||||
"pause",
|
||||
"seekbackward",
|
||||
"seekforward",
|
||||
"previoustrack",
|
||||
"nexttrack",
|
||||
"stop",
|
||||
|
@ -68,6 +70,9 @@ dictionary MediaImage {
|
|||
|
||||
dictionary MediaSessionActionDetails {
|
||||
required MediaSessionAction action;
|
||||
// Merge MediaSessionSeekActionDetails here:
|
||||
// https://github.com/w3c/mediasession/issues/234
|
||||
double seekOffset;
|
||||
};
|
||||
|
||||
// TODO: Implement MediaPositionState (bug 1582509)
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
prefs: [dom.media.mediasession.enabled:true]
|
||||
[setactionhandler.html] # Bug 1580623
|
||||
[setactionhandler.html] # Bug 1621403
|
||||
[Test that setActionHandler() can be executed for supported actions]
|
||||
expected: FAIL
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче