| 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 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 checker_image_tracker_ = base::MakeUnique<CheckerImageTracker>( | 86 checker_image_tracker_ = base::MakeUnique<CheckerImageTracker>( |
| 87 &image_controller_, this, checker_images_enabled); | 87 &image_controller_, this, checker_images_enabled); |
| 88 } | 88 } |
| 89 | 89 |
| 90 void TearDown() override { checker_image_tracker_.reset(); } | 90 void TearDown() override { checker_image_tracker_.reset(); } |
| 91 | 91 |
| 92 DrawImage CreateImage( | 92 DrawImage CreateImage( |
| 93 ImageType image_type, | 93 ImageType image_type, |
| 94 PaintImage::AnimationType animation = PaintImage::AnimationType::STATIC, | 94 PaintImage::AnimationType animation = PaintImage::AnimationType::STATIC, |
| 95 PaintImage::CompletionState completion = | 95 PaintImage::CompletionState completion = |
| 96 PaintImage::CompletionState::DONE) { | 96 PaintImage::CompletionState::DONE, |
| 97 bool is_multipart = false) { |
| 97 int dimension = 0; | 98 int dimension = 0; |
| 98 switch (image_type) { | 99 switch (image_type) { |
| 99 case ImageType::CHECKERABLE: | 100 case ImageType::CHECKERABLE: |
| 100 dimension = kCheckerableImageDimension; | 101 dimension = kCheckerableImageDimension; |
| 101 break; | 102 break; |
| 102 case ImageType::SMALL_NON_CHECKERABLE: | 103 case ImageType::SMALL_NON_CHECKERABLE: |
| 103 dimension = kSmallNonCheckerableImageDimension; | 104 dimension = kSmallNonCheckerableImageDimension; |
| 104 break; | 105 break; |
| 105 case ImageType::LARGE_NON_CHECKERABLE: | 106 case ImageType::LARGE_NON_CHECKERABLE: |
| 106 dimension = kLargeNonCheckerableImageDimension; | 107 dimension = kLargeNonCheckerableImageDimension; |
| 107 break; | 108 break; |
| 108 } | 109 } |
| 109 | 110 |
| 110 sk_sp<SkImage> image = | 111 sk_sp<SkImage> image = |
| 111 CreateDiscardableImage(gfx::Size(dimension, dimension)); | 112 CreateDiscardableImage(gfx::Size(dimension, dimension)); |
| 112 return DrawImage( | 113 return DrawImage(PaintImage(PaintImage::GetNextId(), image, animation, |
| 113 PaintImage(PaintImage::GetNextId(), image, animation, completion), | 114 completion, 1, is_multipart), |
| 114 SkIRect::MakeWH(dimension, dimension), kNone_SkFilterQuality, | 115 SkIRect::MakeWH(dimension, dimension), |
| 115 SkMatrix::I(), gfx::ColorSpace()); | 116 kNone_SkFilterQuality, SkMatrix::I(), gfx::ColorSpace()); |
| 116 } | 117 } |
| 117 | 118 |
| 118 CheckerImageTracker::ImageDecodeQueue BuildImageDecodeQueue( | 119 CheckerImageTracker::ImageDecodeQueue BuildImageDecodeQueue( |
| 119 std::vector<DrawImage> images, | 120 std::vector<DrawImage> images, |
| 120 WhichTree tree) { | 121 WhichTree tree) { |
| 121 CheckerImageTracker::ImageDecodeQueue decode_queue; | 122 CheckerImageTracker::ImageDecodeQueue decode_queue; |
| 122 for (const auto& image : images) { | 123 for (const auto& image : images) { |
| 123 if (checker_image_tracker_->ShouldCheckerImage(image, tree)) | 124 if (checker_image_tracker_->ShouldCheckerImage(image, tree)) |
| 124 decode_queue.push_back(image.paint_image()); | 125 decode_queue.push_back(image.paint_image()); |
| 125 } | 126 } |
| (...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 464 CheckerImageTracker::ImageDecodeQueue image_decode_queue = | 465 CheckerImageTracker::ImageDecodeQueue image_decode_queue = |
| 465 BuildImageDecodeQueue(draw_images, WhichTree::PENDING_TREE); | 466 BuildImageDecodeQueue(draw_images, WhichTree::PENDING_TREE); |
| 466 checker_image_tracker_->ScheduleImageDecodeQueue(image_decode_queue); | 467 checker_image_tracker_->ScheduleImageDecodeQueue(image_decode_queue); |
| 467 EXPECT_EQ(image_controller_.decoded_images().size(), 1u); | 468 EXPECT_EQ(image_controller_.decoded_images().size(), 1u); |
| 468 EXPECT_EQ(image_controller_.decoded_images()[0].scale(), | 469 EXPECT_EQ(image_controller_.decoded_images()[0].scale(), |
| 469 SkSize::Make(1.8f, 1.8f)); | 470 SkSize::Make(1.8f, 1.8f)); |
| 470 EXPECT_EQ(image_controller_.decoded_images()[0].filter_quality(), | 471 EXPECT_EQ(image_controller_.decoded_images()[0].filter_quality(), |
| 471 kHigh_SkFilterQuality); | 472 kHigh_SkFilterQuality); |
| 472 } | 473 } |
| 473 | 474 |
| 475 TEST_F(CheckerImageTrackerTest, DontCheckerMultiPartImages) { |
| 476 SetUpTracker(true); |
| 477 |
| 478 DrawImage image = CreateImage(ImageType::CHECKERABLE); |
| 479 EXPECT_FALSE(image.paint_image().is_multipart()); |
| 480 DrawImage multi_part_image = |
| 481 CreateImage(ImageType::CHECKERABLE, PaintImage::AnimationType::STATIC, |
| 482 PaintImage::CompletionState::DONE, true); |
| 483 EXPECT_TRUE(multi_part_image.paint_image().is_multipart()); |
| 484 |
| 485 EXPECT_TRUE(checker_image_tracker_->ShouldCheckerImage( |
| 486 image, WhichTree::PENDING_TREE)); |
| 487 EXPECT_FALSE(checker_image_tracker_->ShouldCheckerImage( |
| 488 multi_part_image, WhichTree::PENDING_TREE)); |
| 489 } |
| 490 |
| 474 } // namespace | 491 } // namespace |
| 475 } // namespace cc | 492 } // namespace cc |
| OLD | NEW |