| Index: cc/tiles/software_image_decode_cache_unittest.cc
 | 
| diff --git a/cc/tiles/software_image_decode_cache_unittest.cc b/cc/tiles/software_image_decode_cache_unittest.cc
 | 
| index 540f787f5c79c4adc3ea5ca397df99b33668d8a5..274f508cdf03a2997908a804ddf4999f1604ded4 100644
 | 
| --- a/cc/tiles/software_image_decode_cache_unittest.cc
 | 
| +++ b/cc/tiles/software_image_decode_cache_unittest.cc
 | 
| @@ -50,13 +50,20 @@ SkMatrix CreateMatrix(const SkSize& scale, bool is_decomposable) {
 | 
|    return matrix;
 | 
|  }
 | 
|  
 | 
| +PaintImage::Id s_paint_image_id = PaintImage::GetNextId();
 | 
| +
 | 
| +PaintImage CreatePaintImage(sk_sp<SkImage> image) {
 | 
| +  return PaintImage(s_paint_image_id, image);
 | 
| +}
 | 
| +
 | 
|  TEST(SoftwareImageDecodeCacheTest, ImageKeyLowQuality) {
 | 
|    sk_sp<SkImage> image = CreateImage(100, 100);
 | 
|    bool is_decomposable = true;
 | 
|    SkFilterQuality qualities[] = {kNone_SkFilterQuality, kLow_SkFilterQuality};
 | 
|    for (auto quality : qualities) {
 | 
|      DrawImage draw_image(
 | 
| -        image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| +        CreatePaintImage(image),
 | 
| +        SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
|          CreateMatrix(SkSize::Make(0.5f, 1.5f), is_decomposable),
 | 
|          DefaultColorSpace());
 | 
|  
 | 
| @@ -77,10 +84,10 @@ TEST(SoftwareImageDecodeCacheTest, ImageKeyMediumQuality) {
 | 
|    bool is_decomposable = true;
 | 
|    SkFilterQuality quality = kMedium_SkFilterQuality;
 | 
|  
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(0.5f, 1.5f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.5f, 1.5f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
|    EXPECT_EQ(image->uniqueID(), key.image_id());
 | 
| @@ -96,10 +103,10 @@ TEST(SoftwareImageDecodeCacheTest, ImageKeyMediumQualityDropToLowIfEnlarging) {
 | 
|    bool is_decomposable = true;
 | 
|    SkFilterQuality quality = kMedium_SkFilterQuality;
 | 
|  
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(1.5f, 1.5f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(1.5f, 1.5f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
|    EXPECT_EQ(image->uniqueID(), key.image_id());
 | 
| @@ -115,10 +122,10 @@ TEST(SoftwareImageDecodeCacheTest, ImageKeyMediumQualityDropToLowIfIdentity) {
 | 
|    bool is_decomposable = true;
 | 
|    SkFilterQuality quality = kMedium_SkFilterQuality;
 | 
|  
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
|    EXPECT_EQ(image->uniqueID(), key.image_id());
 | 
| @@ -136,8 +143,8 @@ TEST(SoftwareImageDecodeCacheTest,
 | 
|    SkFilterQuality quality = kMedium_SkFilterQuality;
 | 
|  
 | 
|    DrawImage draw_image(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| -      CreateMatrix(SkSize::Make(1.001f, 1.001f), is_decomposable),
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(1.001f, 1.001f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
| @@ -156,8 +163,8 @@ TEST(SoftwareImageDecodeCacheTest,
 | 
|    SkFilterQuality quality = kMedium_SkFilterQuality;
 | 
|  
 | 
|    DrawImage draw_image(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| -      CreateMatrix(SkSize::Make(0.999f, 0.999f), is_decomposable),
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.999f, 0.999f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
| @@ -175,10 +182,10 @@ TEST(SoftwareImageDecodeCacheTest,
 | 
|    bool is_decomposable = false;
 | 
|    SkFilterQuality quality = kMedium_SkFilterQuality;
 | 
|  
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(0.5f, 1.5f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.5f, 1.5f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
|    EXPECT_EQ(image->uniqueID(), key.image_id());
 | 
| @@ -194,10 +201,10 @@ TEST(SoftwareImageDecodeCacheTest, ImageKeyMediumQualityAt1_5Scale) {
 | 
|    bool is_decomposable = true;
 | 
|    SkFilterQuality quality = kMedium_SkFilterQuality;
 | 
|  
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(1.5f, 1.5f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(1.5f, 1.5f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
|    EXPECT_EQ(image->uniqueID(), key.image_id());
 | 
| @@ -213,10 +220,10 @@ TEST(SoftwareImageDecodeCacheTest, ImageKeyMediumQualityAt1_0cale) {
 | 
|    bool is_decomposable = true;
 | 
|    SkFilterQuality quality = kMedium_SkFilterQuality;
 | 
|  
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
|    EXPECT_EQ(image->uniqueID(), key.image_id());
 | 
| @@ -233,8 +240,8 @@ TEST(SoftwareImageDecodeCacheTest, ImageKeyMediumQualityAt0_75Scale) {
 | 
|    SkFilterQuality quality = kMedium_SkFilterQuality;
 | 
|  
 | 
|    DrawImage draw_image(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| -      CreateMatrix(SkSize::Make(0.75f, 0.75f), is_decomposable),
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.75f, 0.75f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
| @@ -251,10 +258,10 @@ TEST(SoftwareImageDecodeCacheTest, ImageKeyMediumQualityAt0_5Scale) {
 | 
|    bool is_decomposable = true;
 | 
|    SkFilterQuality quality = kMedium_SkFilterQuality;
 | 
|  
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
|    EXPECT_EQ(image->uniqueID(), key.image_id());
 | 
| @@ -271,8 +278,8 @@ TEST(SoftwareImageDecodeCacheTest, ImageKeyMediumQualityAt0_49Scale) {
 | 
|    SkFilterQuality quality = kMedium_SkFilterQuality;
 | 
|  
 | 
|    DrawImage draw_image(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| -      CreateMatrix(SkSize::Make(0.49f, 0.49f), is_decomposable),
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.49f, 0.49f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
| @@ -289,10 +296,10 @@ TEST(SoftwareImageDecodeCacheTest, ImageKeyMediumQualityAt0_1Scale) {
 | 
|    bool is_decomposable = true;
 | 
|    SkFilterQuality quality = kMedium_SkFilterQuality;
 | 
|  
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(0.1f, 0.1f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.1f, 0.1f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
|    EXPECT_EQ(image->uniqueID(), key.image_id());
 | 
| @@ -309,8 +316,8 @@ TEST(SoftwareImageDecodeCacheTest, ImageKeyMediumQualityAt0_01Scale) {
 | 
|    SkFilterQuality quality = kMedium_SkFilterQuality;
 | 
|  
 | 
|    DrawImage draw_image(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| -      CreateMatrix(SkSize::Make(0.01f, 0.01f), is_decomposable),
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.01f, 0.01f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
| @@ -328,10 +335,10 @@ TEST(SoftwareImageDecodeCacheTest,
 | 
|    bool is_decomposable = true;
 | 
|    SkFilterQuality quality = kHigh_SkFilterQuality;
 | 
|  
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(0.5f, 1.5f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.5f, 1.5f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
|    EXPECT_EQ(image->uniqueID(), key.image_id());
 | 
| @@ -348,10 +355,10 @@ TEST(SoftwareImageDecodeCacheTest,
 | 
|    bool is_decomposable = true;
 | 
|    SkFilterQuality quality = kHigh_SkFilterQuality;
 | 
|  
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(0.5f, 0.2f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.5f, 0.2f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
|    EXPECT_EQ(image->uniqueID(), key.image_id());
 | 
| @@ -367,10 +374,10 @@ TEST(SoftwareImageDecodeCacheTest, ImageKeyDowscalesHighQuality) {
 | 
|    bool is_decomposable = true;
 | 
|    SkFilterQuality quality = kHigh_SkFilterQuality;
 | 
|  
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(2.5f, 1.5f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(2.5f, 1.5f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
|    EXPECT_EQ(image->uniqueID(), key.image_id());
 | 
| @@ -389,10 +396,10 @@ TEST(SoftwareImageDecodeCacheTest, ImageKeyHighQualityDropToMediumIfTooLarge) {
 | 
|  
 | 
|    // At least one dimension should scale down, so that medium quality doesn't
 | 
|    // become low.
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(0.9f, 2.f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.9f, 2.f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
|    EXPECT_EQ(image->uniqueID(), key.image_id());
 | 
| @@ -409,10 +416,10 @@ TEST(SoftwareImageDecodeCacheTest,
 | 
|    bool is_decomposable = false;
 | 
|    SkFilterQuality quality = kHigh_SkFilterQuality;
 | 
|  
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(0.5f, 1.5f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.5f, 1.5f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
|    EXPECT_EQ(image->uniqueID(), key.image_id());
 | 
| @@ -428,10 +435,10 @@ TEST(SoftwareImageDecodeCacheTest, ImageKeyHighQualityDropToLowIfIdentity) {
 | 
|    bool is_decomposable = true;
 | 
|    SkFilterQuality quality = kHigh_SkFilterQuality;
 | 
|  
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
|    EXPECT_EQ(image->uniqueID(), key.image_id());
 | 
| @@ -449,8 +456,8 @@ TEST(SoftwareImageDecodeCacheTest,
 | 
|    SkFilterQuality quality = kHigh_SkFilterQuality;
 | 
|  
 | 
|    DrawImage draw_image(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| -      CreateMatrix(SkSize::Make(1.001f, 1.001f), is_decomposable),
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(1.001f, 1.001f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
| @@ -469,8 +476,8 @@ TEST(SoftwareImageDecodeCacheTest,
 | 
|    SkFilterQuality quality = kHigh_SkFilterQuality;
 | 
|  
 | 
|    DrawImage draw_image(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| -      CreateMatrix(SkSize::Make(0.999f, 0.999f), is_decomposable),
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.999f, 0.999f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
| @@ -487,10 +494,10 @@ TEST(SoftwareImageDecodeCacheTest, OriginalDecodesAreEqual) {
 | 
|    bool is_decomposable = true;
 | 
|    SkFilterQuality quality = kLow_SkFilterQuality;
 | 
|  
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(0.5f, 0.5), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.5f, 0.5), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
|    EXPECT_EQ(image->uniqueID(), key.image_id());
 | 
| @@ -501,8 +508,8 @@ TEST(SoftwareImageDecodeCacheTest, OriginalDecodesAreEqual) {
 | 
|    EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
 | 
|  
 | 
|    DrawImage another_draw_image(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| -      CreateMatrix(SkSize::Make(1.5f, 1.5), is_decomposable),
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(1.5f, 1.5), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|  
 | 
|    auto another_key = ImageDecodeCacheKey::FromDrawImage(another_draw_image);
 | 
| @@ -522,8 +529,9 @@ TEST(SoftwareImageDecodeCacheTest, ImageRectDoesNotContainSrcRect) {
 | 
|    SkFilterQuality quality = kHigh_SkFilterQuality;
 | 
|  
 | 
|    DrawImage draw_image(
 | 
| -      image, SkIRect::MakeXYWH(25, 35, image->width(), image->height()),
 | 
| -      quality, CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable),
 | 
| +      CreatePaintImage(image),
 | 
| +      SkIRect::MakeXYWH(25, 35, image->width(), image->height()), quality,
 | 
| +      CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
| @@ -541,8 +549,9 @@ TEST(SoftwareImageDecodeCacheTest, ImageRectDoesNotContainSrcRectWithScale) {
 | 
|    SkFilterQuality quality = kHigh_SkFilterQuality;
 | 
|  
 | 
|    DrawImage draw_image(
 | 
| -      image, SkIRect::MakeXYWH(20, 30, image->width(), image->height()),
 | 
| -      quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| +      CreatePaintImage(image),
 | 
| +      SkIRect::MakeXYWH(20, 30, image->width(), image->height()), quality,
 | 
| +      CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|  
 | 
|    auto key = ImageDecodeCacheKey::FromDrawImage(draw_image);
 | 
| @@ -560,10 +569,10 @@ TEST(SoftwareImageDecodeCacheTest, GetTaskForImageSameImage) {
 | 
|    bool is_decomposable = true;
 | 
|    SkFilterQuality quality = kHigh_SkFilterQuality;
 | 
|  
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|    scoped_refptr<TileTask> task;
 | 
|    bool need_unref = cache.GetTaskForImageAndRef(
 | 
|        draw_image, ImageDecodeCache::TracingInfo(), &task);
 | 
| @@ -571,8 +580,8 @@ TEST(SoftwareImageDecodeCacheTest, GetTaskForImageSameImage) {
 | 
|    EXPECT_TRUE(task);
 | 
|  
 | 
|    DrawImage another_draw_image(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| -      CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|    scoped_refptr<TileTask> another_task;
 | 
|    need_unref = cache.GetTaskForImageAndRef(
 | 
| @@ -592,7 +601,7 @@ TEST(SoftwareImageDecodeCacheTest, GetTaskForImageSameImageDifferentQuality) {
 | 
|    bool is_decomposable = true;
 | 
|  
 | 
|    DrawImage high_quality_draw_image(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
|        kHigh_SkFilterQuality,
 | 
|        CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
| @@ -604,7 +613,7 @@ TEST(SoftwareImageDecodeCacheTest, GetTaskForImageSameImageDifferentQuality) {
 | 
|    EXPECT_TRUE(high_quality_task);
 | 
|  
 | 
|    DrawImage low_quality_draw_image(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
|        kLow_SkFilterQuality,
 | 
|        CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
| @@ -630,8 +639,8 @@ TEST(SoftwareImageDecodeCacheTest, GetTaskForImageSameImageDifferentSize) {
 | 
|    SkFilterQuality quality = kHigh_SkFilterQuality;
 | 
|  
 | 
|    DrawImage half_size_draw_image(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| -      CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|    scoped_refptr<TileTask> half_size_task;
 | 
|    bool need_unref = cache.GetTaskForImageAndRef(
 | 
| @@ -640,8 +649,8 @@ TEST(SoftwareImageDecodeCacheTest, GetTaskForImageSameImageDifferentSize) {
 | 
|    EXPECT_TRUE(half_size_task);
 | 
|  
 | 
|    DrawImage quarter_size_draw_image(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| -      CreateMatrix(SkSize::Make(0.25f, 0.25f), is_decomposable),
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.25f, 0.25f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|    scoped_refptr<TileTask> quarter_size_task;
 | 
|    need_unref = cache.GetTaskForImageAndRef(quarter_size_draw_image,
 | 
| @@ -665,8 +674,9 @@ TEST(SoftwareImageDecodeCacheTest, GetTaskForImageDifferentImage) {
 | 
|  
 | 
|    sk_sp<SkImage> first_image = CreateImage(100, 100);
 | 
|    DrawImage first_draw_image(
 | 
| -      first_image, SkIRect::MakeWH(first_image->width(), first_image->height()),
 | 
| -      quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| +      CreatePaintImage(first_image),
 | 
| +      SkIRect::MakeWH(first_image->width(), first_image->height()), quality,
 | 
| +      CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|    scoped_refptr<TileTask> first_task;
 | 
|    bool need_unref = cache.GetTaskForImageAndRef(
 | 
| @@ -676,7 +686,7 @@ TEST(SoftwareImageDecodeCacheTest, GetTaskForImageDifferentImage) {
 | 
|  
 | 
|    sk_sp<SkImage> second_image = CreateImage(100, 100);
 | 
|    DrawImage second_draw_image(
 | 
| -      second_image,
 | 
| +      CreatePaintImage(second_image),
 | 
|        SkIRect::MakeWH(second_image->width(), second_image->height()), quality,
 | 
|        CreateMatrix(SkSize::Make(0.25f, 0.25f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
| @@ -715,8 +725,9 @@ TEST(SoftwareImageDecodeCacheTest, MAYBE_GetTaskForImageDifferentColorSpace) {
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImageWithColorSpace(100, 100, color_space_a);
 | 
|    DrawImage first_draw_image(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| -      CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable), color_space_b);
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable),
 | 
| +      color_space_b);
 | 
|    scoped_refptr<TileTask> first_task;
 | 
|    bool need_unref = cache.GetTaskForImageAndRef(
 | 
|        first_draw_image, ImageDecodeCache::TracingInfo(), &first_task);
 | 
| @@ -724,8 +735,9 @@ TEST(SoftwareImageDecodeCacheTest, MAYBE_GetTaskForImageDifferentColorSpace) {
 | 
|    EXPECT_TRUE(first_task);
 | 
|  
 | 
|    DrawImage second_draw_image(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| -      CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable), color_space_c);
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable),
 | 
| +      color_space_c);
 | 
|    scoped_refptr<TileTask> second_task;
 | 
|    need_unref = cache.GetTaskForImageAndRef(
 | 
|        second_draw_image, ImageDecodeCache::TracingInfo(), &second_task);
 | 
| @@ -734,8 +746,9 @@ TEST(SoftwareImageDecodeCacheTest, MAYBE_GetTaskForImageDifferentColorSpace) {
 | 
|    EXPECT_TRUE(first_task.get() != second_task.get());
 | 
|  
 | 
|    DrawImage third_draw_image(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| -      CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable), color_space_b);
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable),
 | 
| +      color_space_b);
 | 
|    scoped_refptr<TileTask> third_task;
 | 
|    need_unref = cache.GetTaskForImageAndRef(
 | 
|        third_draw_image, ImageDecodeCache::TracingInfo(), &third_task);
 | 
| @@ -757,10 +770,10 @@ TEST(SoftwareImageDecodeCacheTest, GetTaskForImageAlreadyDecoded) {
 | 
|    SkFilterQuality quality = kHigh_SkFilterQuality;
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(100, 100);
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|    scoped_refptr<TileTask> task;
 | 
|    bool need_unref = cache.GetTaskForImageAndRef(
 | 
|        draw_image, ImageDecodeCache::TracingInfo(), &task);
 | 
| @@ -788,10 +801,10 @@ TEST(SoftwareImageDecodeCacheTest, GetTaskForImageAlreadyPrerolled) {
 | 
|    SkFilterQuality quality = kLow_SkFilterQuality;
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(100, 100);
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|    scoped_refptr<TileTask> task;
 | 
|    bool need_unref = cache.GetTaskForImageAndRef(
 | 
|        draw_image, ImageDecodeCache::TracingInfo(), &task);
 | 
| @@ -826,10 +839,10 @@ TEST(SoftwareImageDecodeCacheTest, GetTaskForImageCanceledGetsNewTask) {
 | 
|    SkFilterQuality quality = kHigh_SkFilterQuality;
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(100, 100);
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|    scoped_refptr<TileTask> task;
 | 
|    bool need_unref = cache.GetTaskForImageAndRef(
 | 
|        draw_image, ImageDecodeCache::TracingInfo(), &task);
 | 
| @@ -870,10 +883,10 @@ TEST(SoftwareImageDecodeCacheTest,
 | 
|    SkFilterQuality quality = kHigh_SkFilterQuality;
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(100, 100);
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|    scoped_refptr<TileTask> task;
 | 
|    bool need_unref = cache.GetTaskForImageAndRef(
 | 
|        draw_image, ImageDecodeCache::TracingInfo(), &task);
 | 
| @@ -913,10 +926,10 @@ TEST(SoftwareImageDecodeCacheTest, GetDecodedImageForDraw) {
 | 
|    SkFilterQuality quality = kHigh_SkFilterQuality;
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(100, 100);
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|    scoped_refptr<TileTask> task;
 | 
|    bool need_unref = cache.GetTaskForImageAndRef(
 | 
|        draw_image, ImageDecodeCache::TracingInfo(), &task);
 | 
| @@ -948,8 +961,9 @@ TEST(SoftwareImageDecodeCacheTest,
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(100, 100);
 | 
|    DrawImage draw_image(
 | 
| -      image, SkIRect::MakeXYWH(20, 30, image->width(), image->height()),
 | 
| -      quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| +      CreatePaintImage(image),
 | 
| +      SkIRect::MakeXYWH(20, 30, image->width(), image->height()), quality,
 | 
| +      CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|    scoped_refptr<TileTask> task;
 | 
|    bool need_unref = cache.GetTaskForImageAndRef(
 | 
| @@ -980,10 +994,10 @@ TEST(SoftwareImageDecodeCacheTest, GetDecodedImageForDrawAtRasterDecode) {
 | 
|    SkFilterQuality quality = kHigh_SkFilterQuality;
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(100, 100);
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    DecodedDrawImage decoded_draw_image =
 | 
|        cache.GetDecodedImageForDraw(draw_image);
 | 
| @@ -1006,10 +1020,10 @@ TEST(SoftwareImageDecodeCacheTest,
 | 
|    SkFilterQuality quality = kHigh_SkFilterQuality;
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(100, 100);
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    DecodedDrawImage decoded_draw_image =
 | 
|        cache.GetDecodedImageForDraw(draw_image);
 | 
| @@ -1038,10 +1052,10 @@ TEST(SoftwareImageDecodeCacheTest,
 | 
|    SkFilterQuality quality = kHigh_SkFilterQuality;
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(100, 100);
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    DecodedDrawImage decoded_draw_image =
 | 
|        cache.GetDecodedImageForDraw(draw_image);
 | 
| @@ -1084,10 +1098,10 @@ TEST(SoftwareImageDecodeCacheTest,
 | 
|    SkFilterQuality quality = kHigh_SkFilterQuality;
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(100, 100);
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    DecodedDrawImage decoded_draw_image =
 | 
|        cache.GetDecodedImageForDraw(draw_image);
 | 
| @@ -1130,10 +1144,10 @@ TEST(SoftwareImageDecodeCacheTest, ZeroSizedImagesAreSkipped) {
 | 
|    SkFilterQuality quality = kHigh_SkFilterQuality;
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(100, 100);
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(0.f, 0.f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.f, 0.f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    scoped_refptr<TileTask> task;
 | 
|    bool need_unref = cache.GetTaskForImageAndRef(
 | 
| @@ -1155,8 +1169,9 @@ TEST(SoftwareImageDecodeCacheTest, NonOverlappingSrcRectImagesAreSkipped) {
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(100, 100);
 | 
|    DrawImage draw_image(
 | 
| -      image, SkIRect::MakeXYWH(150, 150, image->width(), image->height()),
 | 
| -      quality, CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable),
 | 
| +      CreatePaintImage(image),
 | 
| +      SkIRect::MakeXYWH(150, 150, image->width(), image->height()), quality,
 | 
| +      CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|  
 | 
|    scoped_refptr<TileTask> task;
 | 
| @@ -1178,10 +1193,10 @@ TEST(SoftwareImageDecodeCacheTest, LowQualityFilterIsHandled) {
 | 
|    SkFilterQuality quality = kLow_SkFilterQuality;
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(100, 100);
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    scoped_refptr<TileTask> task;
 | 
|    bool need_unref = cache.GetTaskForImageAndRef(
 | 
| @@ -1208,7 +1223,8 @@ TEST(SoftwareImageDecodeCacheTest, LowQualityScaledSubrectIsHandled) {
 | 
|    SkFilterQuality quality = kLow_SkFilterQuality;
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(100, 100);
 | 
| -  DrawImage draw_image(image, SkIRect::MakeXYWH(10, 10, 80, 80), quality,
 | 
| +  DrawImage draw_image(CreatePaintImage(image),
 | 
| +                       SkIRect::MakeXYWH(10, 10, 80, 80), quality,
 | 
|                         CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
|                         DefaultColorSpace());
 | 
|  
 | 
| @@ -1239,7 +1255,8 @@ TEST(SoftwareImageDecodeCacheTest, NoneQualityScaledSubrectIsHandled) {
 | 
|    SkFilterQuality quality = kNone_SkFilterQuality;
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(100, 100);
 | 
| -  DrawImage draw_image(image, SkIRect::MakeXYWH(10, 10, 80, 80), quality,
 | 
| +  DrawImage draw_image(CreatePaintImage(image),
 | 
| +                       SkIRect::MakeXYWH(10, 10, 80, 80), quality,
 | 
|                         CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
|                         DefaultColorSpace());
 | 
|  
 | 
| @@ -1270,10 +1287,10 @@ TEST(SoftwareImageDecodeCacheTest, MediumQualityAt01_5ScaleIsHandled) {
 | 
|    SkFilterQuality quality = kMedium_SkFilterQuality;
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(500, 200);
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(1.5f, 1.5f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(1.5f, 1.5f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    scoped_refptr<TileTask> task;
 | 
|    bool need_unref = cache.GetTaskForImageAndRef(
 | 
| @@ -1303,10 +1320,10 @@ TEST(SoftwareImageDecodeCacheTest, MediumQualityAt1_0ScaleIsHandled) {
 | 
|    SkFilterQuality quality = kMedium_SkFilterQuality;
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(500, 200);
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    scoped_refptr<TileTask> task;
 | 
|    bool need_unref = cache.GetTaskForImageAndRef(
 | 
| @@ -1337,8 +1354,8 @@ TEST(SoftwareImageDecodeCacheTest, MediumQualityAt0_75ScaleIsHandled) {
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(500, 200);
 | 
|    DrawImage draw_image(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| -      CreateMatrix(SkSize::Make(0.75f, 0.75f), is_decomposable),
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.75f, 0.75f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|  
 | 
|    scoped_refptr<TileTask> task;
 | 
| @@ -1369,10 +1386,10 @@ TEST(SoftwareImageDecodeCacheTest, MediumQualityAt0_5ScaleIsHandled) {
 | 
|    SkFilterQuality quality = kMedium_SkFilterQuality;
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(500, 200);
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    scoped_refptr<TileTask> task;
 | 
|    bool need_unref = cache.GetTaskForImageAndRef(
 | 
| @@ -1403,8 +1420,8 @@ TEST(SoftwareImageDecodeCacheTest, MediumQualityAt0_49ScaleIsHandled) {
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(500, 200);
 | 
|    DrawImage draw_image(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| -      CreateMatrix(SkSize::Make(0.49f, 0.49f), is_decomposable),
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.49f, 0.49f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|  
 | 
|    scoped_refptr<TileTask> task;
 | 
| @@ -1435,10 +1452,10 @@ TEST(SoftwareImageDecodeCacheTest, MediumQualityAt0_1ScaleIsHandled) {
 | 
|    SkFilterQuality quality = kMedium_SkFilterQuality;
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(500, 200);
 | 
| -  DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()),
 | 
| -                       quality,
 | 
| -                       CreateMatrix(SkSize::Make(0.1f, 0.1f), is_decomposable),
 | 
| -                       DefaultColorSpace());
 | 
| +  DrawImage draw_image(
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.1f, 0.1f), is_decomposable),
 | 
| +      DefaultColorSpace());
 | 
|  
 | 
|    scoped_refptr<TileTask> task;
 | 
|    bool need_unref = cache.GetTaskForImageAndRef(
 | 
| @@ -1469,8 +1486,8 @@ TEST(SoftwareImageDecodeCacheTest, MediumQualityAt0_01ScaleIsHandled) {
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(500, 200);
 | 
|    DrawImage draw_image(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| -      CreateMatrix(SkSize::Make(0.01f, 0.01f), is_decomposable),
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.01f, 0.01f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|  
 | 
|    scoped_refptr<TileTask> task;
 | 
| @@ -1502,8 +1519,8 @@ TEST(SoftwareImageDecodeCacheTest, MediumQualityAt0_001ScaleIsHandled) {
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(500, 200);
 | 
|    DrawImage draw_image(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| -      CreateMatrix(SkSize::Make(0.001f, 0.001f), is_decomposable),
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.001f, 0.001f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|  
 | 
|    scoped_refptr<TileTask> task;
 | 
| @@ -1527,12 +1544,12 @@ TEST(SoftwareImageDecodeCacheTest,
 | 
|  
 | 
|    sk_sp<SkImage> image = CreateImage(500, 200);
 | 
|    DrawImage draw_image_50(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| -      CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|    DrawImage draw_image_49(
 | 
| -      image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| -      CreateMatrix(SkSize::Make(0.49f, 0.49f), is_decomposable),
 | 
| +      CreatePaintImage(image), SkIRect::MakeWH(image->width(), image->height()),
 | 
| +      quality, CreateMatrix(SkSize::Make(0.49f, 0.49f), is_decomposable),
 | 
|        DefaultColorSpace());
 | 
|  
 | 
|    scoped_refptr<TileTask> task_50;
 | 
| @@ -1581,7 +1598,8 @@ TEST(SoftwareImageDecodeCacheTest, ClearCache) {
 | 
|    for (int i = 0; i < 10; ++i) {
 | 
|      sk_sp<SkImage> image = CreateImage(100, 100);
 | 
|      DrawImage draw_image(
 | 
| -        image, SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
| +        CreatePaintImage(image),
 | 
| +        SkIRect::MakeWH(image->width(), image->height()), quality,
 | 
|          CreateMatrix(SkSize::Make(1.0f, 1.0f), is_decomposable),
 | 
|          DefaultColorSpace());
 | 
|      scoped_refptr<TileTask> task;
 | 
| 
 |