| Index: cc/scheduler/scheduler_unittest.cc
|
| diff --git a/cc/scheduler/scheduler_unittest.cc b/cc/scheduler/scheduler_unittest.cc
|
| index 751c9649e497a230e95fa71102d3197b02f0b5ae..e25d3b0c4bcfc37ba780e4d314ac6b1ee796b192 100644
|
| --- a/cc/scheduler/scheduler_unittest.cc
|
| +++ b/cc/scheduler/scheduler_unittest.cc
|
| @@ -17,6 +17,7 @@
|
| #include "base/time/time.h"
|
| #include "base/trace_event/trace_event.h"
|
| #include "cc/test/begin_frame_args_test.h"
|
| +#include "cc/test/fake_external_begin_frame_source.h"
|
| #include "cc/test/ordered_simple_task_runner.h"
|
| #include "cc/test/scheduler_test_common.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| @@ -51,7 +52,8 @@ namespace {
|
| base::TimeDelta kSlowDuration = base::TimeDelta::FromSeconds(1);
|
| base::TimeDelta kFastDuration = base::TimeDelta::FromMilliseconds(1);
|
|
|
| -class FakeSchedulerClient : public SchedulerClient {
|
| +class FakeSchedulerClient : public SchedulerClient,
|
| + public FakeExternalBeginFrameSource::Client {
|
| public:
|
| FakeSchedulerClient()
|
| : automatic_swap_ack_(true),
|
| @@ -180,6 +182,14 @@ class FakeSchedulerClient : public SchedulerClient {
|
| states_.push_back(scheduler_->AsValue());
|
| }
|
|
|
| + // FakeExternalBeginFrameSource::Client implementation.
|
| + void OnAddObserver(BeginFrameObserver* obs) override {
|
| + PushAction("AddObserver(this)");
|
| + }
|
| + void OnRemoveObserver(BeginFrameObserver* obs) override {
|
| + PushAction("RemoveObserver(this)");
|
| + }
|
| +
|
| protected:
|
| bool ImplFrameDeadlinePendingCallback(bool state) {
|
| return scheduler_->BeginImplFrameDeadlinePending() == state;
|
| @@ -199,33 +209,6 @@ class FakeSchedulerClient : public SchedulerClient {
|
| TestScheduler* scheduler_;
|
| };
|
|
|
| -class FakeExternalBeginFrameSource : public BeginFrameSourceBase {
|
| - public:
|
| - explicit FakeExternalBeginFrameSource(FakeSchedulerClient* client)
|
| - : client_(client) {}
|
| - ~FakeExternalBeginFrameSource() override {}
|
| -
|
| - void AddObserver(BeginFrameObserver* obs) override {
|
| - client_->PushAction("AddObserver(this)");
|
| - BeginFrameSourceBase::AddObserver(obs);
|
| - }
|
| -
|
| - void RemoveObserver(BeginFrameObserver* obs) override {
|
| - client_->PushAction("RemoveObserver(this)");
|
| - BeginFrameSourceBase::RemoveObserver(obs);
|
| - }
|
| -
|
| - // TODO(sunnyps): Use using CallOnBeginFrame, SetBeginFrameSourcePaused.
|
| - void TestOnBeginFrame(const BeginFrameArgs& args) {
|
| - return CallOnBeginFrame(args);
|
| - }
|
| -
|
| - void SetPaused(bool paused) { SetBeginFrameSourcePaused(paused); }
|
| -
|
| - private:
|
| - FakeSchedulerClient* client_;
|
| -};
|
| -
|
| class SchedulerTest : public testing::Test {
|
| public:
|
| SchedulerTest()
|
| @@ -245,12 +228,15 @@ class SchedulerTest : public testing::Test {
|
| protected:
|
| TestScheduler* CreateScheduler() {
|
| BeginFrameSource* frame_source;
|
| - unthrottled_frame_source_.reset(
|
| - new TestBackToBackBeginFrameSource(now_src_.get(), task_runner_.get()));
|
| + unthrottled_frame_source_.reset(new BackToBackBeginFrameSource(
|
| + base::MakeUnique<TestDelayBasedTimeSource>(now_src_.get(),
|
| + task_runner_.get())));
|
| fake_external_begin_frame_source_.reset(
|
| - new FakeExternalBeginFrameSource(client_.get()));
|
| - synthetic_frame_source_.reset(new TestSyntheticBeginFrameSource(
|
| - now_src_.get(), task_runner_.get(), BeginFrameArgs::DefaultInterval()));
|
| + new FakeExternalBeginFrameSource(0.f, false));
|
| + fake_external_begin_frame_source_->SetClient(client_.get());
|
| + synthetic_frame_source_.reset(new DelayBasedBeginFrameSource(
|
| + base::MakeUnique<TestDelayBasedTimeSource>(now_src_.get(),
|
| + task_runner_.get())));
|
| if (!scheduler_settings_.throttle_frame_production) {
|
| frame_source = unthrottled_frame_source_.get();
|
| } else if (scheduler_settings_.use_external_begin_frame_source) {
|
| @@ -429,8 +415,8 @@ class SchedulerTest : public testing::Test {
|
| scoped_refptr<OrderedSimpleTaskRunner> task_runner_;
|
| std::unique_ptr<FakeExternalBeginFrameSource>
|
| fake_external_begin_frame_source_;
|
| - std::unique_ptr<TestSyntheticBeginFrameSource> synthetic_frame_source_;
|
| - std::unique_ptr<TestBackToBackBeginFrameSource> unthrottled_frame_source_;
|
| + std::unique_ptr<SyntheticBeginFrameSource> synthetic_frame_source_;
|
| + std::unique_ptr<SyntheticBeginFrameSource> unthrottled_frame_source_;
|
| SchedulerSettings scheduler_settings_;
|
| std::unique_ptr<FakeSchedulerClient> client_;
|
| std::unique_ptr<TestScheduler> scheduler_;
|
| @@ -2769,7 +2755,7 @@ TEST_F(SchedulerTest, DidLoseOutputSurfaceDuringBeginRetroFrameRunning) {
|
| EXPECT_NO_ACTION(client_);
|
| }
|
|
|
| -TEST_F(SchedulerTest, DidLoseOutputSurfaceWithSyntheticBeginFrameSource) {
|
| +TEST_F(SchedulerTest, DidLoseOutputSurfaceWithDelayBasedBeginFrameSource) {
|
| SetUpScheduler(true);
|
|
|
| // SetNeedsBeginMainFrame should begin the frame on the next BeginImplFrame.
|
|
|