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

Unified Diff: third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc

Issue 2416803003: Record PendingTaskCount when a backgrounded renderer is suspended. (Closed)
Patch Set: Add unittest Created 4 years, 2 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
Index: third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
index 0d5d624c3473fbf9c57ddb54950c5c75b4a7da83..44f0e5bf770884255e1313cda63b0b829d2ecb8e 100644
--- a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
+++ b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
@@ -490,12 +490,28 @@ void RendererSchedulerImpl::SuspendRenderer() {
if (helper_.IsShutdown())
return;
suspend_timers_when_backgrounded_closure_.Cancel();
+
+ UMA_HISTOGRAM_COUNTS("PurgeAndSuspend.PendingTaskCount",
+ GetNumberOfPendingTasks());
+
// TODO(hajimehoshi): We might need to suspend not only timer queue but also
// e.g. loading tasks or postMessage.
MainThreadOnly().renderer_suspended = true;
SuspendTimerQueueWhenBackgrounded();
}
+int RendererSchedulerImpl::GetNumberOfPendingTasks() {
Sami 2016/10/14 01:38:18 I would suggest adding this getter into TaskQueueM
tasak 2016/10/14 05:55:32 I see. I agree that TaskQueueManager is the best c
+ int count = 0;
+ for (const scoped_refptr<TaskQueue>& loading_queue : loading_task_runners_)
+ count += loading_queue->GetNumberOfPendingTasks();
+ for (const scoped_refptr<TaskQueue>& timer_queue : timer_task_runners_)
+ count += timer_queue->GetNumberOfPendingTasks();
+ count += DefaultTaskRunner()->GetNumberOfPendingTasks();
+ count += CompositorTaskRunner()->GetNumberOfPendingTasks();
+ count += idle_helper_.GetNumberOfPendingIdleTasks();
+ return count;
+}
+
void RendererSchedulerImpl::EndIdlePeriod() {
if (MainThreadOnly().in_idle_period_for_testing)
return;

Powered by Google App Engine
This is Rietveld 408576698