Bug 1700051: part 28) Refactor `WordSplitState<T>::GetDOMWordSeparatorOffset` to...
[gecko.git] / widget / cocoa / MediaHardwareKeysEventSourceMacMediaCenter.h
blob04a3aeba48762b45c7f73748f97516bca1c93eef
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"
10 #ifdef __OBJC__
11 @class MPRemoteCommandEvent;
12 #else
13 typedef struct objc_object MPRemoteCommandEvent;
14 #endif
15 enum MPRemoteCommandHandlerStatus : long;
17 namespace mozilla {
18 namespace widget {
20 typedef MPRemoteCommandHandlerStatus (^MediaCenterEventHandler)(MPRemoteCommandEvent* event);
22 class MediaHardwareKeysEventSourceMacMediaCenter final
23 : public mozilla::dom::MediaControlKeySource {
24 public:
25 NS_INLINE_DECL_REFCOUNTING(MediaHardwareKeysEventSourceMacMediaCenter, override)
26 MediaHardwareKeysEventSourceMacMediaCenter();
28 MediaCenterEventHandler CreatePlayPauseHandler();
29 MediaCenterEventHandler CreateNextTrackHandler();
30 MediaCenterEventHandler CreatePreviousTrackHandler();
31 MediaCenterEventHandler CreatePlayHandler();
32 MediaCenterEventHandler CreatePauseHandler();
34 bool Open() override;
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 {}
42 private:
43 ~MediaHardwareKeysEventSourceMacMediaCenter();
44 void BeginListeningForEvents();
45 void EndListeningForEvents();
46 void HandleEvent(dom::MediaControlKey aKey);
48 bool mOpened = false;
50 MediaCenterEventHandler mPlayPauseHandler;
51 MediaCenterEventHandler mNextTrackHandler;
52 MediaCenterEventHandler mPreviousTrackHandler;
53 MediaCenterEventHandler mPauseHandler;
54 MediaCenterEventHandler mPlayHandler;
57 } // namespace widget
58 } // namespace mozilla
60 #endif // WIDGET_COCOA_MEDIAHARDWAREKEYSEVENTSOURCEMACMEDIACENTER_H_