InspectorWorkerAgent.h [plain text]
#ifndef InspectorWorkerAgent_h
#define InspectorWorkerAgent_h
#include "InspectorWebAgentBase.h"
#include <inspector/InspectorBackendDispatchers.h>
#include <wtf/Forward.h>
#include <wtf/HashMap.h>
namespace Inspector {
class InspectorObject;
class WorkerFrontendDispatcher;
}
namespace WebCore {
class InstrumentingAgents;
class URL;
class WorkerGlobalScopeProxy;
typedef String ErrorString;
class InspectorWorkerAgent final : public InspectorAgentBase, public Inspector::WorkerBackendDispatcherHandler {
WTF_MAKE_FAST_ALLOCATED;
public:
explicit InspectorWorkerAgent(InstrumentingAgents*);
virtual ~InspectorWorkerAgent();
virtual void didCreateFrontendAndBackend(Inspector::FrontendChannel*, Inspector::BackendDispatcher*) override;
virtual void willDestroyFrontendAndBackend(Inspector::DisconnectReason) 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 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::WorkerFrontendDispatcher> m_frontendDispatcher;
RefPtr<Inspector::WorkerBackendDispatcher> 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)