Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(915)

Unified Diff: cc/layers/surface_layer_unittest.cc

Issue 2514033002: Introducing SurfaceReferenceFactory (Closed)
Patch Set: fix Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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());

Powered by Google App Engine
This is Rietveld 408576698