GPUProcessConnection.h [plain text]
#pragma once
#if ENABLE(GPU_PROCESS)
#include "Connection.h"
#include "MessageReceiverMap.h"
#include "SampleBufferDisplayLayerManager.h"
#include <WebCore/PlatformMediaSession.h>
#include <wtf/RefCounted.h>
#include <wtf/text/WTFString.h>
namespace IPC {
class DataReference;
}
namespace WebKit {
class RemoteCDMFactory;
class RemoteMediaPlayerManager;
class RemoteLegacyCDMFactory;
class GPUProcessConnection : public RefCounted<GPUProcessConnection>, IPC::Connection::Client {
public:
static Ref<GPUProcessConnection> create(IPC::Connection::Identifier connectionIdentifier)
{
return adoptRef(*new GPUProcessConnection(connectionIdentifier));
}
~GPUProcessConnection();
IPC::Connection& connection() { return m_connection.get(); }
IPC::MessageReceiverMap& messageReceiverMap() { return m_messageReceiverMap; }
#if HAVE(AUDIT_TOKEN)
void setAuditToken(Optional<audit_token_t> auditToken) { m_auditToken = auditToken; }
Optional<audit_token_t> auditToken() const { return m_auditToken; }
#endif
#if PLATFORM(COCOA) && ENABLE(MEDIA_STREAM)
SampleBufferDisplayLayerManager& sampleBufferDisplayLayerManager();
#endif
RemoteMediaPlayerManager& mediaPlayerManager();
#if ENABLE(ENCRYPTED_MEDIA)
RemoteCDMFactory& cdmFactory();
#endif
#if ENABLE(LEGACY_ENCRYPTED_MEDIA)
RemoteLegacyCDMFactory& legacyCDMFactory();
#endif
private:
GPUProcessConnection(IPC::Connection::Identifier);
void didClose(IPC::Connection&) override;
void didReceiveMessage(IPC::Connection&, IPC::Decoder&) final;
void didReceiveSyncMessage(IPC::Connection&, IPC::Decoder&, std::unique_ptr<IPC::Encoder>&) final;
void didReceiveInvalidMessage(IPC::Connection&, IPC::MessageName) override;
bool dispatchMessage(IPC::Connection&, IPC::Decoder&);
bool dispatchSyncMessage(IPC::Connection&, IPC::Decoder&, std::unique_ptr<IPC::Encoder>&);
void didReceiveRemoteCommand(WebCore::PlatformMediaSession::RemoteControlCommandType, Optional<double>);
Ref<IPC::Connection> m_connection;
IPC::MessageReceiverMap m_messageReceiverMap;
#if HAVE(AUDIT_TOKEN)
Optional<audit_token_t> m_auditToken;
#endif
#if PLATFORM(COCOA) && ENABLE(MEDIA_STREAM)
std::unique_ptr<SampleBufferDisplayLayerManager> m_sampleBufferDisplayLayerManager;
#endif
};
}
#endif // ENABLE(GPU_PROCESS)