Index: cc/scheduler/scheduler_unittest.cc |
diff --git a/cc/scheduler/scheduler_unittest.cc b/cc/scheduler/scheduler_unittest.cc |
index 46242e3d6b97bec4b20f3e17a440f26715da0886..7f8d8908c8a74dff95498315592a3773050dcdc7 100644 |
--- a/cc/scheduler/scheduler_unittest.cc |
+++ b/cc/scheduler/scheduler_unittest.cc |
@@ -38,14 +38,21 @@ |
#define EXPECT_SINGLE_ACTION(action, client) \ |
EXPECT_ACTION(action, client, 0, 1) |
+#define EXPECT_SCOPED(statements) \ |
+ { \ |
+ SCOPED_TRACE(""); \ |
+ statements; \ |
+ } |
+ |
+#define CREATE_SCHEDULER_AND_INIT_SURFACE(settings) \ |
+ TestScheduler* scheduler = client.CreateScheduler(settings); \ |
+ EXPECT_SCOPED(client.InitializeOutputSurfaceAndFirstCommit(scheduler)); |
+ |
namespace cc { |
namespace { |
class FakeSchedulerClient; |
-void InitializeOutputSurfaceAndFirstCommit(Scheduler* scheduler, |
- FakeSchedulerClient* client); |
- |
class FakeSchedulerClient : public SchedulerClient { |
public: |
class FakeExternalBeginFrameSource : public BeginFrameSourceMixIn { |
@@ -56,9 +63,9 @@ class FakeSchedulerClient : public SchedulerClient { |
void OnNeedsBeginFramesChange(bool needs_begin_frames) override { |
if (needs_begin_frames) { |
- client_->actions_.push_back("SetNeedsBeginFrames(true)"); |
+ client_->PushAction("SetNeedsBeginFrames(true)"); |
} else { |
- client_->actions_.push_back("SetNeedsBeginFrames(false)"); |
+ client_->PushAction("SetNeedsBeginFrames(false)"); |
} |
client_->states_.push_back(client_->scheduler_->AsValue()); |
} |
@@ -139,8 +146,7 @@ class FakeSchedulerClient : public SchedulerClient { |
log_anticipated_draw_time_change_ = log; |
} |
bool needs_begin_frames() { |
- DCHECK(ExternalBeginFrame()); |
- return fake_external_begin_frame_source_->NeedsBeginFrames(); |
+ return scheduler_->frame_source().NeedsBeginFrames(); |
} |
int num_draws() const { return num_draws_; } |
int num_actions_() const { return static_cast<int>(actions_.size()); } |
@@ -165,21 +171,81 @@ class FakeSchedulerClient : public SchedulerClient { |
return fake_power_monitor_source_; |
} |
+ // As this function contains EXPECT macros, to allow debugging it should be |
+ // called inside EXPECT_SCOPED like so; |
+ // EXPECT_SCOPED(client.InitializeOutputSurfaceAndFirstCommit(scheduler)); |
+ void InitializeOutputSurfaceAndFirstCommit(TestScheduler* scheduler) { |
+ TRACE_EVENT0("cc", |
+ "SchedulerUnitTest::InitializeOutputSurfaceAndFirstCommit"); |
+ DCHECK(scheduler); |
+ |
+ // Check the client doesn't have any actions queued when calling this |
+ // function. |
+ EXPECT_NO_ACTION((*this)); |
+ EXPECT_FALSE(needs_begin_frames()); |
+ |
+ // Start the initial output surface creation. |
+ EXPECT_FALSE(scheduler->CanStart()); |
+ scheduler->SetCanStart(); |
+ scheduler->SetVisible(true); |
+ scheduler->SetCanDraw(true); |
+ EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", (*this)); |
+ Reset(); |
+ |
+ // Finish the initial output surface creation and run the first commit. |
+ scheduler->DidCreateAndInitializeOutputSurface(); |
+ scheduler->SetNeedsCommit(); |
+ scheduler->NotifyBeginMainFrameStarted(); |
+ scheduler->NotifyReadyToCommitThenActivateIfNeeded(); |
+ |
+ { |
+ SCOPED_TRACE("Go through the motions to draw the commit"); |
+ AdvanceFrame(); |
+ |
+ // Run the posted deadline task. |
+ EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
+ task_runner().RunTasksWhile(ImplFrameDeadlinePending(true)); |
+ EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending()); |
+ |
+ EXPECT_FALSE(scheduler->CommitPending()); |
+ } |
+ |
+ Reset(); |
+ |
+ { |
+ SCOPED_TRACE( |
+ "Run second frame so Scheduler calls SetNeedsBeginFrame(false)."); |
+ AdvanceFrame(); |
+ |
+ // Run the posted deadline task. |
+ EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
+ task_runner().RunTasksWhile(ImplFrameDeadlinePending(true)); |
+ EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending()); |
+ } |
+ |
+ EXPECT_FALSE(needs_begin_frames()); |
+ Reset(); |
+ } |
+ |
+ // As this function contains EXPECT macros, to allow debugging it should be |
+ // called inside EXPECT_SCOPED like so; |
+ // EXPECT_SCOPED(client.AdvanceFrame()); |
void AdvanceFrame() { |
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler.frames"), |
"FakeSchedulerClient::AdvanceFrame"); |
- bool previous_deadline_pending = |
- scheduler_->BeginImplFrameDeadlinePending(); |
+ // Consume any previous deadline first, if no deadline is currently |
+ // pending, ImplFrameDeadlinePending will return false straight away and we |
+ // will run no tasks. |
+ task_runner().RunTasksWhile(ImplFrameDeadlinePending(true)); |
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending()); |
+ |
+ // Send the next BeginFrame message if using an external source, otherwise |
+ // it will be already in the task queue. |
if (ExternalBeginFrame()) { |
SendNextBeginFrame(); |
- // This could be the previous deadline or a new one. |
EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); |
} |
- // Consume previous deadline first. It is important that we check for the |
- // existence of a previous deadline so that we do not consume the new one. |
- if (previous_deadline_pending) { |
- EXPECT_TRUE(task_runner().RunTasksWhile(ImplFrameDeadlinePending(true))); |
- } |
+ |
// Then run tasks until new deadline is scheduled. |
EXPECT_TRUE(task_runner().RunTasksWhile(ImplFrameDeadlinePending(false))); |
EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); |
@@ -219,20 +285,16 @@ class FakeSchedulerClient : public SchedulerClient { |
} |
// SchedulerClient implementation. |
void WillBeginImplFrame(const BeginFrameArgs& args) override { |
- actions_.push_back("WillBeginImplFrame"); |
- states_.push_back(scheduler_->AsValue()); |
+ PushAction("WillBeginImplFrame"); |
} |
void ScheduledActionSendBeginMainFrame() override { |
- actions_.push_back("ScheduledActionSendBeginMainFrame"); |
- states_.push_back(scheduler_->AsValue()); |
+ PushAction("ScheduledActionSendBeginMainFrame"); |
} |
void ScheduledActionAnimate() override { |
- actions_.push_back("ScheduledActionAnimate"); |
- states_.push_back(scheduler_->AsValue()); |
+ PushAction("ScheduledActionAnimate"); |
} |
DrawResult ScheduledActionDrawAndSwapIfPossible() override { |
- actions_.push_back("ScheduledActionDrawAndSwapIfPossible"); |
- states_.push_back(scheduler_->AsValue()); |
+ PushAction("ScheduledActionDrawAndSwapIfPossible"); |
num_draws_++; |
DrawResult result = |
draw_will_happen_ ? DRAW_SUCCESS : DRAW_ABORTED_CHECKERBOARD_ANIMATIONS; |
@@ -247,29 +309,22 @@ class FakeSchedulerClient : public SchedulerClient { |
return result; |
} |
DrawResult ScheduledActionDrawAndSwapForced() override { |
- actions_.push_back("ScheduledActionDrawAndSwapForced"); |
- states_.push_back(scheduler_->AsValue()); |
+ PushAction("ScheduledActionDrawAndSwapForced"); |
return DRAW_SUCCESS; |
} |
- void ScheduledActionCommit() override { |
- actions_.push_back("ScheduledActionCommit"); |
- states_.push_back(scheduler_->AsValue()); |
- } |
+ void ScheduledActionCommit() override { PushAction("ScheduledActionCommit"); } |
void ScheduledActionActivateSyncTree() override { |
- actions_.push_back("ScheduledActionActivateSyncTree"); |
- states_.push_back(scheduler_->AsValue()); |
+ PushAction("ScheduledActionActivateSyncTree"); |
} |
void ScheduledActionBeginOutputSurfaceCreation() override { |
- actions_.push_back("ScheduledActionBeginOutputSurfaceCreation"); |
- states_.push_back(scheduler_->AsValue()); |
+ PushAction("ScheduledActionBeginOutputSurfaceCreation"); |
} |
void ScheduledActionPrepareTiles() override { |
- actions_.push_back("ScheduledActionPrepareTiles"); |
- states_.push_back(scheduler_->AsValue()); |
+ PushAction("ScheduledActionPrepareTiles"); |
} |
void DidAnticipatedDrawTimeChange(base::TimeTicks) override { |
if (log_anticipated_draw_time_change_) |
- actions_.push_back("DidAnticipatedDrawTimeChange"); |
+ PushAction("DidAnticipatedDrawTimeChange"); |
} |
base::TimeDelta DrawDurationEstimate() override { return base::TimeDelta(); } |
base::TimeDelta BeginMainFrameToCommitDurationEstimate() override { |
@@ -300,6 +355,11 @@ class FakeSchedulerClient : public SchedulerClient { |
return scheduler_->BeginImplFrameDeadlinePending() == state; |
} |
+ void PushAction(const char* description) { |
+ actions_.push_back(description); |
+ states_.push_back(scheduler_->AsValue()); |
+ } |
+ |
bool draw_will_happen_; |
bool swap_will_happen_if_draw_happens_; |
bool automatic_swap_ack_; |
@@ -317,41 +377,6 @@ class FakeSchedulerClient : public SchedulerClient { |
scoped_ptr<TestScheduler> scheduler_; |
}; |
-void InitializeOutputSurfaceAndFirstCommit(Scheduler* scheduler, |
- FakeSchedulerClient* client) { |
- TRACE_EVENT0("cc", |
- "SchedulerUnitTest::InitializeOutputSurfaceAndFirstCommit"); |
- |
- scheduler->DidCreateAndInitializeOutputSurface(); |
- scheduler->SetNeedsCommit(); |
- scheduler->NotifyBeginMainFrameStarted(); |
- scheduler->NotifyReadyToCommit(); |
- if (scheduler->settings().impl_side_painting) |
- scheduler->NotifyReadyToActivate(); |
- |
- { |
- SCOPED_TRACE("Go through the motions to draw the commit"); |
- client->AdvanceFrame(); |
- } |
- |
- // Run the posted deadline task. |
- EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
- client->task_runner().RunTasksWhile(client->ImplFrameDeadlinePending(true)); |
- EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending()); |
- |
- { |
- SCOPED_TRACE( |
- "We need another BeginImplFrame so Scheduler calls " |
- "SetNeedsBeginFrame(false)."); |
- client->AdvanceFrame(); |
- } |
- |
- // Run the posted deadline task. |
- EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
- client->task_runner().RunTasksWhile(client->ImplFrameDeadlinePending(true)); |
- EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending()); |
-} |
- |
TEST(SchedulerTest, InitializeOutputSurfaceDoesNotBeginImplFrame) { |
FakeSchedulerClient client; |
SchedulerSettings scheduler_settings; |
@@ -372,50 +397,56 @@ TEST(SchedulerTest, SendBeginFramesToChildren) { |
SchedulerSettings scheduler_settings; |
scheduler_settings.use_external_begin_frame_source = true; |
scheduler_settings.forward_begin_frames_to_children = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
- client.Reset(); |
EXPECT_FALSE(client.begin_frame_is_sent_to_children()); |
scheduler->SetNeedsCommit(); |
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client); |
- client.Reset(); |
+ EXPECT_TRUE(client.needs_begin_frames()); |
scheduler->SetChildrenNeedBeginFrames(true); |
- client.AdvanceFrame(); |
+ client.Reset(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_TRUE(client.begin_frame_is_sent_to_children()); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2); |
EXPECT_TRUE(client.needs_begin_frames()); |
+} |
+ |
+TEST(SchedulerTest, SendBeginFramesToChildrenWithoutCommit) { |
+ FakeSchedulerClient client; |
+ SchedulerSettings scheduler_settings; |
+ scheduler_settings.use_external_begin_frame_source = true; |
+ scheduler_settings.forward_begin_frames_to_children = true; |
+ |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
+ |
+ EXPECT_FALSE(client.needs_begin_frames()); |
+ scheduler->SetChildrenNeedBeginFrames(true); |
+ EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client); |
+ EXPECT_TRUE(client.needs_begin_frames()); |
+ |
client.Reset(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
+ EXPECT_TRUE(client.begin_frame_is_sent_to_children()); |
} |
TEST(SchedulerTest, RequestCommit) { |
FakeSchedulerClient client; |
SchedulerSettings scheduler_settings; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
// SetNeedsCommit should begin the frame on the next BeginImplFrame. |
- client.Reset(); |
scheduler->SetNeedsCommit(); |
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client); |
client.Reset(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -437,7 +468,7 @@ TEST(SchedulerTest, RequestCommit) { |
client.Reset(); |
// BeginImplFrame should prepare the draw. |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -453,7 +484,7 @@ TEST(SchedulerTest, RequestCommit) { |
// The following BeginImplFrame deadline should SetNeedsBeginFrame(false) |
// to avoid excessive toggles. |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_SINGLE_ACTION("WillBeginImplFrame", client); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
client.Reset(); |
@@ -467,21 +498,15 @@ TEST(SchedulerTest, RequestCommitAfterBeginMainFrameSent) { |
FakeSchedulerClient client; |
SchedulerSettings scheduler_settings; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
- client.Reset(); |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
// SetNeedsCommit should begin the frame. |
scheduler->SetNeedsCommit(); |
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client); |
client.Reset(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -511,7 +536,7 @@ TEST(SchedulerTest, RequestCommitAfterBeginMainFrameSent) { |
client.Reset(); |
// Since another commit is needed, the next BeginImplFrame should initiate |
// the second commit. |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -533,7 +558,7 @@ TEST(SchedulerTest, RequestCommitAfterBeginMainFrameSent) { |
// On the next BeginImplFrame, verify we go back to a quiescent state and |
// no longer request BeginImplFrames. |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
client.task_runner().RunPendingTasks(); // Run posted deadline. |
EXPECT_FALSE(client.needs_begin_frames()); |
client.Reset(); |
@@ -541,11 +566,18 @@ TEST(SchedulerTest, RequestCommitAfterBeginMainFrameSent) { |
class SchedulerClientThatsetNeedsDrawInsideDraw : public FakeSchedulerClient { |
public: |
+ SchedulerClientThatsetNeedsDrawInsideDraw() |
+ : FakeSchedulerClient(), request_redraws_(false) {} |
+ |
void ScheduledActionSendBeginMainFrame() override {} |
+ |
+ void SetRequestRedrawsInsideDraw(bool enable) { request_redraws_ = enable; } |
+ |
DrawResult ScheduledActionDrawAndSwapIfPossible() override { |
// Only SetNeedsRedraw the first time this is called |
- if (!num_draws_) |
+ if (request_redraws_) { |
scheduler_->SetNeedsRedraw(); |
+ } |
return FakeSchedulerClient::ScheduledActionDrawAndSwapIfPossible(); |
} |
@@ -555,8 +587,10 @@ class SchedulerClientThatsetNeedsDrawInsideDraw : public FakeSchedulerClient { |
} |
void ScheduledActionCommit() override {} |
- void ScheduledActionBeginOutputSurfaceCreation() override {} |
void DidAnticipatedDrawTimeChange(base::TimeTicks) override {} |
+ |
+ private: |
+ bool request_redraws_; |
}; |
// Tests for two different situations: |
@@ -567,25 +601,24 @@ TEST(SchedulerTest, RequestRedrawInsideDraw) { |
SchedulerClientThatsetNeedsDrawInsideDraw client; |
SchedulerSettings scheduler_settings; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
- client.Reset(); |
+ |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
+ client.SetRequestRedrawsInsideDraw(true); |
scheduler->SetNeedsRedraw(); |
EXPECT_TRUE(scheduler->RedrawPending()); |
EXPECT_TRUE(client.needs_begin_frames()); |
EXPECT_EQ(0, client.num_draws()); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
client.task_runner().RunPendingTasks(); // Run posted deadline. |
EXPECT_EQ(1, client.num_draws()); |
EXPECT_TRUE(scheduler->RedrawPending()); |
EXPECT_TRUE(client.needs_begin_frames()); |
- client.AdvanceFrame(); |
+ client.SetRequestRedrawsInsideDraw(false); |
+ |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
client.task_runner().RunPendingTasks(); // Run posted deadline. |
EXPECT_EQ(2, client.num_draws()); |
EXPECT_FALSE(scheduler->RedrawPending()); |
@@ -593,7 +626,7 @@ TEST(SchedulerTest, RequestRedrawInsideDraw) { |
// We stop requesting BeginImplFrames after a BeginImplFrame where we don't |
// swap. |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
client.task_runner().RunPendingTasks(); // Run posted deadline. |
EXPECT_EQ(2, client.num_draws()); |
EXPECT_FALSE(scheduler->RedrawPending()); |
@@ -605,13 +638,9 @@ TEST(SchedulerTest, RequestRedrawInsideFailedDraw) { |
SchedulerClientThatsetNeedsDrawInsideDraw client; |
SchedulerSettings scheduler_settings; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
- client.Reset(); |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
+ client.SetRequestRedrawsInsideDraw(true); |
client.SetDrawWillHappen(false); |
scheduler->SetNeedsRedraw(); |
@@ -620,7 +649,7 @@ TEST(SchedulerTest, RequestRedrawInsideFailedDraw) { |
EXPECT_EQ(0, client.num_draws()); |
// Fail the draw. |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
client.task_runner().RunPendingTasks(); // Run posted deadline. |
EXPECT_EQ(1, client.num_draws()); |
@@ -630,8 +659,10 @@ TEST(SchedulerTest, RequestRedrawInsideFailedDraw) { |
EXPECT_TRUE(scheduler->RedrawPending()); |
EXPECT_TRUE(client.needs_begin_frames()); |
+ client.SetRequestRedrawsInsideDraw(false); |
+ |
// Fail the draw again. |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
client.task_runner().RunPendingTasks(); // Run posted deadline. |
EXPECT_EQ(2, client.num_draws()); |
EXPECT_TRUE(scheduler->CommitPending()); |
@@ -640,7 +671,7 @@ TEST(SchedulerTest, RequestRedrawInsideFailedDraw) { |
// Draw successfully. |
client.SetDrawWillHappen(true); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
client.task_runner().RunPendingTasks(); // Run posted deadline. |
EXPECT_EQ(3, client.num_draws()); |
EXPECT_TRUE(scheduler->CommitPending()); |
@@ -669,7 +700,6 @@ class SchedulerClientThatSetNeedsCommitInsideDraw : public FakeSchedulerClient { |
} |
void ScheduledActionCommit() override {} |
- void ScheduledActionBeginOutputSurfaceCreation() override {} |
void DidAnticipatedDrawTimeChange(base::TimeTicks) override {} |
void SetNeedsCommitOnNextDraw() { set_needs_commit_on_next_draw_ = true; } |
@@ -684,12 +714,8 @@ TEST(SchedulerTest, RequestCommitInsideDraw) { |
SchedulerClientThatSetNeedsCommitInsideDraw client; |
SchedulerSettings scheduler_settings; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
- client.Reset(); |
+ |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
EXPECT_FALSE(client.needs_begin_frames()); |
scheduler->SetNeedsRedraw(); |
@@ -698,7 +724,7 @@ TEST(SchedulerTest, RequestCommitInsideDraw) { |
EXPECT_TRUE(client.needs_begin_frames()); |
client.SetNeedsCommitOnNextDraw(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
client.SetNeedsCommitOnNextDraw(); |
client.task_runner().RunPendingTasks(); // Run posted deadline. |
EXPECT_EQ(1, client.num_draws()); |
@@ -707,7 +733,7 @@ TEST(SchedulerTest, RequestCommitInsideDraw) { |
scheduler->NotifyBeginMainFrameStarted(); |
scheduler->NotifyReadyToCommit(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
client.task_runner().RunPendingTasks(); // Run posted deadline. |
EXPECT_EQ(2, client.num_draws()); |
@@ -717,7 +743,7 @@ TEST(SchedulerTest, RequestCommitInsideDraw) { |
// We stop requesting BeginImplFrames after a BeginImplFrame where we don't |
// swap. |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
client.task_runner().RunPendingTasks(); // Run posted deadline. |
EXPECT_EQ(2, client.num_draws()); |
EXPECT_FALSE(scheduler->RedrawPending()); |
@@ -730,12 +756,8 @@ TEST(SchedulerTest, RequestCommitInsideFailedDraw) { |
SchedulerClientThatsetNeedsDrawInsideDraw client; |
SchedulerSettings scheduler_settings; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
- client.Reset(); |
+ |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
client.SetDrawWillHappen(false); |
@@ -745,7 +767,7 @@ TEST(SchedulerTest, RequestCommitInsideFailedDraw) { |
EXPECT_EQ(0, client.num_draws()); |
// Fail the draw. |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
client.task_runner().RunPendingTasks(); // Run posted deadline. |
EXPECT_EQ(1, client.num_draws()); |
@@ -756,7 +778,7 @@ TEST(SchedulerTest, RequestCommitInsideFailedDraw) { |
EXPECT_TRUE(client.needs_begin_frames()); |
// Fail the draw again. |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
client.task_runner().RunPendingTasks(); // Run posted deadline. |
EXPECT_EQ(2, client.num_draws()); |
@@ -766,7 +788,7 @@ TEST(SchedulerTest, RequestCommitInsideFailedDraw) { |
// Draw successfully. |
client.SetDrawWillHappen(true); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
client.task_runner().RunPendingTasks(); // Run posted deadline. |
EXPECT_EQ(3, client.num_draws()); |
EXPECT_TRUE(scheduler->CommitPending()); |
@@ -778,12 +800,8 @@ TEST(SchedulerTest, NoSwapWhenDrawFails) { |
SchedulerClientThatSetNeedsCommitInsideDraw client; |
SchedulerSettings scheduler_settings; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
- client.Reset(); |
+ |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
scheduler->SetNeedsRedraw(); |
EXPECT_TRUE(scheduler->RedrawPending()); |
@@ -792,7 +810,7 @@ TEST(SchedulerTest, NoSwapWhenDrawFails) { |
// Draw successfully, this starts a new frame. |
client.SetNeedsCommitOnNextDraw(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
client.task_runner().RunPendingTasks(); // Run posted deadline. |
EXPECT_EQ(1, client.num_draws()); |
@@ -803,7 +821,7 @@ TEST(SchedulerTest, NoSwapWhenDrawFails) { |
// Fail to draw, this should not start a frame. |
client.SetDrawWillHappen(false); |
client.SetNeedsCommitOnNextDraw(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
client.task_runner().RunPendingTasks(); // Run posted deadline. |
EXPECT_EQ(2, client.num_draws()); |
} |
@@ -821,11 +839,8 @@ TEST(SchedulerTest, PrepareTiles) { |
SchedulerClientNeedsPrepareTilesInDraw client; |
SchedulerSettings scheduler_settings; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
+ |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
// Request both draw and prepare tiles. PrepareTiles shouldn't |
// be trigged until BeginImplFrame. |
@@ -842,7 +857,7 @@ TEST(SchedulerTest, PrepareTiles) { |
// We have no immediate actions to perform, so the BeginImplFrame should post |
// the deadline task. |
client.Reset(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -870,7 +885,7 @@ TEST(SchedulerTest, PrepareTiles) { |
// We have no immediate actions to perform, so the BeginImplFrame should post |
// the deadline task. |
client.Reset(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -891,7 +906,7 @@ TEST(SchedulerTest, PrepareTiles) { |
// We need a BeginImplFrame where we don't swap to go idle. |
client.Reset(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_SINGLE_ACTION("WillBeginImplFrame", client); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
client.Reset(); |
@@ -911,7 +926,7 @@ TEST(SchedulerTest, PrepareTiles) { |
// BeginImplFrame. There will be no draw, only PrepareTiles. |
client.Reset(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_SINGLE_ACTION("WillBeginImplFrame", client); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
client.Reset(); |
@@ -928,18 +943,15 @@ TEST(SchedulerTest, PrepareTilesOncePerFrame) { |
FakeSchedulerClient client; |
SchedulerSettings scheduler_settings; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
+ |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
// If DidPrepareTiles during a frame, then PrepareTiles should not occur |
// again. |
scheduler->SetNeedsPrepareTiles(); |
scheduler->SetNeedsRedraw(); |
client.Reset(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -961,7 +973,7 @@ TEST(SchedulerTest, PrepareTilesOncePerFrame) { |
scheduler->SetNeedsPrepareTiles(); |
scheduler->SetNeedsRedraw(); |
client.Reset(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -984,7 +996,7 @@ TEST(SchedulerTest, PrepareTilesOncePerFrame) { |
scheduler->SetNeedsPrepareTiles(); |
scheduler->SetNeedsRedraw(); |
client.Reset(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -1008,7 +1020,7 @@ TEST(SchedulerTest, PrepareTilesOncePerFrame) { |
scheduler->SetNeedsPrepareTiles(); |
scheduler->SetNeedsRedraw(); |
client.Reset(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -1027,7 +1039,7 @@ TEST(SchedulerTest, PrepareTilesOncePerFrame) { |
scheduler->SetNeedsPrepareTiles(); |
scheduler->SetNeedsRedraw(); |
client.Reset(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -1049,15 +1061,11 @@ TEST(SchedulerTest, TriggerBeginFrameDeadlineEarly) { |
SchedulerClientNeedsPrepareTilesInDraw client; |
SchedulerSettings scheduler_settings; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
- client.Reset(); |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
+ |
scheduler->SetNeedsRedraw(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
// The deadline should be zero since there is no work other than drawing |
// pending. |
@@ -1101,18 +1109,15 @@ void MainFrameInHighLatencyMode(int64 begin_main_frame_to_commit_estimate_in_ms, |
base::TimeDelta::FromMilliseconds(commit_to_activate_estimate_in_ms)); |
SchedulerSettings scheduler_settings; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
+ |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
+ |
scheduler->SetImplLatencyTakesPriority(impl_latency_takes_priority); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
// Impl thread hits deadline before commit finishes. |
- client.Reset(); |
scheduler->SetNeedsCommit(); |
EXPECT_FALSE(scheduler->MainThreadIsInHighLatencyMode()); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_FALSE(scheduler->MainThreadIsInHighLatencyMode()); |
client.task_runner().RunPendingTasks(); // Run posted deadline. |
EXPECT_TRUE(scheduler->MainThreadIsInHighLatencyMode()); |
@@ -1124,7 +1129,7 @@ void MainFrameInHighLatencyMode(int64 begin_main_frame_to_commit_estimate_in_ms, |
client.Reset(); |
scheduler->SetNeedsCommit(); |
EXPECT_TRUE(scheduler->MainThreadIsInHighLatencyMode()); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_TRUE(scheduler->MainThreadIsInHighLatencyMode()); |
client.task_runner().RunPendingTasks(); // Run posted deadline. |
EXPECT_EQ(scheduler->MainThreadIsInHighLatencyMode(), |
@@ -1166,33 +1171,16 @@ TEST(SchedulerTest, PollForCommitCompletion) { |
base::TimeDelta::FromMilliseconds(1), |
base::TimeDelta::FromMilliseconds(32), |
base::TimeDelta::FromMilliseconds(32)); |
- client.set_log_anticipated_draw_time_change(true); |
SchedulerSettings scheduler_settings; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanDraw(true); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->DidCreateAndInitializeOutputSurface(); |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
- scheduler->SetNeedsCommit(); |
- EXPECT_TRUE(scheduler->CommitPending()); |
- scheduler->NotifyBeginMainFrameStarted(); |
- scheduler->NotifyReadyToCommit(); |
- scheduler->SetNeedsRedraw(); |
+ client.set_log_anticipated_draw_time_change(true); |
BeginFrameArgs frame_args = |
CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, client.now_src()); |
frame_args.interval = base::TimeDelta::FromMilliseconds(1000); |
- client.fake_external_begin_frame_source()->TestOnBeginFrame(frame_args); |
- |
- EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
- client.task_runner().RunPendingTasks(); // Run posted deadline. |
- EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending()); |
- |
- scheduler->DidSwapBuffers(); |
- scheduler->DidSwapBuffersComplete(); |
// At this point, we've drawn a frame. Start another commit, but hold off on |
// the NotifyReadyToCommit for now. |
@@ -1242,14 +1230,10 @@ TEST(SchedulerTest, BeginRetroFrame) { |
FakeSchedulerClient client; |
SchedulerSettings scheduler_settings; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
+ |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
// SetNeedsCommit should begin the frame on the next BeginImplFrame. |
- client.Reset(); |
scheduler->SetNeedsCommit(); |
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client); |
client.Reset(); |
@@ -1317,12 +1301,9 @@ TEST(SchedulerTest, BeginRetroFrame_SwapThrottled) { |
FakeSchedulerClient client; |
SchedulerSettings scheduler_settings; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
+ |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
scheduler->SetEstimatedParentDrawTime(base::TimeDelta::FromMicroseconds(1)); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
// To test swap ack throttling, this test disables automatic swap acks. |
scheduler->SetMaxSwapsPending(1); |
@@ -1334,7 +1315,7 @@ TEST(SchedulerTest, BeginRetroFrame_SwapThrottled) { |
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client); |
client.Reset(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -1402,19 +1383,15 @@ TEST(SchedulerTest, RetroFrameDoesNotExpireTooEarly) { |
FakeSchedulerClient client; |
SchedulerSettings scheduler_settings; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
- client.Reset(); |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
+ |
scheduler->SetNeedsCommit(); |
EXPECT_TRUE(client.needs_begin_frames()); |
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client); |
client.Reset(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -1470,19 +1447,15 @@ TEST(SchedulerTest, RetroFrameDoesNotExpireTooLate) { |
FakeSchedulerClient client; |
SchedulerSettings scheduler_settings; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
- client.Reset(); |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
+ |
scheduler->SetNeedsCommit(); |
EXPECT_TRUE(client.needs_begin_frames()); |
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client); |
client.Reset(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -1530,17 +1503,13 @@ void BeginFramesNotFromClient(bool use_external_begin_frame_source, |
scheduler_settings.use_external_begin_frame_source = |
use_external_begin_frame_source; |
scheduler_settings.throttle_frame_production = throttle_frame_production; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
+ |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
DCHECK(!client.fake_external_begin_frame_source()); |
// SetNeedsCommit should begin the frame on the next BeginImplFrame |
// without calling SetNeedsBeginFrame. |
- client.Reset(); |
scheduler->SetNeedsCommit(); |
EXPECT_NO_ACTION(client); |
client.Reset(); |
@@ -1621,12 +1590,9 @@ void BeginFramesNotFromClient_SwapThrottled( |
scheduler_settings.use_external_begin_frame_source = |
use_external_begin_frame_source; |
scheduler_settings.throttle_frame_production = throttle_frame_production; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
+ |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
scheduler->SetEstimatedParentDrawTime(base::TimeDelta::FromMicroseconds(1)); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
DCHECK(!client.fake_external_begin_frame_source()); |
@@ -1641,7 +1607,7 @@ void BeginFramesNotFromClient_SwapThrottled( |
client.Reset(); |
// Trigger the first BeginImplFrame and BeginMainFrame |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -1665,7 +1631,7 @@ void BeginFramesNotFromClient_SwapThrottled( |
// but not a BeginMainFrame or draw. |
scheduler->SetNeedsCommit(); |
scheduler->SetNeedsRedraw(); |
- client.AdvanceFrame(); // Run posted BeginFrame. |
+ EXPECT_SCOPED(client.AdvanceFrame()); // Run posted BeginFrame. |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -1739,20 +1705,15 @@ TEST(SchedulerTest, DidLoseOutputSurfaceAfterBeginFrameStarted) { |
FakeSchedulerClient client; |
SchedulerSettings scheduler_settings; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
+ |
// SetNeedsCommit should begin the frame. |
- client.Reset(); |
scheduler->SetNeedsCommit(); |
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client); |
client.Reset(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -1778,21 +1739,15 @@ void DidLoseOutputSurfaceAfterBeginFrameStartedWithHighLatency( |
SchedulerSettings scheduler_settings; |
scheduler_settings.impl_side_painting = impl_side_painting; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
// SetNeedsCommit should begin the frame. |
- client.Reset(); |
scheduler->SetNeedsCommit(); |
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client); |
client.Reset(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -1846,21 +1801,15 @@ void DidLoseOutputSurfaceAfterReadyToCommit(bool impl_side_painting) { |
SchedulerSettings scheduler_settings; |
scheduler_settings.impl_side_painting = impl_side_painting; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
// SetNeedsCommit should begin the frame. |
- client.Reset(); |
scheduler->SetNeedsCommit(); |
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client); |
client.Reset(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -1897,19 +1846,15 @@ TEST(SchedulerTest, DidLoseOutputSurfaceAfterSetNeedsPrepareTiles) { |
FakeSchedulerClient client; |
SchedulerSettings scheduler_settings; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
- client.Reset(); |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
+ |
scheduler->SetNeedsPrepareTiles(); |
scheduler->SetNeedsRedraw(); |
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client); |
client.Reset(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -1928,14 +1873,10 @@ TEST(SchedulerTest, DidLoseOutputSurfaceAfterBeginRetroFramePosted) { |
FakeSchedulerClient client; |
SchedulerSettings scheduler_settings; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
+ |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
// SetNeedsCommit should begin the frame on the next BeginImplFrame. |
- client.Reset(); |
scheduler->SetNeedsCommit(); |
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client); |
@@ -1988,14 +1929,10 @@ TEST(SchedulerTest, DidLoseOutputSurfaceDuringBeginRetroFrameRunning) { |
FakeSchedulerClient client; |
SchedulerSettings scheduler_settings; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
+ |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
// SetNeedsCommit should begin the frame on the next BeginImplFrame. |
- client.Reset(); |
scheduler->SetNeedsCommit(); |
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client); |
@@ -2062,14 +1999,10 @@ TEST(SchedulerTest, |
StopBeginFrameAfterDidLoseOutputSurfaceWithSyntheticBeginFrameSource) { |
FakeSchedulerClient client; |
SchedulerSettings scheduler_settings; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
+ |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
// SetNeedsCommit should begin the frame on the next BeginImplFrame. |
- client.Reset(); |
EXPECT_FALSE(scheduler->frame_source().NeedsBeginFrames()); |
scheduler->SetNeedsCommit(); |
EXPECT_TRUE(scheduler->frame_source().NeedsBeginFrames()); |
@@ -2104,21 +2037,15 @@ TEST(SchedulerTest, ScheduledActionActivateAfterBecomingInvisible) { |
SchedulerSettings scheduler_settings; |
scheduler_settings.impl_side_painting = true; |
scheduler_settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
// SetNeedsCommit should begin the frame. |
- client.Reset(); |
scheduler->SetNeedsCommit(); |
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client); |
client.Reset(); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -2139,15 +2066,10 @@ TEST(SchedulerTest, SchedulerPowerMonitoring) { |
FakeSchedulerClient client; |
SchedulerSettings settings; |
settings.disable_hi_res_timer_tasks_on_battery = true; |
- TestScheduler* scheduler = client.CreateScheduler(settings); |
- |
- base::TimeTicks before_deadline, after_deadline; |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(settings); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
+ base::TimeTicks before_deadline, after_deadline; |
scheduler->SetNeedsCommit(); |
scheduler->SetNeedsRedraw(); |
@@ -2156,7 +2078,7 @@ TEST(SchedulerTest, SchedulerPowerMonitoring) { |
// On non-battery power |
EXPECT_FALSE(client.PowerMonitor()->IsOnBatteryPower()); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
client.Reset(); |
before_deadline = client.now_src()->Now(); |
@@ -2171,7 +2093,7 @@ TEST(SchedulerTest, SchedulerPowerMonitoring) { |
client.PowerMonitorSource()->GeneratePowerStateEvent(true); |
EXPECT_TRUE(client.PowerMonitor()->IsOnBatteryPower()); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
scheduler->SetNeedsCommit(); |
scheduler->SetNeedsRedraw(); |
client.Reset(); |
@@ -2188,7 +2110,7 @@ TEST(SchedulerTest, SchedulerPowerMonitoring) { |
client.PowerMonitorSource()->GeneratePowerStateEvent(false); |
EXPECT_FALSE(client.PowerMonitor()->IsOnBatteryPower()); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
scheduler->SetNeedsCommit(); |
scheduler->SetNeedsRedraw(); |
client.Reset(); |
@@ -2205,13 +2127,8 @@ TEST(SchedulerTest, |
FakeSchedulerClient client; |
SchedulerSettings settings; |
settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(settings); |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(settings); |
// Set needs commit so that the scheduler tries to wait for the main thread |
scheduler->SetNeedsCommit(); |
@@ -2223,7 +2140,7 @@ TEST(SchedulerTest, |
client.PowerMonitorSource()->GeneratePowerStateEvent(true); |
EXPECT_TRUE(client.PowerMonitor()->IsOnBatteryPower()); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
scheduler->SetNeedsCommit(); |
scheduler->SetNeedsRedraw(); |
client.Reset(); |
@@ -2251,13 +2168,8 @@ TEST(SchedulerTest, |
SchedulerSettings settings; |
settings.disable_hi_res_timer_tasks_on_battery = true; |
settings.use_external_begin_frame_source = true; |
- TestScheduler* scheduler = client.CreateScheduler(settings); |
- |
- scheduler->SetCanStart(); |
- scheduler->SetVisible(true); |
- scheduler->SetCanDraw(true); |
- InitializeOutputSurfaceAndFirstCommit(scheduler, &client); |
+ CREATE_SCHEDULER_AND_INIT_SURFACE(settings); |
// Set needs commit so that the scheduler tries to wait for the main thread |
scheduler->SetNeedsCommit(); |
@@ -2269,7 +2181,7 @@ TEST(SchedulerTest, |
client.PowerMonitorSource()->GeneratePowerStateEvent(true); |
EXPECT_TRUE(client.PowerMonitor()->IsOnBatteryPower()); |
- client.AdvanceFrame(); |
+ EXPECT_SCOPED(client.AdvanceFrame()); |
scheduler->SetNeedsCommit(); |
scheduler->SetNeedsRedraw(); |
client.Reset(); |