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

Unified Diff: cc/scheduler/scheduler_unittest.cc

Issue 2753843003: Create a new action triggered when a BeginMainFrame is not expected before vsync (Closed)
Patch Set: missed one Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/scheduler/scheduler_unittest.cc
diff --git a/cc/scheduler/scheduler_unittest.cc b/cc/scheduler/scheduler_unittest.cc
index dad49921d50a03b10c3c7204e83df3791decf619..7c5cf84d30a34d5f69a5e834eae7e9e846c8fabc 100644
--- a/cc/scheduler/scheduler_unittest.cc
+++ b/cc/scheduler/scheduler_unittest.cc
@@ -179,6 +179,10 @@ class FakeSchedulerClient : public SchedulerClient,
PushAction("SendBeginMainFrameNotExpectedSoon");
}
+ void ScheduledActionDoShortIdleWork(const BeginFrameArgs& args) override {
+ PushAction("ScheduledActionDoShortIdleWork");
+ }
+
bool IsInsideBeginImplFrame() const { return inside_begin_impl_frame_; }
base::Callback<bool(void)> InsideBeginImplFrame(bool state) {
@@ -481,12 +485,14 @@ TEST_F(SchedulerTest, VideoNeedsBeginFrames) {
EXPECT_SCOPED(AdvanceFrame());
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
// WillBeginImplFrame is responsible for sending BeginFrames to video.
- EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
client_->Reset();
EXPECT_SCOPED(AdvanceFrame());
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
- EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
client_->Reset();
scheduler_->SetVideoNeedsBeginFrames(false);
@@ -537,7 +543,8 @@ TEST_F(SchedulerTest, RequestCommit) {
// BeginImplFrame should prepare the draw.
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
EXPECT_TRUE(scheduler_->begin_frames_expected());
client_->Reset();
@@ -552,7 +559,8 @@ TEST_F(SchedulerTest, RequestCommit) {
// The following BeginImplFrame deadline should SetNeedsBeginFrame(false)
// to avoid excessive toggles.
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
client_->Reset();
@@ -972,7 +980,8 @@ TEST_F(SchedulerTest, PrepareTiles) {
// the deadline task.
client->Reset();
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_ACTION("WillBeginImplFrame", client, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
// On the deadline, the actions should have occured in the right order.
@@ -999,7 +1008,8 @@ TEST_F(SchedulerTest, PrepareTiles) {
// the deadline task.
client->Reset();
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_ACTION("WillBeginImplFrame", client, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
// Draw. The draw will trigger SetNeedsPrepareTiles, and
@@ -1019,7 +1029,8 @@ TEST_F(SchedulerTest, PrepareTiles) {
// We need a BeginImplFrame where we don't swap to go idle.
client->Reset();
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_SINGLE_ACTION("WillBeginImplFrame", client);
+ EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
client->Reset();
task_runner().RunPendingTasks(); // Run posted deadline.
@@ -1040,7 +1051,8 @@ TEST_F(SchedulerTest, PrepareTiles) {
// BeginImplFrame. There will be no draw, only PrepareTiles.
client->Reset();
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_SINGLE_ACTION("WillBeginImplFrame", client);
+ EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
client->Reset();
task_runner().RunPendingTasks(); // Run posted deadline.
@@ -1061,7 +1073,8 @@ TEST_F(SchedulerTest, PrepareTilesOncePerFrame) {
scheduler_->SetNeedsRedraw();
client_->Reset();
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
EXPECT_TRUE(scheduler_->PrepareTilesPending());
@@ -1083,7 +1096,8 @@ TEST_F(SchedulerTest, PrepareTilesOncePerFrame) {
scheduler_->SetNeedsRedraw();
client_->Reset();
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
client_->Reset();
@@ -1105,7 +1119,8 @@ TEST_F(SchedulerTest, PrepareTilesOncePerFrame) {
scheduler_->SetNeedsRedraw();
client_->Reset();
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
EXPECT_TRUE(scheduler_->PrepareTilesPending());
@@ -1129,7 +1144,8 @@ TEST_F(SchedulerTest, PrepareTilesOncePerFrame) {
scheduler_->SetNeedsRedraw();
client_->Reset();
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
EXPECT_TRUE(scheduler_->PrepareTilesPending());
@@ -1147,7 +1163,8 @@ TEST_F(SchedulerTest, PrepareTilesOncePerFrame) {
scheduler_->SetNeedsRedraw();
client_->Reset();
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
client_->Reset();
@@ -1184,7 +1201,8 @@ TEST_F(SchedulerTest, PrepareTilesFunnelResetOnVisibilityChange) {
client_->Reset();
AdvanceFrame();
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
client_->Reset();
@@ -1671,8 +1689,9 @@ TEST_F(SchedulerTest,
scheduler_->SetNeedsRedraw();
EXPECT_FALSE(scheduler_->MainThreadMissedLastDeadline());
SendNextBeginFrame();
- EXPECT_ACTION("AddObserver(this)", client_, 0, 2);
- EXPECT_ACTION("WillBeginImplFrame", client_, 1, 2);
+ EXPECT_ACTION("AddObserver(this)", client_, 0, 3);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 1, 3);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 2, 3);
client_->Reset();
EXPECT_FALSE(scheduler_->MainThreadMissedLastDeadline());
@@ -1704,7 +1723,8 @@ TEST_F(SchedulerTest,
client_->Reset();
EXPECT_FALSE(scheduler_->MainThreadMissedLastDeadline());
SendNextBeginFrame();
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
client_->Reset();
// Deadline should be immediate.
@@ -2082,7 +2102,8 @@ void SchedulerTest::BeginFramesNotFromClient(BeginFrameSourceType bfs_type) {
// NotifyReadyToCommit should trigger the commit.
scheduler_->NotifyBeginMainFrameStarted(base::TimeTicks());
scheduler_->NotifyReadyToCommit();
- EXPECT_SINGLE_ACTION("ScheduledActionCommit", client_);
+ EXPECT_ACTION("ScheduledActionCommit", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
client_->Reset();
// NotifyReadyToActivate should trigger the activation.
@@ -2093,8 +2114,9 @@ void SchedulerTest::BeginFramesNotFromClient(BeginFrameSourceType bfs_type) {
// BeginImplFrame deadline should draw. The following BeginImplFrame deadline
// should SetNeedsBeginFrame(false) to avoid excessive toggles.
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_ACTION("ScheduledActionDrawIfPossible", client_, 0, 2);
- EXPECT_ACTION("WillBeginImplFrame", client_, 1, 2);
+ EXPECT_ACTION("ScheduledActionDrawIfPossible", client_, 0, 3);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 1, 3);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 2, 3);
client_->Reset();
// Make sure SetNeedsBeginFrame isn't called on the client
@@ -2345,7 +2367,8 @@ TEST_F(SchedulerTest, DidLoseCompositorFrameSinkAfterSetNeedsPrepareTiles) {
client_->Reset();
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
client_->Reset();
@@ -2506,7 +2529,8 @@ TEST_F(SchedulerTest, SwitchFrameSourceToUnthrottled) {
client_->Reset();
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
EXPECT_TRUE(scheduler_->begin_frames_expected());
client_->Reset();
@@ -2520,7 +2544,8 @@ TEST_F(SchedulerTest, SwitchFrameSourceToUnthrottled) {
// Unthrottled frame source will immediately begin a new frame.
task_runner().RunPendingTasks(); // Run posted BeginFrame.
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
client_->Reset();
@@ -2542,7 +2567,8 @@ TEST_F(SchedulerTest, SwitchFrameSourceToUnthrottledBeforeDeadline) {
client_->Reset();
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
// Switch to an unthrottled frame source before the frame deadline is hit.
scheduler_->SetBeginFrameSource(unthrottled_frame_source_.get());
@@ -2553,9 +2579,10 @@ TEST_F(SchedulerTest, SwitchFrameSourceToUnthrottledBeforeDeadline) {
client_->Reset();
task_runner().RunPendingTasks(); // Run posted deadline.
- EXPECT_ACTION("ScheduledActionDrawIfPossible", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDrawIfPossible", client_, 0, 3);
// Unthrottled frame source will immediately begin a new frame.
- EXPECT_ACTION("WillBeginImplFrame", client_, 1, 2);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 1, 3);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 2, 3);
scheduler_->SetNeedsRedraw();
client_->Reset();
@@ -2575,7 +2602,8 @@ TEST_F(SchedulerTest, SwitchFrameSourceToThrottled) {
client_->Reset();
task_runner().RunPendingTasks(); // Run posted BeginFrame.
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
client_->Reset();
@@ -2595,7 +2623,8 @@ TEST_F(SchedulerTest, SwitchFrameSourceToThrottled) {
client_->Reset();
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
EXPECT_TRUE(scheduler_->begin_frames_expected());
client_->Reset();
@@ -2611,7 +2640,8 @@ TEST_F(SchedulerTest, SwitchFrameSourceToNullInsideDeadline) {
client_->Reset();
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
client_->Reset();
// Switch to a null frame source.
@@ -2733,7 +2763,8 @@ TEST_F(SchedulerTest, SendBeginMainFrameNotExpectedSoon) {
// The following BeginImplFrame deadline should SetNeedsBeginFrame(false)
// and send a SendBeginMainFrameNotExpectedSoon.
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
client_->Reset();
@@ -2758,8 +2789,9 @@ TEST_F(SchedulerTest, SynchronousCompositorAnimation) {
// Next vsync.
AdvanceFrame();
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
- EXPECT_ACTION("ScheduledActionInvalidateCompositorFrameSink", client_, 1, 2);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 3);
+ EXPECT_ACTION("ScheduledActionInvalidateCompositorFrameSink", client_, 2, 3);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 3);
EXPECT_FALSE(client_->IsInsideBeginImplFrame());
client_->Reset();
@@ -2777,8 +2809,9 @@ TEST_F(SchedulerTest, SynchronousCompositorAnimation) {
// Next vsync.
AdvanceFrame();
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
- EXPECT_ACTION("ScheduledActionInvalidateCompositorFrameSink", client_, 1, 2);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 3);
+ EXPECT_ACTION("ScheduledActionInvalidateCompositorFrameSink", client_, 1, 3);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 2, 3);
EXPECT_FALSE(client_->IsInsideBeginImplFrame());
client_->Reset();
@@ -2791,9 +2824,10 @@ TEST_F(SchedulerTest, SynchronousCompositorAnimation) {
// Idle on next vsync, as the animation has completed.
AdvanceFrame();
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 3);
- EXPECT_ACTION("RemoveObserver(this)", client_, 1, 3);
- EXPECT_ACTION("SendBeginMainFrameNotExpectedSoon", client_, 2, 3);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 4);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 4);
+ EXPECT_ACTION("RemoveObserver(this)", client_, 2, 4);
+ EXPECT_ACTION("SendBeginMainFrameNotExpectedSoon", client_, 3, 4);
EXPECT_FALSE(client_->IsInsideBeginImplFrame());
client_->Reset();
}
@@ -2812,9 +2846,10 @@ TEST_F(SchedulerTest, SynchronousCompositorOnDrawDuringIdle) {
// Idle on next vsync.
AdvanceFrame();
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 3);
- EXPECT_ACTION("RemoveObserver(this)", client_, 1, 3);
- EXPECT_ACTION("SendBeginMainFrameNotExpectedSoon", client_, 2, 3);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 4);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 4);
+ EXPECT_ACTION("RemoveObserver(this)", client_, 2, 4);
+ EXPECT_ACTION("SendBeginMainFrameNotExpectedSoon", client_, 3, 4);
EXPECT_FALSE(client_->IsInsideBeginImplFrame());
client_->Reset();
}
@@ -2834,7 +2869,8 @@ TEST_F(SchedulerTest, SetNeedsOneBeginImplFrame) {
// Next vsync, the first requested frame happens.
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
client_->Reset();
@@ -2843,7 +2879,8 @@ TEST_F(SchedulerTest, SetNeedsOneBeginImplFrame) {
// Next vsync, the second requested frame happens (the one requested inside
// the previous frame's begin impl frame step).
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
client_->Reset();
@@ -2904,7 +2941,8 @@ TEST_F(SchedulerTest, SynchronousCompositorCommitAndVerifyBeginFrameAcks) {
fake_external_begin_frame_source_->LastAckForObserver(scheduler_.get()));
scheduler_->NotifyReadyToCommit();
- EXPECT_SINGLE_ACTION("ScheduledActionCommit", client_);
+ EXPECT_ACTION("ScheduledActionCommit", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
client_->Reset();
scheduler_->NotifyReadyToActivate();
@@ -2913,8 +2951,9 @@ TEST_F(SchedulerTest, SynchronousCompositorCommitAndVerifyBeginFrameAcks) {
// Next vsync.
args = SendNextBeginFrame();
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
- EXPECT_ACTION("ScheduledActionInvalidateCompositorFrameSink", client_, 1, 2);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 3);
+ EXPECT_ACTION("ScheduledActionInvalidateCompositorFrameSink", client_, 1, 3);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 2, 3);
EXPECT_FALSE(client_->IsInsideBeginImplFrame());
client_->Reset();
@@ -2938,9 +2977,10 @@ TEST_F(SchedulerTest, SynchronousCompositorCommitAndVerifyBeginFrameAcks) {
// Idle on next vsync.
args = SendNextBeginFrame();
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 3);
- EXPECT_ACTION("RemoveObserver(this)", client_, 1, 3);
- EXPECT_ACTION("SendBeginMainFrameNotExpectedSoon", client_, 2, 3);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 4);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 4);
+ EXPECT_ACTION("RemoveObserver(this)", client_, 2, 4);
+ EXPECT_ACTION("SendBeginMainFrameNotExpectedSoon", client_, 3, 4);
EXPECT_FALSE(client_->IsInsideBeginImplFrame());
client_->Reset();
@@ -3021,8 +3061,9 @@ TEST_F(SchedulerTest, SynchronousCompositorPrepareTilesOnDraw) {
// Next vsync.
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
- EXPECT_ACTION("ScheduledActionInvalidateCompositorFrameSink", client_, 1, 2);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 3);
+ EXPECT_ACTION("ScheduledActionInvalidateCompositorFrameSink", client_, 1, 3);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 2, 3);
client_->Reset();
// Android onDraw.
@@ -3047,9 +3088,10 @@ TEST_F(SchedulerTest, SynchronousCompositorPrepareTilesOnDraw) {
// Next vsync.
EXPECT_SCOPED(AdvanceFrame());
EXPECT_FALSE(scheduler_->PrepareTilesPending());
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 3);
- EXPECT_ACTION("RemoveObserver(this)", client_, 1, 3);
- EXPECT_ACTION("SendBeginMainFrameNotExpectedSoon", client_, 2, 3);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 4);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 4);
+ EXPECT_ACTION("RemoveObserver(this)", client_, 2, 4);
+ EXPECT_ACTION("SendBeginMainFrameNotExpectedSoon", client_, 3, 4);
EXPECT_FALSE(scheduler_->begin_frames_expected());
client_->Reset();
}
@@ -3064,8 +3106,9 @@ TEST_F(SchedulerTest, SynchronousCompositorSendBeginMainFrameWhileIdle) {
// Next vsync.
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
- EXPECT_ACTION("ScheduledActionInvalidateCompositorFrameSink", client_, 1, 2);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 3);
+ EXPECT_ACTION("ScheduledActionInvalidateCompositorFrameSink", client_, 1, 3);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 2, 3);
client_->Reset();
// Android onDraw.
@@ -3093,8 +3136,9 @@ TEST_F(SchedulerTest, SynchronousCompositorSendBeginMainFrameWhileIdle) {
// Next vsync.
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
- EXPECT_ACTION("ScheduledActionInvalidateCompositorFrameSink", client_, 1, 2);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 3);
+ EXPECT_ACTION("ScheduledActionInvalidateCompositorFrameSink", client_, 1, 3);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 2, 3);
client_->Reset();
// Android onDraw.
@@ -3229,7 +3273,8 @@ TEST_F(SchedulerTest, ImplSideInvalidationsInDeadline) {
scheduler_->SetNeedsImplSideInvalidation();
client_->Reset();
EXPECT_SCOPED(AdvanceFrame());
- EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
// Deadline.
client_->Reset();
@@ -3395,7 +3440,8 @@ TEST_F(SchedulerTest, BeginFrameAckForFinishedImplFrame) {
BeginFrameArgs args = SendNextBeginFrame();
EXPECT_LT(latest_confirmed_sequence_number, args.sequence_number);
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
EXPECT_TRUE(scheduler_->begin_frames_expected());
client_->Reset();
@@ -3421,7 +3467,8 @@ TEST_F(SchedulerTest, BeginFrameAckForFinishedImplFrame) {
args = SendNextBeginFrame();
EXPECT_LT(latest_confirmed_sequence_number, args.sequence_number);
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
EXPECT_TRUE(scheduler_->begin_frames_expected());
client_->Reset();
@@ -3456,7 +3503,8 @@ TEST_F(SchedulerTest, BeginFrameAckForSkippedImplFrame) {
client_->Reset();
BeginFrameArgs args = SendNextBeginFrame();
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
EXPECT_TRUE(scheduler_->begin_frames_expected());
client_->Reset();
@@ -3503,7 +3551,8 @@ TEST_F(SchedulerTest, BeginFrameAckForBeginFrameBeforeLastDeadline) {
client_->Reset();
SendNextBeginFrame();
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
// Until tiles were prepared, further proactive BeginFrames are expected.
EXPECT_TRUE(scheduler_->begin_frames_expected());
@@ -3546,7 +3595,8 @@ TEST_F(SchedulerTest, BeginFrameAckForDroppedBeginFrame) {
// First BeginFrame is handled by StateMachine.
BeginFrameArgs first_args = SendNextBeginFrame();
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
// State machine is no longer interested in BeginFrames, but scheduler is
// still observing the source.
@@ -3627,7 +3677,8 @@ TEST_F(SchedulerTest, BeginFrameAckForFinishedBeginFrameWithNewSourceId) {
source_id, 1, now_src());
fake_external_begin_frame_source_->TestOnBeginFrame(args);
- EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
+ EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
+ EXPECT_ACTION("ScheduledActionDoShortIdleWork", client_, 1, 2);
EXPECT_TRUE(client_->IsInsideBeginImplFrame());
EXPECT_TRUE(scheduler_->begin_frames_expected());
client_->Reset();

Powered by Google App Engine
This is Rietveld 408576698