OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2010 Apple Inc. All rights reserved. |
3 * Copyright (C) 2010 Google Inc. All rights reserved. | 3 * Copyright (C) 2010 Google Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * | 8 * |
9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 17 matching lines...) Expand all Loading... |
28 */ | 28 */ |
29 | 29 |
30 #include "config.h" | 30 #include "config.h" |
31 #include "core/inspector/InspectorProfilerAgent.h" | 31 #include "core/inspector/InspectorProfilerAgent.h" |
32 | 32 |
33 #include "bindings/core/v8/ScriptCallStackFactory.h" | 33 #include "bindings/core/v8/ScriptCallStackFactory.h" |
34 #include "bindings/core/v8/V8Binding.h" | 34 #include "bindings/core/v8/V8Binding.h" |
35 #include "core/frame/UseCounter.h" | 35 #include "core/frame/UseCounter.h" |
36 #include "core/inspector/InjectedScript.h" | 36 #include "core/inspector/InjectedScript.h" |
37 #include "core/inspector/InjectedScriptHost.h" | 37 #include "core/inspector/InjectedScriptHost.h" |
38 #include "core/inspector/InspectorOverlay.h" | |
39 #include "core/inspector/InspectorState.h" | 38 #include "core/inspector/InspectorState.h" |
40 #include "core/inspector/InstrumentingAgents.h" | 39 #include "core/inspector/InstrumentingAgents.h" |
41 #include "core/inspector/ScriptCallStack.h" | 40 #include "core/inspector/ScriptCallStack.h" |
42 #include <v8-profiler.h> | 41 #include <v8-profiler.h> |
43 | 42 |
44 namespace blink { | 43 namespace blink { |
45 | 44 |
46 namespace ProfilerAgentState { | 45 namespace ProfilerAgentState { |
47 static const char samplingInterval[] = "samplingInterval"; | 46 static const char samplingInterval[] = "samplingInterval"; |
48 static const char userInitiatedProfiling[] = "userInitiatedProfiling"; | 47 static const char userInitiatedProfiling[] = "userInitiatedProfiling"; |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 | 143 |
145 class InspectorProfilerAgent::ProfileDescriptor { | 144 class InspectorProfilerAgent::ProfileDescriptor { |
146 public: | 145 public: |
147 ProfileDescriptor(const String& id, const String& title) | 146 ProfileDescriptor(const String& id, const String& title) |
148 : m_id(id) | 147 : m_id(id) |
149 , m_title(title) { } | 148 , m_title(title) { } |
150 String m_id; | 149 String m_id; |
151 String m_title; | 150 String m_title; |
152 }; | 151 }; |
153 | 152 |
154 PassOwnPtrWillBeRawPtr<InspectorProfilerAgent> InspectorProfilerAgent::create(v8
::Isolate* isolate, InjectedScriptManager* injectedScriptManager, InspectorOverl
ay* overlay) | 153 PassOwnPtrWillBeRawPtr<InspectorProfilerAgent> InspectorProfilerAgent::create(v8
::Isolate* isolate, InjectedScriptManager* injectedScriptManager, Client* client
) |
155 { | 154 { |
156 return adoptPtrWillBeNoop(new InspectorProfilerAgent(isolate, injectedScript
Manager, overlay)); | 155 return adoptPtrWillBeNoop(new InspectorProfilerAgent(isolate, injectedScript
Manager, client)); |
157 } | 156 } |
158 | 157 |
159 InspectorProfilerAgent::InspectorProfilerAgent(v8::Isolate* isolate, InjectedScr
iptManager* injectedScriptManager, InspectorOverlay* overlay) | 158 InspectorProfilerAgent::InspectorProfilerAgent(v8::Isolate* isolate, InjectedScr
iptManager* injectedScriptManager, Client* client) |
160 : InspectorBaseAgent<InspectorProfilerAgent, InspectorFrontend::Profiler>("P
rofiler") | 159 : InspectorBaseAgent<InspectorProfilerAgent, InspectorFrontend::Profiler>("P
rofiler") |
161 , m_isolate(isolate) | 160 , m_isolate(isolate) |
162 , m_injectedScriptManager(injectedScriptManager) | 161 , m_injectedScriptManager(injectedScriptManager) |
163 , m_recordingCPUProfile(false) | 162 , m_recordingCPUProfile(false) |
164 , m_overlay(overlay) | 163 , m_client(client) |
165 { | 164 { |
166 } | 165 } |
167 | 166 |
168 InspectorProfilerAgent::~InspectorProfilerAgent() | 167 InspectorProfilerAgent::~InspectorProfilerAgent() |
169 { | 168 { |
170 } | 169 } |
171 | 170 |
172 void InspectorProfilerAgent::consoleProfile(ExecutionContext* context, const Str
ing& title) | 171 void InspectorProfilerAgent::consoleProfile(ExecutionContext* context, const Str
ing& title) |
173 { | 172 { |
174 UseCounter::count(context, UseCounter::DevToolsConsoleProfile); | 173 UseCounter::count(context, UseCounter::DevToolsConsoleProfile); |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 | 259 |
261 void InspectorProfilerAgent::start(ErrorString* error) | 260 void InspectorProfilerAgent::start(ErrorString* error) |
262 { | 261 { |
263 if (m_recordingCPUProfile) | 262 if (m_recordingCPUProfile) |
264 return; | 263 return; |
265 if (!enabled()) { | 264 if (!enabled()) { |
266 *error = "Profiler is not enabled"; | 265 *error = "Profiler is not enabled"; |
267 return; | 266 return; |
268 } | 267 } |
269 m_recordingCPUProfile = true; | 268 m_recordingCPUProfile = true; |
270 if (m_overlay) | 269 if (m_client) |
271 m_overlay->suspendUpdates(); | 270 m_client->profilingStarted(); |
272 m_frontendInitiatedProfileId = nextProfileId(); | 271 m_frontendInitiatedProfileId = nextProfileId(); |
273 startProfiling(m_frontendInitiatedProfileId); | 272 startProfiling(m_frontendInitiatedProfileId); |
274 m_state->setBoolean(ProfilerAgentState::userInitiatedProfiling, true); | 273 m_state->setBoolean(ProfilerAgentState::userInitiatedProfiling, true); |
275 } | 274 } |
276 | 275 |
277 void InspectorProfilerAgent::stop(ErrorString* errorString, RefPtr<TypeBuilder::
Profiler::CPUProfile>& profile) | 276 void InspectorProfilerAgent::stop(ErrorString* errorString, RefPtr<TypeBuilder::
Profiler::CPUProfile>& profile) |
278 { | 277 { |
279 stop(errorString, &profile); | 278 stop(errorString, &profile); |
280 } | 279 } |
281 | 280 |
282 void InspectorProfilerAgent::stop(ErrorString* errorString, RefPtr<TypeBuilder::
Profiler::CPUProfile>* profile) | 281 void InspectorProfilerAgent::stop(ErrorString* errorString, RefPtr<TypeBuilder::
Profiler::CPUProfile>* profile) |
283 { | 282 { |
284 if (!m_recordingCPUProfile) { | 283 if (!m_recordingCPUProfile) { |
285 if (errorString) | 284 if (errorString) |
286 *errorString = "No recording profiles found"; | 285 *errorString = "No recording profiles found"; |
287 return; | 286 return; |
288 } | 287 } |
289 m_recordingCPUProfile = false; | 288 m_recordingCPUProfile = false; |
290 if (m_overlay) | 289 if (m_client) |
291 m_overlay->resumeUpdates(); | 290 m_client->profilingStopped(); |
292 RefPtr<TypeBuilder::Profiler::CPUProfile> cpuProfile = stopProfiling(m_front
endInitiatedProfileId, !!profile); | 291 RefPtr<TypeBuilder::Profiler::CPUProfile> cpuProfile = stopProfiling(m_front
endInitiatedProfileId, !!profile); |
293 if (profile) { | 292 if (profile) { |
294 *profile = cpuProfile; | 293 *profile = cpuProfile; |
295 if (!cpuProfile && errorString) | 294 if (!cpuProfile && errorString) |
296 *errorString = "Profile wasn't found"; | 295 *errorString = "Profile wasn't found"; |
297 } | 296 } |
298 m_frontendInitiatedProfileId = String(); | 297 m_frontendInitiatedProfileId = String(); |
299 m_state->setBoolean(ProfilerAgentState::userInitiatedProfiling, false); | 298 m_state->setBoolean(ProfilerAgentState::userInitiatedProfiling, false); |
300 } | 299 } |
301 | 300 |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
360 } | 359 } |
361 | 360 |
362 void InspectorProfilerAgent::didLeaveNestedRunLoop() | 361 void InspectorProfilerAgent::didLeaveNestedRunLoop() |
363 { | 362 { |
364 idleFinished(); | 363 idleFinished(); |
365 } | 364 } |
366 | 365 |
367 DEFINE_TRACE(InspectorProfilerAgent) | 366 DEFINE_TRACE(InspectorProfilerAgent) |
368 { | 367 { |
369 visitor->trace(m_injectedScriptManager); | 368 visitor->trace(m_injectedScriptManager); |
370 visitor->trace(m_overlay); | |
371 InspectorBaseAgent::trace(visitor); | 369 InspectorBaseAgent::trace(visitor); |
372 } | 370 } |
373 | 371 |
374 } // namespace blink | 372 } // namespace blink |
OLD | NEW |