OLD | NEW |
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 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
196 class SurfaceLayerSwapPromiseWithDraw : public SurfaceLayerSwapPromise { | 196 class SurfaceLayerSwapPromiseWithDraw : public SurfaceLayerSwapPromise { |
197 public: | 197 public: |
198 void ChangeTree() override { | 198 void ChangeTree() override { |
199 ++commit_count_; | 199 ++commit_count_; |
200 switch (commit_count_) { | 200 switch (commit_count_) { |
201 case 1: | 201 case 1: |
202 // Remove SurfaceLayer from tree to cause SwapPromise to be created. | 202 // Remove SurfaceLayer from tree to cause SwapPromise to be created. |
203 layer_tree()->SetRootLayer(blank_layer_); | 203 layer_tree()->SetRootLayer(blank_layer_); |
204 break; | 204 break; |
205 case 2: | 205 case 2: |
| 206 EndTest(); |
206 break; | 207 break; |
207 default: | 208 default: |
208 NOTREACHED(); | 209 NOTREACHED(); |
209 break; | 210 break; |
210 } | 211 } |
211 } | 212 } |
212 | 213 |
213 void DisplayReceivedCompositorFrameOnThread( | |
214 const CompositorFrame& frame) override { | |
215 const std::vector<uint32_t>& satisfied = frame.metadata.satisfies_sequences; | |
216 EXPECT_LE(satisfied.size(), 1u); | |
217 if (satisfied.size() == 1) { | |
218 // Eventually the one SurfaceSequence should be satisfied, but only | |
219 // after the layer was removed from the tree, and only once. | |
220 EXPECT_EQ(1u, satisfied[0]); | |
221 EXPECT_LE(1, commit_count_); | |
222 EXPECT_FALSE(sequence_was_satisfied_); | |
223 sequence_was_satisfied_ = true; | |
224 EndTest(); | |
225 } | |
226 } | |
227 | |
228 void AfterTest() override { | 214 void AfterTest() override { |
229 EXPECT_TRUE(required_id_ == SurfaceId(kArbitraryFrameSinkId, | 215 EXPECT_TRUE(required_id_ == SurfaceId(kArbitraryFrameSinkId, |
230 LocalFrameId(1, kArbitraryToken))); | 216 LocalFrameId(1, kArbitraryToken))); |
231 EXPECT_EQ(1u, required_set_.size()); | 217 EXPECT_EQ(1u, required_set_.size()); |
232 // Sequence should have been satisfied through Swap, not with the | 218 EXPECT_TRUE(satisfied_sequence_ == |
233 // callback. | 219 SurfaceSequence(kArbitraryFrameSinkId, 1u)); |
234 EXPECT_FALSE(satisfied_sequence_.is_valid()); | |
235 } | 220 } |
236 }; | 221 }; |
237 | 222 |
238 SINGLE_AND_MULTI_THREAD_TEST_F(SurfaceLayerSwapPromiseWithDraw); | 223 SINGLE_AND_MULTI_THREAD_TEST_F(SurfaceLayerSwapPromiseWithDraw); |
239 | 224 |
240 // Check that SurfaceSequence is sent through swap promise and resolved when | 225 // Check that SurfaceSequence is sent through swap promise and resolved when |
241 // swap fails. | 226 // swap fails. |
242 class SurfaceLayerSwapPromiseWithoutDraw : public SurfaceLayerSwapPromise { | 227 class SurfaceLayerSwapPromiseWithoutDraw : public SurfaceLayerSwapPromise { |
243 public: | 228 public: |
244 SurfaceLayerSwapPromiseWithoutDraw() : SurfaceLayerSwapPromise() {} | 229 SurfaceLayerSwapPromiseWithoutDraw() : SurfaceLayerSwapPromise() {} |
(...skipping 17 matching lines...) Expand all Loading... |
262 default: | 247 default: |
263 EndTest(); | 248 EndTest(); |
264 break; | 249 break; |
265 } | 250 } |
266 } | 251 } |
267 | 252 |
268 void AfterTest() override { | 253 void AfterTest() override { |
269 EXPECT_TRUE(required_id_ == SurfaceId(kArbitraryFrameSinkId, | 254 EXPECT_TRUE(required_id_ == SurfaceId(kArbitraryFrameSinkId, |
270 LocalFrameId(1, kArbitraryToken))); | 255 LocalFrameId(1, kArbitraryToken))); |
271 EXPECT_EQ(1u, required_set_.size()); | 256 EXPECT_EQ(1u, required_set_.size()); |
272 // Sequence should have been satisfied with the callback. | |
273 EXPECT_TRUE(satisfied_sequence_ == | 257 EXPECT_TRUE(satisfied_sequence_ == |
274 SurfaceSequence(kArbitraryFrameSinkId, 1u)); | 258 SurfaceSequence(kArbitraryFrameSinkId, 1u)); |
275 } | 259 } |
276 }; | 260 }; |
277 | 261 |
278 MULTI_THREAD_TEST_F(SurfaceLayerSwapPromiseWithoutDraw); | 262 MULTI_THREAD_TEST_F(SurfaceLayerSwapPromiseWithoutDraw); |
279 | 263 |
280 } // namespace | 264 } // namespace |
281 } // namespace cc | 265 } // namespace cc |
OLD | NEW |