WebProcessConnection.h [plain text]
#ifndef WebProcessConnection_h
#define WebProcessConnection_h
#if ENABLE(PLUGIN_PROCESS)
#include "Connection.h"
#include "Plugin.h"
#include "WebProcessConnectionMessages.h"
#include <wtf/HashSet.h>
#include <wtf/RefCounted.h>
namespace WebKit {
class NPRemoteObjectMap;
class PluginControllerProxy;
struct PluginCreationParameters;
class WebProcessConnection : public RefCounted<WebProcessConnection>, CoreIPC::Connection::Client {
public:
static PassRefPtr<WebProcessConnection> create(CoreIPC::Connection::Identifier);
virtual ~WebProcessConnection();
CoreIPC::Connection* connection() const { return m_connection.get(); }
NPRemoteObjectMap* npRemoteObjectMap() const { return m_npRemoteObjectMap.get(); }
void removePluginControllerProxy(PluginControllerProxy*, Plugin*);
static void setGlobalException(const String&);
private:
WebProcessConnection(CoreIPC::Connection::Identifier);
void addPluginControllerProxy(PassOwnPtr<PluginControllerProxy>);
void destroyPluginControllerProxy(PluginControllerProxy*);
virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&) OVERRIDE;
virtual void didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&, OwnPtr<CoreIPC::MessageEncoder>&) OVERRIDE;
virtual void didClose(CoreIPC::Connection*);
virtual void didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::StringReference messageReceiverName, CoreIPC::StringReference messageName);
void didReceiveWebProcessConnectionMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&);
void didReceiveSyncWebProcessConnectionMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&, OwnPtr<CoreIPC::MessageEncoder>&);
void createPlugin(const PluginCreationParameters&, PassRefPtr<Messages::WebProcessConnection::CreatePlugin::DelayedReply>);
void createPluginAsynchronously(const PluginCreationParameters&);
void destroyPlugin(uint64_t pluginInstanceID, bool asynchronousCreationIncomplete);
void createPluginInternal(const PluginCreationParameters&, bool& result, bool& wantsWheelEvents, uint32_t& remoteLayerClientID);
RefPtr<CoreIPC::Connection> m_connection;
HashMap<uint64_t, OwnPtr<PluginControllerProxy>> m_pluginControllers;
RefPtr<NPRemoteObjectMap> m_npRemoteObjectMap;
HashSet<uint64_t> m_asynchronousInstanceIDsToIgnore;
};
}
#endif // ENABLE(PLUGIN_PROCESS)
#endif // WebProcessConnection_h