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

Unified Diff: Source/core/inspector/InspectorTimelineAgent.cpp

Issue 213003002: DevTools: allow whitelist of timeline events to be pushed live although in bufferEvent mode. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Same with front-end Created 6 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/inspector/InspectorTimelineAgent.cpp
diff --git a/Source/core/inspector/InspectorTimelineAgent.cpp b/Source/core/inspector/InspectorTimelineAgent.cpp
index f3e3ef05d8dafc1406d62f277d6132bae62984d2..4b1623511ddb31017531e15d85c6b804b6756707 100644
--- a/Source/core/inspector/InspectorTimelineAgent.cpp
+++ b/Source/core/inspector/InspectorTimelineAgent.cpp
@@ -71,6 +71,7 @@ static const char timelineMaxCallStackDepth[] = "timelineMaxCallStackDepth";
static const char includeCounters[] = "includeCounters";
static const char includeGPUEvents[] = "includeGPUEvents";
static const char bufferEvents[] = "bufferEvents";
+static const char liveEvents[] = "liveEvents";
}
// Must be kept in sync with WebInspector.TimelineModel.RecordType in TimelineModel.js
@@ -304,6 +305,8 @@ void InspectorTimelineAgent::restore()
if (m_state->getBoolean(TimelineAgentState::startedFromProtocol)) {
if (m_state->getBoolean(TimelineAgentState::bufferEvents))
m_bufferedEvents = TypeBuilder::Array<TimelineEvent>::create();
+
+ setLiveEvents(m_state->getString(TimelineAgentState::liveEvents));
innerStart();
} else if (isStarted()) {
// Timeline was started from console.timeline, it is not restored.
@@ -324,7 +327,7 @@ void InspectorTimelineAgent::disable(ErrorString*)
m_state->setBoolean(TimelineAgentState::enabled, false);
}
-void InspectorTimelineAgent::start(ErrorString* errorString, const int* maxCallStackDepth, const bool* bufferEvents, const bool* includeCounters, const bool* includeGPUEvents)
+void InspectorTimelineAgent::start(ErrorString* errorString, const int* maxCallStackDepth, const bool* bufferEvents, const String* liveEvents, const bool* includeCounters, const bool* includeGPUEvents)
{
if (!m_frontend)
return;
@@ -343,11 +346,14 @@ void InspectorTimelineAgent::start(ErrorString* errorString, const int* maxCallS
if (bufferEvents && *bufferEvents)
m_bufferedEvents = TypeBuilder::Array<TimelineEvent>::create();
+ if (liveEvents)
+ setLiveEvents(*liveEvents);
m_state->setLong(TimelineAgentState::timelineMaxCallStackDepth, m_maxCallStackDepth);
m_state->setBoolean(TimelineAgentState::includeCounters, includeCounters && *includeCounters);
m_state->setBoolean(TimelineAgentState::includeGPUEvents, includeGPUEvents && *includeGPUEvents);
m_state->setBoolean(TimelineAgentState::bufferEvents, bufferEvents && *bufferEvents);
+ m_state->setString(TimelineAgentState::liveEvents, liveEvents ? *liveEvents : "");
innerStart();
bool fromConsole = false;
@@ -398,6 +404,7 @@ void InspectorTimelineAgent::stop(ErrorString* errorString, RefPtr<TypeBuilder::
{
m_state->setBoolean(TimelineAgentState::startedFromProtocol, false);
m_state->setBoolean(TimelineAgentState::bufferEvents, false);
+ m_state->setString(TimelineAgentState::liveEvents, "");
if (!isStarted()) {
*errorString = "Timeline was not started";
@@ -406,6 +413,7 @@ void InspectorTimelineAgent::stop(ErrorString* errorString, RefPtr<TypeBuilder::
innerStop(false);
if (m_bufferedEvents)
events = m_bufferedEvents.release();
+ m_liveEvents.clear();
}
void InspectorTimelineAgent::innerStop(bool fromConsole)
@@ -1209,10 +1217,13 @@ void InspectorTimelineAgent::appendRecord(PassRefPtr<JSONObject> data, const Str
void InspectorTimelineAgent::sendEvent(PassRefPtr<TimelineEvent> record)
{
- if (m_bufferedEvents)
- m_bufferedEvents->addItem(record);
- else
- m_frontend->eventRecorded(record);
+ RefPtr<TimelineEvent> retain = record;
+ if (m_bufferedEvents) {
+ m_bufferedEvents->addItem(retain);
+ if (!m_liveEvents.contains(TimelineRecordFactory::type(retain.get())))
+ return;
+ }
+ m_frontend->eventRecorded(retain.release());
}
void InspectorTimelineAgent::pushCurrentRecord(PassRefPtr<JSONObject> data, const String& type, bool captureCallStack, LocalFrame* frame, bool hasLowLevelDetails)
@@ -1300,6 +1311,17 @@ PassRefPtr<TimelineEvent> InspectorTimelineAgent::createRecordForEvent(const Tra
return TimelineRecordFactory::createBackgroundRecord(timeestamp, String::number(event.threadIdentifier()), type, data);
}
+void InspectorTimelineAgent::setLiveEvents(const String& liveEvents)
+{
+ m_liveEvents.clear();
+ if (liveEvents.isNull() || liveEvents.isEmpty())
+ return;
+ Vector<String> eventList;
+ liveEvents.split(",", eventList);
+ for (Vector<String>::iterator it = eventList.begin(); it != eventList.end(); ++it)
+ m_liveEvents.add(*it);
+}
+
TimelineRecordStack::TimelineRecordStack(InspectorTimelineAgent* timelineAgent)
: m_timelineAgent(timelineAgent)
{

Powered by Google App Engine
This is Rietveld 408576698