Backed out changeset b71c8c052463 (bug 1943846) for causing mass failures. CLOSED...
[gecko.git] / widget / cocoa / MediaHardwareKeysEventSourceMacMediaCenter.h
blobf1af7b27942497dd6da30b7bab20a016052f61f6
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/FetchImageHelper.h"
9 #include "mozilla/dom/MediaControlKeySource.h"
11 #ifdef __OBJC__
12 @class MPRemoteCommandEvent;
13 #else
14 typedef struct objc_object MPRemoteCommandEvent;
15 #endif
16 enum MPRemoteCommandHandlerStatus : long;
18 namespace mozilla {
19 namespace widget {
21 typedef MPRemoteCommandHandlerStatus (^MediaCenterEventHandler)(
22 MPRemoteCommandEvent* event);
24 class MediaHardwareKeysEventSourceMacMediaCenter final
25 : public mozilla::dom::MediaControlKeySource {
26 public:
27 NS_INLINE_DECL_REFCOUNTING(MediaHardwareKeysEventSourceMacMediaCenter,
28 override)
29 MediaHardwareKeysEventSourceMacMediaCenter();
31 MediaCenterEventHandler CreatePlayPauseHandler();
32 MediaCenterEventHandler CreateNextTrackHandler();
33 MediaCenterEventHandler CreatePreviousTrackHandler();
34 MediaCenterEventHandler CreatePlayHandler();
35 MediaCenterEventHandler CreatePauseHandler();
36 MediaCenterEventHandler CreateChangePlaybackPositionHandler();
38 bool Open() override;
39 void Close() override;
40 bool IsOpened() const override;
41 void SetPlaybackState(dom::MediaSessionPlaybackState aState) override;
42 void SetMediaMetadata(const dom::MediaMetadataBase& aMetadata) override;
43 void SetSupportedMediaKeys(const MediaKeysArray& aSupportedKeys) override;
44 void SetPositionState(const Maybe<dom::PositionState>& aState) override;
46 private:
47 ~MediaHardwareKeysEventSourceMacMediaCenter();
48 void BeginListeningForEvents();
49 void EndListeningForEvents();
50 void HandleEvent(const dom::MediaControlAction& aAction);
51 void UpdatePositionInfo();
53 bool mOpened = false;
54 Maybe<dom::PositionState> mPositionState;
55 dom::MediaMetadataBase mMediaMetadata;
57 // Should only be used on main thread
58 UniquePtr<dom::FetchImageHelper> mImageFetcher;
59 MozPromiseRequestHolder<dom::ImagePromise> mImageFetchRequest;
61 nsString mFetchingUrl;
62 nsString mCurrentImageUrl;
63 size_t mNextImageIndex = 0;
65 void LoadImageAtIndex(const size_t aIndex);
67 MediaCenterEventHandler mPlayPauseHandler;
68 MediaCenterEventHandler mNextTrackHandler;
69 MediaCenterEventHandler mPreviousTrackHandler;
70 MediaCenterEventHandler mPauseHandler;
71 MediaCenterEventHandler mPlayHandler;
72 MediaCenterEventHandler mChangePlaybackPositionHandler;
75 } // namespace widget
76 } // namespace mozilla
78 #endif // WIDGET_COCOA_MEDIAHARDWAREKEYSEVENTSOURCEMACMEDIACENTER_H_