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

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

Issue 1025323003: Introduce a SchedulerHelper in content/child/scheduler (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Sami's suggestions 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 870be4a086a5ff9e3ca6eeb246f589431cccbbbb..592e4f41eb28a480b121fef69b35e0ddede6e0d9 100644
--- a/content/renderer/scheduler/renderer_scheduler_impl_unittest.cc
+++ b/content/renderer/scheduler/renderer_scheduler_impl_unittest.cc
@@ -7,8 +7,8 @@
#include "base/callback.h"
#include "cc/output/begin_frame_args.h"
#include "cc/test/ordered_simple_task_runner.h"
-#include "content/renderer/scheduler/nestable_task_runner_for_test.h"
-#include "content/renderer/scheduler/renderer_scheduler_message_loop_delegate.h"
+#include "content/child/scheduler/nestable_task_runner_for_test.h"
+#include "content/child/scheduler/scheduler_message_loop_delegate.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -40,6 +40,83 @@ void AppendToVectorIdleTestTask(std::vector<std::string>* vector,
AppendToVectorTestTask(vector, value);
}
+void NullTask() {
+}
+
+void AppendToVectorReentrantTask(
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner,
+ std::vector<int>* vector,
+ int* reentrant_count,
+ int max_reentrant_count) {
+ vector->push_back((*reentrant_count)++);
+ if (*reentrant_count < max_reentrant_count) {
+ task_runner->PostTask(
+ FROM_HERE, base::Bind(AppendToVectorReentrantTask, task_runner, vector,
+ reentrant_count, max_reentrant_count));
+ }
+}
+
+void IdleTestTask(int* run_count,
+ base::TimeTicks* deadline_out,
+ base::TimeTicks deadline) {
+ (*run_count)++;
+ *deadline_out = deadline;
+}
+
+int max_idle_task_reposts = 2;
+
+void RepostingIdleTestTask(
+ scoped_refptr<SingleThreadIdleTaskRunner> idle_task_runner,
+ int* run_count,
+ base::TimeTicks deadline) {
+ if ((*run_count + 1) < max_idle_task_reposts) {
+ idle_task_runner->PostIdleTask(
+ FROM_HERE,
+ base::Bind(&RepostingIdleTestTask, idle_task_runner, run_count));
+ }
+ (*run_count)++;
+}
+
+void UpdateClockToDeadlineIdleTestTask(
+ scoped_refptr<cc::TestNowSource> clock,
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner,
+ int* run_count,
+ base::TimeTicks deadline) {
+ clock->SetNow(deadline);
+ // Due to the way in which OrderedSimpleTestRunner orders tasks and the fact
+ // that we updated the time within a task, the delayed pending task to call
+ // EndIdlePeriod will not happen until after a TaskQueueManager DoWork, so
+ // post a normal task here to ensure it runs before the next idle task.
+ task_runner->PostTask(FROM_HERE, base::Bind(NullTask));
+ (*run_count)++;
+}
+
+void PostingYieldingTestTask(
+ RendererSchedulerImpl* scheduler,
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner,
+ bool simulate_input,
+ bool* should_yield_before,
+ bool* should_yield_after) {
+ *should_yield_before = scheduler->ShouldYieldForHighPriorityWork();
+ task_runner->PostTask(FROM_HERE, base::Bind(NullTask));
+ if (simulate_input) {
+ scheduler->DidReceiveInputEventOnCompositorThread(
+ FakeInputEvent(blink::WebInputEvent::GestureFlingStart));
+ }
+ *should_yield_after = scheduler->ShouldYieldForHighPriorityWork();
+}
+
+void AnticipationTestTask(RendererSchedulerImpl* scheduler,
+ bool simulate_input,
+ bool* is_anticipated_before,
+ bool* is_anticipated_after) {
+ *is_anticipated_before = scheduler->IsHighPriorityWorkAnticipated();
+ if (simulate_input) {
+ scheduler->DidReceiveInputEventOnCompositorThread(
+ FakeInputEvent(blink::WebInputEvent::GestureFlingStart));
+ }
+ *is_anticipated_after = scheduler->IsHighPriorityWorkAnticipated();
+}
}; // namespace
class RendererSchedulerImplTest : public testing::Test {
@@ -63,7 +140,7 @@ class RendererSchedulerImplTest : public testing::Test {
: clock_(cc::TestNowSource::Create(5000)),
message_loop_(message_loop),
nestable_task_runner_(
- RendererSchedulerMessageLoopDelegate::Create(message_loop)),
+ SchedulerMessageLoopDelegate::Create(message_loop)),
scheduler_(new RendererSchedulerImpl(nestable_task_runner_)),
default_task_runner_(scheduler_->DefaultTaskRunner()),
compositor_task_runner_(scheduler_->CompositorTaskRunner()),
@@ -160,12 +237,12 @@ class RendererSchedulerImplTest : public testing::Test {
static base::TimeDelta maximum_idle_period_duration() {
return base::TimeDelta::FromMilliseconds(
- RendererSchedulerImpl::kMaximumIdlePeriodMillis);
+ SchedulerHelper::kMaximumIdlePeriodMillis);
}
base::TimeTicks CurrentIdleTaskDeadline() {
base::TimeTicks deadline;
- scheduler_->CurrentIdleTaskDeadlineCallback(&deadline);
+ scheduler_->CurrentIdleTaskDeadlineCallbackForTesting(&deadline);
return deadline;
}
@@ -184,82 +261,6 @@ class RendererSchedulerImplTest : public testing::Test {
DISALLOW_COPY_AND_ASSIGN(RendererSchedulerImplTest);
};
-void NullTask() {
-}
-
-void AppendToVectorReentrantTask(
- scoped_refptr<base::SingleThreadTaskRunner> task_runner,
- std::vector<int>* vector,
- int* reentrant_count,
- int max_reentrant_count) {
- vector->push_back((*reentrant_count)++);
- if (*reentrant_count < max_reentrant_count) {
- task_runner->PostTask(
- FROM_HERE, base::Bind(AppendToVectorReentrantTask, task_runner, vector,
- reentrant_count, max_reentrant_count));
- }
-}
-
-void IdleTestTask(int* run_count,
- base::TimeTicks* deadline_out,
- base::TimeTicks deadline) {
- (*run_count)++;
- *deadline_out = deadline;
-}
-
-void RepostingIdleTestTask(
- scoped_refptr<SingleThreadIdleTaskRunner> idle_task_runner,
- int* run_count,
- base::TimeTicks deadline) {
- if (*run_count == 0) {
- idle_task_runner->PostIdleTask(
- FROM_HERE,
- base::Bind(&RepostingIdleTestTask, idle_task_runner, run_count));
- }
- (*run_count)++;
-}
-
-void UpdateClockToDeadlineIdleTestTask(
- scoped_refptr<cc::TestNowSource> clock,
- scoped_refptr<base::SingleThreadTaskRunner> task_runner,
- int* run_count,
- base::TimeTicks deadline) {
- clock->SetNow(deadline);
- // Due to the way in which OrderedSimpleTestRunner orders tasks and the fact
- // that we updated the time within a task, the delayed pending task to call
- // EndIdlePeriod will not happen until after a TaskQueueManager DoWork, so
- // post a normal task here to ensure it runs before the next idle task.
- task_runner->PostTask(FROM_HERE, base::Bind(NullTask));
- (*run_count)++;
-}
-
-void PostingYieldingTestTask(
- RendererSchedulerImpl* scheduler,
- scoped_refptr<base::SingleThreadTaskRunner> task_runner,
- bool simulate_input,
- bool* should_yield_before,
- bool* should_yield_after) {
- *should_yield_before = scheduler->ShouldYieldForHighPriorityWork();
- task_runner->PostTask(FROM_HERE, base::Bind(NullTask));
- if (simulate_input) {
- scheduler->DidReceiveInputEventOnCompositorThread(
- FakeInputEvent(blink::WebInputEvent::GestureFlingStart));
- }
- *should_yield_after = scheduler->ShouldYieldForHighPriorityWork();
-}
-
-void AnticipationTestTask(RendererSchedulerImpl* scheduler,
- bool simulate_input,
- bool* is_anticipated_before,
- bool* is_anticipated_after) {
- *is_anticipated_before = scheduler->IsHighPriorityWorkAnticipated();
- if (simulate_input) {
- scheduler->DidReceiveInputEventOnCompositorThread(
- FakeInputEvent(blink::WebInputEvent::GestureFlingStart));
- }
- *is_anticipated_after = scheduler->IsHighPriorityWorkAnticipated();
-}
-
TEST_F(RendererSchedulerImplTest, TestPostDefaultTask) {
std::vector<std::string> run_order;
PostTestTasks(&run_order, "D1 D2 D3 D4");
@@ -326,6 +327,7 @@ TEST_F(RendererSchedulerImplTest, TestPostIdleTask) {
TEST_F(RendererSchedulerImplTest, TestRepostingIdleTask) {
int run_count = 0;
+ max_idle_task_reposts = 2;
idle_task_runner_->PostIdleTask(
FROM_HERE,
base::Bind(&RepostingIdleTestTask, idle_task_runner_, &run_count));
@@ -1162,6 +1164,7 @@ TEST_F(RendererSchedulerImplTest,
TEST_F(RendererSchedulerImplTest, TestLongIdlePeriodRepeating) {
int run_count = 0;
+ max_idle_task_reposts = 3;
idle_task_runner_->PostIdleTask(
FROM_HERE,
base::Bind(&RepostingIdleTestTask, idle_task_runner_, &run_count));

Powered by Google App Engine
This is Rietveld 408576698