Chromium Code Reviews| Index: Source/core/inspector/WorkerDebuggerAgent.cpp |
| diff --git a/Source/core/inspector/WorkerDebuggerAgent.cpp b/Source/core/inspector/WorkerDebuggerAgent.cpp |
| index 52d2b4d4f5c01e4badba956ba1125f152e94843d..adcacce4c06c65d6b851dc5e50c311d0f2d1e51c 100644 |
| --- a/Source/core/inspector/WorkerDebuggerAgent.cpp |
| +++ b/Source/core/inspector/WorkerDebuggerAgent.cpp |
| @@ -46,7 +46,11 @@ Mutex& workerDebuggerAgentsMutex() |
| return mutex; |
| } |
| +#if ENABLE(OILPAN) |
| +typedef HashMap<WorkerThread*, OwnPtr<CrossThreadPersistent<WorkerDebuggerAgent> > > WorkerDebuggerAgents; |
|
haraken
2014/06/12 08:40:25
Why does this need to be OwnPtr<CrossThreadPersist
keishi
2014/06/13 03:37:34
I get this error because CrossThreadPersistent doe
haraken
2014/06/13 08:02:53
I'm not quite sure what you're planning, but if yo
keishi
2014/06/17 03:13:22
I've already removed the map in my CL.
|
| +#else |
| typedef HashMap<WorkerThread*, WorkerDebuggerAgent*> WorkerDebuggerAgents; |
| +#endif |
| WorkerDebuggerAgents& workerDebuggerAgents() |
| { |
| @@ -54,7 +58,6 @@ WorkerDebuggerAgents& workerDebuggerAgents() |
| return agents; |
| } |
| - |
| class RunInspectorCommandsTask FINAL : public ScriptDebugServer::Task { |
| public: |
| explicit RunInspectorCommandsTask(WorkerThread* thread) |
| @@ -73,35 +76,57 @@ private: |
| } // namespace |
| -PassOwnPtr<WorkerDebuggerAgent> WorkerDebuggerAgent::create(WorkerScriptDebugServer* scriptDebugServer, WorkerGlobalScope* inspectedWorkerGlobalScope, InjectedScriptManager* injectedScriptManager) |
| +PassOwnPtrWillBeRawPtr<WorkerDebuggerAgent> WorkerDebuggerAgent::create(WorkerScriptDebugServer* scriptDebugServer, WorkerGlobalScope* inspectedWorkerGlobalScope, InjectedScriptManager* injectedScriptManager) |
| { |
| - return adoptPtr(new WorkerDebuggerAgent(scriptDebugServer, inspectedWorkerGlobalScope, injectedScriptManager)); |
| + return adoptPtrWillBeNoop(new WorkerDebuggerAgent(scriptDebugServer, inspectedWorkerGlobalScope, injectedScriptManager)); |
| } |
| WorkerDebuggerAgent::WorkerDebuggerAgent(WorkerScriptDebugServer* scriptDebugServer, WorkerGlobalScope* inspectedWorkerGlobalScope, InjectedScriptManager* injectedScriptManager) |
| : InspectorDebuggerAgent(injectedScriptManager) |
| , m_scriptDebugServer(scriptDebugServer) |
| , m_inspectedWorkerGlobalScope(inspectedWorkerGlobalScope) |
| + , m_thread(inspectedWorkerGlobalScope->thread()) |
| { |
| MutexLocker lock(workerDebuggerAgentsMutex()); |
| - workerDebuggerAgents().set(inspectedWorkerGlobalScope->thread(), this); |
| +#if ENABLE(OILPAN) |
| + workerDebuggerAgents().set(m_thread, adoptPtr(new CrossThreadPersistent<WorkerDebuggerAgent>(this))); |
| +#else |
| + workerDebuggerAgents().set(m_thread, this); |
| +#endif |
| } |
| WorkerDebuggerAgent::~WorkerDebuggerAgent() |
| { |
| - MutexLocker lock(workerDebuggerAgentsMutex()); |
| - ASSERT(workerDebuggerAgents().contains(m_inspectedWorkerGlobalScope->thread())); |
| - workerDebuggerAgents().remove(m_inspectedWorkerGlobalScope->thread()); |
| +} |
| + |
| +void WorkerDebuggerAgent::trace(Visitor* visitor) |
| +{ |
| + visitor->trace(m_inspectedWorkerGlobalScope); |
| + InspectorDebuggerAgent::trace(visitor); |
| } |
| void WorkerDebuggerAgent::interruptAndDispatchInspectorCommands(WorkerThread* thread) |
| { |
| MutexLocker lock(workerDebuggerAgentsMutex()); |
| +#if ENABLE(OILPAN) |
| + CrossThreadPersistent<WorkerDebuggerAgent>* agentHandle = workerDebuggerAgents().get(thread); |
| + if (!agentHandle) |
| + return; |
| + WorkerDebuggerAgent* agent = agentHandle->get(); |
| +#else |
| WorkerDebuggerAgent* agent = workerDebuggerAgents().get(thread); |
| +#endif |
| if (agent) |
| agent->m_scriptDebugServer->interruptAndRunTask(adoptPtr(new RunInspectorCommandsTask(thread))); |
| } |
| +void WorkerDebuggerAgent::discard() |
| +{ |
| + MutexLocker lock(workerDebuggerAgentsMutex()); |
| + ASSERT(workerDebuggerAgents().contains(m_thread)); |
| + workerDebuggerAgents().remove(m_thread); |
| +} |
| + |
| void WorkerDebuggerAgent::startListeningScriptDebugServer() |
| { |
| scriptDebugServer().addListener(this); |