| OLD | NEW |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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 "cc/tiles/checker_image_tracker.h" | 5 #include "cc/tiles/checker_image_tracker.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
| 9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
| 10 #include "base/threading/thread_task_runner_handle.h" | 10 #include "base/threading/thread_task_runner_handle.h" |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 306 | 306 |
| 307 CheckerImageTracker::ImageDecodeQueue image_decode_queue; | 307 CheckerImageTracker::ImageDecodeQueue image_decode_queue; |
| 308 image_decode_queue = | 308 image_decode_queue = |
| 309 BuildImageDecodeQueue(draw_images, WhichTree::PENDING_TREE); | 309 BuildImageDecodeQueue(draw_images, WhichTree::PENDING_TREE); |
| 310 EXPECT_EQ(image_decode_queue.size(), 2U); | 310 EXPECT_EQ(image_decode_queue.size(), 2U); |
| 311 checker_image_tracker_->ScheduleImageDecodeQueue( | 311 checker_image_tracker_->ScheduleImageDecodeQueue( |
| 312 std::move(image_decode_queue)); | 312 std::move(image_decode_queue)); |
| 313 | 313 |
| 314 // Only the first image in the queue should have been decoded. | 314 // Only the first image in the queue should have been decoded. |
| 315 EXPECT_EQ(image_controller_.decodes_requested().size(), 1U); | 315 EXPECT_EQ(image_controller_.decodes_requested().size(), 1U); |
| 316 EXPECT_EQ(image_controller_.decodes_requested().count( | 316 EXPECT_EQ( |
| 317 checkerable_image1.image()->uniqueID()), | 317 image_controller_.decodes_requested().count( |
| 318 1U); | 318 static_cast<PaintImage::Id>(checkerable_image1.image()->uniqueID())), |
| 319 1U); |
| 319 | 320 |
| 320 // Rebuild the queue before the tracker is notified of decode completion, | 321 // Rebuild the queue before the tracker is notified of decode completion, |
| 321 // removing the second image and adding a new one. | 322 // removing the second image and adding a new one. |
| 322 DrawImage checkerable_image3 = CreateImage(ImageType::CHECKERABLE); | 323 DrawImage checkerable_image3 = CreateImage(ImageType::CHECKERABLE); |
| 323 draw_images = {checkerable_image1, checkerable_image3}; | 324 draw_images = {checkerable_image1, checkerable_image3}; |
| 324 image_decode_queue = | 325 image_decode_queue = |
| 325 BuildImageDecodeQueue(draw_images, WhichTree::PENDING_TREE); | 326 BuildImageDecodeQueue(draw_images, WhichTree::PENDING_TREE); |
| 326 | 327 |
| 327 // The queue has 2 decodes because we are still checkering on the first one. | 328 // The queue has 2 decodes because we are still checkering on the first one. |
| 328 EXPECT_EQ(image_decode_queue.size(), 2U); | 329 EXPECT_EQ(image_decode_queue.size(), 2U); |
| 329 checker_image_tracker_->ScheduleImageDecodeQueue( | 330 checker_image_tracker_->ScheduleImageDecodeQueue( |
| 330 std::move(image_decode_queue)); | 331 std::move(image_decode_queue)); |
| 331 | 332 |
| 332 // We still have only one decode because the tracker keeps only one decode | 333 // We still have only one decode because the tracker keeps only one decode |
| 333 // pending at a time. | 334 // pending at a time. |
| 334 EXPECT_EQ(image_controller_.decodes_requested().size(), 1U); | 335 EXPECT_EQ(image_controller_.decodes_requested().size(), 1U); |
| 335 EXPECT_EQ(image_controller_.decodes_requested().count( | 336 EXPECT_EQ( |
| 336 checkerable_image1.image()->uniqueID()), | 337 image_controller_.decodes_requested().count( |
| 337 1U); | 338 static_cast<PaintImage::Id>(checkerable_image1.image()->uniqueID())), |
| 339 1U); |
| 338 | 340 |
| 339 // Trigger completion for all decodes. Only 2 images should have been decoded | 341 // Trigger completion for all decodes. Only 2 images should have been decoded |
| 340 // since the second image was cancelled. | 342 // since the second image was cancelled. |
| 341 base::RunLoop().RunUntilIdle(); | 343 base::RunLoop().RunUntilIdle(); |
| 342 EXPECT_EQ(image_controller_.decodes_requested().size(), 2U); | 344 EXPECT_EQ(image_controller_.decodes_requested().size(), 2U); |
| 343 EXPECT_EQ(image_controller_.decodes_requested().count( | 345 EXPECT_EQ( |
| 344 checkerable_image3.image()->uniqueID()), | 346 image_controller_.decodes_requested().count( |
| 345 1U); | 347 static_cast<PaintImage::Id>(checkerable_image3.image()->uniqueID())), |
| 348 1U); |
| 346 EXPECT_EQ(image_controller_.num_of_locked_images(), 2); | 349 EXPECT_EQ(image_controller_.num_of_locked_images(), 2); |
| 347 } | 350 } |
| 348 | 351 |
| 349 TEST_F(CheckerImageTrackerTest, ClearsTracker) { | 352 TEST_F(CheckerImageTrackerTest, ClearsTracker) { |
| 350 SetUpTracker(true); | 353 SetUpTracker(true); |
| 351 | 354 |
| 352 DrawImage checkerable_image = CreateImage(ImageType::CHECKERABLE); | 355 DrawImage checkerable_image = CreateImage(ImageType::CHECKERABLE); |
| 353 CheckerImageTracker::ImageDecodeQueue image_decode_queue = | 356 CheckerImageTracker::ImageDecodeQueue image_decode_queue = |
| 354 BuildImageDecodeQueue({checkerable_image}, WhichTree::PENDING_TREE); | 357 BuildImageDecodeQueue({checkerable_image}, WhichTree::PENDING_TREE); |
| 355 EXPECT_EQ(image_decode_queue.size(), 1U); | 358 EXPECT_EQ(image_decode_queue.size(), 1U); |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 526 CheckerImageTracker::DecodeType::kPreDecode); | 529 CheckerImageTracker::DecodeType::kPreDecode); |
| 527 base::RunLoop().RunUntilIdle(); | 530 base::RunLoop().RunUntilIdle(); |
| 528 EXPECT_EQ(image_controller_.decoded_images()[0], image1); | 531 EXPECT_EQ(image_controller_.decoded_images()[0], image1); |
| 529 EXPECT_EQ(image_controller_.decoded_images()[1], image2); | 532 EXPECT_EQ(image_controller_.decoded_images()[1], image2); |
| 530 EXPECT_EQ(image_controller_.decoded_images()[2], image3); | 533 EXPECT_EQ(image_controller_.decoded_images()[2], image3); |
| 531 EXPECT_EQ(image_controller_.decoded_images()[3], image4); | 534 EXPECT_EQ(image_controller_.decoded_images()[3], image4); |
| 532 } | 535 } |
| 533 | 536 |
| 534 } // namespace | 537 } // namespace |
| 535 } // namespace cc | 538 } // namespace cc |
| OLD | NEW |