| 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..e8e9b09fa96aef22f603e708efc3e0a4aef4d3df 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_embedding.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,32 @@ class SurfaceLayerTest : public testing::Test {
|
| LayerTree* layer_tree_;
|
| };
|
|
|
| -void SatisfyCallback(SurfaceSequence* out, const SurfaceSequence& in) {
|
| - *out = in;
|
| -}
|
| +class TestSurfaceEmbedding : public SurfaceEmbeddingUsingSequence {
|
| + 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:
|
| + TestSurfaceEmbedding(SurfaceSequence* out_seq,
|
| + SurfaceId* out_id,
|
| + std::set<SurfaceSequence>* out_set)
|
| + : out_seq_(out_seq), out_id_(out_id), out_set_(out_set) {}
|
| +
|
| + protected:
|
| + ~TestSurfaceEmbedding() override = default;
|
| +
|
| + 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 +91,13 @@ 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(
|
| + SurfaceEmbeddingPtr surface_ref =
|
| + new TestSurfaceEmbedding(&blank_change, &required_id, &required_seq);
|
| + auto layer = SurfaceLayer::Create(surface_ref);
|
| + SurfaceInfo info(
|
| SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, kArbitraryToken)), 1.f,
|
| gfx::Size(1, 1));
|
| + layer->SetSurfaceInfo(info);
|
| layer_tree_host_->GetSurfaceSequenceGenerator()->set_frame_sink_id(
|
| FrameSinkId(1, 1));
|
| layer_tree_->SetRootLayer(layer);
|
| @@ -89,12 +106,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));
|
| + auto layer2 = SurfaceLayer::Create(std::move(surface_ref));
|
| + layer2->SetSurfaceInfo(info);
|
| layer_tree_host2->GetSurfaceSequenceGenerator()->set_frame_sink_id(
|
| FrameSinkId(2, 2));
|
| layer_tree_host2->SetRootLayer(layer2);
|
| @@ -142,12 +155,13 @@ 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(
|
| + SurfaceInfo info(
|
| SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, kArbitraryToken)), 1.f,
|
| gfx::Size(1, 1));
|
| + SurfaceEmbeddingPtr surface_ref = new TestSurfaceEmbedding(
|
| + &satisfied_sequence_, &required_id_, &required_set_);
|
| + layer_ = SurfaceLayer::Create(std::move(surface_ref));
|
| + layer_->SetSurfaceInfo(info);
|
|
|
| // Layer hasn't been added to tree so no SurfaceSequence generated yet.
|
| EXPECT_EQ(0u, required_set_.size());
|
|
|