| OLD | NEW |
| 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 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 void TimelineTraceEventProcessor::onPaintLayerEnd(const TraceEvent&) | 236 void TimelineTraceEventProcessor::onPaintLayerEnd(const TraceEvent&) |
| 237 { | 237 { |
| 238 m_layerId = 0; | 238 m_layerId = 0; |
| 239 } | 239 } |
| 240 | 240 |
| 241 void TimelineTraceEventProcessor::onRasterTaskBegin(const TraceEvent& event) | 241 void TimelineTraceEventProcessor::onRasterTaskBegin(const TraceEvent& event) |
| 242 { | 242 { |
| 243 TimelineThreadState& state = threadState(event.threadIdentifier()); | 243 TimelineThreadState& state = threadState(event.threadIdentifier()); |
| 244 if (!maybeEnterLayerTask(event, state)) | 244 if (!maybeEnterLayerTask(event, state)) |
| 245 return; | 245 return; |
| 246 unsigned long long layerId = event.asUInt(InstrumentationEventArguments::Lay
erId); |
| 247 ASSERT(layerId); |
| 246 RefPtr<InspectorObject> record = createRecord(event, TimelineRecordType::Ras
terize); | 248 RefPtr<InspectorObject> record = createRecord(event, TimelineRecordType::Ras
terize); |
| 249 record->setObject("data", TimelineRecordFactory::createRasterizeData(m_layer
ToNodeMap.get(layerId))); |
| 247 state.recordStack.addScopedRecord(record.release()); | 250 state.recordStack.addScopedRecord(record.release()); |
| 248 } | 251 } |
| 249 | 252 |
| 250 void TimelineTraceEventProcessor::onRasterTaskEnd(const TraceEvent& event) | 253 void TimelineTraceEventProcessor::onRasterTaskEnd(const TraceEvent& event) |
| 251 { | 254 { |
| 252 TimelineThreadState& state = threadState(event.threadIdentifier()); | 255 TimelineThreadState& state = threadState(event.threadIdentifier()); |
| 253 if (!state.inKnownLayerTask) | 256 if (!state.inKnownLayerTask) |
| 254 return; | 257 return; |
| 255 ASSERT(state.recordStack.isOpenRecordOfType(TimelineRecordType::Rasterize)); | 258 ASSERT(state.recordStack.isOpenRecordOfType(TimelineRecordType::Rasterize)); |
| 256 state.recordStack.closeScopedRecord(m_timeConverter.fromMonotonicallyIncreas
ingTime(event.timestamp())); | 259 state.recordStack.closeScopedRecord(m_timeConverter.fromMonotonicallyIncreas
ingTime(event.timestamp())); |
| 257 leaveLayerTask(state); | 260 leaveLayerTask(state); |
| 258 } | 261 } |
| 259 | 262 |
| 260 void TimelineTraceEventProcessor::onImageDecodeTaskBegin(const TraceEvent& event
) | 263 void TimelineTraceEventProcessor::onImageDecodeTaskBegin(const TraceEvent& event
) |
| 261 { | 264 { |
| 262 maybeEnterLayerTask(event, threadState(event.threadIdentifier())); | 265 maybeEnterLayerTask(event, threadState(event.threadIdentifier())); |
| 263 } | 266 } |
| 264 | 267 |
| 265 void TimelineTraceEventProcessor::onImageDecodeTaskEnd(const TraceEvent& event) | 268 void TimelineTraceEventProcessor::onImageDecodeTaskEnd(const TraceEvent& event) |
| 266 { | 269 { |
| 267 leaveLayerTask(threadState(event.threadIdentifier())); | 270 leaveLayerTask(threadState(event.threadIdentifier())); |
| 268 } | 271 } |
| 269 | 272 |
| 270 bool TimelineTraceEventProcessor::maybeEnterLayerTask(const TraceEvent& event, T
imelineThreadState& threadState) | 273 bool TimelineTraceEventProcessor::maybeEnterLayerTask(const TraceEvent& event, T
imelineThreadState& threadState) |
| 271 { | 274 { |
| 272 unsigned long long layerId = event.asUInt(InstrumentationEventArguments::Lay
erId); | 275 unsigned long long layerId = event.asUInt(InstrumentationEventArguments::Lay
erId); |
| 273 if (!m_knownLayers.contains(layerId)) | 276 if (!m_layerToNodeMap.contains(layerId)) |
| 274 return false; | 277 return false; |
| 275 ASSERT(!threadState.inKnownLayerTask); | 278 ASSERT(!threadState.inKnownLayerTask); |
| 276 threadState.inKnownLayerTask = true; | 279 threadState.inKnownLayerTask = true; |
| 277 return true; | 280 return true; |
| 278 } | 281 } |
| 279 | 282 |
| 280 void TimelineTraceEventProcessor::leaveLayerTask(TimelineThreadState& threadStat
e) | 283 void TimelineTraceEventProcessor::leaveLayerTask(TimelineThreadState& threadStat
e) |
| 281 { | 284 { |
| 282 threadState.inKnownLayerTask = false; | 285 threadState.inKnownLayerTask = false; |
| 283 } | 286 } |
| (...skipping 13 matching lines...) Expand all Loading... |
| 297 return; | 300 return; |
| 298 ASSERT(state.recordStack.isOpenRecordOfType(TimelineRecordType::DecodeImage)
); | 301 ASSERT(state.recordStack.isOpenRecordOfType(TimelineRecordType::DecodeImage)
); |
| 299 state.recordStack.closeScopedRecord(m_timeConverter.fromMonotonicallyIncreas
ingTime(event.timestamp())); | 302 state.recordStack.closeScopedRecord(m_timeConverter.fromMonotonicallyIncreas
ingTime(event.timestamp())); |
| 300 } | 303 } |
| 301 | 304 |
| 302 void TimelineTraceEventProcessor::onLayerDeleted(const TraceEvent& event) | 305 void TimelineTraceEventProcessor::onLayerDeleted(const TraceEvent& event) |
| 303 { | 306 { |
| 304 unsigned long long id = event.id(); | 307 unsigned long long id = event.id(); |
| 305 ASSERT(id); | 308 ASSERT(id); |
| 306 processBackgroundEvents(); | 309 processBackgroundEvents(); |
| 307 m_knownLayers.remove(id); | 310 m_layerToNodeMap.remove(id); |
| 308 } | 311 } |
| 309 | 312 |
| 310 void TimelineTraceEventProcessor::onPaint(const TraceEvent& event) | 313 void TimelineTraceEventProcessor::onPaint(const TraceEvent& event) |
| 311 { | 314 { |
| 312 if (!m_layerId) | 315 if (!m_layerId) |
| 313 return; | 316 return; |
| 314 | 317 |
| 315 unsigned long long pageId = event.asUInt(InstrumentationEventArguments::Page
Id); | 318 unsigned long long pageId = event.asUInt(InstrumentationEventArguments::Page
Id); |
| 316 if (pageId == m_pageId) | 319 if (pageId != m_pageId) |
| 317 m_knownLayers.add(m_layerId); | 320 return; |
| 321 long long nodeId = event.asInt(InstrumentationEventArguments::NodeId); |
| 322 ASSERT(nodeId); |
| 323 m_layerToNodeMap.set(m_layerId, nodeId); |
| 318 } | 324 } |
| 319 | 325 |
| 320 PassRefPtr<InspectorObject> TimelineTraceEventProcessor::createRecord(const Trac
eEvent& event, const String& recordType, PassRefPtr<InspectorObject> data) | 326 PassRefPtr<InspectorObject> TimelineTraceEventProcessor::createRecord(const Trac
eEvent& event, const String& recordType, PassRefPtr<InspectorObject> data) |
| 321 { | 327 { |
| 322 double startTime = m_timeConverter.fromMonotonicallyIncreasingTime(event.tim
estamp()); | 328 double startTime = m_timeConverter.fromMonotonicallyIncreasingTime(event.tim
estamp()); |
| 323 RefPtr<InspectorObject> record = TimelineRecordFactory::createBackgroundReco
rd(startTime, String::number(event.threadIdentifier())); | 329 RefPtr<InspectorObject> record = TimelineRecordFactory::createBackgroundReco
rd(startTime, String::number(event.threadIdentifier())); |
| 324 record->setString("type", recordType); | 330 record->setString("type", recordType); |
| 325 record->setObject("data", data ? data : InspectorObject::create()); | 331 record->setObject("data", data ? data : InspectorObject::create()); |
| 326 return record.release(); | 332 return record.release(); |
| 327 } | 333 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 338 for (size_t i = 0, size = events.size(); i < size; ++i) { | 344 for (size_t i = 0, size = events.size(); i < size; ++i) { |
| 339 const TraceEvent& event = events[i]; | 345 const TraceEvent& event = events[i]; |
| 340 HandlersMap::iterator it = m_handlersByType.find(std::make_pair(event.na
me(), event.phase())); | 346 HandlersMap::iterator it = m_handlersByType.find(std::make_pair(event.na
me(), event.phase())); |
| 341 ASSERT(it != m_handlersByType.end() && it->value); | 347 ASSERT(it != m_handlersByType.end() && it->value); |
| 342 (this->*(it->value))(event); | 348 (this->*(it->value))(event); |
| 343 } | 349 } |
| 344 } | 350 } |
| 345 | 351 |
| 346 } // namespace WebCore | 352 } // namespace WebCore |
| 347 | 353 |
| OLD | NEW |