Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(131)

Side by Side Diff: cc/tiles/checker_image_tracker_unittest.cc

Issue 2924233002: cc: Move pre-decodes to background worker. (Closed)
Patch Set: .. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698