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

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

Issue 2141673002: [DevTools] Always send a copy of worker message through the page. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nit Created 4 years, 5 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/dom/CrossThreadTask.h" 7 #include "core/dom/CrossThreadTask.h"
8 #include "core/frame/FrameConsole.h" 8 #include "core/frame/FrameConsole.h"
9 #include "core/inspector/IdentifiersFactory.h" 9 #include "core/inspector/IdentifiersFactory.h"
10 #include "core/inspector/InspectorInstrumentation.h" 10 #include "core/inspector/InspectorInstrumentation.h"
11 #include "core/inspector/InspectorTraceEvents.h" 11 #include "core/inspector/InspectorTraceEvents.h"
12 #include "core/inspector/WorkerInspectorController.h" 12 #include "core/inspector/WorkerInspectorController.h"
13 #include "core/workers/WorkerThread.h" 13 #include "core/workers/WorkerThread.h"
14 #include "platform/TraceEvent.h" 14 #include "platform/TraceEvent.h"
15 #include "platform/weborigin/KURL.h" 15 #include "platform/weborigin/KURL.h"
16 #include "public/platform/WebTaskRunner.h" 16 #include "public/platform/WebTaskRunner.h"
17 #include "public/platform/WebTraceLocation.h" 17 #include "public/platform/WebTraceLocation.h"
18 18
19 namespace blink { 19 namespace blink {
20 20
21 namespace { 21 namespace {
22 22
23 static const unsigned maxConsoleMessageCount = 1000;
24
25 static WorkerInspectorProxy::WorkerInspectorProxySet& inspectorProxies() 23 static WorkerInspectorProxy::WorkerInspectorProxySet& inspectorProxies()
26 { 24 {
27 DEFINE_STATIC_LOCAL(WorkerInspectorProxy::WorkerInspectorProxySet, proxies, ()); 25 DEFINE_STATIC_LOCAL(WorkerInspectorProxy::WorkerInspectorProxySet, proxies, ());
28 return proxies; 26 return proxies;
29 } 27 }
30 28
31 } // namespace 29 } // namespace
32 30
33 const WorkerInspectorProxy::WorkerInspectorProxySet& WorkerInspectorProxy::allPr oxies() 31 const WorkerInspectorProxy::WorkerInspectorProxySet& WorkerInspectorProxy::allPr oxies()
34 { 32 {
35 return inspectorProxies(); 33 return inspectorProxies();
36 } 34 }
37 35
38 WorkerInspectorProxy::WorkerInspectorProxy() 36 WorkerInspectorProxy::WorkerInspectorProxy()
39 : m_workerThread(nullptr) 37 : m_workerThread(nullptr)
40 , m_document(nullptr) 38 , m_document(nullptr)
41 , m_pageInspector(nullptr) 39 , m_pageInspector(nullptr)
42 , m_ignoreConsoleMessages(false)
43 { 40 {
44 } 41 }
45 42
46 WorkerInspectorProxy* WorkerInspectorProxy::create() 43 WorkerInspectorProxy* WorkerInspectorProxy::create()
47 { 44 {
48 return new WorkerInspectorProxy(); 45 return new WorkerInspectorProxy();
49 } 46 }
50 47
51 WorkerInspectorProxy::~WorkerInspectorProxy() 48 WorkerInspectorProxy::~WorkerInspectorProxy()
52 { 49 {
(...skipping 25 matching lines...) Expand all
78 } 75 }
79 76
80 void WorkerInspectorProxy::workerThreadTerminated() 77 void WorkerInspectorProxy::workerThreadTerminated()
81 { 78 {
82 if (m_workerThread) { 79 if (m_workerThread) {
83 DCHECK(inspectorProxies().contains(this)); 80 DCHECK(inspectorProxies().contains(this));
84 inspectorProxies().remove(this); 81 inspectorProxies().remove(this);
85 InspectorInstrumentation::workerTerminated(m_document, this); 82 InspectorInstrumentation::workerTerminated(m_document, this);
86 } 83 }
87 84
88 LocalFrame* frame = m_document ? m_document->frame() : nullptr;
89 if (frame) {
90 for (ConsoleMessage* message : m_consoleMessages)
91 frame->console().adoptWorkerMessage(message);
92 m_consoleMessages.clear();
93 }
94
95 m_workerThread = nullptr; 85 m_workerThread = nullptr;
96 m_pageInspector = nullptr; 86 m_pageInspector = nullptr;
97 m_document = nullptr; 87 m_document = nullptr;
98 } 88 }
99 89
100 void WorkerInspectorProxy::dispatchMessageFromWorker(const String& message) 90 void WorkerInspectorProxy::dispatchMessageFromWorker(const String& message)
101 { 91 {
102 if (m_pageInspector) 92 if (m_pageInspector)
103 m_pageInspector->dispatchMessageFromWorker(this, message); 93 m_pageInspector->dispatchMessageFromWorker(this, message);
104 } 94 }
105 95
106 void WorkerInspectorProxy::workerConsoleAgentEnabled()
107 {
108 m_ignoreConsoleMessages = true;
109 m_consoleMessages.clear();
110 }
111
112 void WorkerInspectorProxy::addConsoleMessageFromWorker(ConsoleMessage* consoleMe ssage) 96 void WorkerInspectorProxy::addConsoleMessageFromWorker(ConsoleMessage* consoleMe ssage)
113 { 97 {
114 if (!m_ignoreConsoleMessages) {
115 DCHECK(m_consoleMessages.size() <= maxConsoleMessageCount);
116 if (m_consoleMessages.size() == maxConsoleMessageCount)
117 m_consoleMessages.removeFirst();
118 m_consoleMessages.append(consoleMessage);
119 }
120 if (LocalFrame* frame = m_document->frame()) 98 if (LocalFrame* frame = m_document->frame())
121 frame->console().reportWorkerMessage(consoleMessage); 99 frame->console().addMessageFromWorker(consoleMessage, m_inspectorId);
122 } 100 }
123 101
124 static void connectToWorkerGlobalScopeInspectorTask(WorkerThread* workerThread) 102 static void connectToWorkerGlobalScopeInspectorTask(WorkerThread* workerThread)
125 { 103 {
126 if (WorkerInspectorController* inspector = workerThread->workerGlobalScope() ->workerInspectorController()) 104 if (WorkerInspectorController* inspector = workerThread->workerGlobalScope() ->workerInspectorController())
127 inspector->connectFrontend(); 105 inspector->connectFrontend();
128 } 106 }
129 107
130 void WorkerInspectorProxy::connectToInspector(WorkerInspectorProxy::PageInspecto r* pageInspector) 108 void WorkerInspectorProxy::connectToInspector(WorkerInspectorProxy::PageInspecto r* pageInspector)
131 { 109 {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 void WorkerInspectorProxy::writeTimelineStartedEvent(const String& sessionId) 143 void WorkerInspectorProxy::writeTimelineStartedEvent(const String& sessionId)
166 { 144 {
167 if (!m_workerThread) 145 if (!m_workerThread)
168 return; 146 return;
169 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "Tracin gSessionIdForWorker", TRACE_EVENT_SCOPE_THREAD, "data", InspectorTracingSessionI dForWorkerEvent::data(sessionId, inspectorId(), m_workerThread)); 147 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "Tracin gSessionIdForWorker", TRACE_EVENT_SCOPE_THREAD, "data", InspectorTracingSessionI dForWorkerEvent::data(sessionId, inspectorId(), m_workerThread));
170 } 148 }
171 149
172 DEFINE_TRACE(WorkerInspectorProxy) 150 DEFINE_TRACE(WorkerInspectorProxy)
173 { 151 {
174 visitor->trace(m_document); 152 visitor->trace(m_document);
175 visitor->trace(m_consoleMessages);
176 } 153 }
177 154
178 } // namespace blink 155 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698