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 b3812dc5780262f6b79143108f71885aee99d4b6..377e68443fe2e6935d7ce1200c584c4015cd4a33 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 |
@@ -217,6 +217,7 @@ RendererSchedulerImpl::MainThreadOnly::MainThreadOnly( |
in_idle_period_for_testing(false), |
use_virtual_time(false), |
is_audio_playing(false), |
+ during_navigation(false), |
rail_mode_observer(nullptr), |
wake_up_budget_pool(nullptr), |
task_duration_per_queue_type_histogram(base::Histogram::FactoryGet( |
@@ -1635,6 +1636,7 @@ void RendererSchedulerImpl::OnNavigationStarted() { |
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), |
"RendererSchedulerImpl::OnNavigationStarted"); |
base::AutoLock lock(any_thread_lock_); |
+ GetMainThreadOnly().during_navigation = true; |
ResetForNavigationLocked(); |
} |
@@ -1680,6 +1682,9 @@ void RendererSchedulerImpl::ResetForNavigationLocked() { |
GetMainThreadOnly().have_seen_a_begin_main_frame = false; |
GetMainThreadOnly().have_reported_blocking_intervention_since_navigation = |
false; |
+ GetMainThreadOnly().max_queuing_time_histogram.reset(); |
+ GetMainThreadOnly().max_queuing_time = base::TimeDelta(); |
+ |
for (WebViewSchedulerImpl* web_view_scheduler : |
GetMainThreadOnly().web_view_schedulers) { |
web_view_scheduler->OnNavigation(); |
@@ -1904,6 +1909,18 @@ void RendererSchedulerImpl::RemoveTaskTimeObserver( |
void RendererSchedulerImpl::OnQueueingTimeForWindowEstimated( |
base::TimeDelta queueing_time, |
base::TimeTicks window_start_time) { |
+ if (GetMainThreadOnly().during_navigation) { |
+ if (!GetMainThreadOnly().max_queuing_time_histogram) { |
tdresser
2017/05/23 14:57:51
Add a comment about why we're instantiating this h
Liquan (Max) Gu
2017/05/25 16:27:28
Done.
|
+ GetMainThreadOnly().max_queuing_time_histogram = |
+ base::SingleSampleMetricsFactory::Get()->CreateCustomCountsMetric( |
+ "RendererScheduler.MaxQueueingTime", 1, 10000, 50); |
+ } |
+ if (GetMainThreadOnly().max_queuing_time < queueing_time) { |
+ GetMainThreadOnly().max_queuing_time_histogram->SetSample( |
+ GetMainThreadOnly().max_queuing_time.InMilliseconds()); |
+ GetMainThreadOnly().max_queuing_time = queueing_time; |
+ } |
+ } |
// RendererScheduler reports the queueing time once per window's duration. |
// |stepEQT|stepEQT|stepEQT|stepEQT|stepEQT|stepEQT| |
// Report: |-------window EQT------| |