SharedWorkerProcessProxy.h [plain text]
#ifndef SharedWorkerProcessProxy_h
#define SharedWorkerProcessProxy_h
#if ENABLE(SHARED_WORKER_PROCESS)
#include "Connection.h"
#include "ProcessLauncher.h"
#include "WebProcessProxyMessages.h"
#include <wtf/Deque.h>
namespace CoreIPC {
class MachPort;
}
namespace WebKit {
class SharedWorkerProcessManager;
class WebProcessProxy;
struct SharedWorkerProcessCreationParameters;
class SharedWorkerProcessProxy : public RefCounted<SharedWorkerProcessProxy>, CoreIPC::Connection::Client, ProcessLauncher::Client {
public:
static PassRefPtr<SharedWorkerProcessProxy> create(SharedWorkerProcessManager*, const String& url, const String& name);
~SharedWorkerProcessProxy();
void getSharedWorkerProcessConnection(PassRefPtr<Messages::WebProcessProxy::GetSharedWorkerProcessConnection::DelayedReply>);
void terminate();
bool isValid() const { return m_connection; }
#if PLATFORM(MAC)
void setProcessSuppressionEnabled(bool);
#endif
private:
SharedWorkerProcessProxy(SharedWorkerProcessManager*, const String& url, const String& name);
void sharedWorkerProcessCrashedOrFailedToLaunch();
virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&);
virtual void didClose(CoreIPC::Connection*);
virtual void didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::StringReference messageReceiverName, CoreIPC::StringReference messageName);
virtual void didFinishLaunching(ProcessLauncher*, CoreIPC::Connection::Identifier);
void didReceiveSharedWorkerProcessProxyMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&);
void didCreateWebProcessConnection(const CoreIPC::Attachment&);
void platformInitializeSharedWorkerProcess(SharedWorkerProcessCreationParameters&);
SharedWorkerProcessManager* m_sharedWorkerProcessManager;
RefPtr<CoreIPC::Connection> m_connection;
RefPtr<ProcessLauncher> m_processLauncher;
Deque<RefPtr<Messages::WebProcessProxy::GetSharedWorkerProcessConnection::DelayedReply>> m_pendingConnectionReplies;
unsigned m_numPendingConnectionRequests;
};
}
#endif // ENABLE(SHARED_WORKER_PROCESS)
#endif // SharedWorkerProcessProxy_h