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

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

Issue 2379653006: Replaced cc::SurfaceId::nonce_ with base::UnguessableToken (Closed)
Patch Set: Changed comments in surface_id.h to reflect the change Created 4 years, 2 months 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 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 // Check that one surface can be referenced by multiple LayerTreeHosts, and 66 // Check that one surface can be referenced by multiple LayerTreeHosts, and
67 // each will create its own SurfaceSequence that's satisfied on destruction. 67 // each will create its own SurfaceSequence that's satisfied on destruction.
68 TEST_F(SurfaceLayerTest, MultipleFramesOneSurface) { 68 TEST_F(SurfaceLayerTest, MultipleFramesOneSurface) {
69 SurfaceSequence blank_change; // Receives sequence if commit doesn't happen. 69 SurfaceSequence blank_change; // Receives sequence if commit doesn't happen.
70 70
71 SurfaceId required_id; 71 SurfaceId required_id;
72 std::set<SurfaceSequence> required_seq; 72 std::set<SurfaceSequence> required_seq;
73 scoped_refptr<SurfaceLayer> layer(SurfaceLayer::Create( 73 scoped_refptr<SurfaceLayer> layer(SurfaceLayer::Create(
74 base::Bind(&SatisfyCallback, &blank_change), 74 base::Bind(&SatisfyCallback, &blank_change),
75 base::Bind(&RequireCallback, &required_id, &required_seq))); 75 base::Bind(&RequireCallback, &required_id, &required_seq)));
76 layer->SetSurfaceId(SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, 0)), 1.f, 76 layer->SetSurfaceId(SurfaceId(kArbitraryFrameSinkId,
77 gfx::Size(1, 1)); 77 LocalFrameId(1, base::UnguessableToken())),
78 1.f, gfx::Size(1, 1));
78 layer_tree_host_->GetSurfaceSequenceGenerator()->set_frame_sink_id( 79 layer_tree_host_->GetSurfaceSequenceGenerator()->set_frame_sink_id(
79 FrameSinkId(1, 1)); 80 FrameSinkId(1, 1));
80 layer_tree_->SetRootLayer(layer); 81 layer_tree_->SetRootLayer(layer);
81 82
82 std::unique_ptr<FakeLayerTreeHost> layer_tree_host2 = 83 std::unique_ptr<FakeLayerTreeHost> layer_tree_host2 =
83 FakeLayerTreeHost::Create(&fake_client_, &task_graph_runner_); 84 FakeLayerTreeHost::Create(&fake_client_, &task_graph_runner_);
84 scoped_refptr<SurfaceLayer> layer2(SurfaceLayer::Create( 85 scoped_refptr<SurfaceLayer> layer2(SurfaceLayer::Create(
85 base::Bind(&SatisfyCallback, &blank_change), 86 base::Bind(&SatisfyCallback, &blank_change),
86 base::Bind(&RequireCallback, &required_id, &required_seq))); 87 base::Bind(&RequireCallback, &required_id, &required_seq)));
87 layer2->SetSurfaceId(SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, 0)), 88 layer2->SetSurfaceId(SurfaceId(kArbitraryFrameSinkId,
89 LocalFrameId(1, base::UnguessableToken())),
88 1.f, gfx::Size(1, 1)); 90 1.f, gfx::Size(1, 1));
89 layer_tree_host2->GetSurfaceSequenceGenerator()->set_frame_sink_id( 91 layer_tree_host2->GetSurfaceSequenceGenerator()->set_frame_sink_id(
90 FrameSinkId(2, 2)); 92 FrameSinkId(2, 2));
91 layer_tree_host2->SetRootLayer(layer2); 93 layer_tree_host2->SetRootLayer(layer2);
92 94
93 // Layers haven't been removed, so no sequence should be satisfied. 95 // Layers haven't been removed, so no sequence should be satisfied.
94 EXPECT_TRUE(blank_change.is_null()); 96 EXPECT_TRUE(blank_change.is_null());
95 97
96 SurfaceSequence expected1(FrameSinkId(1, 1), 1u); 98 SurfaceSequence expected1(FrameSinkId(1, 1), 1u);
97 SurfaceSequence expected2(FrameSinkId(2, 2), 1u); 99 SurfaceSequence expected2(FrameSinkId(2, 2), 1u);
98 100
99 layer_tree_host2->SetRootLayer(nullptr); 101 layer_tree_host2->SetRootLayer(nullptr);
100 layer_tree_host2.reset(); 102 layer_tree_host2.reset();
101 103
102 // Layer was removed so sequence from second LayerTreeHost should be 104 // Layer was removed so sequence from second LayerTreeHost should be
103 // satisfied. 105 // satisfied.
104 EXPECT_TRUE(blank_change == expected2); 106 EXPECT_TRUE(blank_change == expected2);
105 107
106 // Set of sequences that need to be satisfied should include sequences from 108 // Set of sequences that need to be satisfied should include sequences from
107 // both trees. 109 // both trees.
108 EXPECT_TRUE(required_id == 110 EXPECT_TRUE(required_id ==
109 SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, 0))); 111 SurfaceId(kArbitraryFrameSinkId,
112 LocalFrameId(1, base::UnguessableToken())));
110 EXPECT_EQ(2u, required_seq.size()); 113 EXPECT_EQ(2u, required_seq.size());
111 EXPECT_TRUE(required_seq.count(expected1)); 114 EXPECT_TRUE(required_seq.count(expected1));
112 EXPECT_TRUE(required_seq.count(expected2)); 115 EXPECT_TRUE(required_seq.count(expected2));
113 116
114 layer_tree_->SetRootLayer(nullptr); 117 layer_tree_->SetRootLayer(nullptr);
115 layer_tree_host_.reset(); 118 layer_tree_host_.reset();
116 119
117 // Layer was removed so sequence from first LayerTreeHost should be 120 // Layer was removed so sequence from first LayerTreeHost should be
118 // satisfied. 121 // satisfied.
119 EXPECT_TRUE(blank_change == expected1); 122 EXPECT_TRUE(blank_change == expected1);
120 123
121 // No more SurfaceSequences should have been generated that need to have be 124 // No more SurfaceSequences should have been generated that need to have be
122 // satisfied. 125 // satisfied.
123 EXPECT_EQ(2u, required_seq.size()); 126 EXPECT_EQ(2u, required_seq.size());
124 } 127 }
125 128
126 // Check that SurfaceSequence is sent through swap promise. 129 // Check that SurfaceSequence is sent through swap promise.
127 class SurfaceLayerSwapPromise : public LayerTreeTest { 130 class SurfaceLayerSwapPromise : public LayerTreeTest {
128 public: 131 public:
129 SurfaceLayerSwapPromise() 132 SurfaceLayerSwapPromise()
130 : commit_count_(0), sequence_was_satisfied_(false) {} 133 : commit_count_(0), sequence_was_satisfied_(false) {}
131 134
132 void BeginTest() override { 135 void BeginTest() override {
133 layer_tree_host()->GetSurfaceSequenceGenerator()->set_frame_sink_id( 136 layer_tree_host()->GetSurfaceSequenceGenerator()->set_frame_sink_id(
134 FrameSinkId(1, 1)); 137 FrameSinkId(1, 1));
135 layer_ = SurfaceLayer::Create( 138 layer_ = SurfaceLayer::Create(
136 base::Bind(&SatisfyCallback, &satisfied_sequence_), 139 base::Bind(&SatisfyCallback, &satisfied_sequence_),
137 base::Bind(&RequireCallback, &required_id_, &required_set_)); 140 base::Bind(&RequireCallback, &required_id_, &required_set_));
138 layer_->SetSurfaceId(SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, 0)), 141 layer_->SetSurfaceId(SurfaceId(kArbitraryFrameSinkId,
142 LocalFrameId(1, base::UnguessableToken())),
139 1.f, gfx::Size(1, 1)); 143 1.f, gfx::Size(1, 1));
140 144
141 // Layer hasn't been added to tree so no SurfaceSequence generated yet. 145 // Layer hasn't been added to tree so no SurfaceSequence generated yet.
142 EXPECT_EQ(0u, required_set_.size()); 146 EXPECT_EQ(0u, required_set_.size());
143 147
144 layer_tree()->SetRootLayer(layer_); 148 layer_tree()->SetRootLayer(layer_);
145 149
146 // Should have SurfaceSequence from first tree. 150 // Should have SurfaceSequence from first tree.
147 SurfaceSequence expected(kArbitraryFrameSinkId, 1u); 151 SurfaceSequence expected(kArbitraryFrameSinkId, 1u);
148 EXPECT_TRUE(required_id_ == 152 EXPECT_TRUE(required_id_ ==
149 SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, 0))); 153 SurfaceId(kArbitraryFrameSinkId,
154 LocalFrameId(1, base::UnguessableToken())));
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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
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_ ==
217 SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, 0))); 222 SurfaceId(kArbitraryFrameSinkId,
223 LocalFrameId(1, base::UnguessableToken())));
218 EXPECT_EQ(1u, required_set_.size()); 224 EXPECT_EQ(1u, required_set_.size());
219 // Sequence should have been satisfied through Swap, not with the 225 // Sequence should have been satisfied through Swap, not with the
220 // callback. 226 // callback.
221 EXPECT_TRUE(satisfied_sequence_.is_null()); 227 EXPECT_TRUE(satisfied_sequence_.is_null());
222 } 228 }
223 }; 229 };
224 230
225 SINGLE_AND_MULTI_THREAD_TEST_F(SurfaceLayerSwapPromiseWithDraw); 231 SINGLE_AND_MULTI_THREAD_TEST_F(SurfaceLayerSwapPromiseWithDraw);
226 232
227 // Check that SurfaceSequence is sent through swap promise and resolved when 233 // Check that SurfaceSequence is sent through swap promise and resolved when
(...skipping 19 matching lines...) Expand all
247 layer_tree_host()->SetNeedsCommit(); 253 layer_tree_host()->SetNeedsCommit();
248 break; 254 break;
249 default: 255 default:
250 EndTest(); 256 EndTest();
251 break; 257 break;
252 } 258 }
253 } 259 }
254 260
255 void AfterTest() override { 261 void AfterTest() override {
256 EXPECT_TRUE(required_id_ == 262 EXPECT_TRUE(required_id_ ==
257 SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, 0))); 263 SurfaceId(kArbitraryFrameSinkId,
264 LocalFrameId(1, base::UnguessableToken())));
258 EXPECT_EQ(1u, required_set_.size()); 265 EXPECT_EQ(1u, required_set_.size());
259 // Sequence should have been satisfied with the callback. 266 // Sequence should have been satisfied with the callback.
260 EXPECT_TRUE(satisfied_sequence_ == 267 EXPECT_TRUE(satisfied_sequence_ ==
261 SurfaceSequence(kArbitraryFrameSinkId, 1u)); 268 SurfaceSequence(kArbitraryFrameSinkId, 1u));
262 } 269 }
263 }; 270 };
264 271
265 MULTI_THREAD_TEST_F(SurfaceLayerSwapPromiseWithoutDraw); 272 MULTI_THREAD_TEST_F(SurfaceLayerSwapPromiseWithoutDraw);
266 273
267 } // namespace 274 } // namespace
268 } // namespace cc 275 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698