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

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

Issue 2093983002: scheduler: Tell v8 about the current RAIL mode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add missing gyp dependencies Created 4 years, 6 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
« no previous file with comments | « components/scheduler/renderer/renderer_scheduler_impl.cc ('k') | content/content_utility.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/scheduler/renderer/renderer_scheduler_impl_unittest.cc
diff --git a/components/scheduler/renderer/renderer_scheduler_impl_unittest.cc b/components/scheduler/renderer/renderer_scheduler_impl_unittest.cc
index 9cbe46db50fbb435084b07bb5ee692ce66ce4829..bede56febbfcce974015c0e7a22135d648e2e1ba 100644
--- a/components/scheduler/renderer/renderer_scheduler_impl_unittest.cc
+++ b/components/scheduler/renderer/renderer_scheduler_impl_unittest.cc
@@ -190,8 +190,8 @@ class RendererSchedulerImplForTest : public RendererSchedulerImpl {
update_policy_count_++;
RendererSchedulerImpl::UpdatePolicyLocked(update_type);
- std::string use_case =
- RendererScheduler::UseCaseToString(MainThreadOnly().current_use_case);
+ std::string use_case = RendererSchedulerImpl::UseCaseToString(
+ MainThreadOnly().current_use_case);
if (MainThreadOnly().touchstart_expected_soon) {
use_cases_.push_back(use_case + " touchstart expected");
} else {
@@ -220,8 +220,8 @@ class RendererSchedulerImplForTest : public RendererSchedulerImpl {
// Lets gtest print human readable Policy values.
::std::ostream& operator<<(::std::ostream& os,
- const RendererScheduler::UseCase& use_case) {
- return os << RendererScheduler::UseCaseToString(use_case);
+ const RendererSchedulerImpl::UseCase& use_case) {
+ return os << RendererSchedulerImpl::UseCaseToString(use_case);
}
class RendererSchedulerImplTest : public testing::Test {
@@ -494,6 +494,14 @@ class RendererSchedulerImplTest : public testing::Test {
return scheduler_->MainThreadOnly().current_use_case;
}
+ v8::RAILMode RAILMode() {
+ return scheduler_->MainThreadOnly().current_policy.rail_mode;
+ }
+
+ bool BeginFrameNotExpectedSoon() {
+ return scheduler_->MainThreadOnly().begin_frame_not_expected_soon;
+ }
+
bool TouchStartExpectedSoon() {
return scheduler_->MainThreadOnly().touchstart_expected_soon;
}
@@ -847,7 +855,7 @@ TEST_F(RendererSchedulerImplTest, TestDefaultPolicy) {
testing::ElementsAre(std::string("L1"), std::string("D1"),
std::string("C1"), std::string("D2"),
std::string("C2"), std::string("I1")));
- EXPECT_EQ(RendererScheduler::UseCase::NONE, CurrentUseCase());
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::NONE, CurrentUseCase());
}
TEST_F(RendererSchedulerImplTest,
@@ -863,7 +871,8 @@ TEST_F(RendererSchedulerImplTest,
testing::ElementsAre(std::string("L1"), std::string("D1"),
std::string("D2"), std::string("I1"),
std::string("C1"), std::string("C2")));
- EXPECT_EQ(RendererScheduler::UseCase::COMPOSITOR_GESTURE, CurrentUseCase());
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::COMPOSITOR_GESTURE,
+ CurrentUseCase());
}
TEST_F(RendererSchedulerImplTest,
@@ -879,7 +888,7 @@ TEST_F(RendererSchedulerImplTest,
testing::ElementsAre(std::string("C1"), std::string("C2"),
std::string("L1"), std::string("D1"),
std::string("D2"), std::string("I1")));
- EXPECT_EQ(RendererScheduler::UseCase::MAIN_THREAD_CUSTOM_INPUT_HANDLING,
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::MAIN_THREAD_CUSTOM_INPUT_HANDLING,
CurrentUseCase());
}
@@ -896,7 +905,8 @@ TEST_F(RendererSchedulerImplTest,
testing::ElementsAre(std::string("L1"), std::string("D1"),
std::string("D2"), std::string("I1"),
std::string("C1"), std::string("C2")));
- EXPECT_EQ(RendererScheduler::UseCase::COMPOSITOR_GESTURE, CurrentUseCase());
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::COMPOSITOR_GESTURE,
+ CurrentUseCase());
}
TEST_F(RendererSchedulerImplTest,
@@ -928,7 +938,8 @@ TEST_F(RendererSchedulerImplTest,
testing::ElementsAre(std::string("C1"), std::string("C2"),
std::string("L1"), std::string("D1"),
std::string("D2")));
- EXPECT_EQ(RendererScheduler::UseCase::COMPOSITOR_GESTURE, CurrentUseCase());
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::COMPOSITOR_GESTURE,
+ CurrentUseCase());
}
TEST_F(RendererSchedulerImplTest,
@@ -943,7 +954,8 @@ TEST_F(RendererSchedulerImplTest,
testing::ElementsAre(std::string("L1"), std::string("D1"),
std::string("D2"), std::string("I1"),
std::string("C1"), std::string("C2")));
- EXPECT_EQ(RendererScheduler::UseCase::COMPOSITOR_GESTURE, CurrentUseCase());
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::COMPOSITOR_GESTURE,
+ CurrentUseCase());
}
TEST_F(RendererSchedulerImplTest,
@@ -960,7 +972,7 @@ TEST_F(RendererSchedulerImplTest,
testing::ElementsAre(std::string("C1"), std::string("C2"),
std::string("L1"), std::string("D1"),
std::string("D2"), std::string("I1")));
- EXPECT_EQ(RendererScheduler::UseCase::MAIN_THREAD_CUSTOM_INPUT_HANDLING,
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::MAIN_THREAD_CUSTOM_INPUT_HANDLING,
CurrentUseCase());
scheduler_->DidHandleInputEventOnMainThread(
FakeInputEvent(blink::WebInputEvent::GestureFlingStart));
@@ -979,7 +991,7 @@ TEST_F(RendererSchedulerImplTest,
testing::ElementsAre(std::string("C1"), std::string("C2"),
std::string("L1"), std::string("D1"),
std::string("D2"), std::string("I1")));
- EXPECT_EQ(RendererScheduler::UseCase::MAIN_THREAD_CUSTOM_INPUT_HANDLING,
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::MAIN_THREAD_CUSTOM_INPUT_HANDLING,
CurrentUseCase());
scheduler_->DidHandleInputEventOnMainThread(
FakeInputEvent(blink::WebInputEvent::GestureFlingStart));
@@ -993,7 +1005,7 @@ TEST_F(RendererSchedulerImplTest, TestCompositorPolicy_DidAnimateForInput) {
scheduler_->DidAnimateForInputOnCompositorThread();
// Note DidAnimateForInputOnCompositorThread does not by itself trigger a
// policy update.
- EXPECT_EQ(RendererScheduler::UseCase::COMPOSITOR_GESTURE,
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::COMPOSITOR_GESTURE,
ForceUpdatePolicyAndGetCurrentUseCase());
EnableIdleTasks();
RunUntilIdle();
@@ -1001,7 +1013,8 @@ TEST_F(RendererSchedulerImplTest, TestCompositorPolicy_DidAnimateForInput) {
testing::ElementsAre(std::string("D1"), std::string("D2"),
std::string("I1"), std::string("C1"),
std::string("C2")));
- EXPECT_EQ(RendererScheduler::UseCase::COMPOSITOR_GESTURE, CurrentUseCase());
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::COMPOSITOR_GESTURE,
+ CurrentUseCase());
}
TEST_F(RendererSchedulerImplTest, Navigation_ResetsTaskCostEstimations) {
@@ -1034,7 +1047,8 @@ TEST_F(RendererSchedulerImplTest,
RunUntilIdle();
EXPECT_FALSE(TouchStartExpectedSoon());
- EXPECT_EQ(RendererScheduler::UseCase::MAIN_THREAD_GESTURE, CurrentUseCase());
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::MAIN_THREAD_GESTURE,
+ CurrentUseCase());
EXPECT_THAT(run_order, testing::ElementsAre(std::string("C1")));
}
@@ -1053,7 +1067,7 @@ TEST_F(RendererSchedulerImplTest,
RunUntilIdle();
EXPECT_FALSE(TouchStartExpectedSoon());
- EXPECT_EQ(RendererScheduler::UseCase::MAIN_THREAD_CUSTOM_INPUT_HANDLING,
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::MAIN_THREAD_CUSTOM_INPUT_HANDLING,
CurrentUseCase());
EXPECT_THAT(run_order,
@@ -1074,7 +1088,7 @@ TEST_F(RendererSchedulerImplTest,
RunUntilIdle();
EXPECT_FALSE(TouchStartExpectedSoon());
- EXPECT_EQ(RendererScheduler::UseCase::MAIN_THREAD_CUSTOM_INPUT_HANDLING,
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::MAIN_THREAD_CUSTOM_INPUT_HANDLING,
CurrentUseCase());
EXPECT_THAT(run_order,
@@ -1184,7 +1198,7 @@ TEST_F(RendererSchedulerImplTest, DISABLED_LoadingUseCase) {
std::string("L2"), std::string("C1"), std::string("T1"),
std::string("C2"), std::string("T2"), std::string("I1")};
EXPECT_THAT(run_order, testing::ElementsAreArray(loading_policy_expected));
- EXPECT_EQ(RendererScheduler::UseCase::LOADING, CurrentUseCase());
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::LOADING, CurrentUseCase());
// Advance 15s and try again, the loading policy should have ended and the
// task order should return to the NONE use case where loading tasks are no
@@ -1200,7 +1214,7 @@ TEST_F(RendererSchedulerImplTest, DISABLED_LoadingUseCase) {
std::string("L1"), std::string("D2"), std::string("C2"),
std::string("T2"), std::string("L2"), std::string("I1")};
EXPECT_THAT(run_order, testing::ElementsAreArray(default_order_expected));
- EXPECT_EQ(RendererScheduler::UseCase::NONE, CurrentUseCase());
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::NONE, CurrentUseCase());
}
TEST_F(RendererSchedulerImplTest,
@@ -1214,7 +1228,7 @@ TEST_F(RendererSchedulerImplTest,
RendererScheduler::InputEventState::EVENT_CONSUMED_BY_COMPOSITOR);
RunUntilIdle();
// Note compositor tasks are not prioritized.
- EXPECT_EQ(RendererScheduler::UseCase::NONE, CurrentUseCase());
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::NONE, CurrentUseCase());
EXPECT_THAT(run_order,
testing::ElementsAre(std::string("D1"), std::string("C1"),
std::string("D2"), std::string("C2"),
@@ -1232,7 +1246,7 @@ TEST_F(RendererSchedulerImplTest,
RendererScheduler::InputEventState::EVENT_FORWARDED_TO_MAIN_THREAD);
RunUntilIdle();
// Note compositor tasks are not prioritized.
- EXPECT_EQ(RendererScheduler::UseCase::NONE, CurrentUseCase());
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::NONE, CurrentUseCase());
EXPECT_THAT(run_order,
testing::ElementsAre(std::string("D1"), std::string("C1"),
std::string("D2"), std::string("C2"),
@@ -1307,7 +1321,7 @@ TEST_F(RendererSchedulerImplTest, EventForwardedToMainThread_MouseWheel) {
testing::ElementsAre(std::string("C1"), std::string("C2"),
std::string("D1"), std::string("D2"),
std::string("I1")));
- EXPECT_EQ(RendererScheduler::UseCase::MAIN_THREAD_CUSTOM_INPUT_HANDLING,
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::MAIN_THREAD_CUSTOM_INPUT_HANDLING,
CurrentUseCase());
}
@@ -1326,7 +1340,7 @@ TEST_F(RendererSchedulerImplTest,
testing::ElementsAre(std::string("D1"), std::string("C1"),
std::string("D2"), std::string("C2"),
std::string("I1")));
- EXPECT_EQ(RendererScheduler::UseCase::NONE, CurrentUseCase());
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::NONE, CurrentUseCase());
}
TEST_F(RendererSchedulerImplTest,
@@ -1344,7 +1358,7 @@ TEST_F(RendererSchedulerImplTest,
testing::ElementsAre(std::string("D1"), std::string("C1"),
std::string("D2"), std::string("C2"),
std::string("I1")));
- EXPECT_EQ(RendererScheduler::UseCase::NONE, CurrentUseCase());
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::NONE, CurrentUseCase());
// Note compositor tasks are not prioritized.
scheduler_->DidHandleInputEventOnMainThread(
FakeInputEvent(blink::WebInputEvent::KeyDown));
@@ -2312,12 +2326,13 @@ TEST_F(RendererSchedulerImplTest,
PostTestTasks(&run_order, "L1 D1");
RunUntilIdle();
- EXPECT_EQ(RendererScheduler::UseCase::NONE, CurrentUseCase());
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::NONE, CurrentUseCase());
EXPECT_TRUE(HaveSeenABeginMainframe());
EXPECT_TRUE(LoadingTasksSeemExpensive());
EXPECT_FALSE(TimerTasksSeemExpensive());
EXPECT_TRUE(TouchStartExpectedSoon());
EXPECT_THAT(run_order, testing::ElementsAre(std::string("D1")));
+ EXPECT_EQ(v8::PERFORMANCE_RESPONSE, RAILMode());
}
TEST_F(RendererSchedulerImplTest,
@@ -2338,6 +2353,7 @@ TEST_F(RendererSchedulerImplTest,
EXPECT_FALSE(TouchStartExpectedSoon());
EXPECT_THAT(run_order,
testing::ElementsAre(std::string("L1"), std::string("D1")));
+ EXPECT_EQ(v8::PERFORMANCE_ANIMATION, RAILMode());
}
TEST_F(RendererSchedulerImplTest,
@@ -2358,6 +2374,7 @@ TEST_F(RendererSchedulerImplTest,
EXPECT_TRUE(TimerTasksSeemExpensive());
EXPECT_TRUE(TouchStartExpectedSoon());
EXPECT_THAT(run_order, testing::ElementsAre(std::string("D1")));
+ EXPECT_EQ(v8::PERFORMANCE_RESPONSE, RAILMode());
}
TEST_F(RendererSchedulerImplTest,
@@ -2392,6 +2409,7 @@ TEST_F(RendererSchedulerImplTest,
EXPECT_TRUE(TouchStartExpectedSoon());
EXPECT_THAT(run_order,
testing::ElementsAre(std::string("T1"), std::string("D1")));
+ EXPECT_EQ(v8::PERFORMANCE_ANIMATION, RAILMode());
}
TEST_F(RendererSchedulerImplTest,
@@ -2414,10 +2432,11 @@ TEST_F(RendererSchedulerImplTest,
EXPECT_TRUE(TimerTasksSeemExpensive());
EXPECT_TRUE(TouchStartExpectedSoon());
EXPECT_THAT(run_order, testing::ElementsAre(std::string("D1")));
+ EXPECT_EQ(v8::PERFORMANCE_RESPONSE, RAILMode());
}
TEST_F(RendererSchedulerImplTest,
- ExpensiveTimerTaskNotBlockedIfDissalowed_UseCase_COMPOSITOR_GESTURE) {
+ ExpensiveTimerTaskNotBlockedIfDisallowed_UseCase_COMPOSITOR_GESTURE) {
std::vector<std::string> run_order;
scheduler_->SetExpensiveTaskBlockingAllowed(false);
@@ -2438,6 +2457,7 @@ TEST_F(RendererSchedulerImplTest,
EXPECT_TRUE(TouchStartExpectedSoon());
EXPECT_THAT(run_order, testing::ElementsAre(std::string("T1"),
std::string("D1")));
+ EXPECT_EQ(v8::PERFORMANCE_RESPONSE, RAILMode());
}
TEST_F(RendererSchedulerImplTest,
@@ -2459,6 +2479,7 @@ TEST_F(RendererSchedulerImplTest,
EXPECT_TRUE(TimerTasksSeemExpensive());
EXPECT_TRUE(TouchStartExpectedSoon());
EXPECT_THAT(run_order, testing::ElementsAre(std::string("D1")));
+ EXPECT_EQ(v8::PERFORMANCE_RESPONSE, RAILMode());
}
TEST_F(RendererSchedulerImplTest,
@@ -2477,6 +2498,7 @@ TEST_F(RendererSchedulerImplTest,
// The expensive loading task gets blocked.
EXPECT_THAT(run_order, testing::ElementsAre(std::string("D1")));
+ EXPECT_EQ(v8::PERFORMANCE_RESPONSE, RAILMode());
}
TEST_F(RendererSchedulerImplTest,
@@ -2511,13 +2533,14 @@ TEST_F(RendererSchedulerImplTest,
PostTestTasks(&run_order, "L1 D1");
RunUntilIdle();
- EXPECT_EQ(RendererScheduler::UseCase::NONE, CurrentUseCase());
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::NONE, CurrentUseCase());
EXPECT_TRUE(HaveSeenABeginMainframe());
EXPECT_TRUE(LoadingTasksSeemExpensive());
EXPECT_FALSE(TimerTasksSeemExpensive());
EXPECT_TRUE(TouchStartExpectedSoon());
EXPECT_EQ(0, NavigationTaskExpectedCount());
EXPECT_THAT(run_order, testing::ElementsAre(std::string("D1")));
+ EXPECT_EQ(v8::PERFORMANCE_RESPONSE, RAILMode());
}
TEST_F(
@@ -2573,13 +2596,14 @@ TEST_F(
PostTestTasks(&run_order, "L1 D1");
RunUntilIdle();
- EXPECT_EQ(RendererScheduler::UseCase::NONE, CurrentUseCase());
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::NONE, CurrentUseCase());
EXPECT_TRUE(HaveSeenABeginMainframe());
EXPECT_TRUE(LoadingTasksSeemExpensive());
EXPECT_FALSE(TimerTasksSeemExpensive());
EXPECT_TRUE(TouchStartExpectedSoon());
EXPECT_EQ(0, NavigationTaskExpectedCount());
EXPECT_THAT(run_order, testing::ElementsAre(std::string("D1")));
+ EXPECT_EQ(v8::PERFORMANCE_RESPONSE, RAILMode());
}
TEST_F(RendererSchedulerImplTest,
@@ -2595,13 +2619,14 @@ TEST_F(RendererSchedulerImplTest,
SimulateMainThreadGestureStart(TouchEventPolicy::SEND_TOUCH_START,
blink::WebInputEvent::GestureScrollBegin);
RunUntilIdle();
- EXPECT_EQ(RendererScheduler::UseCase::MAIN_THREAD_CUSTOM_INPUT_HANDLING,
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::MAIN_THREAD_CUSTOM_INPUT_HANDLING,
CurrentUseCase());
EXPECT_TRUE(LoadingTasksSeemExpensive());
EXPECT_FALSE(TimerTasksSeemExpensive());
EXPECT_THAT(run_order,
testing::ElementsAre(std::string("C1"), std::string("L1")));
+ EXPECT_EQ(v8::PERFORMANCE_ANIMATION, RAILMode());
}
TEST_F(RendererSchedulerImplTest, ModeratelyExpensiveTimer_NotBlocked) {
@@ -2630,7 +2655,7 @@ TEST_F(RendererSchedulerImplTest, ModeratelyExpensiveTimer_NotBlocked) {
RunUntilIdle();
EXPECT_TRUE(simulate_timer_task_ran_) << " i = " << i;
- EXPECT_EQ(RendererScheduler::UseCase::MAIN_THREAD_CUSTOM_INPUT_HANDLING,
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::MAIN_THREAD_CUSTOM_INPUT_HANDLING,
CurrentUseCase())
<< " i = " << i;
EXPECT_FALSE(LoadingTasksSeemExpensive()) << " i = " << i;
@@ -2669,7 +2694,8 @@ TEST_F(RendererSchedulerImplTest,
RunUntilIdle();
EXPECT_TRUE(simulate_timer_task_ran_) << " i = " << i;
- EXPECT_EQ(RendererScheduler::UseCase::COMPOSITOR_GESTURE, CurrentUseCase())
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::COMPOSITOR_GESTURE,
+ CurrentUseCase())
<< " i = " << i;
EXPECT_FALSE(LoadingTasksSeemExpensive()) << " i = " << i;
EXPECT_FALSE(TimerTasksSeemExpensive()) << " i = " << i;
@@ -2707,7 +2733,7 @@ TEST_F(RendererSchedulerImplTest,
base::TimeDelta::FromMilliseconds(10)));
RunUntilIdle();
- EXPECT_EQ(RendererScheduler::UseCase::MAIN_THREAD_CUSTOM_INPUT_HANDLING,
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::MAIN_THREAD_CUSTOM_INPUT_HANDLING,
CurrentUseCase())
<< " i = " << i;
EXPECT_FALSE(LoadingTasksSeemExpensive()) << " i = " << i;
@@ -3166,14 +3192,14 @@ TEST_F(RendererSchedulerImplTest, TestCompositorPolicy_TouchStartDuringFling) {
scheduler_->DidAnimateForInputOnCompositorThread();
// Note DidAnimateForInputOnCompositorThread does not by itself trigger a
// policy update.
- EXPECT_EQ(RendererScheduler::UseCase::COMPOSITOR_GESTURE,
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::COMPOSITOR_GESTURE,
ForceUpdatePolicyAndGetCurrentUseCase());
// Make sure TouchStart causes a policy change.
scheduler_->DidHandleInputEventOnCompositorThread(
FakeInputEvent(blink::WebInputEvent::TouchStart),
RendererScheduler::InputEventState::EVENT_FORWARDED_TO_MAIN_THREAD);
- EXPECT_EQ(RendererScheduler::UseCase::TOUCHSTART,
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::TOUCHSTART,
ForceUpdatePolicyAndGetCurrentUseCase());
}
@@ -3299,4 +3325,47 @@ TEST_F(RendererSchedulerImplTest, MAIN_THREAD_GESTURE) {
EXPECT_EQ(279u, run_order.size());
}
+class MockRAILModeObserver : public RendererScheduler::RAILModeObserver {
+ public:
+ MOCK_METHOD1(OnRAILModeChanged, void(v8::RAILMode rail_mode));
+};
+
+TEST_F(RendererSchedulerImplTest, TestResponseRAILMode) {
+ MockRAILModeObserver observer;
+ scheduler_->SetRAILModeObserver(&observer);
+ EXPECT_CALL(observer, OnRAILModeChanged(v8::PERFORMANCE_RESPONSE));
+
+ scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true);
+ ForceTouchStartToBeExpectedSoon();
+ EXPECT_EQ(UseCase::NONE, ForceUpdatePolicyAndGetCurrentUseCase());
+ EXPECT_EQ(v8::PERFORMANCE_RESPONSE, RAILMode());
+ scheduler_->SetRAILModeObserver(nullptr);
+}
+
+TEST_F(RendererSchedulerImplTest, TestAnimateRAILMode) {
+ MockRAILModeObserver observer;
+ scheduler_->SetRAILModeObserver(&observer);
+ EXPECT_CALL(observer, OnRAILModeChanged(v8::PERFORMANCE_ANIMATION)).Times(0);
+
+ EXPECT_FALSE(BeginFrameNotExpectedSoon());
+ EXPECT_EQ(UseCase::NONE, ForceUpdatePolicyAndGetCurrentUseCase());
+ EXPECT_EQ(v8::PERFORMANCE_ANIMATION, RAILMode());
+ scheduler_->SetRAILModeObserver(nullptr);
+}
+
+TEST_F(RendererSchedulerImplTest, TestIdleRAILMode) {
+ MockRAILModeObserver observer;
+ scheduler_->SetRAILModeObserver(&observer);
+ EXPECT_CALL(observer, OnRAILModeChanged(v8::PERFORMANCE_ANIMATION));
+ EXPECT_CALL(observer, OnRAILModeChanged(v8::PERFORMANCE_IDLE));
+
+ scheduler_->SetAllRenderWidgetsHidden(true);
+ EXPECT_EQ(UseCase::NONE, ForceUpdatePolicyAndGetCurrentUseCase());
+ EXPECT_EQ(v8::PERFORMANCE_IDLE, RAILMode());
+ scheduler_->SetAllRenderWidgetsHidden(false);
+ EXPECT_EQ(UseCase::NONE, ForceUpdatePolicyAndGetCurrentUseCase());
+ EXPECT_EQ(v8::PERFORMANCE_ANIMATION, RAILMode());
+ scheduler_->SetRAILModeObserver(nullptr);
+}
+
} // namespace scheduler
« no previous file with comments | « components/scheduler/renderer/renderer_scheduler_impl.cc ('k') | content/content_utility.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698