| 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());
|
|
|
|
|