| 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 |