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

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

Issue 2273703002: Force events to be non blocking if main thread is unresponsive. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add tests, fix bugs. Created 4 years, 1 month 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/task_queue_manager_unittest.cc
diff --git a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_unittest.cc b/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_unittest.cc
index 83a2476b3a7e19a4ebb3569b508c7c78177d9092..edd7ad475f170df66da22aafa4beb088ec11ff18 100644
--- a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_unittest.cc
+++ b/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_unittest.cc
@@ -2075,5 +2075,35 @@ TEST_F(TaskQueueManagerTest, TimeDomainWakeUpOnlyCancelledIfAllUsesCancelled) {
EXPECT_THAT(run_times, ElementsAre(start_time + delay3, start_time + delay4));
}
+TEST_F(TaskQueueManagerTest, DeferredTaskTimeObservation) {
+ InitializeWithRealMessageLoop(1u);
+ now_src_->SetNowTicks(base::TimeTicks() +
+ base::TimeDelta::FromMicroseconds(10000));
+
+ TestTaskTimeObserver test_task_time_observer;
+ manager_->AddTaskTimeObserver(&test_task_time_observer);
+
+ std::vector<EnqueueOrder> run_order;
+ runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
+
+ std::vector<std::pair<base::Closure, bool>> tasks_to_post_from_nested_loop;
+ tasks_to_post_from_nested_loop.push_back(
+ std::make_pair(base::Bind(&TestTask, 1, &run_order), false));
+
+ runners_[0]->PostTask(
+ FROM_HERE, base::Bind(&PostFromNestedRunloop, message_loop_.get(),
+ base::RetainedRef(runners_[0]),
+ base::Unretained(&tasks_to_post_from_nested_loop)));
+
+ base::RunLoop().RunUntilIdle();
+
+ // The task is deferred once, and then actually executed, leading to a pair of
+ // entries.
+ EXPECT_THAT(test_task_time_observer.task_start_times(),
+ ElementsAre(0.01, 0.01));
+ EXPECT_THAT(test_task_time_observer.task_end_times(),
+ ElementsAre(0.01, 0.01));
+}
+
} // namespace scheduler
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698