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

Unified Diff: third_party/WebKit/Source/platform/scheduler/base/queueing_time_estimator_unittest.cc

Issue 2788013003: Expected Queueing Time Metric ignores tasks with nested message loops. (Closed)
Patch Set: Address nits Created 3 years, 9 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/base/queueing_time_estimator_unittest.cc
diff --git a/third_party/WebKit/Source/platform/scheduler/base/queueing_time_estimator_unittest.cc b/third_party/WebKit/Source/platform/scheduler/base/queueing_time_estimator_unittest.cc
index 393ffe83cf8b6dae7f9b4d662fc3f947b473b6eb..a37ea0b5bd24ae5f4cb445535ca2f737e37b43b2 100644
--- a/third_party/WebKit/Source/platform/scheduler/base/queueing_time_estimator_unittest.cc
+++ b/third_party/WebKit/Source/platform/scheduler/base/queueing_time_estimator_unittest.cc
@@ -145,5 +145,43 @@ TEST_F(QueueingTimeEstimatorTest,
EXPECT_EQ(base::TimeDelta::FromMilliseconds(5500), estimatedQueueingTime);
}
+// Tasks containing nested message loops may be extremely long without
+// negatively impacting user experience. Ignore such tasks.
+TEST_F(QueueingTimeEstimatorTest, IgnoresTasksWithNestedMessageLoops) {
+ TestQueueingTimeEstimatorClient client;
+ QueueingTimeEstimatorForTest estimator(&client,
+ base::TimeDelta::FromSeconds(5));
+ base::TimeTicks time;
+ time += base::TimeDelta::FromMilliseconds(5000);
+ estimator.OnTopLevelTaskStarted(time);
+ estimator.OnTopLevelTaskCompleted(time);
+
+ time += base::TimeDelta::FromMilliseconds(3000);
+
+ estimator.OnTopLevelTaskStarted(time);
+ time += base::TimeDelta::FromMilliseconds(20000);
+ estimator.OnBeginNestedMessageLoop();
+ estimator.OnTopLevelTaskCompleted(time);
+
+ // Perform an additional task after the nested message loop. A 1 second task
+ // in a 5 second window results in a 100ms expected queueing time.
+ estimator.OnTopLevelTaskStarted(time);
+ time += base::TimeDelta::FromMilliseconds(1000);
+ estimator.OnTopLevelTaskCompleted(time);
+
+ // Flush the data by adding a task in the next window.
+ time += base::TimeDelta::FromMilliseconds(5000);
+ estimator.OnTopLevelTaskStarted(time);
+ time += base::TimeDelta::FromMilliseconds(500);
+ estimator.OnTopLevelTaskCompleted(time);
+
+ EXPECT_THAT(client.expected_queueing_times(),
+ testing::ElementsAre(base::TimeDelta::FromMilliseconds(0),
+ base::TimeDelta::FromMilliseconds(0),
+ base::TimeDelta::FromMilliseconds(0),
+ base::TimeDelta::FromMilliseconds(0),
+ base::TimeDelta::FromMilliseconds(100)));
+}
+
} // namespace scheduler
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698