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()); |