Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(206)

Unified Diff: content/renderer/render_widget.cc

Issue 2643723007: time metric: record elapsed time from when the backgrounded and purged renderer is foregrounded unti (Closed)
Patch Set: Fixed. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/render_widget.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_widget.cc
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index c2a137eea5b15b32e62c95b9a770abe731ed2ed6..3b52056f690b850ada35f0415d2b3487b0849f0c 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,18 @@ void RenderWidget::RequestScheduleAnimation() {
void RenderWidget::UpdateVisualState() {
GetWebWidget()->updateAllLifecyclePhases();
+
+ if (time_to_first_active_paint_recorded_)
+ return;
+
+ RenderThreadImpl* render_thread_impl = RenderThreadImpl::current();
+ if (!render_thread_impl->NeedsToRecordFirstActivePaint())
+ return;
+
+ 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 +1897,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_)
« no previous file with comments | « content/renderer/render_widget.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698