| Index: third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc
|
| diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc
|
| index 9571ca3f5c0409a09f40bcec6e28c0e47d338fe9..fb008e4e3773dcacd5e5173276ed1a741741bea2 100644
|
| --- a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc
|
| +++ b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc
|
| @@ -12,6 +12,7 @@
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/run_loop.h"
|
| #include "base/single_thread_task_runner.h"
|
| +#include "base/test/histogram_tester.h"
|
| #include "base/test/simple_test_tick_clock.h"
|
| #include "cc/output/begin_frame_args.h"
|
| #include "cc/test/ordered_simple_task_runner.h"
|
| @@ -3947,5 +3948,50 @@ TEST_F(RendererSchedulerImplTest, UnresponsiveMainThreadWithContention) {
|
| scheduler_->MainThreadSeemsUnresponsive(responsiveness_threshold()));
|
| }
|
|
|
| +// Nav Start Nav Start assert
|
| +// | | |
|
| +// v v v
|
| +// ------------------------------------------------------------>
|
| +// |---long task---|---1s task---|-----long task ----|
|
| +//
|
| +// (---MaxEQT1---)
|
| +// (---MaxEQT2---)
|
| +//
|
| +// --- EQT untracked---| |---EQT unflushed-----
|
| +//
|
| +// MaxEQT1 = 500ms is recorded and observed in histogram.
|
| +// MaxEQT2 is recorded but not yet in histogram for not being flushed.
|
| +TEST_F(RendererSchedulerImplTest,
|
| + MaxQueueingTimeMetricRecordedOnlyDuringNavigation) {
|
| + base::HistogramTester tester;
|
| + // Start with a long task whose queueing time will be ignored.
|
| + AdvanceTimeWithTask(10);
|
| + // Navigation start.
|
| + scheduler_->OnCommitProvisionalLoad();
|
| + // The max queueing time of the following task will be recorded.
|
| + AdvanceTimeWithTask(1);
|
| + // The smaller queuing time will be ignored.
|
| + AdvanceTimeWithTask(0.5);
|
| + scheduler_->OnCommitProvisionalLoad();
|
| + // Add another long task after navigation start but without navigation end.
|
| + // This value won't be recorded as there is not navigation.
|
| + AdvanceTimeWithTask(10);
|
| + // The expected queueing time of 1s task in 1s window is 500ms.
|
| + tester.ExpectUniqueSample("RendererScheduler.MaxQueueingTime", 500, 1);
|
| +}
|
| +
|
| +// Only the max of all the queueing times is recorded.
|
| +TEST_F(RendererSchedulerImplTest, MaxQueueingTimeMetricRecordTheMax) {
|
| + base::HistogramTester tester;
|
| + scheduler_->OnCommitProvisionalLoad();
|
| + // The smaller queuing time will be ignored.
|
| + AdvanceTimeWithTask(0.5);
|
| + // The max queueing time of the following task will be recorded.
|
| + AdvanceTimeWithTask(1);
|
| + // The smaller queuing time will be ignored.
|
| + AdvanceTimeWithTask(0.5);
|
| + scheduler_->OnCommitProvisionalLoad();
|
| + tester.ExpectUniqueSample("RendererScheduler.MaxQueueingTime", 500, 1);
|
| +}
|
| } // namespace scheduler
|
| } // namespace blink
|
|
|