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

Side by Side Diff: Source/core/inspector/InspectorTracingAgent.cpp

Issue 593123003: DevTools: make console.timeline/timelineEnd work for tracing based Timeline (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Addressed comments Created 6 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/inspector/InspectorTracingAgent.h ('k') | Source/core/inspector/PageConsoleAgent.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // 1 //
2 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Copyright 2014 The Chromium Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be 3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file. 4 // found in the LICENSE file.
5 // 5 //
6 6
7 #include "config.h" 7 #include "config.h"
8 8
9 #include "core/inspector/InspectorTracingAgent.h" 9 #include "core/inspector/InspectorTracingAgent.h"
10 10
11 #include "core/inspector/IdentifiersFactory.h" 11 #include "core/inspector/IdentifiersFactory.h"
12 #include "core/inspector/InspectorClient.h" 12 #include "core/inspector/InspectorClient.h"
13 #include "core/inspector/InspectorState.h" 13 #include "core/inspector/InspectorState.h"
14 #include "core/inspector/InspectorWorkerAgent.h" 14 #include "core/inspector/InspectorWorkerAgent.h"
15 #include "platform/TraceEvent.h" 15 #include "platform/TraceEvent.h"
16 16
17 namespace blink { 17 namespace blink {
18 18
19 namespace TracingAgentState { 19 namespace TracingAgentState {
20 const char sessionId[] = "sessionId"; 20 const char sessionId[] = "sessionId";
21 const char tracingStartedFromProtocol[] = "tracingStartedFromProtocol";
22 const char tracingStarted[] = "tracingStarted"; 21 const char tracingStarted[] = "tracingStarted";
23 } 22 }
24 23
25 namespace { 24 namespace {
26 const char devtoolsMetadataEventCategory[] = TRACE_DISABLED_BY_DEFAULT("devtools .timeline"); 25 const char devtoolsMetadataEventCategory[] = TRACE_DISABLED_BY_DEFAULT("devtools .timeline");
27 } 26 }
28 27
29 InspectorTracingAgent::InspectorTracingAgent(InspectorClient* client, InspectorW orkerAgent* workerAgent) 28 InspectorTracingAgent::InspectorTracingAgent(InspectorClient* client, InspectorW orkerAgent* workerAgent)
30 : InspectorBaseAgent<InspectorTracingAgent>("Tracing") 29 : InspectorBaseAgent<InspectorTracingAgent>("Tracing")
31 , m_layerTreeId(0) 30 , m_layerTreeId(0)
32 , m_client(client) 31 , m_client(client)
33 , m_frontend(0) 32 , m_frontend(0)
34 , m_workerAgent(workerAgent) 33 , m_workerAgent(workerAgent)
35 { 34 {
36 } 35 }
37 36
38 void InspectorTracingAgent::restore() 37 void InspectorTracingAgent::restore()
39 { 38 {
40 emitMetadataEvents(); 39 emitMetadataEvents();
41 } 40 }
42 41
43 void InspectorTracingAgent::start(ErrorString*, const String& categoryFilter, co nst String&, const double*) 42 void InspectorTracingAgent::start(ErrorString*, const String& categoryFilter, co nst String&, const double*)
44 { 43 {
45 m_state->setBoolean(TracingAgentState::tracingStartedFromProtocol, true); 44 if (m_state->getBoolean(TracingAgentState::tracingStarted))
46 innerStart(categoryFilter, false); 45 return;
47 }
48
49 void InspectorTracingAgent::end(ErrorString* errorString)
50 {
51 m_state->setBoolean(TracingAgentState::tracingStarted, false);
52 m_consoleTimelines.clear();
53 notifyTracingStopped();
54 }
55
56 void InspectorTracingAgent::innerStart(const String& categoryFilter, bool fromCo nsole)
57 {
58 m_state->setString(TracingAgentState::sessionId, IdentifiersFactory::createI dentifier()); 46 m_state->setString(TracingAgentState::sessionId, IdentifiersFactory::createI dentifier());
59 m_state->setBoolean(TracingAgentState::tracingStarted, true); 47 m_state->setBoolean(TracingAgentState::tracingStarted, true);
60 m_client->enableTracing(categoryFilter); 48 m_client->enableTracing(categoryFilter);
61 emitMetadataEvents(); 49 emitMetadataEvents();
62 } 50 }
63 51
52 void InspectorTracingAgent::end(ErrorString* errorString)
53 {
54 m_client->disableTracing();
55 m_state->setBoolean(TracingAgentState::tracingStarted, false);
56 m_workerAgent->setTracingSessionId(String());
57 }
58
64 String InspectorTracingAgent::sessionId() 59 String InspectorTracingAgent::sessionId()
65 { 60 {
66 return m_state->getString(TracingAgentState::sessionId); 61 return m_state->getString(TracingAgentState::sessionId);
67 } 62 }
68 63
69 void InspectorTracingAgent::emitMetadataEvents() 64 void InspectorTracingAgent::emitMetadataEvents()
70 { 65 {
71 if (!m_state->getBoolean(TracingAgentState::tracingStarted)) 66 if (!m_state->getBoolean(TracingAgentState::tracingStarted))
72 return; 67 return;
73 TRACE_EVENT_INSTANT1(devtoolsMetadataEventCategory, "TracingStartedInPage", "sessionId", sessionId().utf8()); 68 TRACE_EVENT_INSTANT1(devtoolsMetadataEventCategory, "TracingStartedInPage", "sessionId", sessionId().utf8());
74 if (m_layerTreeId) 69 if (m_layerTreeId)
75 setLayerTreeId(m_layerTreeId); 70 setLayerTreeId(m_layerTreeId);
76 m_workerAgent->setTracingSessionId(sessionId()); 71 m_workerAgent->setTracingSessionId(sessionId());
77 } 72 }
78 73
79 void InspectorTracingAgent::setLayerTreeId(int layerTreeId) 74 void InspectorTracingAgent::setLayerTreeId(int layerTreeId)
80 { 75 {
81 m_layerTreeId = layerTreeId; 76 m_layerTreeId = layerTreeId;
82 TRACE_EVENT_INSTANT2(devtoolsMetadataEventCategory, "SetLayerTreeId", "sessi onId", sessionId().utf8(), "layerTreeId", m_layerTreeId); 77 TRACE_EVENT_INSTANT2(devtoolsMetadataEventCategory, "SetLayerTreeId", "sessi onId", sessionId().utf8(), "layerTreeId", m_layerTreeId);
83 } 78 }
84 79
85 void InspectorTracingAgent::consoleTimeline(const String& title)
86 {
87 m_consoleTimelines.append(title);
88 if (m_state->getBoolean(TracingAgentState::tracingStarted))
89 return;
90 innerStart("-*,disabled-by-default-devtools.timeline", true);
91 }
92
93 void InspectorTracingAgent::consoleTimelineEnd(const String& title)
94 {
95 size_t index = m_consoleTimelines.find(title);
96 if (index == kNotFound)
97 return;
98
99 m_consoleTimelines.remove(index);
100 if (!m_consoleTimelines.size()
101 && m_state->getBoolean(TracingAgentState::tracingStarted)
102 && !m_state->getBoolean(TracingAgentState::tracingStartedFromProtocol))
103 notifyTracingStopped();
104 m_state->setBoolean(TracingAgentState::tracingStarted, false);
105 }
106
107 void InspectorTracingAgent::notifyTracingStopped()
108 {
109 m_client->disableTracing();
110 m_workerAgent->setTracingSessionId(String());
111 }
112
113 void InspectorTracingAgent::setFrontend(InspectorFrontend* frontend) 80 void InspectorTracingAgent::setFrontend(InspectorFrontend* frontend)
114 { 81 {
115 m_frontend = frontend->tracing(); 82 m_frontend = frontend->tracing();
116 } 83 }
117 84
118 } 85 }
OLDNEW
« no previous file with comments | « Source/core/inspector/InspectorTracingAgent.h ('k') | Source/core/inspector/PageConsoleAgent.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698