Index: cc/trees/layer_tree_host_impl.cc |
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc |
index 9259b34743b8906fbee1a0ac5a63a78b38d5e5c0..5445aed8fea72bdc7d18f26c711f586b76f57ec6 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -283,6 +283,7 @@ void LayerTreeHostImpl::BeginMainFrameAborted(CommitEarlyOutReason reason) { |
if (CommitEarlyOutHandledCommit(reason)) { |
active_tree_->ApplySentScrollAndScaleDeltasFromAbortedCommit(); |
active_tree_->ResetContentsTexturesPurged(); |
+ RecordMainFrameTiming(); |
} |
} |
@@ -1836,6 +1837,7 @@ void LayerTreeHostImpl::ActivateSyncTree() { |
pending_page_scale_animation->scale, |
pending_page_scale_animation->duration); |
} |
+ RecordMainFrameTiming(); |
} |
void LayerTreeHostImpl::SetVisible(bool visible) { |
@@ -2077,6 +2079,22 @@ void LayerTreeHostImpl::CreateResourceAndTileTaskWorkerPool( |
settings_.renderer_settings.refresh_rate)); |
} |
+void LayerTreeHostImpl::SetBeginMainFrameTime(base::TimeTicks frame_time) { |
+ main_frame_time_ = frame_time; |
+} |
+ |
+void LayerTreeHostImpl::RecordMainFrameTiming() { |
+ std::vector<int64_t> request_ids; |
+ active_tree_->GatherFrameTimingRequestIds(&request_ids); |
+ if (request_ids.empty()) |
+ return; |
+ |
+ base::TimeTicks end_time = client_->GetNextBeginImplFrameTimeIfRequested(); |
+ frame_timing_tracker_->SaveMainFrameTimeStamps( |
+ request_ids, main_frame_time_, end_time, |
+ active_tree_->source_frame_number()); |
+} |
+ |
void LayerTreeHostImpl::DestroyTileManager() { |
tile_manager_ = nullptr; |
resource_pool_ = nullptr; |