Index: Source/core/inspector/TimelineTraceEventProcessor.cpp |
diff --git a/Source/core/inspector/TimelineTraceEventProcessor.cpp b/Source/core/inspector/TimelineTraceEventProcessor.cpp |
index 3b93b5b73a8b4725064cd18b5ea9164f8675cf3f..04f4de5aa7233b808a826682df73c8ffe3679036 100644 |
--- a/Source/core/inspector/TimelineTraceEventProcessor.cpp |
+++ b/Source/core/inspector/TimelineTraceEventProcessor.cpp |
@@ -243,7 +243,10 @@ void TimelineTraceEventProcessor::onRasterTaskBegin(const TraceEvent& event) |
TimelineThreadState& state = threadState(event.threadIdentifier()); |
if (!maybeEnterLayerTask(event, state)) |
return; |
+ unsigned long long layerId = event.asUInt(InstrumentationEventArguments::LayerId); |
+ ASSERT(layerId); |
RefPtr<InspectorObject> record = createRecord(event, TimelineRecordType::Rasterize); |
+ record->setObject("data", TimelineRecordFactory::createRasterizeData(m_layerToNodeMap.get(layerId))); |
state.recordStack.addScopedRecord(record.release()); |
} |
@@ -270,7 +273,7 @@ void TimelineTraceEventProcessor::onImageDecodeTaskEnd(const TraceEvent& event) |
bool TimelineTraceEventProcessor::maybeEnterLayerTask(const TraceEvent& event, TimelineThreadState& threadState) |
{ |
unsigned long long layerId = event.asUInt(InstrumentationEventArguments::LayerId); |
- if (!m_knownLayers.contains(layerId)) |
+ if (!m_layerToNodeMap.contains(layerId)) |
return false; |
ASSERT(!threadState.inKnownLayerTask); |
threadState.inKnownLayerTask = true; |
@@ -304,7 +307,7 @@ void TimelineTraceEventProcessor::onLayerDeleted(const TraceEvent& event) |
unsigned long long id = event.id(); |
ASSERT(id); |
processBackgroundEvents(); |
- m_knownLayers.remove(id); |
+ m_layerToNodeMap.remove(id); |
} |
void TimelineTraceEventProcessor::onPaint(const TraceEvent& event) |
@@ -313,8 +316,11 @@ void TimelineTraceEventProcessor::onPaint(const TraceEvent& event) |
return; |
unsigned long long pageId = event.asUInt(InstrumentationEventArguments::PageId); |
- if (pageId == m_pageId) |
- m_knownLayers.add(m_layerId); |
+ if (pageId != m_pageId) |
+ return; |
+ long long nodeId = event.asInt(InstrumentationEventArguments::NodeId); |
+ ASSERT(nodeId); |
+ m_layerToNodeMap.set(m_layerId, nodeId); |
} |
PassRefPtr<InspectorObject> TimelineTraceEventProcessor::createRecord(const TraceEvent& event, const String& recordType, PassRefPtr<InspectorObject> data) |