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

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

Issue 2379653006: Replaced cc::SurfaceId::nonce_ with base::UnguessableToken (Closed)
Patch Set: Added static cast to LocalFrameId::hash() to avoid warnings when compiled on Windows Created 4 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
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 <stdint.h> 5 #include <stdint.h>
6 6
7 #include <set> 7 #include <set>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 10 matching lines...) Expand all
21 #include "cc/test/layer_tree_test.h" 21 #include "cc/test/layer_tree_test.h"
22 #include "cc/test/test_task_graph_runner.h" 22 #include "cc/test/test_task_graph_runner.h"
23 #include "cc/trees/layer_tree_host.h" 23 #include "cc/trees/layer_tree_host.h"
24 #include "testing/gmock/include/gmock/gmock.h" 24 #include "testing/gmock/include/gmock/gmock.h"
25 #include "testing/gtest/include/gtest/gtest.h" 25 #include "testing/gtest/include/gtest/gtest.h"
26 26
27 namespace cc { 27 namespace cc {
28 namespace { 28 namespace {
29 29
30 static constexpr FrameSinkId kArbitraryFrameSinkId(1, 1); 30 static constexpr FrameSinkId kArbitraryFrameSinkId(1, 1);
31 static const base::UnguessableToken kArbitraryToken =
32 base::UnguessableToken::Create();
31 33
32 class SurfaceLayerTest : public testing::Test { 34 class SurfaceLayerTest : public testing::Test {
33 protected: 35 protected:
34 void SetUp() override { 36 void SetUp() override {
35 layer_tree_host_ = 37 layer_tree_host_ =
36 FakeLayerTreeHost::Create(&fake_client_, &task_graph_runner_); 38 FakeLayerTreeHost::Create(&fake_client_, &task_graph_runner_);
37 layer_tree_ = layer_tree_host_->GetLayerTree(); 39 layer_tree_ = layer_tree_host_->GetLayerTree();
38 layer_tree_->SetViewportSize(gfx::Size(10, 10)); 40 layer_tree_->SetViewportSize(gfx::Size(10, 10));
39 } 41 }
40 42
(...skipping 25 matching lines...) Expand all
66 // Check that one surface can be referenced by multiple LayerTreeHosts, and 68 // Check that one surface can be referenced by multiple LayerTreeHosts, and
67 // each will create its own SurfaceSequence that's satisfied on destruction. 69 // each will create its own SurfaceSequence that's satisfied on destruction.
68 TEST_F(SurfaceLayerTest, MultipleFramesOneSurface) { 70 TEST_F(SurfaceLayerTest, MultipleFramesOneSurface) {
69 SurfaceSequence blank_change; // Receives sequence if commit doesn't happen. 71 SurfaceSequence blank_change; // Receives sequence if commit doesn't happen.
70 72
71 SurfaceId required_id; 73 SurfaceId required_id;
72 std::set<SurfaceSequence> required_seq; 74 std::set<SurfaceSequence> required_seq;
73 scoped_refptr<SurfaceLayer> layer(SurfaceLayer::Create( 75 scoped_refptr<SurfaceLayer> layer(SurfaceLayer::Create(
74 base::Bind(&SatisfyCallback, &blank_change), 76 base::Bind(&SatisfyCallback, &blank_change),
75 base::Bind(&RequireCallback, &required_id, &required_seq))); 77 base::Bind(&RequireCallback, &required_id, &required_seq)));
76 layer->SetSurfaceId(SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, 0)), 1.f, 78 layer->SetSurfaceId(
77 gfx::Size(1, 1)); 79 SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, kArbitraryToken)), 1.f,
80 gfx::Size(1, 1));
78 layer_tree_host_->GetSurfaceSequenceGenerator()->set_frame_sink_id( 81 layer_tree_host_->GetSurfaceSequenceGenerator()->set_frame_sink_id(
79 FrameSinkId(1, 1)); 82 FrameSinkId(1, 1));
80 layer_tree_->SetRootLayer(layer); 83 layer_tree_->SetRootLayer(layer);
81 84
82 std::unique_ptr<FakeLayerTreeHost> layer_tree_host2 = 85 std::unique_ptr<FakeLayerTreeHost> layer_tree_host2 =
83 FakeLayerTreeHost::Create(&fake_client_, &task_graph_runner_); 86 FakeLayerTreeHost::Create(&fake_client_, &task_graph_runner_);
84 scoped_refptr<SurfaceLayer> layer2(SurfaceLayer::Create( 87 scoped_refptr<SurfaceLayer> layer2(SurfaceLayer::Create(
85 base::Bind(&SatisfyCallback, &blank_change), 88 base::Bind(&SatisfyCallback, &blank_change),
86 base::Bind(&RequireCallback, &required_id, &required_seq))); 89 base::Bind(&RequireCallback, &required_id, &required_seq)));
87 layer2->SetSurfaceId(SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, 0)), 90 layer2->SetSurfaceId(
88 1.f, gfx::Size(1, 1)); 91 SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, kArbitraryToken)), 1.f,
92 gfx::Size(1, 1));
89 layer_tree_host2->GetSurfaceSequenceGenerator()->set_frame_sink_id( 93 layer_tree_host2->GetSurfaceSequenceGenerator()->set_frame_sink_id(
90 FrameSinkId(2, 2)); 94 FrameSinkId(2, 2));
91 layer_tree_host2->SetRootLayer(layer2); 95 layer_tree_host2->SetRootLayer(layer2);
92 96
93 // Layers haven't been removed, so no sequence should be satisfied. 97 // Layers haven't been removed, so no sequence should be satisfied.
94 EXPECT_TRUE(blank_change.is_null()); 98 EXPECT_TRUE(blank_change.is_null());
95 99
96 SurfaceSequence expected1(FrameSinkId(1, 1), 1u); 100 SurfaceSequence expected1(FrameSinkId(1, 1), 1u);
97 SurfaceSequence expected2(FrameSinkId(2, 2), 1u); 101 SurfaceSequence expected2(FrameSinkId(2, 2), 1u);
98 102
99 layer_tree_host2->SetRootLayer(nullptr); 103 layer_tree_host2->SetRootLayer(nullptr);
100 layer_tree_host2.reset(); 104 layer_tree_host2.reset();
101 105
102 // Layer was removed so sequence from second LayerTreeHost should be 106 // Layer was removed so sequence from second LayerTreeHost should be
103 // satisfied. 107 // satisfied.
104 EXPECT_TRUE(blank_change == expected2); 108 EXPECT_TRUE(blank_change == expected2);
105 109
106 // Set of sequences that need to be satisfied should include sequences from 110 // Set of sequences that need to be satisfied should include sequences from
107 // both trees. 111 // both trees.
108 EXPECT_TRUE(required_id == 112 EXPECT_TRUE(required_id == SurfaceId(kArbitraryFrameSinkId,
109 SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, 0))); 113 LocalFrameId(1, kArbitraryToken)));
110 EXPECT_EQ(2u, required_seq.size()); 114 EXPECT_EQ(2u, required_seq.size());
111 EXPECT_TRUE(required_seq.count(expected1)); 115 EXPECT_TRUE(required_seq.count(expected1));
112 EXPECT_TRUE(required_seq.count(expected2)); 116 EXPECT_TRUE(required_seq.count(expected2));
113 117
114 layer_tree_->SetRootLayer(nullptr); 118 layer_tree_->SetRootLayer(nullptr);
115 layer_tree_host_.reset(); 119 layer_tree_host_.reset();
116 120
117 // Layer was removed so sequence from first LayerTreeHost should be 121 // Layer was removed so sequence from first LayerTreeHost should be
118 // satisfied. 122 // satisfied.
119 EXPECT_TRUE(blank_change == expected1); 123 EXPECT_TRUE(blank_change == expected1);
120 124
121 // No more SurfaceSequences should have been generated that need to have be 125 // No more SurfaceSequences should have been generated that need to have be
122 // satisfied. 126 // satisfied.
123 EXPECT_EQ(2u, required_seq.size()); 127 EXPECT_EQ(2u, required_seq.size());
124 } 128 }
125 129
126 // Check that SurfaceSequence is sent through swap promise. 130 // Check that SurfaceSequence is sent through swap promise.
127 class SurfaceLayerSwapPromise : public LayerTreeTest { 131 class SurfaceLayerSwapPromise : public LayerTreeTest {
128 public: 132 public:
129 SurfaceLayerSwapPromise() 133 SurfaceLayerSwapPromise()
130 : commit_count_(0), sequence_was_satisfied_(false) {} 134 : commit_count_(0), sequence_was_satisfied_(false) {}
131 135
132 void BeginTest() override { 136 void BeginTest() override {
133 layer_tree_host()->GetSurfaceSequenceGenerator()->set_frame_sink_id( 137 layer_tree_host()->GetSurfaceSequenceGenerator()->set_frame_sink_id(
134 FrameSinkId(1, 1)); 138 FrameSinkId(1, 1));
135 layer_ = SurfaceLayer::Create( 139 layer_ = SurfaceLayer::Create(
136 base::Bind(&SatisfyCallback, &satisfied_sequence_), 140 base::Bind(&SatisfyCallback, &satisfied_sequence_),
137 base::Bind(&RequireCallback, &required_id_, &required_set_)); 141 base::Bind(&RequireCallback, &required_id_, &required_set_));
138 layer_->SetSurfaceId(SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, 0)), 142 layer_->SetSurfaceId(
139 1.f, gfx::Size(1, 1)); 143 SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, kArbitraryToken)), 1.f,
144 gfx::Size(1, 1));
140 145
141 // Layer hasn't been added to tree so no SurfaceSequence generated yet. 146 // Layer hasn't been added to tree so no SurfaceSequence generated yet.
142 EXPECT_EQ(0u, required_set_.size()); 147 EXPECT_EQ(0u, required_set_.size());
143 148
144 layer_tree()->SetRootLayer(layer_); 149 layer_tree()->SetRootLayer(layer_);
145 150
146 // Should have SurfaceSequence from first tree. 151 // Should have SurfaceSequence from first tree.
147 SurfaceSequence expected(kArbitraryFrameSinkId, 1u); 152 SurfaceSequence expected(kArbitraryFrameSinkId, 1u);
148 EXPECT_TRUE(required_id_ == 153 EXPECT_TRUE(required_id_ == SurfaceId(kArbitraryFrameSinkId,
149 SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, 0))); 154 LocalFrameId(1, kArbitraryToken)));
150 EXPECT_EQ(1u, required_set_.size()); 155 EXPECT_EQ(1u, required_set_.size());
151 EXPECT_TRUE(required_set_.count(expected)); 156 EXPECT_TRUE(required_set_.count(expected));
152 157
153 gfx::Size bounds(100, 100); 158 gfx::Size bounds(100, 100);
154 layer_tree()->SetViewportSize(bounds); 159 layer_tree()->SetViewportSize(bounds);
155 160
156 blank_layer_ = SolidColorLayer::Create(); 161 blank_layer_ = SolidColorLayer::Create();
157 blank_layer_->SetIsDrawable(true); 162 blank_layer_->SetIsDrawable(true);
158 blank_layer_->SetBounds(gfx::Size(10, 10)); 163 blank_layer_->SetBounds(gfx::Size(10, 10));
159 164
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 // after the layer was removed from the tree, and only once. 211 // after the layer was removed from the tree, and only once.
207 EXPECT_EQ(1u, satisfied[0]); 212 EXPECT_EQ(1u, satisfied[0]);
208 EXPECT_LE(1, commit_count_); 213 EXPECT_LE(1, commit_count_);
209 EXPECT_FALSE(sequence_was_satisfied_); 214 EXPECT_FALSE(sequence_was_satisfied_);
210 sequence_was_satisfied_ = true; 215 sequence_was_satisfied_ = true;
211 EndTest(); 216 EndTest();
212 } 217 }
213 } 218 }
214 219
215 void AfterTest() override { 220 void AfterTest() override {
216 EXPECT_TRUE(required_id_ == 221 EXPECT_TRUE(required_id_ == SurfaceId(kArbitraryFrameSinkId,
217 SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, 0))); 222 LocalFrameId(1, kArbitraryToken)));
218 EXPECT_EQ(1u, required_set_.size()); 223 EXPECT_EQ(1u, required_set_.size());
219 // Sequence should have been satisfied through Swap, not with the 224 // Sequence should have been satisfied through Swap, not with the
220 // callback. 225 // callback.
221 EXPECT_TRUE(satisfied_sequence_.is_null()); 226 EXPECT_TRUE(satisfied_sequence_.is_null());
222 } 227 }
223 }; 228 };
224 229
225 SINGLE_AND_MULTI_THREAD_TEST_F(SurfaceLayerSwapPromiseWithDraw); 230 SINGLE_AND_MULTI_THREAD_TEST_F(SurfaceLayerSwapPromiseWithDraw);
226 231
227 // Check that SurfaceSequence is sent through swap promise and resolved when 232 // Check that SurfaceSequence is sent through swap promise and resolved when
(...skipping 18 matching lines...) Expand all
246 case 2: 251 case 2:
247 layer_tree_host()->SetNeedsCommit(); 252 layer_tree_host()->SetNeedsCommit();
248 break; 253 break;
249 default: 254 default:
250 EndTest(); 255 EndTest();
251 break; 256 break;
252 } 257 }
253 } 258 }
254 259
255 void AfterTest() override { 260 void AfterTest() override {
256 EXPECT_TRUE(required_id_ == 261 EXPECT_TRUE(required_id_ == SurfaceId(kArbitraryFrameSinkId,
257 SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, 0))); 262 LocalFrameId(1, kArbitraryToken)));
258 EXPECT_EQ(1u, required_set_.size()); 263 EXPECT_EQ(1u, required_set_.size());
259 // Sequence should have been satisfied with the callback. 264 // Sequence should have been satisfied with the callback.
260 EXPECT_TRUE(satisfied_sequence_ == 265 EXPECT_TRUE(satisfied_sequence_ ==
261 SurfaceSequence(kArbitraryFrameSinkId, 1u)); 266 SurfaceSequence(kArbitraryFrameSinkId, 1u));
262 } 267 }
263 }; 268 };
264 269
265 MULTI_THREAD_TEST_F(SurfaceLayerSwapPromiseWithoutDraw); 270 MULTI_THREAD_TEST_F(SurfaceLayerSwapPromiseWithoutDraw);
266 271
267 } // namespace 272 } // namespace
268 } // namespace cc 273 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698