1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 #ifndef WIDGET_COCOA_MEDIAHARDWAREKEYSEVENTSOURCEMACMEDIACENTER_H_
6 #define WIDGET_COCOA_MEDIAHARDWAREKEYSEVENTSOURCEMACMEDIACENTER_H_
8 #include "mozilla/dom/MediaControlKeySource.h"
11 @
class MPRemoteCommandEvent
;
13 typedef struct objc_object MPRemoteCommandEvent
;
15 enum MPRemoteCommandHandlerStatus
: long;
20 typedef MPRemoteCommandHandlerStatus (^MediaCenterEventHandler
)(MPRemoteCommandEvent
* event
);
22 class MediaHardwareKeysEventSourceMacMediaCenter final
23 : public mozilla::dom::MediaControlKeySource
{
25 NS_INLINE_DECL_REFCOUNTING(MediaHardwareKeysEventSourceMacMediaCenter
, override
)
26 MediaHardwareKeysEventSourceMacMediaCenter();
28 MediaCenterEventHandler
CreatePlayPauseHandler();
29 MediaCenterEventHandler
CreateNextTrackHandler();
30 MediaCenterEventHandler
CreatePreviousTrackHandler();
31 MediaCenterEventHandler
CreatePlayHandler();
32 MediaCenterEventHandler
CreatePauseHandler();
35 void Close() override
;
36 bool IsOpened() const override
;
37 void SetPlaybackState(dom::MediaSessionPlaybackState aState
) override
;
38 void SetMediaMetadata(const dom::MediaMetadataBase
& aMetadata
) override
;
39 // Currently we don't support showing supported keys on the touch bar.
40 void SetSupportedMediaKeys(const MediaKeysArray
& aSupportedKeys
) override
{}
43 ~MediaHardwareKeysEventSourceMacMediaCenter();
44 void BeginListeningForEvents();
45 void EndListeningForEvents();
46 void HandleEvent(dom::MediaControlKey aKey
);
50 MediaCenterEventHandler mPlayPauseHandler
;
51 MediaCenterEventHandler mNextTrackHandler
;
52 MediaCenterEventHandler mPreviousTrackHandler
;
53 MediaCenterEventHandler mPauseHandler
;
54 MediaCenterEventHandler mPlayHandler
;
58 } // namespace mozilla
60 #endif // WIDGET_COCOA_MEDIAHARDWAREKEYSEVENTSOURCEMACMEDIACENTER_H_