InspectorWorkerAgent.h [plain text]
#ifndef InspectorWorkerAgent_h
#define InspectorWorkerAgent_h
#include "InspectorWebAgentBase.h"
#include "InspectorWebBackendDispatchers.h"
#include <wtf/Forward.h>
#include <wtf/HashMap.h>
namespace Inspector {
class InspectorObject;
class InspectorWorkerFrontendDispatcher;
}
namespace WebCore {
class InstrumentingAgents;
class URL;
class WorkerGlobalScopeProxy;
typedef String ErrorString;
class InspectorWorkerAgent : public InspectorAgentBase, public Inspector::InspectorWorkerBackendDispatcherHandler {
WTF_MAKE_FAST_ALLOCATED;
public:
explicit InspectorWorkerAgent(InstrumentingAgents*);
~InspectorWorkerAgent();
virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) override;
virtual void willDestroyFrontendAndBackend(Inspector::InspectorDisconnectReason) override;
bool shouldPauseDedicatedWorkerOnStart() const;
void didStartWorkerGlobalScope(WorkerGlobalScopeProxy*, const URL&);
void workerGlobalScopeTerminated(WorkerGlobalScopeProxy*);
virtual void enable(ErrorString*) override;
virtual void disable(ErrorString*) override;
virtual void canInspectWorkers(ErrorString*, bool*) override;
virtual void connectToWorker(ErrorString*, int workerId) override;
virtual void disconnectFromWorker(ErrorString*, int workerId) override;
virtual void sendMessageToWorker(ErrorString*, int workerId, const RefPtr<Inspector::InspectorObject>& message) override;
virtual void setAutoconnectToWorkers(ErrorString*, bool value) override;
private:
void createWorkerFrontendChannelsForExistingWorkers();
void createWorkerFrontendChannel(WorkerGlobalScopeProxy*, const String& url);
void destroyWorkerFrontendChannels();
std::unique_ptr<Inspector::InspectorWorkerFrontendDispatcher> m_frontendDispatcher;
RefPtr<Inspector::InspectorWorkerBackendDispatcher> m_backendDispatcher;
bool m_enabled;
bool m_shouldPauseDedicatedWorkerOnStart;
class WorkerFrontendChannel;
typedef HashMap<int, WorkerFrontendChannel*> WorkerChannels;
WorkerChannels m_idToChannel;
typedef HashMap<WorkerGlobalScopeProxy*, String> DedicatedWorkers;
DedicatedWorkers m_dedicatedWorkers;
};
}
#endif // !defined(InspectorWorkerAgent_h)