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 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
114 SkIRect::MakeWH(dimension, dimension), kNone_SkFilterQuality, | 114 SkIRect::MakeWH(dimension, dimension), kNone_SkFilterQuality, |
115 SkMatrix::I(), gfx::ColorSpace()); | 115 SkMatrix::I(), gfx::ColorSpace()); |
116 } | 116 } |
117 | 117 |
118 CheckerImageTracker::ImageDecodeQueue BuildImageDecodeQueue( | 118 CheckerImageTracker::ImageDecodeQueue BuildImageDecodeQueue( |
119 std::vector<DrawImage> images, | 119 std::vector<DrawImage> images, |
120 WhichTree tree) { | 120 WhichTree tree) { |
121 CheckerImageTracker::ImageDecodeQueue decode_queue; | 121 CheckerImageTracker::ImageDecodeQueue decode_queue; |
122 for (const auto& image : images) { | 122 for (const auto& image : images) { |
123 if (checker_image_tracker_->ShouldCheckerImage(image, tree)) | 123 if (checker_image_tracker_->ShouldCheckerImage(image, tree)) |
124 decode_queue.push_back(image.paint_image()); | 124 decode_queue.push_back(CheckerImageTracker::ImageDecodeRequest( |
| 125 image.paint_image(), CheckerImageTracker::DecodeType::kRaster)); |
125 } | 126 } |
126 return decode_queue; | 127 return decode_queue; |
127 } | 128 } |
128 | 129 |
129 // CheckerImageTrackerClient implementation. | 130 // CheckerImageTrackerClient implementation. |
130 void NeedsInvalidationForCheckerImagedTiles() override { | 131 void NeedsInvalidationForCheckerImagedTiles() override { |
131 invalidation_request_pending_ = true; | 132 invalidation_request_pending_ = true; |
132 } | 133 } |
133 | 134 |
134 protected: | 135 protected: |
(...skipping 27 matching lines...) Expand all Loading... |
162 CheckerImageTracker::ImageDecodeQueue image_decode_queue; | 163 CheckerImageTracker::ImageDecodeQueue image_decode_queue; |
163 | 164 |
164 // First request to filter images. | 165 // First request to filter images. |
165 std::vector<DrawImage> draw_images = { | 166 std::vector<DrawImage> draw_images = { |
166 checkerable_image, small_non_checkerable_image, | 167 checkerable_image, small_non_checkerable_image, |
167 large_non_checkerable_image, checkerable_image}; | 168 large_non_checkerable_image, checkerable_image}; |
168 image_decode_queue = | 169 image_decode_queue = |
169 BuildImageDecodeQueue(draw_images, WhichTree::PENDING_TREE); | 170 BuildImageDecodeQueue(draw_images, WhichTree::PENDING_TREE); |
170 | 171 |
171 ASSERT_EQ(2u, image_decode_queue.size()); | 172 ASSERT_EQ(2u, image_decode_queue.size()); |
172 EXPECT_EQ(checkerable_image.paint_image(), image_decode_queue[0]); | 173 EXPECT_EQ(checkerable_image.paint_image(), image_decode_queue[0].paint_image); |
173 EXPECT_EQ(checkerable_image.paint_image(), image_decode_queue[1]); | 174 EXPECT_EQ(checkerable_image.paint_image(), image_decode_queue[1].paint_image); |
174 | 175 |
175 checker_image_tracker_->ScheduleImageDecodeQueue(image_decode_queue); | 176 checker_image_tracker_->ScheduleImageDecodeQueue(image_decode_queue); |
176 EXPECT_EQ(image_controller_.num_of_locked_images(), 1); | 177 EXPECT_EQ(image_controller_.num_of_locked_images(), 1); |
177 | 178 |
178 // Run pending task to indicate completion of decode request to the tracker. | 179 // Run pending task to indicate completion of decode request to the tracker. |
179 // This should send an impl-side invalidation request to the client. The | 180 // This should send an impl-side invalidation request to the client. The |
180 // images must remain locked until the sync tree to which the invalidations | 181 // images must remain locked until the sync tree to which the invalidations |
181 // are added is activated. | 182 // are added is activated. |
182 base::RunLoop().RunUntilIdle(); | 183 base::RunLoop().RunUntilIdle(); |
183 EXPECT_TRUE(invalidation_request_pending_); | 184 EXPECT_TRUE(invalidation_request_pending_); |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
408 CreateImage(ImageType::CHECKERABLE, PaintImage::AnimationType::STATIC, | 409 CreateImage(ImageType::CHECKERABLE, PaintImage::AnimationType::STATIC, |
409 PaintImage::CompletionState::PARTIALLY_DONE); | 410 PaintImage::CompletionState::PARTIALLY_DONE); |
410 DrawImage video_image = | 411 DrawImage video_image = |
411 CreateImage(ImageType::CHECKERABLE, PaintImage::AnimationType::VIDEO); | 412 CreateImage(ImageType::CHECKERABLE, PaintImage::AnimationType::VIDEO); |
412 std::vector<DrawImage> draw_images = {static_image, animated_image, | 413 std::vector<DrawImage> draw_images = {static_image, animated_image, |
413 partial_image, video_image}; | 414 partial_image, video_image}; |
414 | 415 |
415 CheckerImageTracker::ImageDecodeQueue image_decode_queue = | 416 CheckerImageTracker::ImageDecodeQueue image_decode_queue = |
416 BuildImageDecodeQueue(draw_images, WhichTree::PENDING_TREE); | 417 BuildImageDecodeQueue(draw_images, WhichTree::PENDING_TREE); |
417 EXPECT_EQ(image_decode_queue.size(), 1U); | 418 EXPECT_EQ(image_decode_queue.size(), 1U); |
418 EXPECT_EQ(image_decode_queue[0], static_image.paint_image()); | 419 EXPECT_EQ(image_decode_queue[0].paint_image, static_image.paint_image()); |
419 | 420 |
420 // Change the partial image to complete and try again. It should sstill not | 421 // Change the partial image to complete and try again. It should sstill not |
421 // be checkered. | 422 // be checkered. |
422 gfx::Size image_size = gfx::Size(partial_image.image()->width(), | 423 gfx::Size image_size = gfx::Size(partial_image.image()->width(), |
423 partial_image.image()->height()); | 424 partial_image.image()->height()); |
424 DrawImage completed_paint_image = | 425 DrawImage completed_paint_image = |
425 DrawImage(PaintImage(partial_image.paint_image().stable_id(), | 426 DrawImage(PaintImage(partial_image.paint_image().stable_id(), |
426 CreateDiscardableImage(image_size)), | 427 CreateDiscardableImage(image_size)), |
427 SkIRect::MakeWH(image_size.width(), image_size.height()), | 428 SkIRect::MakeWH(image_size.width(), image_size.height()), |
428 kNone_SkFilterQuality, SkMatrix::I(), gfx::ColorSpace()); | 429 kNone_SkFilterQuality, SkMatrix::I(), gfx::ColorSpace()); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 |
474 } // namespace | 475 } // namespace |
475 } // namespace cc | 476 } // namespace cc |
OLD | NEW |