diff options
Diffstat (limited to 'Source/WebCore/inspector/InspectorWorkerAgent.h')
-rw-r--r-- | Source/WebCore/inspector/InspectorWorkerAgent.h | 119 |
1 files changed, 53 insertions, 66 deletions
diff --git a/Source/WebCore/inspector/InspectorWorkerAgent.h b/Source/WebCore/inspector/InspectorWorkerAgent.h index 753c98381..400bb599c 100644 --- a/Source/WebCore/inspector/InspectorWorkerAgent.h +++ b/Source/WebCore/inspector/InspectorWorkerAgent.h @@ -1,92 +1,79 @@ /* - * Copyright (C) 2011 Google Inc. All rights reserved. + * Copyright (C) 2016 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef InspectorWorkerAgent_h -#define InspectorWorkerAgent_h +#pragma once #include "InspectorWebAgentBase.h" -#include "InspectorWebBackendDispatchers.h" -#include <wtf/Forward.h> +#include "WorkerInspectorProxy.h" +#include <inspector/InspectorBackendDispatchers.h> +#include <inspector/InspectorFrontendDispatchers.h> #include <wtf/HashMap.h> -namespace Inspector { -class InspectorObject; -class InspectorWorkerFrontendDispatcher; -} - namespace WebCore { -class InstrumentingAgents; + +class Page; class URL; -class WorkerGlobalScopeProxy; typedef String ErrorString; -class InspectorWorkerAgent : public InspectorAgentBase, public Inspector::InspectorWorkerBackendDispatcherHandler { +class InspectorWorkerAgent final : public InspectorAgentBase, public Inspector::WorkerBackendDispatcherHandler, public WorkerInspectorProxy::PageChannel { + WTF_MAKE_NONCOPYABLE(InspectorWorkerAgent); + WTF_MAKE_FAST_ALLOCATED; public: - explicit InspectorWorkerAgent(InstrumentingAgents*); - ~InspectorWorkerAgent(); + InspectorWorkerAgent(PageAgentContext&); + virtual ~InspectorWorkerAgent() { } - virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) override; - virtual void willDestroyFrontendAndBackend(Inspector::InspectorDisconnectReason) override; + void didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*) override; + void willDestroyFrontendAndBackend(Inspector::DisconnectReason) override; - // Called from InspectorInstrumentation - bool shouldPauseDedicatedWorkerOnStart() const; - void didStartWorkerGlobalScope(WorkerGlobalScopeProxy*, const URL&); - void workerGlobalScopeTerminated(WorkerGlobalScopeProxy*); + // WorkerBackendDispatcherHandler + void enable(ErrorString&) override; + void disable(ErrorString&) override; + void initialized(ErrorString&, const String& workerId) override; + void sendMessageToWorker(ErrorString&, const String& workerId, const String& message) override; - // Called from InspectorBackendDispatcher - 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; + // PageChannel + void sendMessageFromWorkerToFrontend(WorkerInspectorProxy*, const String& message) override; + + // InspectorInstrumentation + bool shouldWaitForDebuggerOnStart() const; + void workerStarted(WorkerInspectorProxy*, const URL&); + void workerTerminated(WorkerInspectorProxy*); private: - void createWorkerFrontendChannelsForExistingWorkers(); - void createWorkerFrontendChannel(WorkerGlobalScopeProxy*, const String& url); - void destroyWorkerFrontendChannels(); + void connectToAllWorkerInspectorProxiesForPage(); + void disconnectFromAllWorkerInspectorProxies(); + void connectToWorkerInspectorProxy(WorkerInspectorProxy*); + void disconnectFromWorkerInspectorProxy(WorkerInspectorProxy*); - std::unique_ptr<Inspector::InspectorWorkerFrontendDispatcher> m_frontendDispatcher; - RefPtr<Inspector::InspectorWorkerBackendDispatcher> m_backendDispatcher; - bool m_enabled; - bool m_shouldPauseDedicatedWorkerOnStart; + std::unique_ptr<Inspector::WorkerFrontendDispatcher> m_frontendDispatcher; + RefPtr<Inspector::WorkerBackendDispatcher> m_backendDispatcher; - class WorkerFrontendChannel; - typedef HashMap<int, WorkerFrontendChannel*> WorkerChannels; - WorkerChannels m_idToChannel; - typedef HashMap<WorkerGlobalScopeProxy*, String> DedicatedWorkers; - DedicatedWorkers m_dedicatedWorkers; + Page& m_page; + HashMap<String, WorkerInspectorProxy*> m_connectedProxies; + bool m_enabled { false }; }; } // namespace WebCore - -#endif // !defined(InspectorWorkerAgent_h) |