blob: a5e407e1cb9cb10cdc17270d9c3dc54cbff21c02 [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module blink.mojom;
import "mojo/public/mojom/base/time.mojom";
import "mojo/public/mojom/base/string16.mojom";
import "services/media_session/public/mojom/media_session.mojom";
import "ui/gfx/geometry/mojom/geometry.mojom";
import "url/mojom/url.mojom";
enum MediaSessionPlaybackState {
NONE,
PAUSED,
PLAYING,
};
interface MediaSessionClient {
// Notifies the Blink side that a MediaSessionAction has been fired from the
// UI or the platform. |details| may contain extra information that will be
// exposed to the site.
DidReceiveAction(media_session.mojom.MediaSessionAction action,
MediaSessionActionDetails? details);
};
// MediaSessionSeekToDetails
// Spec: https://wicg.github.io/mediasession/
struct MediaSessionSeekToDetails {
mojo_base.mojom.TimeDelta seek_time;
bool fast_seek;
};
union MediaSessionActionDetails {
MediaSessionSeekToDetails seek_to;
};
// MediaMetadata
// Spec: https://wicg.github.io/mediasession/
struct SpecMediaMetadata {
mojo_base.mojom.String16 title;
mojo_base.mojom.String16 artist;
mojo_base.mojom.String16 album;
array<media_session.mojom.MediaImage> artwork;
};
interface MediaSessionService {
// MediaSessionClient interface is used to notify Blink MediaSession of
// media control actions.
SetClient(pending_remote<MediaSessionClient> client);
// Notifies the browser that the page specified its current playback state.
SetPlaybackState(MediaSessionPlaybackState state);
// Notifies the browser that the page specified its current position state.
SetPositionState(media_session.mojom.MediaPosition? position);
// Notifies the browser that the metadata is set, |metadata| will be displayed
// on the UI.
SetMetadata(SpecMediaMetadata? metadata);
// Notifies the browser that the event handler for |action| has been set,
// browser needs to show a media button in the UI or register listeners to the
// platform.
EnableAction(media_session.mojom.MediaSessionAction action);
// Notifies the browser that the event handler for |action| has been set,
// browser needs to hide the media button in the UI and unregister listeners
// from the platform.
DisableAction(media_session.mojom.MediaSessionAction action);
};