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..af78151460da7fec98b0c3d9d6377aee17da07ec 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,34 @@ 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) 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: |
+ TestSurfaceEmbedding(const SurfaceInfo& info, |
+ SurfaceSequence* out_seq, |
+ SurfaceId* out_id, |
+ std::set<SurfaceSequence>* out_set) |
+ : SurfaceEmbeddingUsingSequence(info), |
+ out_seq_(out_seq), |
+ out_id_(out_id), |
+ out_set_(out_set) {} |
+ |
+ private: |
+ SurfaceEmbedding* CloneImpl() const override { |
+ return new TestSurfaceEmbedding(*this); |
+ } |
+ |
+ 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 +93,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( |
+ scoped_refptr<SurfaceLayer> layer(SurfaceLayer::Create()); |
+ SurfaceInfo info( |
SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, kArbitraryToken)), 1.f, |
gfx::Size(1, 1)); |
+ SurfaceEmbeddingPtr surface_ref(new TestSurfaceEmbedding( |
+ info, &blank_change, &required_id, &required_seq)); |
+ layer->SetSurfaceEmbedding(std::move(surface_ref)); |
layer_tree_host_->GetSurfaceSequenceGenerator()->set_frame_sink_id( |
FrameSinkId(1, 1)); |
layer_tree_->SetRootLayer(layer); |
@@ -89,12 +108,10 @@ 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()); |
+ SurfaceEmbeddingPtr surface_ref_2(new TestSurfaceEmbedding( |
+ info, &blank_change, &required_id, &required_seq)); |
+ layer2->SetSurfaceEmbedding(std::move(surface_ref_2)); |
layer_tree_host2->GetSurfaceSequenceGenerator()->set_frame_sink_id( |
FrameSinkId(2, 2)); |
layer_tree_host2->SetRootLayer(layer2); |
@@ -142,12 +159,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( |
+ layer_ = SurfaceLayer::Create(); |
+ SurfaceInfo info( |
SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, kArbitraryToken)), 1.f, |
gfx::Size(1, 1)); |
+ SurfaceEmbeddingPtr surface_ref(new TestSurfaceEmbedding( |
+ info, &satisfied_sequence_, &required_id_, &required_set_)); |
+ layer_->SetSurfaceEmbedding(std::move(surface_ref)); |
// Layer hasn't been added to tree so no SurfaceSequence generated yet. |
EXPECT_EQ(0u, required_set_.size()); |