| Index: third_party/WebKit/Source/core/inspector/InspectorWorkerAgent.cpp
|
| diff --git a/third_party/WebKit/Source/core/inspector/InspectorWorkerAgent.cpp b/third_party/WebKit/Source/core/inspector/InspectorWorkerAgent.cpp
|
| index 7395ed4e2c9cab927c1f99ecaf1d0729184c9134..835bc2f2566197d8ca392b94bc14451ca3eb55e6 100644
|
| --- a/third_party/WebKit/Source/core/inspector/InspectorWorkerAgent.cpp
|
| +++ b/third_party/WebKit/Source/core/inspector/InspectorWorkerAgent.cpp
|
| @@ -43,7 +43,7 @@
|
|
|
| namespace WorkerAgentState {
|
| static const char workerInspectionEnabled[] = "workerInspectionEnabled";
|
| -static const char waitForDebuggerOnStart[] = "waitForDebuggerOnStart";
|
| +static const char autoconnectToWorkers[] = "autoconnectToWorkers";
|
| };
|
|
|
| PassOwnPtrWillBeRawPtr<InspectorWorkerAgent> InspectorWorkerAgent::create(PageConsoleAgent* consoleAgent)
|
| @@ -60,7 +60,7 @@
|
| InspectorWorkerAgent::~InspectorWorkerAgent()
|
| {
|
| #if !ENABLE(OILPAN)
|
| - m_instrumentingAgents->setInspectorWorkerAgent(nullptr);
|
| + m_instrumentingAgents->setInspectorWorkerAgent(0);
|
| #endif
|
| }
|
|
|
| @@ -84,8 +84,26 @@
|
| void InspectorWorkerAgent::disable(ErrorString*)
|
| {
|
| m_state->setBoolean(WorkerAgentState::workerInspectionEnabled, false);
|
| - m_state->setBoolean(WorkerAgentState::waitForDebuggerOnStart, false);
|
| + m_state->setBoolean(WorkerAgentState::autoconnectToWorkers, false);
|
| destroyWorkerAgentClients();
|
| +}
|
| +
|
| +void InspectorWorkerAgent::connectToWorker(ErrorString* error, const String& workerId)
|
| +{
|
| + WorkerAgentClient* client = m_idToClient.get(workerId);
|
| + if (client)
|
| + client->connectToWorker();
|
| + else
|
| + *error = "Worker is gone";
|
| +}
|
| +
|
| +void InspectorWorkerAgent::disconnectFromWorker(ErrorString* error, const String& workerId)
|
| +{
|
| + WorkerAgentClient* client = m_idToClient.get(workerId);
|
| + if (client)
|
| + client->dispose();
|
| + else
|
| + *error = "Worker is gone";
|
| }
|
|
|
| void InspectorWorkerAgent::sendMessageToWorker(ErrorString* error, const String& workerId, const String& message)
|
| @@ -97,9 +115,9 @@
|
| *error = "Worker is gone";
|
| }
|
|
|
| -void InspectorWorkerAgent::setWaitForDebuggerOnStart(ErrorString*, bool value)
|
| -{
|
| - m_state->setBoolean(WorkerAgentState::waitForDebuggerOnStart, value);
|
| +void InspectorWorkerAgent::setAutoconnectToWorkers(ErrorString*, bool value)
|
| +{
|
| + m_state->setBoolean(WorkerAgentState::autoconnectToWorkers, value);
|
| }
|
|
|
| void InspectorWorkerAgent::setTracingSessionId(const String& sessionId)
|
| @@ -111,17 +129,17 @@
|
| info.key->writeTimelineStartedEvent(sessionId, info.value.id);
|
| }
|
|
|
| -bool InspectorWorkerAgent::shouldWaitForDebuggerOnWorkerStart()
|
| -{
|
| - return m_state->booleanProperty(WorkerAgentState::workerInspectionEnabled, false) && m_state->booleanProperty(WorkerAgentState::waitForDebuggerOnStart, false);
|
| -}
|
| -
|
| -void InspectorWorkerAgent::didStartWorker(WorkerInspectorProxy* workerInspectorProxy, const KURL& url, bool waitingForDebugger)
|
| +bool InspectorWorkerAgent::shouldPauseDedicatedWorkerOnStart()
|
| +{
|
| + return m_state->booleanProperty(WorkerAgentState::autoconnectToWorkers, false);
|
| +}
|
| +
|
| +void InspectorWorkerAgent::didStartWorker(WorkerInspectorProxy* workerInspectorProxy, const KURL& url)
|
| {
|
| String id = "dedicated:" + IdentifiersFactory::createIdentifier();
|
| m_workerInfos.set(workerInspectorProxy, WorkerInfo(url.string(), id));
|
| if (frontend() && m_state->booleanProperty(WorkerAgentState::workerInspectionEnabled, false))
|
| - createWorkerAgentClient(workerInspectorProxy, url.string(), id, waitingForDebugger);
|
| + createWorkerAgentClient(workerInspectorProxy, url.string(), id);
|
| if (!m_tracingSessionId.isEmpty())
|
| workerInspectorProxy->writeTimelineStartedEvent(m_tracingSessionId, id);
|
| }
|
| @@ -142,7 +160,7 @@
|
| void InspectorWorkerAgent::createWorkerAgentClientsForExistingWorkers()
|
| {
|
| for (auto& info : m_workerInfos)
|
| - createWorkerAgentClient(info.key, info.value.url, info.value.id, false);
|
| + createWorkerAgentClient(info.key, info.value.url, info.value.id);
|
| }
|
|
|
| void InspectorWorkerAgent::destroyWorkerAgentClients()
|
| @@ -152,15 +170,17 @@
|
| m_idToClient.clear();
|
| }
|
|
|
| -void InspectorWorkerAgent::createWorkerAgentClient(WorkerInspectorProxy* workerInspectorProxy, const String& url, const String& id, bool waitingForDebugger)
|
| +void InspectorWorkerAgent::createWorkerAgentClient(WorkerInspectorProxy* workerInspectorProxy, const String& url, const String& id)
|
| {
|
| OwnPtrWillBeRawPtr<WorkerAgentClient> client = WorkerAgentClient::create(frontend(), workerInspectorProxy, id, m_consoleAgent);
|
| WorkerAgentClient* rawClient = client.get();
|
| m_idToClient.set(id, client.release());
|
| - rawClient->connectToWorker();
|
|
|
| ASSERT(frontend());
|
| - frontend()->workerCreated(id, url, waitingForDebugger);
|
| + bool autoconnectToWorkers = m_state->booleanProperty(WorkerAgentState::autoconnectToWorkers, false);
|
| + if (autoconnectToWorkers)
|
| + rawClient->connectToWorker();
|
| + frontend()->workerCreated(id, url, autoconnectToWorkers);
|
| }
|
|
|
| DEFINE_TRACE(InspectorWorkerAgent)
|
|
|