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

Unified Diff: content/renderer/scheduler/renderer_scheduler_impl_unittest.cc

Issue 985813002: Experimental: Remove chromium shared timers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More tests Created 5 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: content/renderer/scheduler/renderer_scheduler_impl_unittest.cc
diff --git a/content/renderer/scheduler/renderer_scheduler_impl_unittest.cc b/content/renderer/scheduler/renderer_scheduler_impl_unittest.cc
index 4a97a0454749f11708d1fdb98d7f81e2202a5354..888bdf57422650d42bebf1f83efc4d222eb9cac9 100644
--- a/content/renderer/scheduler/renderer_scheduler_impl_unittest.cc
+++ b/content/renderer/scheduler/renderer_scheduler_impl_unittest.cc
@@ -51,7 +51,8 @@ class RendererSchedulerImplTest : public testing::Test {
default_task_runner_(scheduler_->DefaultTaskRunner()),
compositor_task_runner_(scheduler_->CompositorTaskRunner()),
loading_task_runner_(scheduler_->LoadingTaskRunner()),
- idle_task_runner_(scheduler_->IdleTaskRunner()) {
+ idle_task_runner_(scheduler_->IdleTaskRunner()),
+ timer_task_runner_(scheduler_->TimerTaskRunner()) {
scheduler_->SetTimeSourceForTesting(clock_);
}
~RendererSchedulerImplTest() override {}
@@ -76,6 +77,7 @@ class RendererSchedulerImplTest : public testing::Test {
// - 'C': Compositor task
// - 'L': Loading task
// - 'I': Idle task
+ // - 'T': Timer task
void PostTestTasks(std::vector<std::string>* run_order,
const std::string& task_descriptor) {
std::istringstream stream(task_descriptor);
@@ -100,6 +102,10 @@ class RendererSchedulerImplTest : public testing::Test {
FROM_HERE,
base::Bind(&AppendToVectorIdleTestTask, run_order, task));
break;
+ case 'T':
+ timer_task_runner_->PostTask(
+ FROM_HERE, base::Bind(&AppendToVectorTestTask, run_order, task));
+ break;
default:
NOTREACHED();
}
@@ -120,6 +126,7 @@ class RendererSchedulerImplTest : public testing::Test {
scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner_;
scoped_refptr<base::SingleThreadTaskRunner> loading_task_runner_;
scoped_refptr<SingleThreadIdleTaskRunner> idle_task_runner_;
+ scoped_refptr<base::SingleThreadTaskRunner> timer_task_runner_;
DISALLOW_COPY_AND_ASSIGN(RendererSchedulerImplTest);
};
@@ -445,9 +452,10 @@ TEST_F(RendererSchedulerImplTest, TestCompositorPolicy_DidAnimateForInput) {
TEST_F(RendererSchedulerImplTest, TestTouchstartPolicy) {
std::vector<std::string> run_order;
- PostTestTasks(&run_order, "L1 D1 C1 D2 C2");
+ PostTestTasks(&run_order, "L1 D1 C1 D2 C2 T1 T2");
- // Observation of touchstart should defer execution of idle and loading tasks.
+ // Observation of touchstart should defer execution of timer, idle and loading
+ // tasks.
scheduler_->DidReceiveInputEventOnCompositorThread(
FakeInputEvent(blink::WebInputEvent::TouchStart));
RunUntilIdle();
@@ -465,12 +473,16 @@ TEST_F(RendererSchedulerImplTest, TestTouchstartPolicy) {
EXPECT_TRUE(run_order.empty());
// Action events like ScrollBegin will kick us back into compositor priority,
- // allowing servie of the loading and idle queues.
+ // allowing servie of the timer, loading and idle queues.
run_order.clear();
scheduler_->DidReceiveInputEventOnCompositorThread(
FakeInputEvent(blink::WebInputEvent::GestureScrollBegin));
RunUntilIdle();
- EXPECT_THAT(run_order, testing::ElementsAre(std::string("L1")));
+ // Note that the Timer tasks run before the loading task because we are in
+ // COMPOSITOR_PRIORITY policy.
+ EXPECT_THAT(run_order,
+ testing::ElementsAre(std::string("T1"), std::string("T2"),
+ std::string("L1")));
}
TEST_F(RendererSchedulerImplTest,
@@ -847,4 +859,50 @@ TEST_F(RendererSchedulerImplTest, InputArrivesAfterBeginFrame) {
EXPECT_EQ(Policy::NORMAL, CurrentPolicy());
}
+TEST_F(RendererSchedulerImplTest, TimerQueueEnabledByDefault) {
+ std::vector<std::string> run_order;
+ PostTestTasks(&run_order, "T1 T2");
+ RunUntilIdle();
+ EXPECT_THAT(run_order,
+ testing::ElementsAre(std::string("T1"), std::string("T2")));
+}
+
+TEST_F(RendererSchedulerImplTest, SuspendAndResumeTimerQueue) {
+ std::vector<std::string> run_order;
+ PostTestTasks(&run_order, "T1 T2");
+
+ scheduler_->SuspendTimerQueue();
+ RunUntilIdle();
+ EXPECT_TRUE(run_order.empty());
+
+ scheduler_->ResumeTimerQueue();
+ RunUntilIdle();
+ EXPECT_THAT(run_order,
+ testing::ElementsAre(std::string("T1"), std::string("T2")));
+}
+
+TEST_F(RendererSchedulerImplTest, MultipleSuspendsNeedMultipleResumes) {
+ std::vector<std::string> run_order;
+ PostTestTasks(&run_order, "T1 T2");
+
+ scheduler_->SuspendTimerQueue();
+ scheduler_->SuspendTimerQueue();
+ scheduler_->SuspendTimerQueue();
+ RunUntilIdle();
+ EXPECT_TRUE(run_order.empty());
+
+ scheduler_->ResumeTimerQueue();
+ RunUntilIdle();
+ EXPECT_TRUE(run_order.empty());
+
+ scheduler_->ResumeTimerQueue();
+ RunUntilIdle();
+ EXPECT_TRUE(run_order.empty());
+
+ scheduler_->ResumeTimerQueue();
+ RunUntilIdle();
+ EXPECT_THAT(run_order,
+ testing::ElementsAre(std::string("T1"), std::string("T2")));
+}
+
} // namespace content
« no previous file with comments | « content/renderer/scheduler/renderer_scheduler_impl.cc ('k') | content/renderer/scheduler/renderer_task_queue_selector.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698