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

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

Issue 1991363003: cc: Plumb gpu/sw image decode limits as layer tree settings. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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/software_image_decode_controller.cc ('k') | cc/trees/layer_tree_host_impl.cc » ('j') | 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/software_image_decode_controller.h" 5 #include "cc/tiles/software_image_decode_controller.h"
6 6
7 #include "cc/playback/draw_image.h" 7 #include "cc/playback/draw_image.h"
8 #include "cc/raster/tile_task.h" 8 #include "cc/raster/tile_task.h"
9 #include "cc/resources/resource_format.h"
9 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
10 #include "third_party/skia/include/core/SkRefCnt.h" 11 #include "third_party/skia/include/core/SkRefCnt.h"
11 12
12 namespace cc { 13 namespace cc {
13 namespace { 14 namespace {
14 15
16 size_t kLockedMemoryLimitBytes = 128 * 1024 * 1024;
17 class TestSoftwareImageDecodeController : public SoftwareImageDecodeController {
18 public:
19 TestSoftwareImageDecodeController()
20 : SoftwareImageDecodeController(ResourceFormat::RGBA_8888,
21 kLockedMemoryLimitBytes) {}
22 };
23
15 sk_sp<SkImage> CreateImage(int width, int height) { 24 sk_sp<SkImage> CreateImage(int width, int height) {
16 SkBitmap bitmap; 25 SkBitmap bitmap;
17 bitmap.allocPixels(SkImageInfo::MakeN32Premul(width, height)); 26 bitmap.allocPixels(SkImageInfo::MakeN32Premul(width, height));
18 return SkImage::MakeFromBitmap(bitmap); 27 return SkImage::MakeFromBitmap(bitmap);
19 } 28 }
20 29
21 SkMatrix CreateMatrix(const SkSize& scale, bool is_decomposable) { 30 SkMatrix CreateMatrix(const SkSize& scale, bool is_decomposable) {
22 SkMatrix matrix; 31 SkMatrix matrix;
23 matrix.setScale(scale.width(), scale.height()); 32 matrix.setScale(scale.width(), scale.height());
24 33
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image); 479 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image);
471 EXPECT_EQ(image->uniqueID(), key.image_id()); 480 EXPECT_EQ(image->uniqueID(), key.image_id());
472 EXPECT_EQ(kHigh_SkFilterQuality, key.filter_quality()); 481 EXPECT_EQ(kHigh_SkFilterQuality, key.filter_quality());
473 EXPECT_EQ(40, key.target_size().width()); 482 EXPECT_EQ(40, key.target_size().width());
474 EXPECT_EQ(35, key.target_size().height()); 483 EXPECT_EQ(35, key.target_size().height());
475 EXPECT_EQ(gfx::Rect(20, 30, 80, 70), key.src_rect()); 484 EXPECT_EQ(gfx::Rect(20, 30, 80, 70), key.src_rect());
476 EXPECT_EQ(40u * 35u * 4u, key.locked_bytes()); 485 EXPECT_EQ(40u * 35u * 4u, key.locked_bytes());
477 } 486 }
478 487
479 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageSameImage) { 488 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageSameImage) {
480 SoftwareImageDecodeController controller; 489 TestSoftwareImageDecodeController controller;
481 sk_sp<SkImage> image = CreateImage(100, 100); 490 sk_sp<SkImage> image = CreateImage(100, 100);
482 bool is_decomposable = true; 491 bool is_decomposable = true;
483 SkFilterQuality quality = kHigh_SkFilterQuality; 492 SkFilterQuality quality = kHigh_SkFilterQuality;
484 493
485 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), 494 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
486 quality, 495 quality,
487 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 496 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
488 scoped_refptr<TileTask> task; 497 scoped_refptr<TileTask> task;
489 bool need_unref = controller.GetTaskForImageAndRef( 498 bool need_unref = controller.GetTaskForImageAndRef(
490 draw_image, ImageDecodeController::TracingInfo(), &task); 499 draw_image, ImageDecodeController::TracingInfo(), &task);
491 EXPECT_TRUE(need_unref); 500 EXPECT_TRUE(need_unref);
492 EXPECT_TRUE(task); 501 EXPECT_TRUE(task);
493 502
494 DrawImage another_draw_image( 503 DrawImage another_draw_image(
495 image, SkIRect::MakeWH(image->width(), image->height()), quality, 504 image, SkIRect::MakeWH(image->width(), image->height()), quality,
496 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 505 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
497 scoped_refptr<TileTask> another_task; 506 scoped_refptr<TileTask> another_task;
498 need_unref = controller.GetTaskForImageAndRef( 507 need_unref = controller.GetTaskForImageAndRef(
499 another_draw_image, ImageDecodeController::TracingInfo(), &another_task); 508 another_draw_image, ImageDecodeController::TracingInfo(), &another_task);
500 EXPECT_TRUE(need_unref); 509 EXPECT_TRUE(need_unref);
501 EXPECT_TRUE(task.get() == another_task.get()); 510 EXPECT_TRUE(task.get() == another_task.get());
502 511
503 controller.UnrefImage(draw_image); 512 controller.UnrefImage(draw_image);
504 controller.UnrefImage(draw_image); 513 controller.UnrefImage(draw_image);
505 } 514 }
506 515
507 TEST(SoftwareImageDecodeControllerTest, 516 TEST(SoftwareImageDecodeControllerTest,
508 GetTaskForImageSameImageDifferentQuality) { 517 GetTaskForImageSameImageDifferentQuality) {
509 SoftwareImageDecodeController controller; 518 TestSoftwareImageDecodeController controller;
510 sk_sp<SkImage> image = CreateImage(100, 100); 519 sk_sp<SkImage> image = CreateImage(100, 100);
511 bool is_decomposable = true; 520 bool is_decomposable = true;
512 521
513 DrawImage high_quality_draw_image( 522 DrawImage high_quality_draw_image(
514 image, SkIRect::MakeWH(image->width(), image->height()), 523 image, SkIRect::MakeWH(image->width(), image->height()),
515 kHigh_SkFilterQuality, 524 kHigh_SkFilterQuality,
516 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 525 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
517 scoped_refptr<TileTask> high_quality_task; 526 scoped_refptr<TileTask> high_quality_task;
518 bool need_unref = controller.GetTaskForImageAndRef( 527 bool need_unref = controller.GetTaskForImageAndRef(
519 high_quality_draw_image, ImageDecodeController::TracingInfo(), 528 high_quality_draw_image, ImageDecodeController::TracingInfo(),
(...skipping 25 matching lines...) Expand all
545 EXPECT_TRUE(low_quality_task); 554 EXPECT_TRUE(low_quality_task);
546 EXPECT_TRUE(high_quality_task.get() != low_quality_task.get()); 555 EXPECT_TRUE(high_quality_task.get() != low_quality_task.get());
547 EXPECT_TRUE(medium_quality_task.get() != low_quality_task.get()); 556 EXPECT_TRUE(medium_quality_task.get() != low_quality_task.get());
548 557
549 controller.UnrefImage(high_quality_draw_image); 558 controller.UnrefImage(high_quality_draw_image);
550 controller.UnrefImage(medium_quality_draw_image); 559 controller.UnrefImage(medium_quality_draw_image);
551 controller.UnrefImage(low_quality_draw_image); 560 controller.UnrefImage(low_quality_draw_image);
552 } 561 }
553 562
554 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageSameImageDifferentSize) { 563 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageSameImageDifferentSize) {
555 SoftwareImageDecodeController controller; 564 TestSoftwareImageDecodeController controller;
556 sk_sp<SkImage> image = CreateImage(100, 100); 565 sk_sp<SkImage> image = CreateImage(100, 100);
557 bool is_decomposable = true; 566 bool is_decomposable = true;
558 SkFilterQuality quality = kHigh_SkFilterQuality; 567 SkFilterQuality quality = kHigh_SkFilterQuality;
559 568
560 DrawImage half_size_draw_image( 569 DrawImage half_size_draw_image(
561 image, SkIRect::MakeWH(image->width(), image->height()), quality, 570 image, SkIRect::MakeWH(image->width(), image->height()), quality,
562 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 571 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
563 scoped_refptr<TileTask> half_size_task; 572 scoped_refptr<TileTask> half_size_task;
564 bool need_unref = controller.GetTaskForImageAndRef( 573 bool need_unref = controller.GetTaskForImageAndRef(
565 half_size_draw_image, ImageDecodeController::TracingInfo(), 574 half_size_draw_image, ImageDecodeController::TracingInfo(),
(...skipping 10 matching lines...) Expand all
576 &quarter_size_task); 585 &quarter_size_task);
577 EXPECT_TRUE(need_unref); 586 EXPECT_TRUE(need_unref);
578 EXPECT_TRUE(quarter_size_task); 587 EXPECT_TRUE(quarter_size_task);
579 EXPECT_TRUE(half_size_task.get() != quarter_size_task.get()); 588 EXPECT_TRUE(half_size_task.get() != quarter_size_task.get());
580 589
581 controller.UnrefImage(half_size_draw_image); 590 controller.UnrefImage(half_size_draw_image);
582 controller.UnrefImage(quarter_size_draw_image); 591 controller.UnrefImage(quarter_size_draw_image);
583 } 592 }
584 593
585 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageDifferentImage) { 594 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageDifferentImage) {
586 SoftwareImageDecodeController controller; 595 TestSoftwareImageDecodeController controller;
587 bool is_decomposable = true; 596 bool is_decomposable = true;
588 SkFilterQuality quality = kHigh_SkFilterQuality; 597 SkFilterQuality quality = kHigh_SkFilterQuality;
589 598
590 sk_sp<SkImage> first_image = CreateImage(100, 100); 599 sk_sp<SkImage> first_image = CreateImage(100, 100);
591 DrawImage first_draw_image( 600 DrawImage first_draw_image(
592 first_image, SkIRect::MakeWH(first_image->width(), first_image->height()), 601 first_image, SkIRect::MakeWH(first_image->width(), first_image->height()),
593 quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 602 quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
594 scoped_refptr<TileTask> first_task; 603 scoped_refptr<TileTask> first_task;
595 bool need_unref = controller.GetTaskForImageAndRef( 604 bool need_unref = controller.GetTaskForImageAndRef(
596 first_draw_image, ImageDecodeController::TracingInfo(), &first_task); 605 first_draw_image, ImageDecodeController::TracingInfo(), &first_task);
(...skipping 10 matching lines...) Expand all
607 second_draw_image, ImageDecodeController::TracingInfo(), &second_task); 616 second_draw_image, ImageDecodeController::TracingInfo(), &second_task);
608 EXPECT_TRUE(need_unref); 617 EXPECT_TRUE(need_unref);
609 EXPECT_TRUE(second_task); 618 EXPECT_TRUE(second_task);
610 EXPECT_TRUE(first_task.get() != second_task.get()); 619 EXPECT_TRUE(first_task.get() != second_task.get());
611 620
612 controller.UnrefImage(first_draw_image); 621 controller.UnrefImage(first_draw_image);
613 controller.UnrefImage(second_draw_image); 622 controller.UnrefImage(second_draw_image);
614 } 623 }
615 624
616 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageAlreadyDecoded) { 625 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageAlreadyDecoded) {
617 SoftwareImageDecodeController controller; 626 TestSoftwareImageDecodeController controller;
618 bool is_decomposable = true; 627 bool is_decomposable = true;
619 SkFilterQuality quality = kHigh_SkFilterQuality; 628 SkFilterQuality quality = kHigh_SkFilterQuality;
620 629
621 sk_sp<SkImage> image = CreateImage(100, 100); 630 sk_sp<SkImage> image = CreateImage(100, 100);
622 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), 631 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
623 quality, 632 quality,
624 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 633 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
625 scoped_refptr<TileTask> task; 634 scoped_refptr<TileTask> task;
626 bool need_unref = controller.GetTaskForImageAndRef( 635 bool need_unref = controller.GetTaskForImageAndRef(
627 draw_image, ImageDecodeController::TracingInfo(), &task); 636 draw_image, ImageDecodeController::TracingInfo(), &task);
(...skipping 13 matching lines...) Expand all
641 650
642 task->WillComplete(); 651 task->WillComplete();
643 task->CompleteOnOriginThread(nullptr); 652 task->CompleteOnOriginThread(nullptr);
644 task->DidComplete(); 653 task->DidComplete();
645 654
646 controller.UnrefImage(draw_image); 655 controller.UnrefImage(draw_image);
647 controller.UnrefImage(draw_image); 656 controller.UnrefImage(draw_image);
648 } 657 }
649 658
650 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageAlreadyPrerolled) { 659 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageAlreadyPrerolled) {
651 SoftwareImageDecodeController controller; 660 TestSoftwareImageDecodeController controller;
652 bool is_decomposable = true; 661 bool is_decomposable = true;
653 SkFilterQuality quality = kLow_SkFilterQuality; 662 SkFilterQuality quality = kLow_SkFilterQuality;
654 663
655 sk_sp<SkImage> image = CreateImage(100, 100); 664 sk_sp<SkImage> image = CreateImage(100, 100);
656 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), 665 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
657 quality, 666 quality,
658 CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable)); 667 CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable));
659 scoped_refptr<TileTask> task; 668 scoped_refptr<TileTask> task;
660 bool need_unref = controller.GetTaskForImageAndRef( 669 bool need_unref = controller.GetTaskForImageAndRef(
661 draw_image, ImageDecodeController::TracingInfo(), &task); 670 draw_image, ImageDecodeController::TracingInfo(), &task);
(...skipping 20 matching lines...) Expand all
682 draw_image, ImageDecodeController::TracingInfo(), &third_task); 691 draw_image, ImageDecodeController::TracingInfo(), &third_task);
683 EXPECT_TRUE(need_unref); 692 EXPECT_TRUE(need_unref);
684 EXPECT_FALSE(third_task); 693 EXPECT_FALSE(third_task);
685 694
686 controller.UnrefImage(draw_image); 695 controller.UnrefImage(draw_image);
687 controller.UnrefImage(draw_image); 696 controller.UnrefImage(draw_image);
688 controller.UnrefImage(draw_image); 697 controller.UnrefImage(draw_image);
689 } 698 }
690 699
691 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageCanceledGetsNewTask) { 700 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageCanceledGetsNewTask) {
692 SoftwareImageDecodeController controller; 701 TestSoftwareImageDecodeController controller;
693 bool is_decomposable = true; 702 bool is_decomposable = true;
694 SkFilterQuality quality = kHigh_SkFilterQuality; 703 SkFilterQuality quality = kHigh_SkFilterQuality;
695 704
696 sk_sp<SkImage> image = CreateImage(100, 100); 705 sk_sp<SkImage> image = CreateImage(100, 100);
697 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), 706 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
698 quality, 707 quality,
699 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 708 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
700 scoped_refptr<TileTask> task; 709 scoped_refptr<TileTask> task;
701 bool need_unref = controller.GetTaskForImageAndRef( 710 bool need_unref = controller.GetTaskForImageAndRef(
702 draw_image, ImageDecodeController::TracingInfo(), &task); 711 draw_image, ImageDecodeController::TracingInfo(), &task);
(...skipping 25 matching lines...) Expand all
728 draw_image, ImageDecodeController::TracingInfo(), &third_task); 737 draw_image, ImageDecodeController::TracingInfo(), &third_task);
729 EXPECT_TRUE(need_unref); 738 EXPECT_TRUE(need_unref);
730 EXPECT_TRUE(third_task); 739 EXPECT_TRUE(third_task);
731 EXPECT_FALSE(third_task.get() == task.get()); 740 EXPECT_FALSE(third_task.get() == task.get());
732 741
733 controller.UnrefImage(draw_image); 742 controller.UnrefImage(draw_image);
734 } 743 }
735 744
736 TEST(SoftwareImageDecodeControllerTest, 745 TEST(SoftwareImageDecodeControllerTest,
737 GetTaskForImageCanceledWhileReffedGetsNewTask) { 746 GetTaskForImageCanceledWhileReffedGetsNewTask) {
738 SoftwareImageDecodeController controller; 747 TestSoftwareImageDecodeController controller;
739 bool is_decomposable = true; 748 bool is_decomposable = true;
740 SkFilterQuality quality = kHigh_SkFilterQuality; 749 SkFilterQuality quality = kHigh_SkFilterQuality;
741 750
742 sk_sp<SkImage> image = CreateImage(100, 100); 751 sk_sp<SkImage> image = CreateImage(100, 100);
743 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), 752 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
744 quality, 753 quality,
745 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 754 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
746 scoped_refptr<TileTask> task; 755 scoped_refptr<TileTask> task;
747 bool need_unref = controller.GetTaskForImageAndRef( 756 bool need_unref = controller.GetTaskForImageAndRef(
748 draw_image, ImageDecodeController::TracingInfo(), &task); 757 draw_image, ImageDecodeController::TracingInfo(), &task);
(...skipping 24 matching lines...) Expand all
773 EXPECT_TRUE(third_task); 782 EXPECT_TRUE(third_task);
774 EXPECT_FALSE(third_task.get() == task.get()); 783 EXPECT_FALSE(third_task.get() == task.get());
775 784
776 // 3 Unrefs! 785 // 3 Unrefs!
777 controller.UnrefImage(draw_image); 786 controller.UnrefImage(draw_image);
778 controller.UnrefImage(draw_image); 787 controller.UnrefImage(draw_image);
779 controller.UnrefImage(draw_image); 788 controller.UnrefImage(draw_image);
780 } 789 }
781 790
782 TEST(SoftwareImageDecodeControllerTest, GetDecodedImageForDraw) { 791 TEST(SoftwareImageDecodeControllerTest, GetDecodedImageForDraw) {
783 SoftwareImageDecodeController controller; 792 TestSoftwareImageDecodeController controller;
784 bool is_decomposable = true; 793 bool is_decomposable = true;
785 SkFilterQuality quality = kHigh_SkFilterQuality; 794 SkFilterQuality quality = kHigh_SkFilterQuality;
786 795
787 sk_sp<SkImage> image = CreateImage(100, 100); 796 sk_sp<SkImage> image = CreateImage(100, 100);
788 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), 797 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
789 quality, 798 quality,
790 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 799 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
791 scoped_refptr<TileTask> task; 800 scoped_refptr<TileTask> task;
792 bool need_unref = controller.GetTaskForImageAndRef( 801 bool need_unref = controller.GetTaskForImageAndRef(
793 draw_image, ImageDecodeController::TracingInfo(), &task); 802 draw_image, ImageDecodeController::TracingInfo(), &task);
(...skipping 20 matching lines...) Expand all
814 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); 823 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality());
815 EXPECT_FALSE(decoded_draw_image.is_scale_adjustment_identity()); 824 EXPECT_FALSE(decoded_draw_image.is_scale_adjustment_identity());
816 EXPECT_FALSE(decoded_draw_image.is_at_raster_decode()); 825 EXPECT_FALSE(decoded_draw_image.is_at_raster_decode());
817 826
818 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 827 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
819 controller.UnrefImage(draw_image); 828 controller.UnrefImage(draw_image);
820 } 829 }
821 830
822 TEST(SoftwareImageDecodeControllerTest, 831 TEST(SoftwareImageDecodeControllerTest,
823 GetDecodedImageForDrawWithNonContainedSrcRect) { 832 GetDecodedImageForDrawWithNonContainedSrcRect) {
824 SoftwareImageDecodeController controller; 833 TestSoftwareImageDecodeController controller;
825 bool is_decomposable = true; 834 bool is_decomposable = true;
826 SkFilterQuality quality = kHigh_SkFilterQuality; 835 SkFilterQuality quality = kHigh_SkFilterQuality;
827 836
828 sk_sp<SkImage> image = CreateImage(100, 100); 837 sk_sp<SkImage> image = CreateImage(100, 100);
829 DrawImage draw_image( 838 DrawImage draw_image(
830 image, SkIRect::MakeXYWH(20, 30, image->width(), image->height()), 839 image, SkIRect::MakeXYWH(20, 30, image->width(), image->height()),
831 quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 840 quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
832 scoped_refptr<TileTask> task; 841 scoped_refptr<TileTask> task;
833 bool need_unref = controller.GetTaskForImageAndRef( 842 bool need_unref = controller.GetTaskForImageAndRef(
834 draw_image, ImageDecodeController::TracingInfo(), &task); 843 draw_image, ImageDecodeController::TracingInfo(), &task);
(...skipping 19 matching lines...) Expand all
854 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().height()); 863 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().height());
855 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); 864 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality());
856 EXPECT_FALSE(decoded_draw_image.is_scale_adjustment_identity()); 865 EXPECT_FALSE(decoded_draw_image.is_scale_adjustment_identity());
857 EXPECT_FALSE(decoded_draw_image.is_at_raster_decode()); 866 EXPECT_FALSE(decoded_draw_image.is_at_raster_decode());
858 867
859 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 868 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
860 controller.UnrefImage(draw_image); 869 controller.UnrefImage(draw_image);
861 } 870 }
862 871
863 TEST(SoftwareImageDecodeControllerTest, GetDecodedImageForDrawAtRasterDecode) { 872 TEST(SoftwareImageDecodeControllerTest, GetDecodedImageForDrawAtRasterDecode) {
864 SoftwareImageDecodeController controller; 873 TestSoftwareImageDecodeController controller;
865 bool is_decomposable = true; 874 bool is_decomposable = true;
866 SkFilterQuality quality = kHigh_SkFilterQuality; 875 SkFilterQuality quality = kHigh_SkFilterQuality;
867 876
868 sk_sp<SkImage> image = CreateImage(100, 100); 877 sk_sp<SkImage> image = CreateImage(100, 100);
869 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), 878 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
870 quality, 879 quality,
871 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 880 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
872 881
873 DecodedDrawImage decoded_draw_image = 882 DecodedDrawImage decoded_draw_image =
874 controller.GetDecodedImageForDraw(draw_image); 883 controller.GetDecodedImageForDraw(draw_image);
875 EXPECT_TRUE(decoded_draw_image.image()); 884 EXPECT_TRUE(decoded_draw_image.image());
876 EXPECT_EQ(50, decoded_draw_image.image()->width()); 885 EXPECT_EQ(50, decoded_draw_image.image()->width());
877 EXPECT_EQ(50, decoded_draw_image.image()->height()); 886 EXPECT_EQ(50, decoded_draw_image.image()->height());
878 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().width()); 887 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().width());
879 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().height()); 888 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().height());
880 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); 889 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality());
881 EXPECT_FALSE(decoded_draw_image.is_scale_adjustment_identity()); 890 EXPECT_FALSE(decoded_draw_image.is_scale_adjustment_identity());
882 EXPECT_TRUE(decoded_draw_image.is_at_raster_decode()); 891 EXPECT_TRUE(decoded_draw_image.is_at_raster_decode());
883 892
884 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 893 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
885 } 894 }
886 895
887 TEST(SoftwareImageDecodeControllerTest, 896 TEST(SoftwareImageDecodeControllerTest,
888 GetDecodedImageForDrawAtRasterDecodeMultipleTimes) { 897 GetDecodedImageForDrawAtRasterDecodeMultipleTimes) {
889 SoftwareImageDecodeController controller; 898 TestSoftwareImageDecodeController controller;
890 bool is_decomposable = true; 899 bool is_decomposable = true;
891 SkFilterQuality quality = kHigh_SkFilterQuality; 900 SkFilterQuality quality = kHigh_SkFilterQuality;
892 901
893 sk_sp<SkImage> image = CreateImage(100, 100); 902 sk_sp<SkImage> image = CreateImage(100, 100);
894 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), 903 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
895 quality, 904 quality,
896 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 905 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
897 906
898 DecodedDrawImage decoded_draw_image = 907 DecodedDrawImage decoded_draw_image =
899 controller.GetDecodedImageForDraw(draw_image); 908 controller.GetDecodedImageForDraw(draw_image);
(...skipping 10 matching lines...) Expand all
910 controller.GetDecodedImageForDraw(draw_image); 919 controller.GetDecodedImageForDraw(draw_image);
911 EXPECT_EQ(decoded_draw_image.image()->uniqueID(), 920 EXPECT_EQ(decoded_draw_image.image()->uniqueID(),
912 another_decoded_draw_image.image()->uniqueID()); 921 another_decoded_draw_image.image()->uniqueID());
913 922
914 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 923 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
915 controller.DrawWithImageFinished(draw_image, another_decoded_draw_image); 924 controller.DrawWithImageFinished(draw_image, another_decoded_draw_image);
916 } 925 }
917 926
918 TEST(SoftwareImageDecodeControllerTest, 927 TEST(SoftwareImageDecodeControllerTest,
919 GetDecodedImageForDrawAtRasterDecodeDoesNotPreventTasks) { 928 GetDecodedImageForDrawAtRasterDecodeDoesNotPreventTasks) {
920 SoftwareImageDecodeController controller; 929 TestSoftwareImageDecodeController controller;
921 bool is_decomposable = true; 930 bool is_decomposable = true;
922 SkFilterQuality quality = kHigh_SkFilterQuality; 931 SkFilterQuality quality = kHigh_SkFilterQuality;
923 932
924 sk_sp<SkImage> image = CreateImage(100, 100); 933 sk_sp<SkImage> image = CreateImage(100, 100);
925 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), 934 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
926 quality, 935 quality,
927 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 936 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
928 937
929 DecodedDrawImage decoded_draw_image = 938 DecodedDrawImage decoded_draw_image =
930 controller.GetDecodedImageForDraw(draw_image); 939 controller.GetDecodedImageForDraw(draw_image);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
963 another_decoded_draw_image.image()->uniqueID()); 972 another_decoded_draw_image.image()->uniqueID());
964 EXPECT_FALSE(another_decoded_draw_image.is_at_raster_decode()); 973 EXPECT_FALSE(another_decoded_draw_image.is_at_raster_decode());
965 974
966 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 975 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
967 controller.DrawWithImageFinished(draw_image, another_decoded_draw_image); 976 controller.DrawWithImageFinished(draw_image, another_decoded_draw_image);
968 controller.UnrefImage(draw_image); 977 controller.UnrefImage(draw_image);
969 } 978 }
970 979
971 TEST(SoftwareImageDecodeControllerTest, 980 TEST(SoftwareImageDecodeControllerTest,
972 GetDecodedImageForDrawAtRasterDecodeIsUsedForLockedCache) { 981 GetDecodedImageForDrawAtRasterDecodeIsUsedForLockedCache) {
973 SoftwareImageDecodeController controller; 982 TestSoftwareImageDecodeController controller;
974 bool is_decomposable = true; 983 bool is_decomposable = true;
975 SkFilterQuality quality = kHigh_SkFilterQuality; 984 SkFilterQuality quality = kHigh_SkFilterQuality;
976 985
977 sk_sp<SkImage> image = CreateImage(100, 100); 986 sk_sp<SkImage> image = CreateImage(100, 100);
978 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), 987 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
979 quality, 988 quality,
980 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 989 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
981 990
982 DecodedDrawImage decoded_draw_image = 991 DecodedDrawImage decoded_draw_image =
983 controller.GetDecodedImageForDraw(draw_image); 992 controller.GetDecodedImageForDraw(draw_image);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1016 // raster time, since it's now in the locked cache. 1025 // raster time, since it's now in the locked cache.
1017 EXPECT_EQ(decoded_draw_image.image()->uniqueID(), 1026 EXPECT_EQ(decoded_draw_image.image()->uniqueID(),
1018 another_decoded_draw_image.image()->uniqueID()); 1027 another_decoded_draw_image.image()->uniqueID());
1019 EXPECT_FALSE(another_decoded_draw_image.is_at_raster_decode()); 1028 EXPECT_FALSE(another_decoded_draw_image.is_at_raster_decode());
1020 1029
1021 controller.DrawWithImageFinished(draw_image, another_decoded_draw_image); 1030 controller.DrawWithImageFinished(draw_image, another_decoded_draw_image);
1022 controller.UnrefImage(draw_image); 1031 controller.UnrefImage(draw_image);
1023 } 1032 }
1024 1033
1025 TEST(SoftwareImageDecodeControllerTest, ZeroSizedImagesAreSkipped) { 1034 TEST(SoftwareImageDecodeControllerTest, ZeroSizedImagesAreSkipped) {
1026 SoftwareImageDecodeController controller; 1035 TestSoftwareImageDecodeController controller;
1027 bool is_decomposable = true; 1036 bool is_decomposable = true;
1028 SkFilterQuality quality = kHigh_SkFilterQuality; 1037 SkFilterQuality quality = kHigh_SkFilterQuality;
1029 1038
1030 sk_sp<SkImage> image = CreateImage(100, 100); 1039 sk_sp<SkImage> image = CreateImage(100, 100);
1031 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), 1040 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
1032 quality, 1041 quality,
1033 CreateMatrix(SkSize::Make(0.f, 0.f), is_decomposable)); 1042 CreateMatrix(SkSize::Make(0.f, 0.f), is_decomposable));
1034 1043
1035 scoped_refptr<TileTask> task; 1044 scoped_refptr<TileTask> task;
1036 bool need_unref = controller.GetTaskForImageAndRef( 1045 bool need_unref = controller.GetTaskForImageAndRef(
1037 draw_image, ImageDecodeController::TracingInfo(), &task); 1046 draw_image, ImageDecodeController::TracingInfo(), &task);
1038 EXPECT_FALSE(task); 1047 EXPECT_FALSE(task);
1039 EXPECT_FALSE(need_unref); 1048 EXPECT_FALSE(need_unref);
1040 1049
1041 DecodedDrawImage decoded_draw_image = 1050 DecodedDrawImage decoded_draw_image =
1042 controller.GetDecodedImageForDraw(draw_image); 1051 controller.GetDecodedImageForDraw(draw_image);
1043 EXPECT_FALSE(decoded_draw_image.image()); 1052 EXPECT_FALSE(decoded_draw_image.image());
1044 1053
1045 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 1054 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
1046 } 1055 }
1047 1056
1048 TEST(SoftwareImageDecodeControllerTest, NonOverlappingSrcRectImagesAreSkipped) { 1057 TEST(SoftwareImageDecodeControllerTest, NonOverlappingSrcRectImagesAreSkipped) {
1049 SoftwareImageDecodeController controller; 1058 TestSoftwareImageDecodeController controller;
1050 bool is_decomposable = true; 1059 bool is_decomposable = true;
1051 SkFilterQuality quality = kHigh_SkFilterQuality; 1060 SkFilterQuality quality = kHigh_SkFilterQuality;
1052 1061
1053 sk_sp<SkImage> image = CreateImage(100, 100); 1062 sk_sp<SkImage> image = CreateImage(100, 100);
1054 DrawImage draw_image( 1063 DrawImage draw_image(
1055 image, SkIRect::MakeXYWH(150, 150, image->width(), image->height()), 1064 image, SkIRect::MakeXYWH(150, 150, image->width(), image->height()),
1056 quality, CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable)); 1065 quality, CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable));
1057 1066
1058 scoped_refptr<TileTask> task; 1067 scoped_refptr<TileTask> task;
1059 bool need_unref = controller.GetTaskForImageAndRef( 1068 bool need_unref = controller.GetTaskForImageAndRef(
1060 draw_image, ImageDecodeController::TracingInfo(), &task); 1069 draw_image, ImageDecodeController::TracingInfo(), &task);
1061 EXPECT_FALSE(task); 1070 EXPECT_FALSE(task);
1062 EXPECT_FALSE(need_unref); 1071 EXPECT_FALSE(need_unref);
1063 1072
1064 DecodedDrawImage decoded_draw_image = 1073 DecodedDrawImage decoded_draw_image =
1065 controller.GetDecodedImageForDraw(draw_image); 1074 controller.GetDecodedImageForDraw(draw_image);
1066 EXPECT_FALSE(decoded_draw_image.image()); 1075 EXPECT_FALSE(decoded_draw_image.image());
1067 1076
1068 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 1077 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
1069 } 1078 }
1070 1079
1071 TEST(SoftwareImageDecodeControllerTest, LowQualityFilterIsHandled) { 1080 TEST(SoftwareImageDecodeControllerTest, LowQualityFilterIsHandled) {
1072 SoftwareImageDecodeController controller; 1081 TestSoftwareImageDecodeController controller;
1073 bool is_decomposable = true; 1082 bool is_decomposable = true;
1074 SkFilterQuality quality = kLow_SkFilterQuality; 1083 SkFilterQuality quality = kLow_SkFilterQuality;
1075 1084
1076 sk_sp<SkImage> image = CreateImage(100, 100); 1085 sk_sp<SkImage> image = CreateImage(100, 100);
1077 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), 1086 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
1078 quality, 1087 quality,
1079 CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable)); 1088 CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable));
1080 1089
1081 scoped_refptr<TileTask> task; 1090 scoped_refptr<TileTask> task;
1082 bool need_unref = controller.GetTaskForImageAndRef( 1091 bool need_unref = controller.GetTaskForImageAndRef(
1083 draw_image, ImageDecodeController::TracingInfo(), &task); 1092 draw_image, ImageDecodeController::TracingInfo(), &task);
1084 EXPECT_TRUE(task); 1093 EXPECT_TRUE(task);
1085 EXPECT_TRUE(need_unref); 1094 EXPECT_TRUE(need_unref);
1086 1095
1087 DecodedDrawImage decoded_draw_image = 1096 DecodedDrawImage decoded_draw_image =
1088 controller.GetDecodedImageForDraw(draw_image); 1097 controller.GetDecodedImageForDraw(draw_image);
1089 EXPECT_TRUE(decoded_draw_image.image()); 1098 EXPECT_TRUE(decoded_draw_image.image());
1090 // If we decoded the image and cached it, it would be stored in a different 1099 // If we decoded the image and cached it, it would be stored in a different
1091 // SkImage object. 1100 // SkImage object.
1092 EXPECT_TRUE(decoded_draw_image.image() != image); 1101 EXPECT_TRUE(decoded_draw_image.image() != image);
1093 1102
1094 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 1103 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
1095 controller.UnrefImage(draw_image); 1104 controller.UnrefImage(draw_image);
1096 } 1105 }
1097 1106
1098 TEST(SoftwareImageDecodeControllerTest, LowQualityScaledSubrectIsHandled) { 1107 TEST(SoftwareImageDecodeControllerTest, LowQualityScaledSubrectIsHandled) {
1099 SoftwareImageDecodeController controller; 1108 TestSoftwareImageDecodeController controller;
1100 bool is_decomposable = true; 1109 bool is_decomposable = true;
1101 SkFilterQuality quality = kLow_SkFilterQuality; 1110 SkFilterQuality quality = kLow_SkFilterQuality;
1102 1111
1103 sk_sp<SkImage> image = CreateImage(100, 100); 1112 sk_sp<SkImage> image = CreateImage(100, 100);
1104 DrawImage draw_image(image, SkIRect::MakeXYWH(10, 10, 80, 80), quality, 1113 DrawImage draw_image(image, SkIRect::MakeXYWH(10, 10, 80, 80), quality,
1105 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 1114 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
1106 1115
1107 scoped_refptr<TileTask> task; 1116 scoped_refptr<TileTask> task;
1108 bool need_unref = controller.GetTaskForImageAndRef( 1117 bool need_unref = controller.GetTaskForImageAndRef(
1109 draw_image, ImageDecodeController::TracingInfo(), &task); 1118 draw_image, ImageDecodeController::TracingInfo(), &task);
1110 EXPECT_TRUE(task); 1119 EXPECT_TRUE(task);
1111 EXPECT_TRUE(need_unref); 1120 EXPECT_TRUE(need_unref);
1112 1121
1113 DecodedDrawImage decoded_draw_image = 1122 DecodedDrawImage decoded_draw_image =
1114 controller.GetDecodedImageForDraw(draw_image); 1123 controller.GetDecodedImageForDraw(draw_image);
1115 EXPECT_TRUE(decoded_draw_image.image()); 1124 EXPECT_TRUE(decoded_draw_image.image());
1116 // If we decoded the image and cached it, it would be stored in a different 1125 // If we decoded the image and cached it, it would be stored in a different
1117 // SkImage object. 1126 // SkImage object.
1118 EXPECT_TRUE(decoded_draw_image.image() != image); 1127 EXPECT_TRUE(decoded_draw_image.image() != image);
1119 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); 1128 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality());
1120 EXPECT_TRUE(decoded_draw_image.is_scale_adjustment_identity()); 1129 EXPECT_TRUE(decoded_draw_image.is_scale_adjustment_identity());
1121 1130
1122 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 1131 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
1123 controller.UnrefImage(draw_image); 1132 controller.UnrefImage(draw_image);
1124 } 1133 }
1125 1134
1126 TEST(SoftwareImageDecodeControllerTest, NoneQualityScaledSubrectIsHandled) { 1135 TEST(SoftwareImageDecodeControllerTest, NoneQualityScaledSubrectIsHandled) {
1127 SoftwareImageDecodeController controller; 1136 TestSoftwareImageDecodeController controller;
1128 bool is_decomposable = true; 1137 bool is_decomposable = true;
1129 SkFilterQuality quality = kNone_SkFilterQuality; 1138 SkFilterQuality quality = kNone_SkFilterQuality;
1130 1139
1131 sk_sp<SkImage> image = CreateImage(100, 100); 1140 sk_sp<SkImage> image = CreateImage(100, 100);
1132 DrawImage draw_image(image, SkIRect::MakeXYWH(10, 10, 80, 80), quality, 1141 DrawImage draw_image(image, SkIRect::MakeXYWH(10, 10, 80, 80), quality,
1133 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 1142 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
1134 1143
1135 scoped_refptr<TileTask> task; 1144 scoped_refptr<TileTask> task;
1136 bool need_unref = controller.GetTaskForImageAndRef( 1145 bool need_unref = controller.GetTaskForImageAndRef(
1137 draw_image, ImageDecodeController::TracingInfo(), &task); 1146 draw_image, ImageDecodeController::TracingInfo(), &task);
1138 EXPECT_TRUE(task); 1147 EXPECT_TRUE(task);
1139 EXPECT_TRUE(need_unref); 1148 EXPECT_TRUE(need_unref);
1140 1149
1141 DecodedDrawImage decoded_draw_image = 1150 DecodedDrawImage decoded_draw_image =
1142 controller.GetDecodedImageForDraw(draw_image); 1151 controller.GetDecodedImageForDraw(draw_image);
1143 EXPECT_TRUE(decoded_draw_image.image()); 1152 EXPECT_TRUE(decoded_draw_image.image());
1144 // If we decoded the image and cached it, it would be stored in a different 1153 // If we decoded the image and cached it, it would be stored in a different
1145 // SkImage object. 1154 // SkImage object.
1146 EXPECT_TRUE(decoded_draw_image.image() != image); 1155 EXPECT_TRUE(decoded_draw_image.image() != image);
1147 EXPECT_EQ(kNone_SkFilterQuality, decoded_draw_image.filter_quality()); 1156 EXPECT_EQ(kNone_SkFilterQuality, decoded_draw_image.filter_quality());
1148 EXPECT_TRUE(decoded_draw_image.is_scale_adjustment_identity()); 1157 EXPECT_TRUE(decoded_draw_image.is_scale_adjustment_identity());
1149 1158
1150 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 1159 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
1151 controller.UnrefImage(draw_image); 1160 controller.UnrefImage(draw_image);
1152 } 1161 }
1153 1162
1154 TEST(SoftwareImageDecodeControllerTest, MediumQualityAt01_5ScaleIsHandled) { 1163 TEST(SoftwareImageDecodeControllerTest, MediumQualityAt01_5ScaleIsHandled) {
1155 SoftwareImageDecodeController controller; 1164 TestSoftwareImageDecodeController controller;
1156 bool is_decomposable = true; 1165 bool is_decomposable = true;
1157 SkFilterQuality quality = kMedium_SkFilterQuality; 1166 SkFilterQuality quality = kMedium_SkFilterQuality;
1158 1167
1159 sk_sp<SkImage> image = CreateImage(500, 200); 1168 sk_sp<SkImage> image = CreateImage(500, 200);
1160 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), 1169 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
1161 quality, 1170 quality,
1162 CreateMatrix(SkSize::Make(1.5f, 1.5f), is_decomposable)); 1171 CreateMatrix(SkSize::Make(1.5f, 1.5f), is_decomposable));
1163 1172
1164 scoped_refptr<TileTask> task; 1173 scoped_refptr<TileTask> task;
1165 bool need_unref = controller.GetTaskForImageAndRef( 1174 bool need_unref = controller.GetTaskForImageAndRef(
1166 draw_image, ImageDecodeController::TracingInfo(), &task); 1175 draw_image, ImageDecodeController::TracingInfo(), &task);
1167 EXPECT_TRUE(task); 1176 EXPECT_TRUE(task);
1168 EXPECT_TRUE(need_unref); 1177 EXPECT_TRUE(need_unref);
1169 1178
1170 DecodedDrawImage decoded_draw_image = 1179 DecodedDrawImage decoded_draw_image =
1171 controller.GetDecodedImageForDraw(draw_image); 1180 controller.GetDecodedImageForDraw(draw_image);
1172 EXPECT_TRUE(decoded_draw_image.image()); 1181 EXPECT_TRUE(decoded_draw_image.image());
1173 // If we decoded the image and cached it, it would be stored in a different 1182 // If we decoded the image and cached it, it would be stored in a different
1174 // SkImageObject. 1183 // SkImageObject.
1175 EXPECT_TRUE(decoded_draw_image.image() != image); 1184 EXPECT_TRUE(decoded_draw_image.image() != image);
1176 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); 1185 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality());
1177 EXPECT_EQ(500, decoded_draw_image.image()->width()); 1186 EXPECT_EQ(500, decoded_draw_image.image()->width());
1178 EXPECT_EQ(200, decoded_draw_image.image()->height()); 1187 EXPECT_EQ(200, decoded_draw_image.image()->height());
1179 1188
1180 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 1189 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
1181 controller.UnrefImage(draw_image); 1190 controller.UnrefImage(draw_image);
1182 } 1191 }
1183 1192
1184 TEST(SoftwareImageDecodeControllerTest, MediumQualityAt1_0ScaleIsHandled) { 1193 TEST(SoftwareImageDecodeControllerTest, MediumQualityAt1_0ScaleIsHandled) {
1185 SoftwareImageDecodeController controller; 1194 TestSoftwareImageDecodeController controller;
1186 bool is_decomposable = true; 1195 bool is_decomposable = true;
1187 SkFilterQuality quality = kMedium_SkFilterQuality; 1196 SkFilterQuality quality = kMedium_SkFilterQuality;
1188 1197
1189 sk_sp<SkImage> image = CreateImage(500, 200); 1198 sk_sp<SkImage> image = CreateImage(500, 200);
1190 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), 1199 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
1191 quality, 1200 quality,
1192 CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable)); 1201 CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable));
1193 1202
1194 scoped_refptr<TileTask> task; 1203 scoped_refptr<TileTask> task;
1195 bool need_unref = controller.GetTaskForImageAndRef( 1204 bool need_unref = controller.GetTaskForImageAndRef(
1196 draw_image, ImageDecodeController::TracingInfo(), &task); 1205 draw_image, ImageDecodeController::TracingInfo(), &task);
1197 EXPECT_TRUE(task); 1206 EXPECT_TRUE(task);
1198 EXPECT_TRUE(need_unref); 1207 EXPECT_TRUE(need_unref);
1199 1208
1200 DecodedDrawImage decoded_draw_image = 1209 DecodedDrawImage decoded_draw_image =
1201 controller.GetDecodedImageForDraw(draw_image); 1210 controller.GetDecodedImageForDraw(draw_image);
1202 EXPECT_TRUE(decoded_draw_image.image()); 1211 EXPECT_TRUE(decoded_draw_image.image());
1203 // If we decoded the image and cached it, it would be stored in a different 1212 // If we decoded the image and cached it, it would be stored in a different
1204 // SkImageObject. 1213 // SkImageObject.
1205 EXPECT_TRUE(decoded_draw_image.image() != image); 1214 EXPECT_TRUE(decoded_draw_image.image() != image);
1206 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); 1215 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality());
1207 EXPECT_EQ(500, decoded_draw_image.image()->width()); 1216 EXPECT_EQ(500, decoded_draw_image.image()->width());
1208 EXPECT_EQ(200, decoded_draw_image.image()->height()); 1217 EXPECT_EQ(200, decoded_draw_image.image()->height());
1209 1218
1210 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 1219 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
1211 controller.UnrefImage(draw_image); 1220 controller.UnrefImage(draw_image);
1212 } 1221 }
1213 1222
1214 TEST(SoftwareImageDecodeControllerTest, MediumQualityAt0_75ScaleIsHandled) { 1223 TEST(SoftwareImageDecodeControllerTest, MediumQualityAt0_75ScaleIsHandled) {
1215 SoftwareImageDecodeController controller; 1224 TestSoftwareImageDecodeController controller;
1216 bool is_decomposable = true; 1225 bool is_decomposable = true;
1217 SkFilterQuality quality = kMedium_SkFilterQuality; 1226 SkFilterQuality quality = kMedium_SkFilterQuality;
1218 1227
1219 sk_sp<SkImage> image = CreateImage(500, 200); 1228 sk_sp<SkImage> image = CreateImage(500, 200);
1220 DrawImage draw_image( 1229 DrawImage draw_image(
1221 image, SkIRect::MakeWH(image->width(), image->height()), quality, 1230 image, SkIRect::MakeWH(image->width(), image->height()), quality,
1222 CreateMatrix(SkSize::Make(0.75f, 0.75f), is_decomposable)); 1231 CreateMatrix(SkSize::Make(0.75f, 0.75f), is_decomposable));
1223 1232
1224 scoped_refptr<TileTask> task; 1233 scoped_refptr<TileTask> task;
1225 bool need_unref = controller.GetTaskForImageAndRef( 1234 bool need_unref = controller.GetTaskForImageAndRef(
1226 draw_image, ImageDecodeController::TracingInfo(), &task); 1235 draw_image, ImageDecodeController::TracingInfo(), &task);
1227 EXPECT_TRUE(task); 1236 EXPECT_TRUE(task);
1228 EXPECT_TRUE(need_unref); 1237 EXPECT_TRUE(need_unref);
1229 1238
1230 DecodedDrawImage decoded_draw_image = 1239 DecodedDrawImage decoded_draw_image =
1231 controller.GetDecodedImageForDraw(draw_image); 1240 controller.GetDecodedImageForDraw(draw_image);
1232 EXPECT_TRUE(decoded_draw_image.image()); 1241 EXPECT_TRUE(decoded_draw_image.image());
1233 // If we decoded the image and cached it, it would be stored in a different 1242 // If we decoded the image and cached it, it would be stored in a different
1234 // SkImageObject. 1243 // SkImageObject.
1235 EXPECT_TRUE(decoded_draw_image.image() != image); 1244 EXPECT_TRUE(decoded_draw_image.image() != image);
1236 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); 1245 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality());
1237 EXPECT_EQ(500, decoded_draw_image.image()->width()); 1246 EXPECT_EQ(500, decoded_draw_image.image()->width());
1238 EXPECT_EQ(200, decoded_draw_image.image()->height()); 1247 EXPECT_EQ(200, decoded_draw_image.image()->height());
1239 1248
1240 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 1249 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
1241 controller.UnrefImage(draw_image); 1250 controller.UnrefImage(draw_image);
1242 } 1251 }
1243 1252
1244 TEST(SoftwareImageDecodeControllerTest, MediumQualityAt0_5ScaleIsHandled) { 1253 TEST(SoftwareImageDecodeControllerTest, MediumQualityAt0_5ScaleIsHandled) {
1245 SoftwareImageDecodeController controller; 1254 TestSoftwareImageDecodeController controller;
1246 bool is_decomposable = true; 1255 bool is_decomposable = true;
1247 SkFilterQuality quality = kMedium_SkFilterQuality; 1256 SkFilterQuality quality = kMedium_SkFilterQuality;
1248 1257
1249 sk_sp<SkImage> image = CreateImage(500, 200); 1258 sk_sp<SkImage> image = CreateImage(500, 200);
1250 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), 1259 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
1251 quality, 1260 quality,
1252 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 1261 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
1253 1262
1254 scoped_refptr<TileTask> task; 1263 scoped_refptr<TileTask> task;
1255 bool need_unref = controller.GetTaskForImageAndRef( 1264 bool need_unref = controller.GetTaskForImageAndRef(
1256 draw_image, ImageDecodeController::TracingInfo(), &task); 1265 draw_image, ImageDecodeController::TracingInfo(), &task);
1257 EXPECT_TRUE(task); 1266 EXPECT_TRUE(task);
1258 EXPECT_TRUE(need_unref); 1267 EXPECT_TRUE(need_unref);
1259 1268
1260 DecodedDrawImage decoded_draw_image = 1269 DecodedDrawImage decoded_draw_image =
1261 controller.GetDecodedImageForDraw(draw_image); 1270 controller.GetDecodedImageForDraw(draw_image);
1262 EXPECT_TRUE(decoded_draw_image.image()); 1271 EXPECT_TRUE(decoded_draw_image.image());
1263 // If we decoded the image and cached it, it would be stored in a different 1272 // If we decoded the image and cached it, it would be stored in a different
1264 // SkImageObject. 1273 // SkImageObject.
1265 EXPECT_TRUE(decoded_draw_image.image() != image); 1274 EXPECT_TRUE(decoded_draw_image.image() != image);
1266 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); 1275 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality());
1267 EXPECT_EQ(250, decoded_draw_image.image()->width()); 1276 EXPECT_EQ(250, decoded_draw_image.image()->width());
1268 EXPECT_EQ(100, decoded_draw_image.image()->height()); 1277 EXPECT_EQ(100, decoded_draw_image.image()->height());
1269 1278
1270 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 1279 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
1271 controller.UnrefImage(draw_image); 1280 controller.UnrefImage(draw_image);
1272 } 1281 }
1273 1282
1274 TEST(SoftwareImageDecodeControllerTest, MediumQualityAt0_49ScaleIsHandled) { 1283 TEST(SoftwareImageDecodeControllerTest, MediumQualityAt0_49ScaleIsHandled) {
1275 SoftwareImageDecodeController controller; 1284 TestSoftwareImageDecodeController controller;
1276 bool is_decomposable = true; 1285 bool is_decomposable = true;
1277 SkFilterQuality quality = kMedium_SkFilterQuality; 1286 SkFilterQuality quality = kMedium_SkFilterQuality;
1278 1287
1279 sk_sp<SkImage> image = CreateImage(500, 200); 1288 sk_sp<SkImage> image = CreateImage(500, 200);
1280 DrawImage draw_image( 1289 DrawImage draw_image(
1281 image, SkIRect::MakeWH(image->width(), image->height()), quality, 1290 image, SkIRect::MakeWH(image->width(), image->height()), quality,
1282 CreateMatrix(SkSize::Make(0.49f, 0.49f), is_decomposable)); 1291 CreateMatrix(SkSize::Make(0.49f, 0.49f), is_decomposable));
1283 1292
1284 scoped_refptr<TileTask> task; 1293 scoped_refptr<TileTask> task;
1285 bool need_unref = controller.GetTaskForImageAndRef( 1294 bool need_unref = controller.GetTaskForImageAndRef(
1286 draw_image, ImageDecodeController::TracingInfo(), &task); 1295 draw_image, ImageDecodeController::TracingInfo(), &task);
1287 EXPECT_TRUE(task); 1296 EXPECT_TRUE(task);
1288 EXPECT_TRUE(need_unref); 1297 EXPECT_TRUE(need_unref);
1289 1298
1290 DecodedDrawImage decoded_draw_image = 1299 DecodedDrawImage decoded_draw_image =
1291 controller.GetDecodedImageForDraw(draw_image); 1300 controller.GetDecodedImageForDraw(draw_image);
1292 EXPECT_TRUE(decoded_draw_image.image()); 1301 EXPECT_TRUE(decoded_draw_image.image());
1293 // If we decoded the image and cached it, it would be stored in a different 1302 // If we decoded the image and cached it, it would be stored in a different
1294 // SkImageObject. 1303 // SkImageObject.
1295 EXPECT_TRUE(decoded_draw_image.image() != image); 1304 EXPECT_TRUE(decoded_draw_image.image() != image);
1296 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); 1305 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality());
1297 EXPECT_EQ(250, decoded_draw_image.image()->width()); 1306 EXPECT_EQ(250, decoded_draw_image.image()->width());
1298 EXPECT_EQ(100, decoded_draw_image.image()->height()); 1307 EXPECT_EQ(100, decoded_draw_image.image()->height());
1299 1308
1300 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 1309 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
1301 controller.UnrefImage(draw_image); 1310 controller.UnrefImage(draw_image);
1302 } 1311 }
1303 1312
1304 TEST(SoftwareImageDecodeControllerTest, MediumQualityAt0_1ScaleIsHandled) { 1313 TEST(SoftwareImageDecodeControllerTest, MediumQualityAt0_1ScaleIsHandled) {
1305 SoftwareImageDecodeController controller; 1314 TestSoftwareImageDecodeController controller;
1306 bool is_decomposable = true; 1315 bool is_decomposable = true;
1307 SkFilterQuality quality = kMedium_SkFilterQuality; 1316 SkFilterQuality quality = kMedium_SkFilterQuality;
1308 1317
1309 sk_sp<SkImage> image = CreateImage(500, 200); 1318 sk_sp<SkImage> image = CreateImage(500, 200);
1310 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), 1319 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
1311 quality, 1320 quality,
1312 CreateMatrix(SkSize::Make(0.1f, 0.1f), is_decomposable)); 1321 CreateMatrix(SkSize::Make(0.1f, 0.1f), is_decomposable));
1313 1322
1314 scoped_refptr<TileTask> task; 1323 scoped_refptr<TileTask> task;
1315 bool need_unref = controller.GetTaskForImageAndRef( 1324 bool need_unref = controller.GetTaskForImageAndRef(
1316 draw_image, ImageDecodeController::TracingInfo(), &task); 1325 draw_image, ImageDecodeController::TracingInfo(), &task);
1317 EXPECT_TRUE(task); 1326 EXPECT_TRUE(task);
1318 EXPECT_TRUE(need_unref); 1327 EXPECT_TRUE(need_unref);
1319 1328
1320 DecodedDrawImage decoded_draw_image = 1329 DecodedDrawImage decoded_draw_image =
1321 controller.GetDecodedImageForDraw(draw_image); 1330 controller.GetDecodedImageForDraw(draw_image);
1322 EXPECT_TRUE(decoded_draw_image.image()); 1331 EXPECT_TRUE(decoded_draw_image.image());
1323 // If we decoded the image and cached it, it would be stored in a different 1332 // If we decoded the image and cached it, it would be stored in a different
1324 // SkImageObject. 1333 // SkImageObject.
1325 EXPECT_TRUE(decoded_draw_image.image() != image); 1334 EXPECT_TRUE(decoded_draw_image.image() != image);
1326 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); 1335 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality());
1327 EXPECT_EQ(62, decoded_draw_image.image()->width()); 1336 EXPECT_EQ(62, decoded_draw_image.image()->width());
1328 EXPECT_EQ(25, decoded_draw_image.image()->height()); 1337 EXPECT_EQ(25, decoded_draw_image.image()->height());
1329 1338
1330 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 1339 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
1331 controller.UnrefImage(draw_image); 1340 controller.UnrefImage(draw_image);
1332 } 1341 }
1333 1342
1334 TEST(SoftwareImageDecodeControllerTest, MediumQualityAt0_01ScaleIsHandled) { 1343 TEST(SoftwareImageDecodeControllerTest, MediumQualityAt0_01ScaleIsHandled) {
1335 SoftwareImageDecodeController controller; 1344 TestSoftwareImageDecodeController controller;
1336 bool is_decomposable = true; 1345 bool is_decomposable = true;
1337 SkFilterQuality quality = kMedium_SkFilterQuality; 1346 SkFilterQuality quality = kMedium_SkFilterQuality;
1338 1347
1339 sk_sp<SkImage> image = CreateImage(500, 200); 1348 sk_sp<SkImage> image = CreateImage(500, 200);
1340 DrawImage draw_image( 1349 DrawImage draw_image(
1341 image, SkIRect::MakeWH(image->width(), image->height()), quality, 1350 image, SkIRect::MakeWH(image->width(), image->height()), quality,
1342 CreateMatrix(SkSize::Make(0.01f, 0.01f), is_decomposable)); 1351 CreateMatrix(SkSize::Make(0.01f, 0.01f), is_decomposable));
1343 1352
1344 scoped_refptr<TileTask> task; 1353 scoped_refptr<TileTask> task;
1345 bool need_unref = controller.GetTaskForImageAndRef( 1354 bool need_unref = controller.GetTaskForImageAndRef(
1346 draw_image, ImageDecodeController::TracingInfo(), &task); 1355 draw_image, ImageDecodeController::TracingInfo(), &task);
1347 EXPECT_TRUE(task); 1356 EXPECT_TRUE(task);
1348 EXPECT_TRUE(need_unref); 1357 EXPECT_TRUE(need_unref);
1349 1358
1350 DecodedDrawImage decoded_draw_image = 1359 DecodedDrawImage decoded_draw_image =
1351 controller.GetDecodedImageForDraw(draw_image); 1360 controller.GetDecodedImageForDraw(draw_image);
1352 EXPECT_TRUE(decoded_draw_image.image()); 1361 EXPECT_TRUE(decoded_draw_image.image());
1353 // If we decoded the image and cached it, it would be stored in a different 1362 // If we decoded the image and cached it, it would be stored in a different
1354 // SkImageObject. 1363 // SkImageObject.
1355 EXPECT_TRUE(decoded_draw_image.image() != image); 1364 EXPECT_TRUE(decoded_draw_image.image() != image);
1356 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); 1365 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality());
1357 EXPECT_EQ(7, decoded_draw_image.image()->width()); 1366 EXPECT_EQ(7, decoded_draw_image.image()->width());
1358 EXPECT_EQ(3, decoded_draw_image.image()->height()); 1367 EXPECT_EQ(3, decoded_draw_image.image()->height());
1359 1368
1360 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 1369 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
1361 controller.UnrefImage(draw_image); 1370 controller.UnrefImage(draw_image);
1362 } 1371 }
1363 1372
1364 TEST(SoftwareImageDecodeControllerTest, MediumQualityAt0_001ScaleIsHandled) { 1373 TEST(SoftwareImageDecodeControllerTest, MediumQualityAt0_001ScaleIsHandled) {
1365 SoftwareImageDecodeController controller; 1374 TestSoftwareImageDecodeController controller;
1366 bool is_decomposable = true; 1375 bool is_decomposable = true;
1367 SkFilterQuality quality = kMedium_SkFilterQuality; 1376 SkFilterQuality quality = kMedium_SkFilterQuality;
1368 1377
1369 sk_sp<SkImage> image = CreateImage(500, 200); 1378 sk_sp<SkImage> image = CreateImage(500, 200);
1370 DrawImage draw_image( 1379 DrawImage draw_image(
1371 image, SkIRect::MakeWH(image->width(), image->height()), quality, 1380 image, SkIRect::MakeWH(image->width(), image->height()), quality,
1372 CreateMatrix(SkSize::Make(0.001f, 0.001f), is_decomposable)); 1381 CreateMatrix(SkSize::Make(0.001f, 0.001f), is_decomposable));
1373 1382
1374 scoped_refptr<TileTask> task; 1383 scoped_refptr<TileTask> task;
1375 bool need_unref = controller.GetTaskForImageAndRef( 1384 bool need_unref = controller.GetTaskForImageAndRef(
1376 draw_image, ImageDecodeController::TracingInfo(), &task); 1385 draw_image, ImageDecodeController::TracingInfo(), &task);
1377 EXPECT_FALSE(task); 1386 EXPECT_FALSE(task);
1378 EXPECT_FALSE(need_unref); 1387 EXPECT_FALSE(need_unref);
1379 1388
1380 DecodedDrawImage decoded_draw_image = 1389 DecodedDrawImage decoded_draw_image =
1381 controller.GetDecodedImageForDraw(draw_image); 1390 controller.GetDecodedImageForDraw(draw_image);
1382 EXPECT_FALSE(decoded_draw_image.image()); 1391 EXPECT_FALSE(decoded_draw_image.image());
1383 1392
1384 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 1393 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
1385 } 1394 }
1386 1395
1387 TEST(SoftwareImageDecodeControllerTest, 1396 TEST(SoftwareImageDecodeControllerTest,
1388 MediumQualityImagesAreTheSameAt0_5And0_49Scale) { 1397 MediumQualityImagesAreTheSameAt0_5And0_49Scale) {
1389 SoftwareImageDecodeController controller; 1398 TestSoftwareImageDecodeController controller;
1390 bool is_decomposable = true; 1399 bool is_decomposable = true;
1391 SkFilterQuality quality = kMedium_SkFilterQuality; 1400 SkFilterQuality quality = kMedium_SkFilterQuality;
1392 1401
1393 sk_sp<SkImage> image = CreateImage(500, 200); 1402 sk_sp<SkImage> image = CreateImage(500, 200);
1394 DrawImage draw_image_50( 1403 DrawImage draw_image_50(
1395 image, SkIRect::MakeWH(image->width(), image->height()), quality, 1404 image, SkIRect::MakeWH(image->width(), image->height()), quality,
1396 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 1405 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
1397 DrawImage draw_image_49( 1406 DrawImage draw_image_49(
1398 image, SkIRect::MakeWH(image->width(), image->height()), quality, 1407 image, SkIRect::MakeWH(image->width(), image->height()), quality,
1399 CreateMatrix(SkSize::Make(0.49f, 0.49f), is_decomposable)); 1408 CreateMatrix(SkSize::Make(0.49f, 0.49f), is_decomposable));
(...skipping 29 matching lines...) Expand all
1429 EXPECT_EQ(decoded_draw_image_50.image(), decoded_draw_image_49.image()); 1438 EXPECT_EQ(decoded_draw_image_50.image(), decoded_draw_image_49.image());
1430 1439
1431 controller.DrawWithImageFinished(draw_image_50, decoded_draw_image_50); 1440 controller.DrawWithImageFinished(draw_image_50, decoded_draw_image_50);
1432 controller.UnrefImage(draw_image_50); 1441 controller.UnrefImage(draw_image_50);
1433 controller.DrawWithImageFinished(draw_image_49, decoded_draw_image_49); 1442 controller.DrawWithImageFinished(draw_image_49, decoded_draw_image_49);
1434 controller.UnrefImage(draw_image_49); 1443 controller.UnrefImage(draw_image_49);
1435 } 1444 }
1436 1445
1437 } // namespace 1446 } // namespace
1438 } // namespace cc 1447 } // namespace cc
OLDNEW
« no previous file with comments | « cc/tiles/software_image_decode_controller.cc ('k') | cc/trees/layer_tree_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698