| Index: cc/layers/surface_layer_unittest.cc
|
| diff --git a/cc/layers/surface_layer_unittest.cc b/cc/layers/surface_layer_unittest.cc
|
| index 5b688676e02ccd34764232b9f6f1f5e0bc052fec..eb9ea890612a024416ad674dd1a0173e3d59479b 100644
|
| --- a/cc/layers/surface_layer_unittest.cc
|
| +++ b/cc/layers/surface_layer_unittest.cc
|
| @@ -14,6 +14,7 @@
|
| #include "cc/layers/solid_color_layer.h"
|
| #include "cc/layers/surface_layer.h"
|
| #include "cc/output/compositor_frame.h"
|
| +#include "cc/surfaces/surface_ref.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"
|
| @@ -54,17 +55,26 @@ class SurfaceLayerTest : public testing::Test {
|
| LayerTree* layer_tree_;
|
| };
|
|
|
| -void SatisfyCallback(SurfaceSequence* out, const SurfaceSequence& in) {
|
| - *out = in;
|
| -}
|
| +class TestSurfaceRef : public SurfaceRefWithSequence<TestSurfaceRef> {
|
| + protected:
|
| + void SatisfySequence(const SurfaceSequence& seq) 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 SurfaceSequence& seq) override {
|
| + *out_id_ = id();
|
| + out_set_->insert(seq);
|
| + }
|
| +
|
| + public:
|
| + TestSurfaceRef(SurfaceSequence* out_seq,
|
| + SurfaceId* out_id,
|
| + std::set<SurfaceSequence>* out_set)
|
| + : out_seq_(out_seq), out_id_(out_id), out_set_(out_set) {}
|
| +
|
| + private:
|
| + SurfaceSequence* out_seq_;
|
| + SurfaceId* out_id_;
|
| + std::set<SurfaceSequence>* out_set_;
|
| +};
|
|
|
| // Check that one surface can be referenced by multiple LayerTreeHosts, and
|
| // each will create its own SurfaceSequence that's satisfied on destruction.
|
| @@ -75,12 +85,15 @@ 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(
|
| - SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, kArbitraryToken)), 1.f,
|
| - gfx::Size(1, 1));
|
| + scoped_refptr<SurfaceLayer> layer(SurfaceLayer::Create());
|
| + SurfaceRefPtr surface_ref(
|
| + new TestSurfaceRef(&blank_change, &required_id, &required_seq));
|
| + surface_ref
|
| + ->SetId(
|
| + SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, kArbitraryToken)))
|
| + ->SetScale(1.f)
|
| + ->SetSize(gfx::Size(1, 1));
|
| + layer->SetSurfaceRef(std::move(surface_ref));
|
| layer_tree_host_->GetSurfaceSequenceGenerator()->set_frame_sink_id(
|
| FrameSinkId(1, 1));
|
| layer_tree_->SetRootLayer(layer);
|
| @@ -89,12 +102,15 @@ 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));
|
| + scoped_refptr<SurfaceLayer> layer2(SurfaceLayer::Create());
|
| + SurfaceRefPtr surface_ref_2(
|
| + new TestSurfaceRef(&blank_change, &required_id, &required_seq));
|
| + surface_ref_2
|
| + ->SetId(
|
| + SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, kArbitraryToken)))
|
| + ->SetScale(1.f)
|
| + ->SetSize(gfx::Size(1, 1));
|
| + layer2->SetSurfaceRef(std::move(surface_ref_2));
|
| layer_tree_host2->GetSurfaceSequenceGenerator()->set_frame_sink_id(
|
| FrameSinkId(2, 2));
|
| layer_tree_host2->SetRootLayer(layer2);
|
| @@ -142,12 +158,15 @@ 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(
|
| - SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, kArbitraryToken)), 1.f,
|
| - gfx::Size(1, 1));
|
| + layer_ = SurfaceLayer::Create();
|
| + SurfaceRefPtr surface_ref(new TestSurfaceRef(
|
| + &satisfied_sequence_, &required_id_, &required_set_));
|
| + surface_ref
|
| + ->SetId(
|
| + SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, kArbitraryToken)))
|
| + ->SetScale(1.f)
|
| + ->SetSize(gfx::Size(1, 1));
|
| + layer_->SetSurfaceRef(std::move(surface_ref));
|
|
|
| // Layer hasn't been added to tree so no SurfaceSequence generated yet.
|
| EXPECT_EQ(0u, required_set_.size());
|
|
|