RemoteLegacyCDMProxy.h [plain text]
#pragma once
#if ENABLE(GPU_PROCESS) && ENABLE(LEGACY_ENCRYPTED_MEDIA)
#include "MessageReceiver.h"
#include "RemoteLegacyCDMFactoryProxy.h"
#include "RemoteLegacyCDMIdentifier.h"
#include <WebCore/LegacyCDM.h>
#include <wtf/Forward.h>
#include <wtf/UniqueRef.h>
#include <wtf/WeakPtr.h>
namespace WebCore {
class SharedBuffer;
}
namespace WebKit {
class RemoteLegacyCDMProxy
: private IPC::MessageReceiver
, public WebCore::LegacyCDMClient
, public CanMakeWeakPtr<RemoteLegacyCDMProxy> {
public:
static std::unique_ptr<RemoteLegacyCDMProxy> create(WeakPtr<RemoteLegacyCDMFactoryProxy>, WebCore::MediaPlayerIdentifier&&, std::unique_ptr<WebCore::LegacyCDM>&&);
~RemoteLegacyCDMProxy();
RemoteLegacyCDMFactoryProxy* factory() const { return m_factory.get(); }
private:
friend class RemoteLegacyCDMFactoryProxy;
RemoteLegacyCDMProxy(WeakPtr<RemoteLegacyCDMFactoryProxy>&&, WebCore::MediaPlayerIdentifier&&, std::unique_ptr<WebCore::LegacyCDM>&&);
void didReceiveMessage(IPC::Connection&, IPC::Decoder&) final;
void didReceiveSyncMessage(IPC::Connection&, IPC::Decoder&, std::unique_ptr<IPC::Encoder>&) final;
using SupportsMIMETypeCallback = CompletionHandler<void(bool)>;
void supportsMIMEType(const String&, SupportsMIMETypeCallback&&);
using CreateSessionCallback = CompletionHandler<void(RemoteLegacyCDMSessionIdentifier&&)>;
void createSession(const String&, CreateSessionCallback&&);
void setPlayerId(Optional<WebCore::MediaPlayerIdentifier>&&);
RefPtr<WebCore::MediaPlayer> cdmMediaPlayer(const WebCore::LegacyCDM*) const final;
WeakPtr<RemoteLegacyCDMFactoryProxy> m_factory;
WebCore::MediaPlayerIdentifier m_playerId;
std::unique_ptr<WebCore::LegacyCDM> m_cdm;
};
}
#endif