Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(525)

Side by Side Diff: third_party/WebKit/Source/core/workers/WorkerInspectorProxy.cpp

Issue 2878933003: Makes WorkerInspectorProxy work with ExecutionContext instead of Document (Closed)
Patch Set: . Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698