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

Unified Diff: cc/scheduler/scheduler_unittest.cc

Issue 1133673004: cc: Heuristic for Renderer latency recovery (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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: cc/scheduler/scheduler_unittest.cc
diff --git a/cc/scheduler/scheduler_unittest.cc b/cc/scheduler/scheduler_unittest.cc
index d17f0ba87c4aa4e583c18564563fab1142b55e2f..388d425616cd5edce65a37ca91c5c616c2bf34b3 100644
--- a/cc/scheduler/scheduler_unittest.cc
+++ b/cc/scheduler/scheduler_unittest.cc
@@ -148,12 +148,17 @@ class FakeSchedulerClient : public SchedulerClient {
if (log_anticipated_draw_time_change_)
PushAction("DidAnticipatedDrawTimeChange");
}
- base::TimeDelta DrawDurationEstimate() override { return base::TimeDelta(); }
+
+ // Use really long estimations by default so we don't inadvertently
+ // test latency recovery logic unless a test explicitly wants to.
+ base::TimeDelta DrawDurationEstimate() override {
+ return base::TimeDelta::FromHours(1);
+ }
base::TimeDelta BeginMainFrameToCommitDurationEstimate() override {
- return base::TimeDelta();
+ return base::TimeDelta::FromHours(1);
}
base::TimeDelta CommitToActivateDurationEstimate() override {
- return base::TimeDelta();
+ return base::TimeDelta::FromHours(1);
}
void DidBeginImplFrameDeadline() override {}
@@ -187,7 +192,7 @@ class FakeSchedulerClient : public SchedulerClient {
protected:
bool ImplFrameDeadlinePendingCallback(bool state) {
- return scheduler_->BeginImplFrameDeadlinePending() == state;
+ return scheduler_->BeginImplFrameDeadlinePendingForTest() == state;
}
bool draw_will_happen_;
@@ -328,7 +333,7 @@ class SchedulerTest : public testing::Test {
scheduler_->DidCreateAndInitializeOutputSurface();
scheduler_->SetNeedsCommit();
EXPECT_TRUE(client_->needs_begin_frames());
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
{
@@ -345,11 +350,11 @@ class SchedulerTest : public testing::Test {
scheduler_->OnDrawForOutputSurface();
} else {
// Run the posted deadline task.
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
task_runner_->RunTasksWhile(client_->ImplFrameDeadlinePending(true));
}
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
}
client_->Reset();
@@ -361,11 +366,11 @@ class SchedulerTest : public testing::Test {
if (!scheduler_settings_.using_synchronous_renderer_compositor) {
// Run the posted deadline task.
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
task_runner_->RunTasksWhile(client_->ImplFrameDeadlinePending(true));
}
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
}
EXPECT_FALSE(client_->needs_begin_frames());
@@ -382,7 +387,7 @@ class SchedulerTest : public testing::Test {
// pending, ImplFrameDeadlinePending will return false straight away and we
// will run no tasks.
task_runner_->RunTasksWhile(client_->ImplFrameDeadlinePending(true));
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
// Send the next BeginFrame message if using an external source, otherwise
// it will be already in the task queue.
@@ -396,7 +401,7 @@ class SchedulerTest : public testing::Test {
// Then run tasks until new deadline is scheduled.
EXPECT_TRUE(task_runner_->RunTasksWhile(
client_->ImplFrameDeadlinePending(false)));
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
}
}
@@ -418,6 +423,11 @@ class SchedulerTest : public testing::Test {
int64 commit_to_activate_estimate_in_ms,
bool impl_latency_takes_priority,
bool should_send_begin_main_frame);
+ void ImplFrameInHighLatencyMode(
+ int64 begin_main_frame_to_commit_estimate_in_ms,
+ int64 commit_to_activate_estimate_in_ms,
+ bool swap_ack_before_deadline,
+ bool should_begin_impl_frame_in_high_latency);
void BeginFramesNotFromClient(bool use_external_begin_frame_source,
bool throttle_frame_production);
void BeginFramesNotFromClient_SwapThrottled(
@@ -462,7 +472,7 @@ TEST_F(SchedulerTest, SendBeginFramesToChildren) {
client_->Reset();
EXPECT_SCOPED(AdvanceFrame());
EXPECT_TRUE(client_->begin_frame_is_sent_to_children());
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
EXPECT_TRUE(client_->needs_begin_frames());
@@ -518,13 +528,13 @@ TEST_F(SchedulerTest, VideoNeedsBeginFrames) {
client_->Reset();
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
// WillBeginImplFrame is responsible for sending BeginFrames to video.
EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_);
client_->Reset();
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_);
client_->Reset();
@@ -533,7 +543,7 @@ TEST_F(SchedulerTest, VideoNeedsBeginFrames) {
client_->Reset();
task_runner_->RunTasksWhile(client_->ImplFrameDeadlinePending(true));
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_ACTION("SetNeedsBeginFrames(false)", client_, 0, 2);
EXPECT_ACTION("SendBeginMainFrameNotExpectedSoon", client_, 1, 2);
EXPECT_FALSE(client_->needs_begin_frames());
@@ -551,14 +561,14 @@ TEST_F(SchedulerTest, RequestCommit) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
client_->Reset();
// If we don't swap on the deadline, we wait for the next BeginFrame.
task_runner().RunPendingTasks(); // Run posted deadline.
EXPECT_NO_ACTION(client_);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
client_->Reset();
@@ -573,14 +583,14 @@ TEST_F(SchedulerTest, RequestCommit) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
client_->Reset();
// BeginImplFrame deadline should draw.
task_runner().RunPendingTasks(); // Run posted deadline.
EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 0, 1);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
client_->Reset();
@@ -588,7 +598,7 @@ TEST_F(SchedulerTest, RequestCommit) {
// to avoid excessive toggles.
EXPECT_SCOPED(AdvanceFrame());
EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
task_runner().RunPendingTasks(); // Run posted deadline.
@@ -621,7 +631,7 @@ TEST_F(SchedulerTest, RequestCommitAfterSetDeferCommit) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
}
TEST_F(SchedulerTest, DeferCommitWithRedraw) {
@@ -648,7 +658,7 @@ TEST_F(SchedulerTest, DeferCommitWithRedraw) {
client_->Reset();
task_runner().RunPendingTasks(); // Run posted deadline.
EXPECT_SINGLE_ACTION("ScheduledActionDrawAndSwapIfPossible", client_);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
client_->Reset();
@@ -668,7 +678,7 @@ TEST_F(SchedulerTest, RequestCommitAfterBeginMainFrameSent) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
client_->Reset();
@@ -682,12 +692,12 @@ TEST_F(SchedulerTest, RequestCommitAfterBeginMainFrameSent) {
scheduler_->NotifyBeginMainFrameStarted();
scheduler_->NotifyReadyToCommit();
EXPECT_SINGLE_ACTION("ScheduledActionCommit", client_);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
task_runner().RunPendingTasks(); // Run posted deadline.
EXPECT_ACTION("ScheduledActionAnimate", client_, 0, 2);
EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 1, 2);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
// Because we just swapped, the Scheduler should also request the next
// BeginImplFrame from the OutputSurface.
@@ -698,7 +708,7 @@ TEST_F(SchedulerTest, RequestCommitAfterBeginMainFrameSent) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
// Finishing the commit before the deadline should post a new deadline task
@@ -706,12 +716,12 @@ TEST_F(SchedulerTest, RequestCommitAfterBeginMainFrameSent) {
scheduler_->NotifyBeginMainFrameStarted();
scheduler_->NotifyReadyToCommit();
EXPECT_SINGLE_ACTION("ScheduledActionCommit", client_);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
task_runner().RunPendingTasks(); // Run posted deadline.
EXPECT_ACTION("ScheduledActionAnimate", client_, 0, 2);
EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 1, 2);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
client_->Reset();
@@ -1015,7 +1025,7 @@ TEST_F(SchedulerTest, PrepareTiles) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
// On the deadline, he actions should have occured in the right order.
client->Reset();
@@ -1027,7 +1037,7 @@ TEST_F(SchedulerTest, PrepareTiles) {
client->ActionIndex("ScheduledActionPrepareTiles"));
EXPECT_FALSE(scheduler_->RedrawPending());
EXPECT_FALSE(scheduler_->PrepareTilesPending());
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
// Request a draw. We don't need a PrepareTiles yet.
client->Reset();
@@ -1043,7 +1053,7 @@ TEST_F(SchedulerTest, PrepareTiles) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
// Draw. The draw will trigger SetNeedsPrepareTiles, and
// then the PrepareTiles action will be triggered after the Draw.
@@ -1057,18 +1067,18 @@ TEST_F(SchedulerTest, PrepareTiles) {
client->ActionIndex("ScheduledActionPrepareTiles"));
EXPECT_FALSE(scheduler_->RedrawPending());
EXPECT_FALSE(scheduler_->PrepareTilesPending());
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
// We need a BeginImplFrame where we don't swap to go idle.
client->Reset();
EXPECT_SCOPED(AdvanceFrame());
EXPECT_SINGLE_ACTION("WillBeginImplFrame", client);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client->Reset();
task_runner().RunPendingTasks(); // Run posted deadline.
EXPECT_ACTION("SetNeedsBeginFrames(false)", client_, 0, 2);
EXPECT_ACTION("SendBeginMainFrameNotExpectedSoon", client_, 1, 2);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_EQ(0, client->num_draws());
// Now trigger a PrepareTiles outside of a draw. We will then need
@@ -1084,13 +1094,13 @@ TEST_F(SchedulerTest, PrepareTiles) {
client->Reset();
EXPECT_SCOPED(AdvanceFrame());
EXPECT_SINGLE_ACTION("WillBeginImplFrame", client);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client->Reset();
task_runner().RunPendingTasks(); // Run posted deadline.
EXPECT_EQ(0, client->num_draws());
EXPECT_FALSE(client->HasAction("ScheduledActionDrawAndSwapIfPossible"));
EXPECT_TRUE(client->HasAction("ScheduledActionPrepareTiles"));
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
}
// Test that PrepareTiles only happens once per frame. If an external caller
@@ -1107,7 +1117,7 @@ TEST_F(SchedulerTest, PrepareTilesOncePerFrame) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(scheduler_->PrepareTilesPending());
scheduler_->DidPrepareTiles(); // An explicit PrepareTiles.
@@ -1120,7 +1130,7 @@ TEST_F(SchedulerTest, PrepareTilesOncePerFrame) {
EXPECT_FALSE(client_->HasAction("ScheduledActionPrepareTiles"));
EXPECT_FALSE(scheduler_->RedrawPending());
EXPECT_FALSE(scheduler_->PrepareTilesPending());
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
// Next frame without DidPrepareTiles should PrepareTiles with draw.
scheduler_->SetNeedsPrepareTiles();
@@ -1129,7 +1139,7 @@ TEST_F(SchedulerTest, PrepareTilesOncePerFrame) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
task_runner().RunPendingTasks(); // Run posted deadline.
@@ -1140,7 +1150,7 @@ TEST_F(SchedulerTest, PrepareTilesOncePerFrame) {
client_->ActionIndex("ScheduledActionPrepareTiles"));
EXPECT_FALSE(scheduler_->RedrawPending());
EXPECT_FALSE(scheduler_->PrepareTilesPending());
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
scheduler_->DidPrepareTiles(); // Corresponds to ScheduledActionPrepareTiles
// If we get another DidPrepareTiles within the same frame, we should
@@ -1152,7 +1162,7 @@ TEST_F(SchedulerTest, PrepareTilesOncePerFrame) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(scheduler_->PrepareTilesPending());
@@ -1162,7 +1172,7 @@ TEST_F(SchedulerTest, PrepareTilesOncePerFrame) {
EXPECT_TRUE(client_->HasAction("ScheduledActionDrawAndSwapIfPossible"));
EXPECT_FALSE(client_->HasAction("ScheduledActionPrepareTiles"));
EXPECT_FALSE(scheduler_->RedrawPending());
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
// If we get another DidPrepareTiles, we should not PrepareTiles on the next
// frame. This verifies we don't alternate calling PrepareTiles once and
@@ -1176,7 +1186,7 @@ TEST_F(SchedulerTest, PrepareTilesOncePerFrame) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(scheduler_->PrepareTilesPending());
@@ -1186,7 +1196,7 @@ TEST_F(SchedulerTest, PrepareTilesOncePerFrame) {
EXPECT_TRUE(client_->HasAction("ScheduledActionDrawAndSwapIfPossible"));
EXPECT_FALSE(client_->HasAction("ScheduledActionPrepareTiles"));
EXPECT_FALSE(scheduler_->RedrawPending());
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
// Next frame without DidPrepareTiles should PrepareTiles with draw.
scheduler_->SetNeedsPrepareTiles();
@@ -1195,7 +1205,7 @@ TEST_F(SchedulerTest, PrepareTilesOncePerFrame) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
task_runner().RunPendingTasks(); // Run posted deadline.
@@ -1206,7 +1216,7 @@ TEST_F(SchedulerTest, PrepareTilesOncePerFrame) {
client_->ActionIndex("ScheduledActionPrepareTiles"));
EXPECT_FALSE(scheduler_->RedrawPending());
EXPECT_FALSE(scheduler_->PrepareTilesPending());
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
scheduler_->DidPrepareTiles(); // Corresponds to ScheduledActionPrepareTiles
}
@@ -1303,7 +1313,7 @@ TEST_F(SchedulerTest, WaitForReadyToDrawCancelledWhenLostOutputSurface) {
// Scheduler loses output surface, and stops waiting for ready to draw signal.
client_->Reset();
scheduler_->DidLoseOutputSurface();
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
task_runner().RunPendingTasks(); // Run posted deadline.
EXPECT_ACTION("ScheduledActionBeginOutputSurfaceCreation", client_, 0, 3);
EXPECT_ACTION("SetNeedsBeginFrames(false)", client_, 1, 3);
@@ -1334,6 +1344,7 @@ void SchedulerTest::MainFrameInHighLatencyMode(
EXPECT_SCOPED(AdvanceFrame());
EXPECT_FALSE(scheduler_->MainThreadIsInHighLatencyMode());
task_runner().RunPendingTasks(); // Run posted deadline.
+ scheduler_->DidSwapBuffersComplete();
brianderson 2015/05/08 16:52:50 Needed to add these calls to DidSwapBuffersComplet
EXPECT_TRUE(scheduler_->MainThreadIsInHighLatencyMode());
scheduler_->NotifyBeginMainFrameStarted();
scheduler_->NotifyReadyToCommit();
@@ -1346,6 +1357,7 @@ void SchedulerTest::MainFrameInHighLatencyMode(
EXPECT_SCOPED(AdvanceFrame());
EXPECT_TRUE(scheduler_->MainThreadIsInHighLatencyMode());
task_runner().RunPendingTasks(); // Run posted deadline.
+ scheduler_->DidSwapBuffersComplete();
EXPECT_EQ(scheduler_->MainThreadIsInHighLatencyMode(),
should_send_begin_main_frame);
EXPECT_EQ(client->HasAction("ScheduledActionSendBeginMainFrame"),
@@ -1378,6 +1390,83 @@ TEST_F(SchedulerTest, NotSkipMainFrameInPreferImplLatencyMode) {
EXPECT_SCOPED(MainFrameInHighLatencyMode(1, 1, true, true));
}
+void SchedulerTest::ImplFrameInHighLatencyMode(
brianderson 2015/05/08 16:52:50 Hmm. I need to make a version of this test that te
+ int64 begin_main_frame_to_commit_estimate_in_ms,
+ int64 commit_to_activate_estimate_in_ms,
+ bool swap_ack_before_deadline,
+ bool should_begin_impl_frame_in_high_latency) {
+ // Set up client with specified estimates (draw duration is set to 1).
+ SchedulerClientWithFixedEstimates* client =
+ new SchedulerClientWithFixedEstimates(
+ base::TimeDelta::FromMilliseconds(0),
+ base::TimeDelta::FromMilliseconds(
+ begin_main_frame_to_commit_estimate_in_ms),
+ base::TimeDelta::FromMilliseconds(commit_to_activate_estimate_in_ms));
+
+ scheduler_settings_.use_external_begin_frame_source = true;
+ SetUpScheduler(make_scoped_ptr(client).Pass(), true);
+ EXPECT_FALSE(scheduler_->ImplThreadIsLikelyInHighLatencyMode());
+
+ // To get into a high latency state, this test disables automatic swap acks.
+ scheduler_->SetMaxSwapsPending(1);
+ client_->SetAutomaticSwapAck(false);
+
+ // Draw and swap for first BeginFrame
+ client->Reset();
+ scheduler_->SetNeedsRedraw();
+ EXPECT_FALSE(scheduler_->MainThreadIsInHighLatencyMode());
+ EXPECT_FALSE(scheduler_->ImplThreadIsLikelyInHighLatencyMode());
+ EXPECT_SCOPED(AdvanceFrame());
+ EXPECT_FALSE(scheduler_->MainThreadIsInHighLatencyMode());
+ EXPECT_FALSE(scheduler_->ImplThreadIsLikelyInHighLatencyMode());
+ task_runner().RunPendingTasks(); // Run posted deadline.
+ EXPECT_TRUE(client->HasAction("ScheduledActionDrawAndSwapIfPossible"));
+
+ // Not calling scheduler_->DidSwapBuffersComplete() until after next frame
+ // puts impl thread in high latency mode.
+ client->Reset();
+ scheduler_->SetNeedsRedraw();
+ EXPECT_FALSE(scheduler_->MainThreadIsInHighLatencyMode());
+ EXPECT_FALSE(scheduler_->ImplThreadIsLikelyInHighLatencyMode());
+ EXPECT_SCOPED(AdvanceFrame());
+ EXPECT_FALSE(scheduler_->MainThreadIsInHighLatencyMode());
+ EXPECT_FALSE(scheduler_->ImplThreadIsLikelyInHighLatencyMode());
+ if (swap_ack_before_deadline) {
+ scheduler_->DidSwapBuffersComplete();
+ EXPECT_FALSE(scheduler_->MainThreadIsInHighLatencyMode());
+ EXPECT_TRUE(scheduler_->ImplThreadIsLikelyInHighLatencyMode());
+ }
+ task_runner().RunPendingTasks(); // Run posted deadline.
+ EXPECT_TRUE(scheduler_->ImplThreadIsLikelyInHighLatencyMode());
+
+ // Now that we are in a high latency mode, test if we recover or not.
+ client->Reset();
+ scheduler_->SetNeedsRedraw();
+ EXPECT_FALSE(scheduler_->MainThreadIsInHighLatencyMode());
+ EXPECT_TRUE(scheduler_->ImplThreadIsLikelyInHighLatencyMode());
+ SendNextBeginFrame();
+ EXPECT_EQ(should_begin_impl_frame_in_high_latency,
+ client->HasAction("WillBeginImplFrame"));
+}
+
+TEST_F(SchedulerTest, SkipImplFrameIfHighLatencyAndCanDrawBeforeDeadline) {
+ // Set up client so that estimates indicate that we can commit and activate
+ // before the deadline (~8ms by default).
+ EXPECT_SCOPED(ImplFrameInHighLatencyMode(1, 1, true, false));
+}
+
+TEST_F(SchedulerTest, NotSkipImplFrameIfHighLatencyAndCanCommitTooLong) {
+ // Set up client so that estimates indicate that the commit cannot finish
+ // before the deadline (~8ms by default).
+ EXPECT_SCOPED(ImplFrameInHighLatencyMode(10, 1, true, true));
+}
+
+TEST_F(SchedulerTest, NotSkipImplFrameIfHighLatencyAndCanActivateTooLong) {
+ // Set up client so that estimates indicate that the activate cannot finish
+ // before the deadline (~8ms by default).
+ EXPECT_SCOPED(ImplFrameInHighLatencyMode(1, 10, false, true));
+}
+
TEST_F(SchedulerTest, PollForCommitCompletion) {
// Since we are simulating a long commit, set up a client with draw duration
// estimates that prevent skipping main frames to get to low latency mode.
@@ -1404,9 +1493,9 @@ TEST_F(SchedulerTest, PollForCommitCompletion) {
// Draw and swap the frame, but don't ack the swap to simulate the Browser
// blocking on the renderer.
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
task_runner().RunPendingTasks(); // Run posted deadline.
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
scheduler_->DidSwapBuffers();
// Spin the event loop a few times and make sure we get more
@@ -1456,7 +1545,7 @@ TEST_F(SchedulerTest, BeginRetroFrame) {
fake_external_begin_frame_source()->TestOnBeginFrame(args);
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
client_->Reset();
@@ -1469,7 +1558,7 @@ TEST_F(SchedulerTest, BeginRetroFrame) {
// If we don't swap on the deadline, we wait for the next BeginImplFrame.
task_runner().RunPendingTasks(); // Run posted deadline.
EXPECT_NO_ACTION(client_);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
client_->Reset();
@@ -1484,14 +1573,14 @@ TEST_F(SchedulerTest, BeginRetroFrame) {
task_runner().RunPendingTasks(); // Run posted BeginRetroFrame.
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
client_->Reset();
// BeginImplFrame deadline should draw.
task_runner().RunPendingTasks(); // Run posted deadline.
EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 0, 1);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
client_->Reset();
@@ -1499,7 +1588,7 @@ TEST_F(SchedulerTest, BeginRetroFrame) {
// to avoid excessive toggles.
task_runner().RunPendingTasks(); // Run posted BeginRetroFrame.
EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
task_runner().RunPendingTasks(); // Run posted deadline.
@@ -1527,14 +1616,14 @@ TEST_F(SchedulerTest, BeginRetroFrame_SwapThrottled) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
client_->Reset();
// Queue BeginFrame while we are still handling the previous BeginFrame.
SendNextBeginFrame();
EXPECT_NO_ACTION(client_);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
client_->Reset();
@@ -1550,7 +1639,7 @@ TEST_F(SchedulerTest, BeginRetroFrame_SwapThrottled) {
task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true));
EXPECT_ACTION("ScheduledActionAnimate", client_, 0, 2);
EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 1, 2);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
client_->Reset();
@@ -1562,7 +1651,7 @@ TEST_F(SchedulerTest, BeginRetroFrame_SwapThrottled) {
task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(false));
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
client_->Reset();
@@ -1571,19 +1660,19 @@ TEST_F(SchedulerTest, BeginRetroFrame_SwapThrottled) {
now_src()->AdvanceNow(BeginFrameArgs::DefaultInterval() -
base::TimeDelta::FromMicroseconds(1));
task_runner().RunUntilTime(now_src()->Now());
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
// Take us out of a swap throttled state.
scheduler_->DidSwapBuffersComplete();
EXPECT_SINGLE_ACTION("ScheduledActionSendBeginMainFrame", client_);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
client_->Reset();
// Verify that the deadline was rescheduled.
task_runner().RunUntilTime(now_src()->Now());
EXPECT_SINGLE_ACTION("ScheduledActionDrawAndSwapIfPossible", client_);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
client_->Reset();
}
@@ -1600,7 +1689,7 @@ TEST_F(SchedulerTest, RetroFrameDoesNotExpireTooEarly) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
scheduler_->NotifyBeginMainFrameStarted();
@@ -1610,7 +1699,7 @@ TEST_F(SchedulerTest, RetroFrameDoesNotExpireTooEarly) {
// This BeginFrame is queued up as a retro frame.
EXPECT_NO_ACTION(client_);
// The previous deadline is still pending.
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
// This commit should schedule the (previous) deadline to trigger immediately.
@@ -1619,7 +1708,7 @@ TEST_F(SchedulerTest, RetroFrameDoesNotExpireTooEarly) {
client_->Reset();
// The deadline task should trigger causing a draw.
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true));
EXPECT_ACTION("ScheduledActionAnimate", client_, 0, 2);
EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 1, 2);
@@ -1639,12 +1728,12 @@ TEST_F(SchedulerTest, RetroFrameDoesNotExpireTooEarly) {
task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(false));
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
// This is an immediate deadline case.
client_->Reset();
task_runner().RunPendingTasks();
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_SINGLE_ACTION("ScheduledActionDrawAndSwapIfPossible", client_);
}
@@ -1660,7 +1749,7 @@ TEST_F(SchedulerTest, RetroFrameDoesNotExpireTooLate) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
scheduler_->NotifyBeginMainFrameStarted();
@@ -1670,7 +1759,7 @@ TEST_F(SchedulerTest, RetroFrameDoesNotExpireTooLate) {
// This BeginFrame is queued up as a retro frame.
EXPECT_NO_ACTION(client_);
// The previous deadline is still pending.
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
// This commit should schedule the (previous) deadline to trigger immediately.
@@ -1679,7 +1768,7 @@ TEST_F(SchedulerTest, RetroFrameDoesNotExpireTooLate) {
client_->Reset();
// The deadline task should trigger causing a draw.
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true));
EXPECT_ACTION("ScheduledActionAnimate", client_, 0, 2);
EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 1, 2);
@@ -1717,13 +1806,13 @@ void SchedulerTest::BeginFramesNotFromClient(
task_runner().RunPendingTasks(); // Run posted BeginFrame.
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
// If we don't swap on the deadline, we wait for the next BeginFrame.
task_runner().RunPendingTasks(); // Run posted deadline.
EXPECT_NO_ACTION(client_);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
// NotifyReadyToCommit should trigger the commit.
@@ -1736,20 +1825,20 @@ void SchedulerTest::BeginFramesNotFromClient(
task_runner().RunPendingTasks(); // Run posted BeginFrame.
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
// BeginImplFrame deadline should draw.
task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true));
EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 0, 1);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
// The following BeginImplFrame deadline should SetNeedsBeginFrame(false)
// to avoid excessive toggles.
task_runner().RunPendingTasks(); // Run posted BeginFrame.
EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
// Make sure SetNeedsBeginFrame isn't called on the client
@@ -1804,7 +1893,7 @@ void SchedulerTest::BeginFramesNotFromClient_SwapThrottled(
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
// NotifyReadyToCommit should trigger the pending commit and draw.
@@ -1818,7 +1907,7 @@ void SchedulerTest::BeginFramesNotFromClient_SwapThrottled(
task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true));
EXPECT_ACTION("ScheduledActionAnimate", client_, 0, 2);
EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 1, 2);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
// While swap throttled, BeginFrames should trigger BeginImplFrames,
@@ -1828,7 +1917,7 @@ void SchedulerTest::BeginFramesNotFromClient_SwapThrottled(
EXPECT_SCOPED(AdvanceFrame()); // Run posted BeginFrame.
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
// Let time pass sufficiently beyond the regular deadline but not beyond the
@@ -1836,12 +1925,12 @@ void SchedulerTest::BeginFramesNotFromClient_SwapThrottled(
now_src()->AdvanceNow(BeginFrameArgs::DefaultInterval() -
base::TimeDelta::FromMicroseconds(1));
task_runner().RunUntilTime(now_src()->Now());
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
// Take us out of a swap throttled state.
scheduler_->DidSwapBuffersComplete();
EXPECT_SINGLE_ACTION("ScheduledActionSendBeginMainFrame", client_);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
// Verify that the deadline was rescheduled.
@@ -1851,7 +1940,7 @@ void SchedulerTest::BeginFramesNotFromClient_SwapThrottled(
task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true));
base::TimeTicks after_deadline = now_src()->Now();
EXPECT_EQ(after_deadline, before_deadline);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
}
@@ -1906,7 +1995,7 @@ TEST_F(SchedulerTest, DidLoseOutputSurfaceAfterBeginFrameStarted) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
scheduler_->DidLoseOutputSurface();
@@ -1939,7 +2028,7 @@ void SchedulerTest::DidLoseOutputSurfaceAfterBeginFrameStartedWithHighLatency(
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
scheduler_->DidLoseOutputSurface();
@@ -1948,20 +2037,20 @@ void SchedulerTest::DidLoseOutputSurfaceAfterBeginFrameStartedWithHighLatency(
client_->Reset();
// Run posted deadline.
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true));
// OnBeginImplFrameDeadline didn't schedule output surface creation because
// main frame is not yet completed.
EXPECT_ACTION("SetNeedsBeginFrames(false)", client_, 0, 2);
EXPECT_ACTION("SendBeginMainFrameNotExpectedSoon", client_, 1, 2);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
// BeginImplFrame is not started.
client_->Reset();
task_runner().RunUntilTime(now_src()->Now() +
base::TimeDelta::FromMilliseconds(10));
EXPECT_NO_ACTION(client_);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
scheduler_->NotifyBeginMainFrameStarted();
@@ -2002,7 +2091,7 @@ void SchedulerTest::DidLoseOutputSurfaceAfterReadyToCommit(
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
scheduler_->NotifyBeginMainFrameStarted();
@@ -2046,7 +2135,7 @@ TEST_F(SchedulerTest, DidLoseOutputSurfaceAfterSetNeedsPrepareTiles) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
scheduler_->DidLoseOutputSurface();
@@ -2078,7 +2167,7 @@ TEST_F(SchedulerTest, DidLoseOutputSurfaceAfterBeginRetroFramePosted) {
fake_external_begin_frame_source()->TestOnBeginFrame(args);
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
// Queue BeginFrames while we are still handling the previous BeginFrame.
@@ -2091,7 +2180,7 @@ TEST_F(SchedulerTest, DidLoseOutputSurfaceAfterBeginRetroFramePosted) {
client_->Reset();
task_runner().RunPendingTasks(); // Run posted deadline.
EXPECT_NO_ACTION(client_);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
// NotifyReadyToCommit should trigger the commit.
@@ -2132,7 +2221,7 @@ TEST_F(SchedulerTest, DidLoseOutputSurfaceDuringBeginRetroFrameRunning) {
fake_external_begin_frame_source()->TestOnBeginFrame(args);
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
// Queue BeginFrames while we are still handling the previous BeginFrame.
@@ -2145,7 +2234,7 @@ TEST_F(SchedulerTest, DidLoseOutputSurfaceDuringBeginRetroFrameRunning) {
client_->Reset();
task_runner().RunPendingTasks(); // Run posted deadline.
EXPECT_NO_ACTION(client_);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
// NotifyReadyToCommit should trigger the commit.
@@ -2160,7 +2249,7 @@ TEST_F(SchedulerTest, DidLoseOutputSurfaceDuringBeginRetroFrameRunning) {
task_runner().RunPendingTasks(); // Run posted BeginRetroFrame.
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
client_->Reset();
@@ -2175,7 +2264,7 @@ TEST_F(SchedulerTest, DidLoseOutputSurfaceDuringBeginRetroFrameRunning) {
EXPECT_ACTION("ScheduledActionBeginOutputSurfaceCreation", client_, 0, 3);
EXPECT_ACTION("SetNeedsBeginFrames(false)", client_, 1, 3);
EXPECT_ACTION("SendBeginMainFrameNotExpectedSoon", client_, 2, 3);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_FALSE(client_->needs_begin_frames());
// No more BeginRetroFrame because BeginRetroFrame queue is cleared.
@@ -2196,7 +2285,7 @@ TEST_F(SchedulerTest, DidLoseOutputSurfaceWithSyntheticBeginFrameSource) {
AdvanceFrame();
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(scheduler_->frame_source().NeedsBeginFrames());
// NotifyReadyToCommit should trigger the commit.
@@ -2231,7 +2320,7 @@ TEST_F(SchedulerTest, DidLoseOutputSurfaceWhenIdle) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
scheduler_->NotifyBeginMainFrameStarted();
@@ -2264,13 +2353,13 @@ TEST_F(SchedulerTest, ScheduledActionActivateAfterBecomingInvisible) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
scheduler_->NotifyBeginMainFrameStarted();
scheduler_->NotifyReadyToCommit();
EXPECT_SINGLE_ACTION("ScheduledActionCommit", client_);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
scheduler_->SetVisible(false);
@@ -2295,7 +2384,7 @@ TEST_F(SchedulerTest, SwitchFrameSourceToUnthrottled) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
client_->Reset();
task_runner().RunPendingTasks(); // Run posted deadline.
@@ -2310,13 +2399,13 @@ TEST_F(SchedulerTest, SwitchFrameSourceToUnthrottled) {
task_runner().RunPendingTasks(); // Run posted BeginFrame.
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
// If we don't swap on the deadline, we wait for the next BeginFrame.
task_runner().RunPendingTasks(); // Run posted deadline.
EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 0, 1);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
}
@@ -2339,7 +2428,7 @@ TEST_F(SchedulerTest, SwitchFrameSourceToUnthrottledBeforeDeadline) {
scheduler_->SetThrottleFrameProduction(false);
client_->Reset();
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
client_->Reset();
@@ -2353,7 +2442,7 @@ TEST_F(SchedulerTest, SwitchFrameSourceToUnthrottledBeforeDeadline) {
task_runner().RunPendingTasks(); // Run posted deadline.
EXPECT_ACTION("ScheduledActionAnimate", client_, 0, 2);
EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 1, 2);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
}
@@ -2371,12 +2460,12 @@ TEST_F(SchedulerTest, SwitchFrameSourceToThrottled) {
task_runner().RunPendingTasks(); // Run posted BeginFrame.
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
task_runner().RunPendingTasks(); // Run posted deadline.
EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 0, 1);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
// Switch to a throttled frame source.
@@ -2392,7 +2481,7 @@ TEST_F(SchedulerTest, SwitchFrameSourceToThrottled) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
EXPECT_TRUE(client_->needs_begin_frames());
client_->Reset();
task_runner().RunPendingTasks(); // Run posted deadline.
@@ -2425,7 +2514,7 @@ TEST_F(SchedulerTest, SendBeginMainFrameNotExpectedSoon) {
// and send a SendBeginMainFrameNotExpectedSoon.
EXPECT_SCOPED(AdvanceFrame());
EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_);
- EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
task_runner().RunPendingTasks(); // Run posted deadline.
@@ -2449,7 +2538,7 @@ TEST_F(SchedulerTest, SynchronousCompositorAnimation) {
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 3);
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 3);
EXPECT_ACTION("ScheduledActionInvalidateOutputSurface", client_, 2, 3);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
// Continue with animation.
@@ -2460,7 +2549,7 @@ TEST_F(SchedulerTest, SynchronousCompositorAnimation) {
scheduler_->SetNeedsRedraw();
scheduler_->OnDrawForOutputSurface();
EXPECT_SINGLE_ACTION("ScheduledActionDrawAndSwapIfPossible", client_);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
// Next vsync.
@@ -2468,14 +2557,14 @@ TEST_F(SchedulerTest, SynchronousCompositorAnimation) {
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 3);
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 3);
EXPECT_ACTION("ScheduledActionInvalidateOutputSurface", client_, 2, 3);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
// Android onDraw.
scheduler_->SetNeedsRedraw();
scheduler_->OnDrawForOutputSurface();
EXPECT_SINGLE_ACTION("ScheduledActionDrawAndSwapIfPossible", client_);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
// Idle on next vsync.
@@ -2483,7 +2572,7 @@ TEST_F(SchedulerTest, SynchronousCompositorAnimation) {
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 3);
EXPECT_ACTION("SetNeedsBeginFrames(false)", client_, 1, 3);
EXPECT_ACTION("SendBeginMainFrameNotExpectedSoon", client_, 2, 3);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
}
@@ -2498,7 +2587,7 @@ TEST_F(SchedulerTest, SynchronousCompositorOnDrawDuringIdle) {
EXPECT_ACTION("SetNeedsBeginFrames(true)", client_, 0, 3);
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 3);
EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 2, 3);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
// Idle on next vsync.
@@ -2506,7 +2595,7 @@ TEST_F(SchedulerTest, SynchronousCompositorOnDrawDuringIdle) {
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 3);
EXPECT_ACTION("SetNeedsBeginFrames(false)", client_, 1, 3);
EXPECT_ACTION("SendBeginMainFrameNotExpectedSoon", client_, 2, 3);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
}
@@ -2524,7 +2613,7 @@ TEST_F(SchedulerTest, SynchronousCompositorCommit) {
AdvanceFrame();
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
scheduler_->NotifyBeginMainFrameStarted();
@@ -2533,7 +2622,7 @@ TEST_F(SchedulerTest, SynchronousCompositorCommit) {
// Next vsync.
AdvanceFrame();
EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
scheduler_->NotifyReadyToCommit();
@@ -2549,14 +2638,14 @@ TEST_F(SchedulerTest, SynchronousCompositorCommit) {
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 3);
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 3);
EXPECT_ACTION("ScheduledActionInvalidateOutputSurface", client_, 2, 3);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
// Android onDraw.
scheduler_->SetNeedsRedraw();
scheduler_->OnDrawForOutputSurface();
EXPECT_SINGLE_ACTION("ScheduledActionDrawAndSwapIfPossible", client_);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
// Idle on next vsync.
@@ -2564,7 +2653,7 @@ TEST_F(SchedulerTest, SynchronousCompositorCommit) {
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 3);
EXPECT_ACTION("SetNeedsBeginFrames(false)", client_, 1, 3);
EXPECT_ACTION("SendBeginMainFrameNotExpectedSoon", client_, 2, 3);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
}
@@ -2582,7 +2671,7 @@ TEST_F(SchedulerTest, SynchronousCompositorDoubleCommitWithoutDraw) {
AdvanceFrame();
EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
scheduler_->NotifyBeginMainFrameStarted();
@@ -2604,7 +2693,7 @@ TEST_F(SchedulerTest, SynchronousCompositorDoubleCommitWithoutDraw) {
EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 4);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 2, 4);
EXPECT_ACTION("ScheduledActionInvalidateOutputSurface", client_, 3, 4);
- EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePendingForTest());
client_->Reset();
scheduler_->NotifyBeginMainFrameStarted();

Powered by Google App Engine
This is Rietveld 408576698