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

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

Issue 247513002: Timeline: produce session cookie when timeline is started (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: use IndetifiersFactory instead of directly getting processId Created 6 years, 8 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 66
67 namespace TimelineAgentState { 67 namespace TimelineAgentState {
68 static const char enabled[] = "enabled"; 68 static const char enabled[] = "enabled";
69 static const char started[] = "started"; 69 static const char started[] = "started";
70 static const char startedFromProtocol[] = "startedFromProtocol"; 70 static const char startedFromProtocol[] = "startedFromProtocol";
71 static const char timelineMaxCallStackDepth[] = "timelineMaxCallStackDepth"; 71 static const char timelineMaxCallStackDepth[] = "timelineMaxCallStackDepth";
72 static const char includeCounters[] = "includeCounters"; 72 static const char includeCounters[] = "includeCounters";
73 static const char includeGPUEvents[] = "includeGPUEvents"; 73 static const char includeGPUEvents[] = "includeGPUEvents";
74 static const char bufferEvents[] = "bufferEvents"; 74 static const char bufferEvents[] = "bufferEvents";
75 static const char liveEvents[] = "liveEvents"; 75 static const char liveEvents[] = "liveEvents";
76 static const char sessionId[] = "sessionId";
76 static const char traceEventCategoryFilter[] = "traceEventCategoryFilter"; 77 static const char traceEventCategoryFilter[] = "traceEventCategoryFilter";
77 } 78 }
78 79
79 // Must be kept in sync with WebInspector.TimelineModel.RecordType in TimelineMo del.js 80 // Must be kept in sync with WebInspector.TimelineModel.RecordType in TimelineMo del.js
80 namespace TimelineRecordType { 81 namespace TimelineRecordType {
81 static const char Program[] = "Program"; 82 static const char Program[] = "Program";
82 83
83 static const char EventDispatch[] = "EventDispatch"; 84 static const char EventDispatch[] = "EventDispatch";
84 static const char ScheduleStyleRecalculation[] = "ScheduleStyleRecalculation"; 85 static const char ScheduleStyleRecalculation[] = "ScheduleStyleRecalculation";
85 static const char RecalculateStyles[] = "RecalculateStyles"; 86 static const char RecalculateStyles[] = "RecalculateStyles";
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 } 335 }
335 336
336 if (liveEvents) 337 if (liveEvents)
337 setLiveEvents(*liveEvents); 338 setLiveEvents(*liveEvents);
338 339
339 m_state->setLong(TimelineAgentState::timelineMaxCallStackDepth, m_maxCallSta ckDepth); 340 m_state->setLong(TimelineAgentState::timelineMaxCallStackDepth, m_maxCallSta ckDepth);
340 m_state->setBoolean(TimelineAgentState::includeCounters, includeCounters && *includeCounters); 341 m_state->setBoolean(TimelineAgentState::includeCounters, includeCounters && *includeCounters);
341 m_state->setBoolean(TimelineAgentState::includeGPUEvents, includeGPUEvents & & *includeGPUEvents); 342 m_state->setBoolean(TimelineAgentState::includeGPUEvents, includeGPUEvents & & *includeGPUEvents);
342 m_state->setBoolean(TimelineAgentState::bufferEvents, bufferEvents && *buffe rEvents); 343 m_state->setBoolean(TimelineAgentState::bufferEvents, bufferEvents && *buffe rEvents);
343 m_state->setString(TimelineAgentState::liveEvents, liveEvents ? *liveEvents : ""); 344 m_state->setString(TimelineAgentState::liveEvents, liveEvents ? *liveEvents : "");
345 initializeSessionId();
344 346
345 innerStart(); 347 innerStart();
346 bool fromConsole = false; 348 bool fromConsole = false;
347 m_frontend->started(&fromConsole); 349 m_frontend->started(sessionId(), &fromConsole);
348 } 350 }
349 351
350 bool InspectorTimelineAgent::isStarted() 352 bool InspectorTimelineAgent::isStarted()
351 { 353 {
352 return m_state->getBoolean(TimelineAgentState::started); 354 return m_state->getBoolean(TimelineAgentState::started);
353 } 355 }
354 356
355 void InspectorTimelineAgent::innerStart() 357 void InspectorTimelineAgent::innerStart()
356 { 358 {
357 if (m_overlay) 359 if (m_overlay)
358 m_overlay->startedRecordingProfile(); 360 m_overlay->startedRecordingProfile();
359 m_state->setBoolean(TimelineAgentState::started, true); 361 m_state->setBoolean(TimelineAgentState::started, true);
360 String traceEventCategoryFilter = m_state->getString(TimelineAgentState::tra ceEventCategoryFilter); 362 String traceEventCategoryFilter = m_state->getString(TimelineAgentState::tra ceEventCategoryFilter);
361 if (!traceEventCategoryFilter.isEmpty()) { 363 if (!traceEventCategoryFilter.isEmpty()) {
362 m_client->enableTracing(traceEventCategoryFilter); 364 m_client->enableTracing(traceEventCategoryFilter);
363 m_disableTracingOnStop = true; 365 m_disableTracingOnStop = true;
364 } else { 366 } else {
365 m_disableTracingOnStop = false; 367 m_disableTracingOnStop = false;
366 } 368 }
367 m_instrumentingAgents->setInspectorTimelineAgent(this); 369 m_instrumentingAgents->setInspectorTimelineAgent(this);
368 ScriptGCEvent::addEventListener(this); 370 ScriptGCEvent::addEventListener(this);
371 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "Timeli neStarted", "sessionId", sessionId().utf8());
372 if (m_layerTreeId) {
373 TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "Se tLayerTreeId", "sessionId", sessionId().utf8(), "layerTreeId", m_layerTreeId);
374 }
369 if (m_client) { 375 if (m_client) {
370 TraceEventDispatcher* dispatcher = TraceEventDispatcher::instance(); 376 TraceEventDispatcher* dispatcher = TraceEventDispatcher::instance();
371 dispatcher->addListener(InstrumentationEvents::BeginFrame, TRACE_EVENT_P HASE_INSTANT, this, &InspectorTimelineAgent::onBeginImplSideFrame, m_client); 377 dispatcher->addListener(InstrumentationEvents::BeginFrame, TRACE_EVENT_P HASE_INSTANT, this, &InspectorTimelineAgent::onBeginImplSideFrame, m_client);
372 dispatcher->addListener(InstrumentationEvents::PaintSetup, TRACE_EVENT_P HASE_BEGIN, this, &InspectorTimelineAgent::onPaintSetupBegin, m_client); 378 dispatcher->addListener(InstrumentationEvents::PaintSetup, TRACE_EVENT_P HASE_BEGIN, this, &InspectorTimelineAgent::onPaintSetupBegin, m_client);
373 dispatcher->addListener(InstrumentationEvents::PaintSetup, TRACE_EVENT_P HASE_END, this, &InspectorTimelineAgent::onPaintSetupEnd, m_client); 379 dispatcher->addListener(InstrumentationEvents::PaintSetup, TRACE_EVENT_P HASE_END, this, &InspectorTimelineAgent::onPaintSetupEnd, m_client);
374 dispatcher->addListener(InstrumentationEvents::RasterTask, TRACE_EVENT_P HASE_BEGIN, this, &InspectorTimelineAgent::onRasterTaskBegin, m_client); 380 dispatcher->addListener(InstrumentationEvents::RasterTask, TRACE_EVENT_P HASE_BEGIN, this, &InspectorTimelineAgent::onRasterTaskBegin, m_client);
375 dispatcher->addListener(InstrumentationEvents::RasterTask, TRACE_EVENT_P HASE_END, this, &InspectorTimelineAgent::onRasterTaskEnd, m_client); 381 dispatcher->addListener(InstrumentationEvents::RasterTask, TRACE_EVENT_P HASE_END, this, &InspectorTimelineAgent::onRasterTaskEnd, m_client);
376 dispatcher->addListener(InstrumentationEvents::Layer, TRACE_EVENT_PHASE_ DELETE_OBJECT, this, &InspectorTimelineAgent::onLayerDeleted, m_client); 382 dispatcher->addListener(InstrumentationEvents::Layer, TRACE_EVENT_PHASE_ DELETE_OBJECT, this, &InspectorTimelineAgent::onLayerDeleted, m_client);
377 dispatcher->addListener(InstrumentationEvents::RequestMainThreadFrame, T RACE_EVENT_PHASE_INSTANT, this, &InspectorTimelineAgent::onRequestMainThreadFram e, m_client); 383 dispatcher->addListener(InstrumentationEvents::RequestMainThreadFrame, T RACE_EVENT_PHASE_INSTANT, this, &InspectorTimelineAgent::onRequestMainThreadFram e, m_client);
378 dispatcher->addListener(InstrumentationEvents::ActivateLayerTree, TRACE_ EVENT_PHASE_INSTANT, this, &InspectorTimelineAgent::onActivateLayerTree, m_clien t); 384 dispatcher->addListener(InstrumentationEvents::ActivateLayerTree, TRACE_ EVENT_PHASE_INSTANT, this, &InspectorTimelineAgent::onActivateLayerTree, m_clien t);
(...skipping 12 matching lines...) Expand all
391 m_client->startGPUEventsRecording(); 397 m_client->startGPUEventsRecording();
392 } 398 }
393 } 399 }
394 } 400 }
395 401
396 void InspectorTimelineAgent::stop(ErrorString* errorString, RefPtr<TypeBuilder:: Array<TimelineEvent> >& events) 402 void InspectorTimelineAgent::stop(ErrorString* errorString, RefPtr<TypeBuilder:: Array<TimelineEvent> >& events)
397 { 403 {
398 m_state->setBoolean(TimelineAgentState::startedFromProtocol, false); 404 m_state->setBoolean(TimelineAgentState::startedFromProtocol, false);
399 m_state->setBoolean(TimelineAgentState::bufferEvents, false); 405 m_state->setBoolean(TimelineAgentState::bufferEvents, false);
400 m_state->setString(TimelineAgentState::liveEvents, ""); 406 m_state->setString(TimelineAgentState::liveEvents, "");
407 m_state->setString(TimelineAgentState::sessionId, "");
401 408
402 if (!isStarted()) { 409 if (!isStarted()) {
403 *errorString = "Timeline was not started"; 410 *errorString = "Timeline was not started";
404 return; 411 return;
405 } 412 }
406 innerStop(false); 413 innerStop(false);
407 if (m_bufferedEvents) 414 if (m_bufferedEvents)
408 events = m_bufferedEvents.release(); 415 events = m_bufferedEvents.release();
409 m_liveEvents.clear(); 416 m_liveEvents.clear();
410 } 417 }
(...skipping 28 matching lines...) Expand all
439 String message = String::format("Timeline '%s' terminated.", m_consoleTi melines[i].utf8().data()); 446 String message = String::format("Timeline '%s' terminated.", m_consoleTi melines[i].utf8().data());
440 mainFrame()->console().addMessage(ConsoleAPIMessageSource, DebugMessageL evel, message); 447 mainFrame()->console().addMessage(ConsoleAPIMessageSource, DebugMessageL evel, message);
441 } 448 }
442 m_consoleTimelines.clear(); 449 m_consoleTimelines.clear();
443 450
444 m_frontend->stopped(&fromConsole); 451 m_frontend->stopped(&fromConsole);
445 if (m_overlay) 452 if (m_overlay)
446 m_overlay->finishedRecordingProfile(); 453 m_overlay->finishedRecordingProfile();
447 } 454 }
448 455
456 String InspectorTimelineAgent::sessionId() const
457 {
458 return m_state->getString(TimelineAgentState::sessionId);
459 }
460
461 void InspectorTimelineAgent::initializeSessionId()
462 {
463 static unsigned lastTimelineSessionId;
464 String sessionId = IdentifiersFactory::createIdentifier();
465 m_state->setString(TimelineAgentState::sessionId, sessionId);
466 }
467
468 void InspectorTimelineAgent::setLayerTreeId(int layerTreeId)
469 {
470 m_layerTreeId = layerTreeId;
471 TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "setLay erTreeId", "sessionId", sessionId().utf8(), "layerTreeId", m_layerTreeId);
472 }
473
449 void InspectorTimelineAgent::didBeginFrame(int frameId) 474 void InspectorTimelineAgent::didBeginFrame(int frameId)
450 { 475 {
451 TraceEventDispatcher::instance()->processBackgroundEvents(); 476 TraceEventDispatcher::instance()->processBackgroundEvents();
452 m_pendingFrameRecord = TimelineRecordFactory::createGenericRecord(timestamp( ), 0, TimelineRecordType::BeginFrame, TimelineRecordFactory::createFrameData(fra meId)); 477 m_pendingFrameRecord = TimelineRecordFactory::createGenericRecord(timestamp( ), 0, TimelineRecordType::BeginFrame, TimelineRecordFactory::createFrameData(fra meId));
453 } 478 }
454 479
455 void InspectorTimelineAgent::didCancelFrame() 480 void InspectorTimelineAgent::didCancelFrame()
456 { 481 {
457 m_pendingFrameRecord.clear(); 482 m_pendingFrameRecord.clear();
458 } 483 }
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
823 848
824 void InspectorTimelineAgent::consoleTimeline(ExecutionContext* context, const St ring& title, ScriptState* state) 849 void InspectorTimelineAgent::consoleTimeline(ExecutionContext* context, const St ring& title, ScriptState* state)
825 { 850 {
826 if (!m_state->getBoolean(TimelineAgentState::enabled)) 851 if (!m_state->getBoolean(TimelineAgentState::enabled))
827 return; 852 return;
828 853
829 String message = String::format("Timeline '%s' started.", title.utf8().data( )); 854 String message = String::format("Timeline '%s' started.", title.utf8().data( ));
830 mainFrame()->console().addMessage(ConsoleAPIMessageSource, DebugMessageLevel , message, String(), 0, 0, nullptr, state); 855 mainFrame()->console().addMessage(ConsoleAPIMessageSource, DebugMessageLevel , message, String(), 0, 0, nullptr, state);
831 m_consoleTimelines.append(title); 856 m_consoleTimelines.append(title);
832 if (!isStarted()) { 857 if (!isStarted()) {
858 initializeSessionId();
833 innerStart(); 859 innerStart();
834 bool fromConsole = true; 860 bool fromConsole = true;
835 m_frontend->started(&fromConsole); 861 m_frontend->started(sessionId(), &fromConsole);
836 } 862 }
837 appendRecord(TimelineRecordFactory::createTimeStampData(message), TimelineRe cordType::TimeStamp, true, frameForExecutionContext(context)); 863 appendRecord(TimelineRecordFactory::createTimeStampData(message), TimelineRe cordType::TimeStamp, true, frameForExecutionContext(context));
838 } 864 }
839 865
840 void InspectorTimelineAgent::consoleTimelineEnd(ExecutionContext* context, const String& title, ScriptState* state) 866 void InspectorTimelineAgent::consoleTimelineEnd(ExecutionContext* context, const String& title, ScriptState* state)
841 { 867 {
842 if (!m_state->getBoolean(TimelineAgentState::enabled)) 868 if (!m_state->getBoolean(TimelineAgentState::enabled))
843 return; 869 return;
844 870
845 size_t index = m_consoleTimelines.find(title); 871 size_t index = m_consoleTimelines.find(title);
(...skipping 518 matching lines...) Expand 10 before | Expand all | Expand 10 after
1364 1390
1365 #ifndef NDEBUG 1391 #ifndef NDEBUG
1366 bool TimelineRecordStack::isOpenRecordOfType(const String& type) 1392 bool TimelineRecordStack::isOpenRecordOfType(const String& type)
1367 { 1393 {
1368 return !m_stack.isEmpty() && m_stack.last().type == type; 1394 return !m_stack.isEmpty() && m_stack.last().type == type;
1369 } 1395 }
1370 #endif 1396 #endif
1371 1397
1372 } // namespace WebCore 1398 } // namespace WebCore
1373 1399
OLDNEW
« no previous file with comments | « Source/core/inspector/InspectorTimelineAgent.h ('k') | Source/devtools/front_end/TimelineManager.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698