WebMediaSessionFocusManager.h [plain text]
#pragma once
#if ENABLE(MEDIA_SESSION)
#include "APIObject.h"
#include "WebContextSupplement.h"
#include "WebMediaSessionFocusManagerClient.h"
#include "WebPageProxy.h"
namespace WebKit {
typedef std::pair<WebPageProxy*, uint64_t> FocusedMediaElement;
class WebMediaSessionFocusManager : public API::ObjectImpl<API::Object::Type::MediaSessionFocusManager>, public WebContextSupplement {
public:
static const char* supplementName();
static Ref<WebMediaSessionFocusManager> create(WebProcessPool*);
void initializeClient(const WKMediaSessionFocusManagerClientBase*);
bool valueForPlaybackAttribute(WKMediaSessionFocusManagerPlaybackAttribute) const;
void updatePlaybackAttributesFromMediaState(WebPageProxy*, uint64_t, WebCore::MediaProducer::MediaStateFlags);
void setVolumeOfFocusedMediaElement(double);
void setFocusedMediaElement(WebPageProxy&, uint64_t);
void clearFocusedMediaElement();
using API::Object::ref;
using API::Object::deref;
private:
explicit WebMediaSessionFocusManager(WebProcessPool*);
void refWebContextSupplement() override;
void derefWebContextSupplement() override;
void updatePlaybackAttribute(WKMediaSessionFocusManagerPlaybackAttribute, bool);
std::unique_ptr<FocusedMediaElement> m_focusedMediaElement;
WKMediaSessionFocusManagerPlaybackAttributes m_playbackAttributes { 0 };
WebMediaSessionFocusManagerClient m_client;
};
}
#endif // ENABLE(MEDIA_SESSION)