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

Side by Side Diff: cc/layers/surface_layer_unittest.cc

Issue 723343002: Update from https://crrev.com/304121 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « cc/layers/surface_layer.cc ('k') | cc/layers/texture_layer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/message_loop/message_loop_proxy.h" 5 #include "base/message_loop/message_loop_proxy.h"
6 #include "cc/layers/solid_color_layer.h" 6 #include "cc/layers/solid_color_layer.h"
7 #include "cc/layers/surface_layer.h" 7 #include "cc/layers/surface_layer.h"
8 #include "cc/test/fake_impl_proxy.h" 8 #include "cc/test/fake_impl_proxy.h"
9 #include "cc/test/fake_layer_tree_host.h" 9 #include "cc/test/fake_layer_tree_host.h"
10 #include "cc/test/fake_layer_tree_host_client.h" 10 #include "cc/test/fake_layer_tree_host_client.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 // Check that one surface can be referenced by multiple LayerTreeHosts, and 58 // Check that one surface can be referenced by multiple LayerTreeHosts, and
59 // each will create its own SurfaceSequence that's satisfied on destruction. 59 // each will create its own SurfaceSequence that's satisfied on destruction.
60 TEST_F(SurfaceLayerTest, MultipleFramesOneSurface) { 60 TEST_F(SurfaceLayerTest, MultipleFramesOneSurface) {
61 SurfaceSequence blank_change; // Receives sequence if commit doesn't happen. 61 SurfaceSequence blank_change; // Receives sequence if commit doesn't happen.
62 62
63 SurfaceId required_id; 63 SurfaceId required_id;
64 std::set<SurfaceSequence> required_seq; 64 std::set<SurfaceSequence> required_seq;
65 scoped_refptr<SurfaceLayer> layer(SurfaceLayer::Create( 65 scoped_refptr<SurfaceLayer> layer(SurfaceLayer::Create(
66 base::Bind(&SatisfyCallback, &blank_change), 66 base::Bind(&SatisfyCallback, &blank_change),
67 base::Bind(&RequireCallback, &required_id, &required_seq))); 67 base::Bind(&RequireCallback, &required_id, &required_seq)));
68 layer->SetSurfaceId(SurfaceId(1)); 68 layer->SetSurfaceId(SurfaceId(1), 1.f, gfx::Size(1, 1));
69 layer_tree_host_->set_surface_id_namespace(1); 69 layer_tree_host_->set_surface_id_namespace(1);
70 layer_tree_host_->SetRootLayer(layer); 70 layer_tree_host_->SetRootLayer(layer);
71 71
72 scoped_ptr<FakeLayerTreeHost> layer_tree_host2 = 72 scoped_ptr<FakeLayerTreeHost> layer_tree_host2 =
73 FakeLayerTreeHost::Create(&fake_client_); 73 FakeLayerTreeHost::Create(&fake_client_);
74 scoped_refptr<SurfaceLayer> layer2(SurfaceLayer::Create( 74 scoped_refptr<SurfaceLayer> layer2(SurfaceLayer::Create(
75 base::Bind(&SatisfyCallback, &blank_change), 75 base::Bind(&SatisfyCallback, &blank_change),
76 base::Bind(&RequireCallback, &required_id, &required_seq))); 76 base::Bind(&RequireCallback, &required_id, &required_seq)));
77 layer2->SetSurfaceId(SurfaceId(1)); 77 layer2->SetSurfaceId(SurfaceId(1), 1.f, gfx::Size(1, 1));
78 layer_tree_host2->set_surface_id_namespace(2); 78 layer_tree_host2->set_surface_id_namespace(2);
79 layer_tree_host2->SetRootLayer(layer2); 79 layer_tree_host2->SetRootLayer(layer2);
80 80
81 // Layers haven't been removed, so no sequence should be satisfied. 81 // Layers haven't been removed, so no sequence should be satisfied.
82 EXPECT_TRUE(blank_change.is_null()); 82 EXPECT_TRUE(blank_change.is_null());
83 83
84 SurfaceSequence expected1(1u, 1u); 84 SurfaceSequence expected1(1u, 1u);
85 SurfaceSequence expected2(2u, 1u); 85 SurfaceSequence expected2(2u, 1u);
86 86
87 layer_tree_host2->SetRootLayer(nullptr); 87 layer_tree_host2->SetRootLayer(nullptr);
(...skipping 15 matching lines...) Expand all
103 103
104 // Layer was removed so sequence from first LayerTreeHost should be 104 // Layer was removed so sequence from first LayerTreeHost should be
105 // satisfied. 105 // satisfied.
106 EXPECT_TRUE(blank_change == expected1); 106 EXPECT_TRUE(blank_change == expected1);
107 107
108 // No more SurfaceSequences should have been generated that need to have be 108 // No more SurfaceSequences should have been generated that need to have be
109 // satisfied. 109 // satisfied.
110 EXPECT_EQ(2u, required_seq.size()); 110 EXPECT_EQ(2u, required_seq.size());
111 } 111 }
112 112
113 static void CalcDrawProps(FakeLayerTreeHost* host, float device_scale_factor) {
114 RenderSurfaceLayerList render_surface_layer_list;
115 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs(
116 host->root_layer(), gfx::Size(500, 500), &render_surface_layer_list);
117 inputs.device_scale_factor = device_scale_factor;
118 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
119 }
120
121 // Check that setting content scale on the surface works.
122 TEST_F(SurfaceLayerTest, ScaleSurface) {
123 SurfaceSequence blank_change;
124 SurfaceId required_id;
125 std::set<SurfaceSequence> required_seq;
126 scoped_refptr<SurfaceLayer> layer(SurfaceLayer::Create(
127 base::Bind(&SatisfyCallback, &blank_change),
128 base::Bind(&RequireCallback, &required_id, &required_seq)));
129 gfx::Size surface_size(10, 15);
130 layer->SetSurfaceId(SurfaceId(1), 2.f, surface_size);
131 layer->SetBounds(gfx::Size(25, 45));
132 layer_tree_host_->SetRootLayer(layer);
133
134 CalcDrawProps(layer_tree_host_.get(), 5.f);
135 EXPECT_EQ(2.f, layer->contents_scale_x());
136 EXPECT_EQ(2.f, layer->contents_scale_y());
137 EXPECT_EQ(surface_size.ToString(), layer->content_bounds().ToString());
138
139 layer_tree_host_->SetRootLayer(nullptr);
140 layer_tree_host_.reset();
141 }
142
113 // Check that SurfaceSequence is sent through swap promise. 143 // Check that SurfaceSequence is sent through swap promise.
114 class SurfaceLayerSwapPromise : public LayerTreeTest { 144 class SurfaceLayerSwapPromise : public LayerTreeTest {
115 public: 145 public:
116 SurfaceLayerSwapPromise() 146 SurfaceLayerSwapPromise()
117 : commit_count_(0), sequence_was_satisfied_(false) {} 147 : commit_count_(0), sequence_was_satisfied_(false) {}
118 148
119 void BeginTest() override { 149 void BeginTest() override {
120 layer_tree_host()->set_surface_id_namespace(1); 150 layer_tree_host()->set_surface_id_namespace(1);
121 layer_ = SurfaceLayer::Create( 151 layer_ = SurfaceLayer::Create(
122 base::Bind(&SatisfyCallback, &satisfied_sequence_), 152 base::Bind(&SatisfyCallback, &satisfied_sequence_),
123 base::Bind(&RequireCallback, &required_id_, &required_set_)); 153 base::Bind(&RequireCallback, &required_id_, &required_set_));
124 layer_->SetSurfaceId(SurfaceId(1)); 154 layer_->SetSurfaceId(SurfaceId(1), 1.f, gfx::Size(1, 1));
125 155
126 // Layer hasn't been added to tree so no SurfaceSequence generated yet. 156 // Layer hasn't been added to tree so no SurfaceSequence generated yet.
127 EXPECT_EQ(0u, required_set_.size()); 157 EXPECT_EQ(0u, required_set_.size());
128 158
129 layer_tree_host()->SetRootLayer(layer_); 159 layer_tree_host()->SetRootLayer(layer_);
130 160
131 // Should have SurfaceSequence from first tree. 161 // Should have SurfaceSequence from first tree.
132 SurfaceSequence expected(1u, 1u); 162 SurfaceSequence expected(1u, 1u);
133 EXPECT_TRUE(required_id_ == SurfaceId(1)); 163 EXPECT_TRUE(required_id_ == SurfaceId(1));
134 EXPECT_EQ(1u, required_set_.size()); 164 EXPECT_EQ(1u, required_set_.size());
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 SurfaceId required_id_; 227 SurfaceId required_id_;
198 std::set<SurfaceSequence> required_set_; 228 std::set<SurfaceSequence> required_set_;
199 }; 229 };
200 230
201 // TODO(jbauman): Reenable on single thread once http://crbug.com/421923 is 231 // TODO(jbauman): Reenable on single thread once http://crbug.com/421923 is
202 // fixed. 232 // fixed.
203 MULTI_THREAD_TEST_F(SurfaceLayerSwapPromise); 233 MULTI_THREAD_TEST_F(SurfaceLayerSwapPromise);
204 234
205 } // namespace 235 } // namespace
206 } // namespace cc 236 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/surface_layer.cc ('k') | cc/layers/texture_layer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698