Chromium Code Reviews| Index: Source/core/inspector/InspectorWorkerAgent.cpp |
| diff --git a/Source/core/inspector/InspectorWorkerAgent.cpp b/Source/core/inspector/InspectorWorkerAgent.cpp |
| index b70864e2ccce00494c71feea4a2de4872614c7d7..5cc7a326be476ead9ea933fb46de4992b9dfaeb7 100644 |
| --- a/Source/core/inspector/InspectorWorkerAgent.cpp |
| +++ b/Source/core/inspector/InspectorWorkerAgent.cpp |
| @@ -51,8 +51,13 @@ static const char autoconnectToWorkers[] = "autoconnectToWorkers"; |
| }; |
| class InspectorWorkerAgent::WorkerAgentClient final : public WorkerInspectorProxy::PageInspector { |
| - WTF_MAKE_FAST_ALLOCATED(InspectorWorkerAgent::WorkerAgentClient); |
| + WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED(InspectorWorkerAgent::WorkerAgentClient); |
| public: |
| + static PassOwnPtrWillBeRawPtr<WorkerAgentClient> create(InspectorFrontend::Worker* frontend, WorkerInspectorProxy* proxy, const String& id, PageConsoleAgent* consoleAgent) |
| + { |
| + return adoptPtrWillBeNoop(new WorkerAgentClient(frontend, proxy, id, consoleAgent)); |
| + } |
| + |
| WorkerAgentClient(InspectorFrontend::Worker* frontend, WorkerInspectorProxy* proxy, const String& id, PageConsoleAgent* consoleAgent) |
| : m_frontend(frontend) |
| , m_proxy(proxy) |
| @@ -64,7 +69,12 @@ public: |
| } |
| ~WorkerAgentClient() override |
| { |
| - disconnectFromWorker(); |
| + } |
| + DEFINE_INLINE_VIRTUAL_TRACE() |
| + { |
| + visitor->trace(m_proxy); |
| + visitor->trace(m_consoleAgent); |
| + WorkerInspectorProxy::PageInspector::trace(visitor); |
| } |
| String id() const { return m_id; } |
| @@ -99,10 +109,10 @@ private: |
| } |
| InspectorFrontend::Worker* m_frontend; |
|
haraken
2015/07/30 07:47:31
Are you sure that this pointer doesn't become stal
keishi
2015/08/03 09:35:56
When FrontEnd is destroyed InspectorBaseAgent::cle
|
| - WorkerInspectorProxy* m_proxy; |
| + RawPtrWillBeMember<WorkerInspectorProxy> m_proxy; |
| String m_id; |
| bool m_connected; |
| - PageConsoleAgent* m_consoleAgent; |
| + RawPtrWillBeMember<PageConsoleAgent> m_consoleAgent; |
| }; |
| PassOwnPtrWillBeRawPtr<InspectorWorkerAgent> InspectorWorkerAgent::create(PageConsoleAgent* consoleAgent) |
| @@ -209,7 +219,7 @@ void InspectorWorkerAgent::workerTerminated(WorkerInspectorProxy* proxy) |
| for (WorkerClients::iterator it = m_idToClient.begin(); it != m_idToClient.end(); ++it) { |
| if (proxy == it->value->proxy()) { |
| frontend()->workerTerminated(it->key); |
| - delete it->value; |
| + it->value->disconnectFromWorker(); |
| m_idToClient.remove(it); |
| return; |
| } |
| @@ -226,15 +236,13 @@ void InspectorWorkerAgent::destroyWorkerAgentClients() |
| { |
| for (auto& client : m_idToClient) { |
|
yurys
2015/07/30 09:01:39
style nit: drop {}
keishi
2015/08/03 09:35:56
Done.
|
| client.value->disconnectFromWorker(); |
| - delete client.value; |
| } |
| m_idToClient.clear(); |
| } |
| void InspectorWorkerAgent::createWorkerAgentClient(WorkerInspectorProxy* workerInspectorProxy, const String& url, const String& id) |
| { |
| - WorkerAgentClient* client = new WorkerAgentClient(frontend(), workerInspectorProxy, id, m_consoleAgent); |
| - m_idToClient.set(id, client); |
| + WorkerAgentClient* client = m_idToClient.set(id, WorkerAgentClient::create(frontend(), workerInspectorProxy, id, m_consoleAgent)).storedValue->value.get(); |
|
yurys
2015/07/30 09:01:39
Please extract client creation on a separate line
keishi
2015/08/03 09:35:56
Done.
|
| ASSERT(frontend()); |
| bool autoconnectToWorkers = m_state->getBoolean(WorkerAgentState::autoconnectToWorkers); |
| @@ -243,4 +251,12 @@ void InspectorWorkerAgent::createWorkerAgentClient(WorkerInspectorProxy* workerI |
| frontend()->workerCreated(id, url, autoconnectToWorkers); |
| } |
| +DEFINE_TRACE(InspectorWorkerAgent) |
| +{ |
| +#if ENABLE(OILPAN) |
| + visitor->trace(m_idToClient); |
| +#endif |
| + InspectorBaseAgent<InspectorWorkerAgent, InspectorFrontend::Worker>::trace(visitor); |
| +} |
| + |
| } // namespace blink |