| Index: cc/tiles/checker_image_tracker_unittest.cc
|
| diff --git a/cc/tiles/checker_image_tracker_unittest.cc b/cc/tiles/checker_image_tracker_unittest.cc
|
| index aee6773bb9c84edff6e9cd4cf89e4f7bceeb0fb3..16b6ebda4905be6d83c09a0c2c6df9d2c93094d1 100644
|
| --- a/cc/tiles/checker_image_tracker_unittest.cc
|
| +++ b/cc/tiles/checker_image_tracker_unittest.cc
|
| @@ -85,6 +85,8 @@ class CheckerImageTrackerTest : public testing::Test,
|
| void SetUpTracker(bool checker_images_enabled) {
|
| checker_image_tracker_ = base::MakeUnique<CheckerImageTracker>(
|
| &image_controller_, this, checker_images_enabled);
|
| + checker_image_tracker_->SetMaxDecodePriorityAllowed(
|
| + CheckerImageTracker::DecodeType::kPreDecode);
|
| }
|
|
|
| void TearDown() override { checker_image_tracker_.reset(); }
|
| @@ -122,7 +124,8 @@ class CheckerImageTrackerTest : public testing::Test,
|
| CheckerImageTracker::ImageDecodeQueue decode_queue;
|
| for (const auto& image : images) {
|
| if (checker_image_tracker_->ShouldCheckerImage(image, tree))
|
| - decode_queue.push_back(image.paint_image());
|
| + decode_queue.push_back(CheckerImageTracker::ImageDecodeRequest(
|
| + image.paint_image(), CheckerImageTracker::DecodeType::kRaster));
|
| }
|
| return decode_queue;
|
| }
|
| @@ -170,8 +173,8 @@ TEST_F(CheckerImageTrackerTest, UpdatesImagesAtomically) {
|
| BuildImageDecodeQueue(draw_images, WhichTree::PENDING_TREE);
|
|
|
| ASSERT_EQ(2u, image_decode_queue.size());
|
| - EXPECT_EQ(checkerable_image.paint_image(), image_decode_queue[0]);
|
| - EXPECT_EQ(checkerable_image.paint_image(), image_decode_queue[1]);
|
| + EXPECT_EQ(checkerable_image.paint_image(), image_decode_queue[0].paint_image);
|
| + EXPECT_EQ(checkerable_image.paint_image(), image_decode_queue[1].paint_image);
|
|
|
| checker_image_tracker_->ScheduleImageDecodeQueue(image_decode_queue);
|
| EXPECT_EQ(image_controller_.num_of_locked_images(), 1);
|
| @@ -416,7 +419,7 @@ TEST_F(CheckerImageTrackerTest, CheckersOnlyStaticCompletedImages) {
|
| CheckerImageTracker::ImageDecodeQueue image_decode_queue =
|
| BuildImageDecodeQueue(draw_images, WhichTree::PENDING_TREE);
|
| EXPECT_EQ(image_decode_queue.size(), 1U);
|
| - EXPECT_EQ(image_decode_queue[0], static_image.paint_image());
|
| + EXPECT_EQ(image_decode_queue[0].paint_image, static_image.paint_image());
|
|
|
| // Change the partial image to complete and try again. It should sstill not
|
| // be checkered.
|
| @@ -488,5 +491,45 @@ TEST_F(CheckerImageTrackerTest, DontCheckerMultiPartImages) {
|
| multi_part_image, WhichTree::PENDING_TREE));
|
| }
|
|
|
| +TEST_F(CheckerImageTrackerTest, RespectsDecodePriority) {
|
| + SetUpTracker(true);
|
| +
|
| + DrawImage image1 = CreateImage(ImageType::CHECKERABLE);
|
| + DrawImage image2 = CreateImage(ImageType::CHECKERABLE);
|
| + DrawImage image3 = CreateImage(ImageType::CHECKERABLE);
|
| + DrawImage image4 = CreateImage(ImageType::CHECKERABLE);
|
| + CheckerImageTracker::ImageDecodeQueue image_decode_queue =
|
| + BuildImageDecodeQueue({image1, image2, image3, image4},
|
| + WhichTree::PENDING_TREE);
|
| +
|
| + // Mark the last 2 images as pre-decode.
|
| + EXPECT_EQ(image_decode_queue.size(), 4u);
|
| + image_decode_queue[2].type = CheckerImageTracker::DecodeType::kPreDecode;
|
| + image_decode_queue[3].type = CheckerImageTracker::DecodeType::kPreDecode;
|
| +
|
| + // No decodes allowed. Nothing should be scheduled.
|
| + EXPECT_EQ(image_controller_.decoded_images().size(), 0u);
|
| + checker_image_tracker_->SetNoDecodesAllowed();
|
| + checker_image_tracker_->ScheduleImageDecodeQueue(image_decode_queue);
|
| + EXPECT_EQ(image_controller_.decoded_images().size(), 0u);
|
| +
|
| + // Raster decodes allowed. Only those should be scheduled.
|
| + checker_image_tracker_->SetMaxDecodePriorityAllowed(
|
| + CheckerImageTracker::DecodeType::kRaster);
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_EQ(image_controller_.decoded_images().size(), 2u);
|
| + EXPECT_EQ(image_controller_.decoded_images()[0], image1);
|
| + EXPECT_EQ(image_controller_.decoded_images()[1], image2);
|
| +
|
| + // All decodes allowed. The complete queue should be flushed.
|
| + checker_image_tracker_->SetMaxDecodePriorityAllowed(
|
| + CheckerImageTracker::DecodeType::kPreDecode);
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_EQ(image_controller_.decoded_images()[0], image1);
|
| + EXPECT_EQ(image_controller_.decoded_images()[1], image2);
|
| + EXPECT_EQ(image_controller_.decoded_images()[2], image3);
|
| + EXPECT_EQ(image_controller_.decoded_images()[3], image4);
|
| +}
|
| +
|
| } // namespace
|
| } // namespace cc
|
|
|