| Index: cc/layers/surface_layer_unittest.cc
|
| diff --git a/cc/layers/surface_layer_unittest.cc b/cc/layers/surface_layer_unittest.cc
|
| index f288f7103be627dd8c44773fef9dbd6676c216c9..56a8b8c3b5b1616ace5962c45b6f8f6254d2bfa7 100644
|
| --- a/cc/layers/surface_layer_unittest.cc
|
| +++ b/cc/layers/surface_layer_unittest.cc
|
| @@ -15,6 +15,8 @@
|
| #include "cc/layers/solid_color_layer.h"
|
| #include "cc/layers/surface_layer.h"
|
| #include "cc/output/compositor_frame.h"
|
| +#include "cc/surfaces/sequence_surface_reference_factory.h"
|
| +#include "cc/surfaces/surface_info.h"
|
| #include "cc/test/fake_impl_task_runner_provider.h"
|
| #include "cc/test/fake_layer_tree_host.h"
|
| #include "cc/test/fake_layer_tree_host_client.h"
|
| @@ -55,17 +57,34 @@ class SurfaceLayerTest : public testing::Test {
|
| LayerTree* layer_tree_;
|
| };
|
|
|
| -void SatisfyCallback(SurfaceSequence* out, const SurfaceSequence& in) {
|
| - *out = in;
|
| -}
|
| +class TestSurfaceReferenceFactory : public SequenceSurfaceReferenceFactory {
|
| + protected:
|
| + void SatisfySequence(const SurfaceSequence& seq) const override {
|
| + *out_seq_ = seq;
|
| + }
|
|
|
| -void RequireCallback(SurfaceId* out_id,
|
| - std::set<SurfaceSequence>* out,
|
| - const SurfaceId& in_id,
|
| - const SurfaceSequence& in) {
|
| - *out_id = in_id;
|
| - out->insert(in);
|
| -}
|
| + void RequireSequence(const SurfaceId& id,
|
| + const SurfaceSequence& seq) const override {
|
| + *out_id_ = id;
|
| + out_set_->insert(seq);
|
| + }
|
| +
|
| + public:
|
| + TestSurfaceReferenceFactory(SurfaceSequence* out_seq,
|
| + SurfaceId* out_id,
|
| + std::set<SurfaceSequence>* out_set)
|
| + : out_seq_(out_seq), out_id_(out_id), out_set_(out_set) {}
|
| +
|
| + protected:
|
| + ~TestSurfaceReferenceFactory() override = default;
|
| +
|
| + private:
|
| + SurfaceSequence* out_seq_;
|
| + SurfaceId* out_id_;
|
| + std::set<SurfaceSequence>* out_set_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TestSurfaceReferenceFactory);
|
| +};
|
|
|
| // Check that one surface can be referenced by multiple LayerTreeHosts, and
|
| // each will create its own SurfaceSequence that's satisfied on destruction.
|
| @@ -76,12 +95,14 @@ TEST_F(SurfaceLayerTest, MultipleFramesOneSurface) {
|
|
|
| SurfaceId required_id;
|
| std::set<SurfaceSequence> required_seq;
|
| - scoped_refptr<SurfaceLayer> layer(SurfaceLayer::Create(
|
| - base::Bind(&SatisfyCallback, &blank_change),
|
| - base::Bind(&RequireCallback, &required_id, &required_seq)));
|
| - layer->SetSurfaceId(
|
| + scoped_refptr<SurfaceReferenceFactory> ref_factory =
|
| + new TestSurfaceReferenceFactory(&blank_change, &required_id,
|
| + &required_seq);
|
| + auto layer = SurfaceLayer::Create(ref_factory);
|
| + SurfaceInfo info(
|
| SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, kArbitraryToken)), 1.f,
|
| - gfx::Size(1, 1), false);
|
| + gfx::Size(1, 1));
|
| + layer->SetSurfaceInfo(info, false);
|
| layer_tree_host_->GetSurfaceSequenceGenerator()->set_frame_sink_id(
|
| FrameSinkId(1, 1));
|
| layer_tree_->SetRootLayer(layer);
|
| @@ -90,12 +111,8 @@ TEST_F(SurfaceLayerTest, MultipleFramesOneSurface) {
|
| std::unique_ptr<FakeLayerTreeHost> layer_tree_host2 =
|
| FakeLayerTreeHost::Create(&fake_client_, &task_graph_runner_,
|
| animation_host2.get());
|
| - scoped_refptr<SurfaceLayer> layer2(SurfaceLayer::Create(
|
| - base::Bind(&SatisfyCallback, &blank_change),
|
| - base::Bind(&RequireCallback, &required_id, &required_seq)));
|
| - layer2->SetSurfaceId(
|
| - SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, kArbitraryToken)), 1.f,
|
| - gfx::Size(1, 1), false);
|
| + auto layer2 = SurfaceLayer::Create(std::move(ref_factory));
|
| + layer2->SetSurfaceInfo(info, false);
|
| layer_tree_host2->GetSurfaceSequenceGenerator()->set_frame_sink_id(
|
| FrameSinkId(2, 2));
|
| layer_tree_host2->SetRootLayer(layer2);
|
| @@ -145,12 +162,12 @@ class SurfaceLayerSwapPromise : public LayerTreeTest {
|
| void BeginTest() override {
|
| layer_tree_host()->GetSurfaceSequenceGenerator()->set_frame_sink_id(
|
| FrameSinkId(1, 1));
|
| - layer_ = SurfaceLayer::Create(
|
| - base::Bind(&SatisfyCallback, &satisfied_sequence_),
|
| - base::Bind(&RequireCallback, &required_id_, &required_set_));
|
| - layer_->SetSurfaceId(
|
| + layer_ = SurfaceLayer::Create(new TestSurfaceReferenceFactory(
|
| + &satisfied_sequence_, &required_id_, &required_set_));
|
| + SurfaceInfo info(
|
| SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, kArbitraryToken)), 1.f,
|
| - gfx::Size(1, 1), false);
|
| + gfx::Size(1, 1));
|
| + layer_->SetSurfaceInfo(info, false);
|
|
|
| // Layer hasn't been added to tree so no SurfaceSequence generated yet.
|
| EXPECT_EQ(0u, required_set_.size());
|
|
|