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

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

Issue 1691623002: Reland: cc: Imagedecodes: Clip the src_rect to the image rect. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 10 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
« no previous file with comments | « cc/tiles/image_decode_controller.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/image_decode_controller.h" 5 #include "cc/tiles/image_decode_controller.h"
6 6
7 #include "cc/playback/draw_image.h" 7 #include "cc/playback/draw_image.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 namespace cc { 10 namespace cc {
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 SkSize::Make(0.999f, 0.999f), quality, has_perspective, is_decomposable); 288 SkSize::Make(0.999f, 0.999f), quality, has_perspective, is_decomposable);
289 289
290 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image); 290 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image);
291 EXPECT_EQ(image->uniqueID(), key.image_id()); 291 EXPECT_EQ(image->uniqueID(), key.image_id());
292 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality()); 292 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
293 EXPECT_EQ(100, key.target_size().width()); 293 EXPECT_EQ(100, key.target_size().width());
294 EXPECT_EQ(100, key.target_size().height()); 294 EXPECT_EQ(100, key.target_size().height());
295 EXPECT_EQ(100u * 100u * 4u, key.target_bytes()); 295 EXPECT_EQ(100u * 100u * 4u, key.target_bytes());
296 } 296 }
297 297
298 TEST(ImageDecodeControllerTest, ImageRectDoesNotContainSrcRect) {
299 skia::RefPtr<SkImage> image = CreateImage(100, 100);
300 bool has_perspective = false;
301 bool is_decomposable = true;
302 SkFilterQuality quality = kHigh_SkFilterQuality;
303
304 DrawImage draw_image(
305 image.get(), SkIRect::MakeXYWH(25, 35, image->width(), image->height()),
306 SkSize::Make(1.f, 1.f), quality, has_perspective, is_decomposable);
307
308 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image);
309 EXPECT_EQ(image->uniqueID(), key.image_id());
310 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
311 EXPECT_EQ(75, key.target_size().width());
312 EXPECT_EQ(65, key.target_size().height());
313 EXPECT_EQ(gfx::Rect(25, 35, 75, 65), key.src_rect());
314 EXPECT_EQ(75u * 65u * 4u, key.target_bytes());
315 }
316
317 TEST(ImageDecodeControllerTest, ImageRectDoesNotContainSrcRectWithScale) {
318 skia::RefPtr<SkImage> image = CreateImage(100, 100);
319 bool has_perspective = false;
320 bool is_decomposable = true;
321 SkFilterQuality quality = kHigh_SkFilterQuality;
322
323 DrawImage draw_image(
324 image.get(), SkIRect::MakeXYWH(20, 30, image->width(), image->height()),
325 SkSize::Make(0.5f, 0.5f), quality, has_perspective, is_decomposable);
326
327 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image);
328 EXPECT_EQ(image->uniqueID(), key.image_id());
329 EXPECT_EQ(kHigh_SkFilterQuality, key.filter_quality());
330 EXPECT_EQ(40, key.target_size().width());
331 EXPECT_EQ(35, key.target_size().height());
332 EXPECT_EQ(gfx::Rect(20, 30, 80, 70), key.src_rect());
333 EXPECT_EQ(40u * 35u * 4u, key.target_bytes());
334 }
335
298 TEST(ImageDecodeControllerTest, GetTaskForImageSameImage) { 336 TEST(ImageDecodeControllerTest, GetTaskForImageSameImage) {
299 ImageDecodeController controller; 337 ImageDecodeController controller;
300 skia::RefPtr<SkImage> image = CreateImage(100, 100); 338 skia::RefPtr<SkImage> image = CreateImage(100, 100);
301 bool has_perspective = false; 339 bool has_perspective = false;
302 bool is_decomposable = true; 340 bool is_decomposable = true;
303 SkFilterQuality quality = kHigh_SkFilterQuality; 341 SkFilterQuality quality = kHigh_SkFilterQuality;
304 uint64_t prepare_tiles_id = 1; 342 uint64_t prepare_tiles_id = 1;
305 343
306 DrawImage draw_image( 344 DrawImage draw_image(
307 image.get(), SkIRect::MakeWH(image->width(), image->height()), 345 image.get(), SkIRect::MakeWH(image->width(), image->height()),
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
643 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().width()); 681 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().width());
644 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().height()); 682 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().height());
645 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); 683 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality());
646 EXPECT_FALSE(decoded_draw_image.is_scale_adjustment_identity()); 684 EXPECT_FALSE(decoded_draw_image.is_scale_adjustment_identity());
647 EXPECT_FALSE(decoded_draw_image.is_at_raster_decode()); 685 EXPECT_FALSE(decoded_draw_image.is_at_raster_decode());
648 686
649 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 687 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
650 controller.UnrefImage(draw_image); 688 controller.UnrefImage(draw_image);
651 } 689 }
652 690
691 TEST(ImageDecodeControllerTest, GetDecodedImageForDrawWithNonContainedSrcRect) {
692 ImageDecodeController controller;
693 bool has_perspective = false;
694 bool is_decomposable = true;
695 uint64_t prepare_tiles_id = 1;
696 SkFilterQuality quality = kHigh_SkFilterQuality;
697
698 skia::RefPtr<SkImage> image = CreateImage(100, 100);
699 DrawImage draw_image(
700 image.get(), SkIRect::MakeXYWH(20, 30, image->width(), image->height()),
701 SkSize::Make(0.5f, 0.5f), quality, has_perspective, is_decomposable);
702 scoped_refptr<ImageDecodeTask> task;
703 bool need_unref =
704 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task);
705 EXPECT_TRUE(need_unref);
706 EXPECT_TRUE(task);
707
708 task->WillSchedule();
709 task->ScheduleOnOriginThread(nullptr);
710 task->DidSchedule();
711
712 task->RunOnWorkerThread();
713
714 task->WillComplete();
715 task->CompleteOnOriginThread(nullptr);
716 task->DidComplete();
717
718 DecodedDrawImage decoded_draw_image =
719 controller.GetDecodedImageForDraw(draw_image);
720 EXPECT_TRUE(decoded_draw_image.image());
721 EXPECT_EQ(40, decoded_draw_image.image()->width());
722 EXPECT_EQ(35, decoded_draw_image.image()->height());
723 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().width());
724 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().height());
725 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality());
726 EXPECT_FALSE(decoded_draw_image.is_scale_adjustment_identity());
727 EXPECT_FALSE(decoded_draw_image.is_at_raster_decode());
728
729 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
730 controller.UnrefImage(draw_image);
731 }
732
653 TEST(ImageDecodeControllerTest, GetDecodedImageForDrawAtRasterDecode) { 733 TEST(ImageDecodeControllerTest, GetDecodedImageForDrawAtRasterDecode) {
654 ImageDecodeController controller; 734 ImageDecodeController controller;
655 bool has_perspective = false; 735 bool has_perspective = false;
656 bool is_decomposable = true; 736 bool is_decomposable = true;
657 SkFilterQuality quality = kHigh_SkFilterQuality; 737 SkFilterQuality quality = kHigh_SkFilterQuality;
658 738
659 skia::RefPtr<SkImage> image = CreateImage(100, 100); 739 skia::RefPtr<SkImage> image = CreateImage(100, 100);
660 DrawImage draw_image( 740 DrawImage draw_image(
661 image.get(), SkIRect::MakeWH(image->width(), image->height()), 741 image.get(), SkIRect::MakeWH(image->width(), image->height()),
662 SkSize::Make(0.5f, 0.5f), quality, has_perspective, is_decomposable); 742 SkSize::Make(0.5f, 0.5f), quality, has_perspective, is_decomposable);
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
836 EXPECT_FALSE(task); 916 EXPECT_FALSE(task);
837 EXPECT_FALSE(need_unref); 917 EXPECT_FALSE(need_unref);
838 918
839 DecodedDrawImage decoded_draw_image = 919 DecodedDrawImage decoded_draw_image =
840 controller.GetDecodedImageForDraw(draw_image); 920 controller.GetDecodedImageForDraw(draw_image);
841 EXPECT_FALSE(decoded_draw_image.image()); 921 EXPECT_FALSE(decoded_draw_image.image());
842 922
843 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 923 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
844 } 924 }
845 925
926 TEST(ImageDecodeControllerTest, NonOverlappingSrcRectImagesAreSkipped) {
927 ImageDecodeController controller;
928 bool has_perspective = false;
929 bool is_decomposable = true;
930 uint64_t prepare_tiles_id = 1;
931 SkFilterQuality quality = kHigh_SkFilterQuality;
932
933 skia::RefPtr<SkImage> image = CreateImage(100, 100);
934 DrawImage draw_image(
935 image.get(), SkIRect::MakeXYWH(150, 150, image->width(), image->height()),
936 SkSize::Make(1.f, 1.f), quality, has_perspective, is_decomposable);
937
938 scoped_refptr<ImageDecodeTask> task;
939 bool need_unref =
940 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task);
941 EXPECT_FALSE(task);
942 EXPECT_FALSE(need_unref);
943
944 DecodedDrawImage decoded_draw_image =
945 controller.GetDecodedImageForDraw(draw_image);
946 EXPECT_FALSE(decoded_draw_image.image());
947
948 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
949 }
950
846 } // namespace 951 } // namespace
847 } // namespace cc 952 } // namespace cc
OLDNEW
« no previous file with comments | « cc/tiles/image_decode_controller.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698