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 |