Index: cc/scheduler/scheduler_unittest.cc |
diff --git a/cc/scheduler/scheduler_unittest.cc b/cc/scheduler/scheduler_unittest.cc |
index 7ab65aa657825832dfbf0d60a29a8bbd89a82fd4..1facc8f2ba685c159f8678704fc67038a6f9af3e 100644 |
--- a/cc/scheduler/scheduler_unittest.cc |
+++ b/cc/scheduler/scheduler_unittest.cc |
@@ -13,6 +13,7 @@ |
#include "base/run_loop.h" |
#include "base/time/time.h" |
#include "cc/test/begin_frame_args_test.h" |
+#include "cc/test/fake_output_surface.h" |
#include "cc/test/ordered_simple_task_runner.h" |
#include "cc/test/scheduler_test_common.h" |
#include "testing/gmock/include/gmock/gmock.h" |
@@ -108,9 +109,6 @@ class FakeSchedulerClient : public SchedulerClient { |
return scheduler_->settings().begin_frame_scheduling_enabled && |
scheduler_->settings().throttle_frame_production; |
} |
- virtual FakeBeginFrameSource* GetExternalBeginFrameSource() OVERRIDE { |
- return &fake_frame_source_; |
- } |
void AdvanceFrame() { |
if (ExternalBeginFrame()) { |
@@ -236,6 +234,8 @@ class FakeSchedulerClient : public SchedulerClient { |
state); |
} |
+ scoped_ptr<FakeOutputSurface> output_surface_; |
+ |
protected: |
bool ImplFrameDeadlinePendingCallback(bool state) { |
return scheduler_->BeginImplFrameDeadlinePending() == state; |
@@ -261,7 +261,8 @@ void InitializeOutputSurfaceAndFirstCommit(Scheduler* scheduler, |
TRACE_EVENT0("cc", |
"SchedulerUnitTest::InitializeOutputSurfaceAndFirstCommit"); |
- scheduler->DidCreateAndInitializeOutputSurface(); |
+ client->output_surface_ = FakeOutputSurface::Create3d(); |
+ scheduler->DidCreateAndInitializeOutputSurface(client->output_surface_.get()); |
scheduler->SetNeedsCommit(); |
scheduler->NotifyBeginMainFrameStarted(); |
scheduler->NotifyReadyToCommit(); |
@@ -296,7 +297,8 @@ TEST(SchedulerTest, InitializeOutputSurfaceDoesNotBeginImplFrame) { |
EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client); |
client.Reset(); |
- scheduler->DidCreateAndInitializeOutputSurface(); |
+ client.output_surface_ = FakeOutputSurface::Create3d(); |
+ scheduler->DidCreateAndInitializeOutputSurface(client.output_surface_.get()); |
EXPECT_NO_ACTION(client); |
} |
@@ -1129,7 +1131,8 @@ TEST(SchedulerTest, PollForCommitCompletion) { |
scheduler->SetCanDraw(true); |
scheduler->SetCanStart(); |
scheduler->SetVisible(true); |
- scheduler->DidCreateAndInitializeOutputSurface(); |
+ client.output_surface_ = FakeOutputSurface::Create3d(); |
+ scheduler->DidCreateAndInitializeOutputSurface(client.output_surface_.get()); |
scheduler->SetNeedsCommit(); |
EXPECT_TRUE(scheduler->CommitPending()); |
@@ -1139,7 +1142,7 @@ TEST(SchedulerTest, PollForCommitCompletion) { |
BeginFrameArgs frame_args = CreateBeginFrameArgsForTesting(client.now_src()); |
frame_args.interval = base::TimeDelta::FromMilliseconds(1000); |
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(frame_args); |
+ client.output_surface_->TestSendBeginFrame(frame_args); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
client.task_runner().RunPendingTasks(); // Run posted deadline. |
@@ -1152,7 +1155,7 @@ TEST(SchedulerTest, PollForCommitCompletion) { |
// the NotifyReadyToCommit for now. |
EXPECT_FALSE(scheduler->CommitPending()); |
scheduler->SetNeedsCommit(); |
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(frame_args); |
+ client.output_surface_->TestSendBeginFrame(frame_args); |
EXPECT_TRUE(scheduler->CommitPending()); |
// Draw and swap the frame, but don't ack the swap to simulate the Browser |
@@ -1211,7 +1214,7 @@ TEST(SchedulerTest, BeginRetroFrame) { |
// This is the first BeginFrame, which will be handled immediately. |
BeginFrameArgs args = CreateBeginFrameArgsForTesting(client.now_src()); |
args.deadline += base::TimeDelta::FromHours(1); |
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args); |
+ client.output_surface_->TestSendBeginFrame(args); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -1220,9 +1223,9 @@ TEST(SchedulerTest, BeginRetroFrame) { |
// Queue BeginFrames while we are still handling the previous BeginFrame. |
args.frame_time += base::TimeDelta::FromSeconds(1); |
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args); |
+ client.output_surface_->TestSendBeginFrame(args); |
args.frame_time += base::TimeDelta::FromSeconds(1); |
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args); |
+ client.output_surface_->TestSendBeginFrame(args); |
// If we don't swap on the deadline, we wait for the next BeginImplFrame. |
client.task_runner().RunPendingTasks(); // Run posted deadline. |
@@ -1288,7 +1291,7 @@ TEST(SchedulerTest, BeginRetroFrame_SwapThrottled) { |
// This is the first BeginFrame, which will be handled immediately. |
BeginFrameArgs args = CreateBeginFrameArgsForTesting(client.now_src()); |
args.deadline += base::TimeDelta::FromHours(1); |
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args); |
+ client.output_surface_->TestSendBeginFrame(args); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -1298,7 +1301,7 @@ TEST(SchedulerTest, BeginRetroFrame_SwapThrottled) { |
// Queue BeginFrame while we are still handling the previous BeginFrame. |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
args.frame_time += base::TimeDelta::FromSeconds(1); |
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args); |
+ client.output_surface_->TestSendBeginFrame(args); |
EXPECT_NO_ACTION(client); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
client.Reset(); |
@@ -1329,7 +1332,7 @@ TEST(SchedulerTest, BeginRetroFrame_SwapThrottled) { |
// Queue BeginFrame while we are still handling the previous BeginFrame. |
args.frame_time += base::TimeDelta::FromSeconds(1); |
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args); |
+ client.output_surface_->TestSendBeginFrame(args); |
EXPECT_NO_ACTION(client); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
EXPECT_TRUE(client.needs_begin_frames()); |
@@ -1555,9 +1558,11 @@ TEST(SchedulerTest, DidLoseOutputSurfaceAfterOutputSurfaceIsInitialized) { |
EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client); |
client.Reset(); |
- scheduler->DidCreateAndInitializeOutputSurface(); |
+ client.output_surface_ = FakeOutputSurface::Create3d(); |
+ scheduler->DidCreateAndInitializeOutputSurface(client.output_surface_.get()); |
EXPECT_NO_ACTION(client); |
+ client.output_surface_.reset(); |
scheduler->DidLoseOutputSurface(); |
EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client); |
} |
@@ -1584,6 +1589,7 @@ TEST(SchedulerTest, DidLoseOutputSurfaceAfterBeginFrameStarted) { |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
client.Reset(); |
+ client.output_surface_.reset(); |
scheduler->DidLoseOutputSurface(); |
// Do nothing when impl frame is in deadine pending state. |
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(false)", client); |
@@ -1623,6 +1629,7 @@ void DidLoseOutputSurfaceAfterBeginFrameStartedWithHighLatency( |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
client.Reset(); |
+ client.output_surface_.reset(); |
scheduler->DidLoseOutputSurface(); |
// Do nothing when impl frame is in deadine pending state. |
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(false)", client); |
@@ -1695,6 +1702,7 @@ void DidLoseOutputSurfaceAfterReadyToCommit(bool impl_side_painting) { |
EXPECT_SINGLE_ACTION("ScheduledActionCommit", client); |
client.Reset(); |
+ client.output_surface_.reset(); |
scheduler->DidLoseOutputSurface(); |
if (impl_side_painting) { |
// Sync tree should be forced to activate. |
@@ -1738,6 +1746,7 @@ TEST(SchedulerTest, DidLoseOutputSurfaceAfterSetNeedsManageTiles) { |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
client.Reset(); |
+ client.output_surface_.reset(); |
scheduler->DidLoseOutputSurface(); |
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(false)", client); |
@@ -1766,7 +1775,7 @@ TEST(SchedulerTest, DidLoseOutputSurfaceAfterBeginRetroFramePosted) { |
client.Reset(); |
BeginFrameArgs args = CreateBeginFrameArgsForTesting(client.now_src()); |
args.deadline += base::TimeDelta::FromHours(1); |
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args); |
+ client.output_surface_->TestSendBeginFrame(args); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -1774,9 +1783,9 @@ TEST(SchedulerTest, DidLoseOutputSurfaceAfterBeginRetroFramePosted) { |
// Queue BeginFrames while we are still handling the previous BeginFrame. |
args.frame_time += base::TimeDelta::FromSeconds(1); |
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args); |
+ client.output_surface_->TestSendBeginFrame(args); |
args.frame_time += base::TimeDelta::FromSeconds(1); |
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args); |
+ client.output_surface_->TestSendBeginFrame(args); |
// If we don't swap on the deadline, we wait for the next BeginImplFrame. |
client.Reset(); |
@@ -1794,6 +1803,7 @@ TEST(SchedulerTest, DidLoseOutputSurfaceAfterBeginRetroFramePosted) { |
client.Reset(); |
EXPECT_FALSE(scheduler->IsBeginRetroFrameArgsEmpty()); |
+ client.output_surface_.reset(); |
scheduler->DidLoseOutputSurface(); |
EXPECT_ACTION("SetNeedsBeginFrames(false)", client, 0, 2); |
EXPECT_ACTION("ScheduledActionBeginOutputSurfaceCreation", client, 1, 2); |
@@ -1824,7 +1834,7 @@ TEST(SchedulerTest, DidLoseOutputSurfaceDuringBeginRetroFrameRunning) { |
client.Reset(); |
BeginFrameArgs args = CreateBeginFrameArgsForTesting(client.now_src()); |
args.deadline += base::TimeDelta::FromHours(1); |
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args); |
+ client.output_surface_->TestSendBeginFrame(args); |
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2); |
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
@@ -1832,9 +1842,9 @@ TEST(SchedulerTest, DidLoseOutputSurfaceDuringBeginRetroFrameRunning) { |
// Queue BeginFrames while we are still handling the previous BeginFrame. |
args.frame_time += base::TimeDelta::FromSeconds(1); |
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args); |
+ client.output_surface_->TestSendBeginFrame(args); |
args.frame_time += base::TimeDelta::FromSeconds(1); |
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args); |
+ client.output_surface_->TestSendBeginFrame(args); |
// If we don't swap on the deadline, we wait for the next BeginImplFrame. |
client.Reset(); |
@@ -1861,6 +1871,7 @@ TEST(SchedulerTest, DidLoseOutputSurfaceDuringBeginRetroFrameRunning) { |
client.Reset(); |
EXPECT_FALSE(scheduler->IsBeginRetroFrameArgsEmpty()); |
scheduler->DidLoseOutputSurface(); |
+ client.output_surface_.reset(); |
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(false)", client); |
EXPECT_TRUE(scheduler->IsBeginRetroFrameArgsEmpty()); |