Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 44 #include "wtf/text/WTFString.h" | 44 #include "wtf/text/WTFString.h" |
| 45 | 45 |
| 46 namespace blink { | 46 namespace blink { |
| 47 | 47 |
| 48 namespace WorkerAgentState { | 48 namespace WorkerAgentState { |
| 49 static const char workerInspectionEnabled[] = "workerInspectionEnabled"; | 49 static const char workerInspectionEnabled[] = "workerInspectionEnabled"; |
| 50 static const char autoconnectToWorkers[] = "autoconnectToWorkers"; | 50 static const char autoconnectToWorkers[] = "autoconnectToWorkers"; |
| 51 }; | 51 }; |
| 52 | 52 |
| 53 class InspectorWorkerAgent::WorkerAgentClient final : public WorkerInspectorProx y::PageInspector { | 53 class InspectorWorkerAgent::WorkerAgentClient final : public WorkerInspectorProx y::PageInspector { |
| 54 WTF_MAKE_FAST_ALLOCATED(InspectorWorkerAgent::WorkerAgentClient); | 54 WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED(InspectorWorkerAgent::WorkerAgentCli ent); |
| 55 public: | 55 public: |
| 56 static PassOwnPtrWillBeRawPtr<WorkerAgentClient> create(InspectorFrontend::W orker* frontend, WorkerInspectorProxy* proxy, const String& id, PageConsoleAgent * consoleAgent) | |
| 57 { | |
| 58 return adoptPtrWillBeNoop(new WorkerAgentClient(frontend, proxy, id, con soleAgent)); | |
| 59 } | |
| 60 | |
| 56 WorkerAgentClient(InspectorFrontend::Worker* frontend, WorkerInspectorProxy* proxy, const String& id, PageConsoleAgent* consoleAgent) | 61 WorkerAgentClient(InspectorFrontend::Worker* frontend, WorkerInspectorProxy* proxy, const String& id, PageConsoleAgent* consoleAgent) |
| 57 : m_frontend(frontend) | 62 : m_frontend(frontend) |
| 58 , m_proxy(proxy) | 63 , m_proxy(proxy) |
| 59 , m_id(id) | 64 , m_id(id) |
| 60 , m_connected(false) | 65 , m_connected(false) |
| 61 , m_consoleAgent(consoleAgent) | 66 , m_consoleAgent(consoleAgent) |
| 62 { | 67 { |
| 63 ASSERT(!proxy->pageInspector()); | 68 ASSERT(!proxy->pageInspector()); |
| 64 } | 69 } |
| 65 ~WorkerAgentClient() override | 70 ~WorkerAgentClient() override |
| 66 { | 71 { |
| 67 disconnectFromWorker(); | 72 } |
| 73 DEFINE_INLINE_VIRTUAL_TRACE() | |
| 74 { | |
| 75 visitor->trace(m_proxy); | |
| 76 visitor->trace(m_consoleAgent); | |
| 77 WorkerInspectorProxy::PageInspector::trace(visitor); | |
| 68 } | 78 } |
| 69 | 79 |
| 70 String id() const { return m_id; } | 80 String id() const { return m_id; } |
| 71 WorkerInspectorProxy* proxy() const { return m_proxy; } | 81 WorkerInspectorProxy* proxy() const { return m_proxy; } |
| 72 | 82 |
| 73 void connectToWorker() | 83 void connectToWorker() |
| 74 { | 84 { |
| 75 if (m_connected) | 85 if (m_connected) |
| 76 return; | 86 return; |
| 77 m_connected = true; | 87 m_connected = true; |
| 78 m_proxy->connectToInspector(this); | 88 m_proxy->connectToInspector(this); |
| 79 } | 89 } |
| 80 | 90 |
| 81 void disconnectFromWorker() | 91 void disconnectFromWorker() |
|
haraken
2015/07/30 07:47:31
Shall we:
- Rename disconnectFromWorker to dispos
keishi
2015/08/03 09:35:56
Done.
| |
| 82 { | 92 { |
| 83 if (!m_connected) | 93 if (!m_connected) |
| 84 return; | 94 return; |
| 85 m_connected = false; | 95 m_connected = false; |
| 86 m_proxy->disconnectFromInspector(); | 96 m_proxy->disconnectFromInspector(); |
| 87 } | 97 } |
| 88 | 98 |
| 89 private: | 99 private: |
| 90 // WorkerInspectorProxy::PageInspector implementation | 100 // WorkerInspectorProxy::PageInspector implementation |
| 91 void dispatchMessageFromWorker(const String& message) override | 101 void dispatchMessageFromWorker(const String& message) override |
| 92 { | 102 { |
| 93 m_frontend->dispatchMessageFromWorker(m_id, message); | 103 m_frontend->dispatchMessageFromWorker(m_id, message); |
| 94 } | 104 } |
| 95 // WorkerInspectorProxy::PageInspector implementation | 105 // WorkerInspectorProxy::PageInspector implementation |
| 96 void workerConsoleAgentEnabled(WorkerGlobalScopeProxy* proxy) override | 106 void workerConsoleAgentEnabled(WorkerGlobalScopeProxy* proxy) override |
| 97 { | 107 { |
| 98 m_consoleAgent->workerConsoleAgentEnabled(proxy); | 108 m_consoleAgent->workerConsoleAgentEnabled(proxy); |
| 99 } | 109 } |
| 100 | 110 |
| 101 InspectorFrontend::Worker* m_frontend; | 111 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
| |
| 102 WorkerInspectorProxy* m_proxy; | 112 RawPtrWillBeMember<WorkerInspectorProxy> m_proxy; |
| 103 String m_id; | 113 String m_id; |
| 104 bool m_connected; | 114 bool m_connected; |
| 105 PageConsoleAgent* m_consoleAgent; | 115 RawPtrWillBeMember<PageConsoleAgent> m_consoleAgent; |
| 106 }; | 116 }; |
| 107 | 117 |
| 108 PassOwnPtrWillBeRawPtr<InspectorWorkerAgent> InspectorWorkerAgent::create(PageCo nsoleAgent* consoleAgent) | 118 PassOwnPtrWillBeRawPtr<InspectorWorkerAgent> InspectorWorkerAgent::create(PageCo nsoleAgent* consoleAgent) |
| 109 { | 119 { |
| 110 return adoptPtrWillBeNoop(new InspectorWorkerAgent(consoleAgent)); | 120 return adoptPtrWillBeNoop(new InspectorWorkerAgent(consoleAgent)); |
| 111 } | 121 } |
| 112 | 122 |
| 113 InspectorWorkerAgent::InspectorWorkerAgent(PageConsoleAgent* consoleAgent) | 123 InspectorWorkerAgent::InspectorWorkerAgent(PageConsoleAgent* consoleAgent) |
| 114 : InspectorBaseAgent<InspectorWorkerAgent, InspectorFrontend::Worker>("Worke r") | 124 : InspectorBaseAgent<InspectorWorkerAgent, InspectorFrontend::Worker>("Worke r") |
| 115 , m_consoleAgent(consoleAgent) | 125 , m_consoleAgent(consoleAgent) |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 202 if (!m_tracingSessionId.isEmpty()) | 212 if (!m_tracingSessionId.isEmpty()) |
| 203 workerInspectorProxy->writeTimelineStartedEvent(m_tracingSessionId, id); | 213 workerInspectorProxy->writeTimelineStartedEvent(m_tracingSessionId, id); |
| 204 } | 214 } |
| 205 | 215 |
| 206 void InspectorWorkerAgent::workerTerminated(WorkerInspectorProxy* proxy) | 216 void InspectorWorkerAgent::workerTerminated(WorkerInspectorProxy* proxy) |
| 207 { | 217 { |
| 208 m_workerInfos.remove(proxy); | 218 m_workerInfos.remove(proxy); |
| 209 for (WorkerClients::iterator it = m_idToClient.begin(); it != m_idToClient.e nd(); ++it) { | 219 for (WorkerClients::iterator it = m_idToClient.begin(); it != m_idToClient.e nd(); ++it) { |
| 210 if (proxy == it->value->proxy()) { | 220 if (proxy == it->value->proxy()) { |
| 211 frontend()->workerTerminated(it->key); | 221 frontend()->workerTerminated(it->key); |
| 212 delete it->value; | 222 it->value->disconnectFromWorker(); |
| 213 m_idToClient.remove(it); | 223 m_idToClient.remove(it); |
| 214 return; | 224 return; |
| 215 } | 225 } |
| 216 } | 226 } |
| 217 } | 227 } |
| 218 | 228 |
| 219 void InspectorWorkerAgent::createWorkerAgentClientsForExistingWorkers() | 229 void InspectorWorkerAgent::createWorkerAgentClientsForExistingWorkers() |
| 220 { | 230 { |
| 221 for (auto& info : m_workerInfos) | 231 for (auto& info : m_workerInfos) |
| 222 createWorkerAgentClient(info.key, info.value.url, info.value.id); | 232 createWorkerAgentClient(info.key, info.value.url, info.value.id); |
| 223 } | 233 } |
| 224 | 234 |
| 225 void InspectorWorkerAgent::destroyWorkerAgentClients() | 235 void InspectorWorkerAgent::destroyWorkerAgentClients() |
| 226 { | 236 { |
| 227 for (auto& client : m_idToClient) { | 237 for (auto& client : m_idToClient) { |
|
yurys
2015/07/30 09:01:39
style nit: drop {}
keishi
2015/08/03 09:35:56
Done.
| |
| 228 client.value->disconnectFromWorker(); | 238 client.value->disconnectFromWorker(); |
| 229 delete client.value; | |
| 230 } | 239 } |
| 231 m_idToClient.clear(); | 240 m_idToClient.clear(); |
| 232 } | 241 } |
| 233 | 242 |
| 234 void InspectorWorkerAgent::createWorkerAgentClient(WorkerInspectorProxy* workerI nspectorProxy, const String& url, const String& id) | 243 void InspectorWorkerAgent::createWorkerAgentClient(WorkerInspectorProxy* workerI nspectorProxy, const String& url, const String& id) |
| 235 { | 244 { |
| 236 WorkerAgentClient* client = new WorkerAgentClient(frontend(), workerInspecto rProxy, id, m_consoleAgent); | 245 WorkerAgentClient* client = m_idToClient.set(id, WorkerAgentClient::create(f rontend(), 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.
| |
| 237 m_idToClient.set(id, client); | |
| 238 | 246 |
| 239 ASSERT(frontend()); | 247 ASSERT(frontend()); |
| 240 bool autoconnectToWorkers = m_state->getBoolean(WorkerAgentState::autoconnec tToWorkers); | 248 bool autoconnectToWorkers = m_state->getBoolean(WorkerAgentState::autoconnec tToWorkers); |
| 241 if (autoconnectToWorkers) | 249 if (autoconnectToWorkers) |
| 242 client->connectToWorker(); | 250 client->connectToWorker(); |
| 243 frontend()->workerCreated(id, url, autoconnectToWorkers); | 251 frontend()->workerCreated(id, url, autoconnectToWorkers); |
| 244 } | 252 } |
| 245 | 253 |
| 254 DEFINE_TRACE(InspectorWorkerAgent) | |
| 255 { | |
| 256 #if ENABLE(OILPAN) | |
| 257 visitor->trace(m_idToClient); | |
| 258 #endif | |
| 259 InspectorBaseAgent<InspectorWorkerAgent, InspectorFrontend::Worker>::trace(v isitor); | |
| 260 } | |
| 261 | |
| 246 } // namespace blink | 262 } // namespace blink |
| OLD | NEW |