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(); |