GPUConnectionToWebProcess.h [plain text]
#pragma once
#if ENABLE(GPU_PROCESS)
#include "Connection.h"
#include "GPUConnectionToWebProcessMessagesReplies.h"
#include <WebCore/DisplayListItems.h>
#include <WebCore/ProcessIdentifier.h>
#include <pal/SessionID.h>
#include <wtf/Logger.h>
#include <wtf/RefCounted.h>
#include <wtf/UniqueRef.h>
namespace WebKit {
class GPUProcess;
class LibWebRTCCodecsProxy;
class RemoteMediaPlayerManagerProxy;
class UserMediaCaptureManagerProxy;
class RemoteMediaResourceManager;
class GPUConnectionToWebProcess
: public RefCounted<GPUConnectionToWebProcess>
, IPC::Connection::Client {
public:
static Ref<GPUConnectionToWebProcess> create(GPUProcess&, WebCore::ProcessIdentifier, IPC::Connection::Identifier, PAL::SessionID);
virtual ~GPUConnectionToWebProcess();
IPC::Connection& connection() { return m_connection.get(); }
GPUProcess& gpuProcess() { return m_gpuProcess.get(); }
void cleanupForSuspension(Function<void()>&&);
void endSuspension();
WebCore::ProcessIdentifier webProcessIdentifier() const { return m_webProcessIdentifier; }
RemoteMediaResourceManager& remoteMediaResourceManager();
Logger& logger();
private:
GPUConnectionToWebProcess(GPUProcess&, WebCore::ProcessIdentifier, IPC::Connection::Identifier, PAL::SessionID);
RemoteMediaPlayerManagerProxy& remoteMediaPlayerManagerProxy();
#if PLATFORM(COCOA) && USE(LIBWEBRTC)
LibWebRTCCodecsProxy& libWebRTCCodecsProxy();
#endif
#if PLATFORM(COCOA) && ENABLE(MEDIA_STREAM)
UserMediaCaptureManagerProxy& userMediaCaptureManagerProxy();
#endif
void didClose(IPC::Connection&) final;
void didReceiveInvalidMessage(IPC::Connection&, IPC::StringReference messageReceiverName, IPC::StringReference messageName) final;
void didReceiveMessage(IPC::Connection&, IPC::Decoder&) final;
void didReceiveSyncMessage(IPC::Connection&, IPC::Decoder&, std::unique_ptr<IPC::Encoder>&) final;
RefPtr<Logger> m_logger;
Ref<IPC::Connection> m_connection;
Ref<GPUProcess> m_gpuProcess;
const WebCore::ProcessIdentifier m_webProcessIdentifier;
std::unique_ptr<RemoteMediaResourceManager> m_remoteMediaResourceManager;
std::unique_ptr<RemoteMediaPlayerManagerProxy> m_remoteMediaPlayerManagerProxy;
PAL::SessionID m_sessionID;
#if PLATFORM(COCOA) && ENABLE(MEDIA_STREAM)
std::unique_ptr<UserMediaCaptureManagerProxy> m_userMediaCaptureManagerProxy;
#endif
#if PLATFORM(COCOA) && USE(LIBWEBRTC)
std::unique_ptr<LibWebRTCCodecsProxy> m_libWebRTCCodecsProxy;
#endif
};
}
#endif // ENABLE(GPU_PROCESS)