MediaPlaybackTargetPickerMac.h [plain text]
#ifndef MediaPlaybackTargetPickerMac_h
#define MediaPlaybackTargetPickerMac_h
#if ENABLE(WIRELESS_PLAYBACK_TARGET) && !PLATFORM(IOS)
#include "MediaPlaybackTargetPicker.h"
#include <wtf/RetainPtr.h>
#include <wtf/RunLoop.h>
OBJC_CLASS AVOutputDeviceMenuController;
OBJC_CLASS WebAVOutputDeviceMenuControllerHelper;
namespace WebCore {
class MediaPlaybackTargetPickerMac final : public MediaPlaybackTargetPicker {
WTF_MAKE_NONCOPYABLE(MediaPlaybackTargetPickerMac);
public:
virtual ~MediaPlaybackTargetPickerMac();
WEBCORE_EXPORT static std::unique_ptr<MediaPlaybackTargetPickerMac> create(MediaPlaybackTargetPicker::Client&);
void showPlaybackTargetPicker(const FloatRect&, bool checkActiveRoute) override;
void startingMonitoringPlaybackTargets() override;
void stopMonitoringPlaybackTargets() override;
void invalidatePlaybackTargets() override;
void availableDevicesDidChange();
void currentDeviceDidChange();
private:
explicit MediaPlaybackTargetPickerMac(MediaPlaybackTargetPicker::Client&);
AVOutputDeviceMenuController *devicePicker();
enum ActionType {
OutputDeviceAvailabilityChanged = 1 << 0,
CurrentDeviceDidChange = 1 << 1,
};
typedef unsigned PendingActionFlags;
void addPendingAction(PendingActionFlags);
void pendingActionTimerFired();
PendingActionFlags m_pendingActionFlags { 0 };
RetainPtr<AVOutputDeviceMenuController> m_outputDeviceMenuController;
RetainPtr<WebAVOutputDeviceMenuControllerHelper> m_outputDeviceMenuControllerDelegate;
RunLoop::Timer<MediaPlaybackTargetPickerMac> m_pendingActionTimer;
bool m_showingMenu { false };
};
}
#endif // ENABLE(WIRELESS_PLAYBACK_TARGET)
#endif // WebContextMenuProxyMac_h