Add processing of trace events emitted during paint and deferred paint of a layer and display deferred paint (and potential nested events, such as image decode/resize) on the timeline.
Created attachment 180926 [details] Patch
Comment on attachment 180926 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=180926&action=review > Source/WebCore/inspector/InspectorTimelineAgent.cpp:281 > + m_traceEventProcessor->willPaint(); It would be great if there was unidirectional dependency in the instrumentation (i.e. processor -> timeline).
Created attachment 180938 [details] Patch
Comment on attachment 180938 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=180938&action=review r- for introducing page pointer and not using constants. Otherwise looks cryptic and good. > Source/WebCore/inspector/InspectorInstrumentation.cpp:508 > + TRACE_EVENT_INSTANT1("webkit", "Instrumentation::Paint", "pageId", frame ? reinterpret_cast<unsigned long long>(frame->page()) : 0); These need constants. Is there anything we could reuse? > Source/WebCore/inspector/TimelineTraceEventProcessor.cpp:179 > +TimelineTraceEventProcessor::TimelineTraceEventProcessor(InspectorTimelineAgent* timelineAgent, InspectorClient *client, Page* page) timeline agent has page agent already. > Source/WebCore/inspector/TimelineTraceEventProcessor.cpp:182 > + , m_pageId(reinterpret_cast<unsigned long long>(page)) page can be recreated. > Source/WebCore/inspector/TimelineTraceEventProcessor.cpp:191 > + m_handlersByType.set("Instrumentation::Paint", EventTypeEntry(&TimelineTraceEventProcessor::onPaint)); Lets have constants for these in InspectorInstrumentation.
Created attachment 182589 [details] Patch
(In reply to comment #4) > > These need constants. Is there anything we could reuse? Added constants to InspectorInstrumentation.{h,cpp}. I don't think we should be re-using existing trace events, as ours are different in that their names are meaningful to other modules. > > Source/WebCore/inspector/TimelineTraceEventProcessor.cpp:179 > > +TimelineTraceEventProcessor::TimelineTraceEventProcessor(InspectorTimelineAgent* timelineAgent, InspectorClient *client, Page* page) > > timeline agent has page agent already. Exposed InspectorTimelineAgent::page() > > > Source/WebCore/inspector/TimelineTraceEventProcessor.cpp:182 > > + , m_pageId(reinterpret_cast<unsigned long long>(page)) > > page can be recreated. Now within the lifetime of TimelineTraceEventProcessor -- we'll kill it upon stopping the record. > > Source/WebCore/inspector/TimelineTraceEventProcessor.cpp:191 > > + m_handlersByType.set("Instrumentation::Paint", EventTypeEntry(&TimelineTraceEventProcessor::onPaint)); > > Lets have constants for these in InspectorInstrumentation. done!
Created attachment 186012 [details] Patch
Created attachment 186871 [details] Patch
Committed r144044: <http://trac.webkit.org/changeset/144044>
Reopening to attach new patch.
Created attachment 190297 [details] EWS run
Comment on attachment 190297 [details] EWS run Attachment 190297 [details] did not pass qt-ews (qt): Output: http://webkit-commit-queue.appspot.com/results/16768384
Comment on attachment 190297 [details] EWS run Attachment 190297 [details] did not pass qt-wk2-ews (qt): Output: http://webkit-commit-queue.appspot.com/results/16781163
Created attachment 190300 [details] EWS run
Committed r144154: <http://trac.webkit.org/changeset/144154>