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:
Chun-Min Chang 2020-03-17 22:04:34 +00:00
Родитель 7dbc543b13
Коммит c0d25f3402
4 изменённых файлов: 16 добавлений и 9 удалений

Просмотреть файл

@ -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