Chromium Code Reviews| Index: content/renderer/gpu/render_widget_compositor.cc |
| diff --git a/content/renderer/gpu/render_widget_compositor.cc b/content/renderer/gpu/render_widget_compositor.cc |
| index 7018c79cf874e87fa8a8659a6dc6ad5abcf23237..d755fa5170367ae1998475a9ac8a99e1befed975 100644 |
| --- a/content/renderer/gpu/render_widget_compositor.cc |
| +++ b/content/renderer/gpu/render_widget_compositor.cc |
| @@ -954,6 +954,48 @@ void RenderWidgetCompositor::DidAbortSwapBuffers() { |
| widget_->OnSwapBuffersAborted(); |
| } |
| +namespace { |
| + |
| +blink::WebFrameTimingEvent CompositeTimingEventToDouble( |
| + const cc::FrameTimingTracker::CompositeTimingEvent& event) { |
| + return blink::WebFrameTimingEvent(event.frame_id, |
| + (event.timestamp - base::TimeTicks()).InSecondsF()); |
| +} |
| + |
| +blink::WebFrameTimingEvent MainFrameTimingEventToDouble( |
| + const cc::FrameTimingTracker::MainFrameTimingEvent& event) { |
| + return blink::WebFrameTimingEvent(event.frame_id, |
| + (event.timestamp - base::TimeTicks()).InSecondsF(), |
| + (event.end_time - base::TimeTicks()).InSecondsF()); |
| +} |
| + |
| +} // namespace |
| + |
| +void RenderWidgetCompositor::RecordFrameTimingEvents( |
| + scoped_ptr<cc::FrameTimingTracker::CompositeTimingSet> composite_events, |
| + scoped_ptr<cc::FrameTimingTracker::MainFrameTimingSet> main_frame_events) { |
| + for (const auto& composite_event : *composite_events ) { |
| + int64_t frameId = composite_event.first; |
| + const std::vector<cc::FrameTimingTracker::CompositeTimingEvent>& events = |
| + composite_event.second; |
| + std::vector<blink::WebFrameTimingEvent> webEvents(events.size()); |
| + std::transform(events.begin(), events.end(), webEvents.begin(), |
| + CompositeTimingEventToDouble); |
|
vmpstr
2015/06/02 17:40:08
I kind of weakly prefer an explicit loop here, but
MikeB
2015/06/02 21:59:36
Done.
|
| + widget_->webwidget()->recordFrameTimingEvent( |
| + blink::WebWidget::CompositeEvent, frameId, webEvents); |
| + } |
| + for (const auto& main_frame_event : *main_frame_events ) { |
| + int64_t frameId = main_frame_event.first; |
| + const std::vector<cc::FrameTimingTracker::MainFrameTimingEvent>& events = |
| + main_frame_event.second; |
| + std::vector<blink::WebFrameTimingEvent> webEvents(events.size()); |
| + std::transform(events.begin(), events.end(), webEvents.begin(), |
| + MainFrameTimingEventToDouble); |
| + widget_->webwidget()->recordFrameTimingEvent( |
| + blink::WebWidget::RenderEvent, frameId, webEvents); |
| + } |
| +} |
| + |
| void RenderWidgetCompositor::RateLimitSharedMainThreadContext() { |
| cc::ContextProvider* provider = |
| compositor_deps_->GetSharedMainThreadContextProvider(); |