| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "core/workers/WorkerInspectorProxy.h" | 5 #include "core/workers/WorkerInspectorProxy.h" |
| 6 | 6 |
| 7 #include "core/frame/FrameConsole.h" | 7 #include "core/frame/FrameConsole.h" |
| 8 #include "core/inspector/IdentifiersFactory.h" | 8 #include "core/inspector/IdentifiersFactory.h" |
| 9 #include "core/inspector/InspectorTraceEvents.h" | 9 #include "core/inspector/InspectorTraceEvents.h" |
| 10 #include "core/inspector/InspectorWorkerAgent.h" | 10 #include "core/inspector/InspectorWorkerAgent.h" |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 } | 29 } |
| 30 | 30 |
| 31 } // namespace | 31 } // namespace |
| 32 | 32 |
| 33 const WorkerInspectorProxy::WorkerInspectorProxySet& | 33 const WorkerInspectorProxy::WorkerInspectorProxySet& |
| 34 WorkerInspectorProxy::AllProxies() { | 34 WorkerInspectorProxy::AllProxies() { |
| 35 return InspectorProxies(); | 35 return InspectorProxies(); |
| 36 } | 36 } |
| 37 | 37 |
| 38 WorkerInspectorProxy::WorkerInspectorProxy() | 38 WorkerInspectorProxy::WorkerInspectorProxy() |
| 39 : worker_thread_(nullptr), document_(nullptr), page_inspector_(nullptr) {} | 39 : worker_thread_(nullptr), |
| 40 execution_context_(nullptr), |
| 41 page_inspector_(nullptr) {} |
| 40 | 42 |
| 41 WorkerInspectorProxy* WorkerInspectorProxy::Create() { | 43 WorkerInspectorProxy* WorkerInspectorProxy::Create() { |
| 42 return new WorkerInspectorProxy(); | 44 return new WorkerInspectorProxy(); |
| 43 } | 45 } |
| 44 | 46 |
| 45 WorkerInspectorProxy::~WorkerInspectorProxy() {} | 47 WorkerInspectorProxy::~WorkerInspectorProxy() {} |
| 46 | 48 |
| 47 const String& WorkerInspectorProxy::InspectorId() { | 49 const String& WorkerInspectorProxy::InspectorId() { |
| 48 if (inspector_id_.IsEmpty()) | 50 if (inspector_id_.IsEmpty()) |
| 49 inspector_id_ = "dedicated:" + IdentifiersFactory::CreateIdentifier(); | 51 inspector_id_ = "dedicated:" + IdentifiersFactory::CreateIdentifier(); |
| 50 return inspector_id_; | 52 return inspector_id_; |
| 51 } | 53 } |
| 52 | 54 |
| 53 WorkerThreadStartMode WorkerInspectorProxy::WorkerStartMode( | 55 WorkerThreadStartMode WorkerInspectorProxy::WorkerStartMode( |
| 54 Document* document) { | 56 ExecutionContext* execution_context) { |
| 55 bool result = false; | 57 bool result = false; |
| 56 probe::shouldWaitForDebuggerOnWorkerStart(document, &result); | 58 probe::shouldWaitForDebuggerOnWorkerStart(execution_context, &result); |
| 57 return result ? kPauseWorkerGlobalScopeOnStart | 59 return result ? kPauseWorkerGlobalScopeOnStart |
| 58 : kDontPauseWorkerGlobalScopeOnStart; | 60 : kDontPauseWorkerGlobalScopeOnStart; |
| 59 } | 61 } |
| 60 | 62 |
| 61 void WorkerInspectorProxy::WorkerThreadCreated(Document* document, | 63 void WorkerInspectorProxy::WorkerThreadCreated( |
| 62 WorkerThread* worker_thread, | 64 ExecutionContext* execution_context, |
| 63 const KURL& url) { | 65 WorkerThread* worker_thread, |
| 66 const KURL& url) { |
| 64 worker_thread_ = worker_thread; | 67 worker_thread_ = worker_thread; |
| 65 document_ = document; | 68 execution_context_ = execution_context; |
| 66 url_ = url.GetString(); | 69 url_ = url.GetString(); |
| 67 InspectorProxies().insert(this); | 70 InspectorProxies().insert(this); |
| 68 // We expect everyone starting worker thread to synchronously ask for | 71 // We expect everyone starting worker thread to synchronously ask for |
| 69 // workerStartMode right before. | 72 // WorkerStartMode() right before. |
| 70 bool waiting_for_debugger = false; | 73 bool waiting_for_debugger = false; |
| 71 probe::shouldWaitForDebuggerOnWorkerStart(document, &waiting_for_debugger); | 74 probe::shouldWaitForDebuggerOnWorkerStart(execution_context_, |
| 72 probe::didStartWorker(document, this, waiting_for_debugger); | 75 &waiting_for_debugger); |
| 76 probe::didStartWorker(execution_context_, this, waiting_for_debugger); |
| 73 } | 77 } |
| 74 | 78 |
| 75 void WorkerInspectorProxy::WorkerThreadTerminated() { | 79 void WorkerInspectorProxy::WorkerThreadTerminated() { |
| 76 if (worker_thread_) { | 80 if (worker_thread_) { |
| 77 DCHECK(InspectorProxies().Contains(this)); | 81 DCHECK(InspectorProxies().Contains(this)); |
| 78 InspectorProxies().erase(this); | 82 InspectorProxies().erase(this); |
| 79 probe::workerTerminated(document_, this); | 83 probe::workerTerminated(execution_context_, this); |
| 80 } | 84 } |
| 81 | 85 |
| 82 worker_thread_ = nullptr; | 86 worker_thread_ = nullptr; |
| 83 page_inspector_ = nullptr; | 87 page_inspector_ = nullptr; |
| 84 document_ = nullptr; | 88 execution_context_ = nullptr; |
| 85 } | 89 } |
| 86 | 90 |
| 87 void WorkerInspectorProxy::DispatchMessageFromWorker(const String& message) { | 91 void WorkerInspectorProxy::DispatchMessageFromWorker(const String& message) { |
| 88 if (page_inspector_) | 92 if (page_inspector_) |
| 89 page_inspector_->DispatchMessageFromWorker(this, message); | 93 page_inspector_->DispatchMessageFromWorker(this, message); |
| 90 } | 94 } |
| 91 | 95 |
| 92 void WorkerInspectorProxy::AddConsoleMessageFromWorker( | 96 void WorkerInspectorProxy::AddConsoleMessageFromWorker( |
| 93 MessageLevel level, | 97 MessageLevel level, |
| 94 const String& message, | 98 const String& message, |
| 95 std::unique_ptr<SourceLocation> location) { | 99 std::unique_ptr<SourceLocation> location) { |
| 96 if (LocalFrame* frame = document_->GetFrame()) | 100 execution_context_->AddConsoleMessage(ConsoleMessage::CreateFromWorker( |
| 97 frame->Console().AddMessageFromWorker(level, message, std::move(location), | 101 level, message, std::move(location), inspector_id_)); |
| 98 inspector_id_); | |
| 99 } | 102 } |
| 100 | 103 |
| 101 static void ConnectToWorkerGlobalScopeInspectorTask( | 104 static void ConnectToWorkerGlobalScopeInspectorTask( |
| 102 WorkerThread* worker_thread) { | 105 WorkerThread* worker_thread) { |
| 103 if (WorkerInspectorController* inspector = | 106 if (WorkerInspectorController* inspector = |
| 104 worker_thread->GetWorkerInspectorController()) | 107 worker_thread->GetWorkerInspectorController()) |
| 105 inspector->ConnectFrontend(); | 108 inspector->ConnectFrontend(); |
| 106 } | 109 } |
| 107 | 110 |
| 108 void WorkerInspectorProxy::ConnectToInspector( | 111 void WorkerInspectorProxy::ConnectToInspector( |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 if (!worker_thread_) | 154 if (!worker_thread_) |
| 152 return; | 155 return; |
| 153 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), | 156 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), |
| 154 "TracingSessionIdForWorker", TRACE_EVENT_SCOPE_THREAD, | 157 "TracingSessionIdForWorker", TRACE_EVENT_SCOPE_THREAD, |
| 155 "data", | 158 "data", |
| 156 InspectorTracingSessionIdForWorkerEvent::Data( | 159 InspectorTracingSessionIdForWorkerEvent::Data( |
| 157 session_id, InspectorId(), worker_thread_)); | 160 session_id, InspectorId(), worker_thread_)); |
| 158 } | 161 } |
| 159 | 162 |
| 160 DEFINE_TRACE(WorkerInspectorProxy) { | 163 DEFINE_TRACE(WorkerInspectorProxy) { |
| 161 visitor->Trace(document_); | 164 visitor->Trace(execution_context_); |
| 162 } | 165 } |
| 163 | 166 |
| 164 } // namespace blink | 167 } // namespace blink |
| OLD | NEW |