Chromium Code Reviews| Index: content/renderer/render_widget.cc |
| diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc |
| index c2a137eea5b15b32e62c95b9a770abe731ed2ed6..3a49dc4293e1364c7350d5a97df8f655513758f1 100644 |
| --- a/content/renderer/render_widget.cc |
| +++ b/content/renderer/render_widget.cc |
| @@ -375,6 +375,8 @@ RenderWidget::RenderWidget(int32_t widget_routing_id, |
| text_input_client_observer_(new TextInputClientObserver(this)), |
| #endif |
| focused_pepper_plugin_(nullptr), |
| + time_to_first_active_paint_recorded_(true), |
| + was_shown_time_(base::TimeTicks::Now()), |
| weak_ptr_factory_(this) { |
| DCHECK_NE(routing_id_, MSG_ROUTING_NONE); |
| if (!swapped_out) |
| @@ -773,6 +775,7 @@ void RenderWidget::OnWasShown(bool needs_repainting, |
| if (!GetWebWidget()) |
| return; |
| + was_shown_time_ = base::TimeTicks::Now(); |
| // See OnWasHidden |
| SetHidden(false); |
| for (auto& observer : render_frames_) |
| @@ -929,6 +932,15 @@ void RenderWidget::RequestScheduleAnimation() { |
| void RenderWidget::UpdateVisualState() { |
| GetWebWidget()->updateAllLifecyclePhases(); |
| + |
| + RenderThreadImpl* render_thread_impl = RenderThreadImpl::current(); |
| + if (!time_to_first_active_paint_recorded_ && |
|
esprehn
2017/02/08 06:23:06
You want to do the time_to_first_active_paint_reco
tasak
2017/02/08 06:49:07
Done.
|
| + render_thread_impl->NeedsToRecordFirstActivePaint()) { |
| + time_to_first_active_paint_recorded_ = true; |
| + base::TimeDelta sample = base::TimeTicks::Now() - was_shown_time_; |
| + UMA_HISTOGRAM_TIMES("PurgeAndSuspend.Experimental.TimeToFirstActivePaint", |
| + sample); |
| + } |
| } |
| void RenderWidget::WillBeginCompositorFrame() { |
| @@ -1882,9 +1894,10 @@ void RenderWidget::SetHidden(bool hidden) { |
| // throttled acks are released in case frame production ceases. |
| is_hidden_ = hidden; |
| - if (is_hidden_) |
| + if (is_hidden_) { |
| RenderThreadImpl::current()->WidgetHidden(); |
| - else |
| + time_to_first_active_paint_recorded_ = false; |
| + } else |
| RenderThreadImpl::current()->WidgetRestored(); |
| if (render_widget_scheduling_state_) |