1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module system_media_controls.mojom;
import "mojo/public/mojom/base/string16.mojom";
import "mojo/public/mojom/base/time.mojom";
import "services/media_session/public/mojom/media_session.mojom";
// Defines Mojo interfaces for interacting with system media controls on macOS.
// Facilitates communication between the browser process and a
// SystemMediaControlsBridge. The bridge can be either in-process or
// out-of-process (within an app shim).
// Enum for relaying the current state of media playback.
enum PlaybackStatus {
kPlaying, kPaused, kStopped,
};
// Enables the browser process to control the system media controls UI on macOS.
interface SystemMediaControls {
// Enables or disables the "next" command.
SetIsNextEnabled(bool enabled);
// Enables or disables the "previous" command.
SetIsPreviousEnabled(bool enabled);
// Enables or disables the "play/pause" command.
SetIsPlayPauseEnabled(bool enabled);
// Enables or disables the "stop" command.
SetIsStopEnabled(bool enabled);
// Enables or disables the seek functionality.
SetIsSeekToEnabled(bool enabled);
// Updates the current playback status displayed.
SetPlaybackStatus(PlaybackStatus status);
// Sets the title of the currently playing media.
SetTitle(mojo_base.mojom.String16 title);
// Sets the artist of the currently playing media.
SetArtist(mojo_base.mojom.String16 artist);
// Sets the album of the currently playing media.
SetAlbum(mojo_base.mojom.String16 album);
// Sets the thumbnail image displayed.
SetThumbnail(media_session.mojom.MediaImageBitmap thumbnail);
// Updates the current playback position.
SetPosition(media_session.mojom.MediaPosition position);
// Clears all previously set metadata and state from the system media controls.
ClearMetadata();
};
// Enables the browser process to observe user initiated events from macOS's
// system media controls UI.
interface SystemMediaControlsObserver {
// Indicates that the user triggered the "next" command.
OnNext();
// Indicates that the user triggered the "previous" command.
OnPrevious();
// Indicates that the user triggered the "pause" command.
OnPause();
// Indicates that the user triggered the "play/pause" command.
OnPlayPause();
// Indicates that the user triggered the "stop" command.
OnStop();
// Indicates that the user triggered the "play" command.
OnPlay();
// Indicates that the user initiated a seek operation to a specific time.
OnSeekTo(mojo_base.mojom.TimeDelta seek_time);
// (For testing purposes) Notifies the browser that the bridge has been established.
OnBridgeCreatedForTesting();
// (For testing purposes) Notifies the browser that the bridge has cleared its
// now playing info.
OnMetadataClearedForTesting();
};
|