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

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

Issue 1869753003: Replace many skia::RefPtr with sk_sp<> in cc/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 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 "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 namespace cc { 10 namespace cc {
11 namespace { 11 namespace {
12 12
13 skia::RefPtr<SkImage> CreateImage(int width, int height) { 13 sk_sp<SkImage> CreateImage(int width, int height) {
14 SkImageInfo info = SkImageInfo::MakeN32Premul(width, height); 14 SkImageInfo info = SkImageInfo::MakeN32Premul(width, height);
15 SkBitmap bitmap; 15 SkBitmap bitmap;
16 bitmap.allocPixels(info); 16 bitmap.allocPixels(info);
17 return skia::AdoptRef(SkImage::NewFromBitmap(bitmap)); 17 return SkImage::MakeFromBitmap(bitmap);
18 } 18 }
19 19
20 SkMatrix CreateMatrix(const SkSize& scale, bool is_decomposable) { 20 SkMatrix CreateMatrix(const SkSize& scale, bool is_decomposable) {
21 SkMatrix matrix; 21 SkMatrix matrix;
22 matrix.setScale(scale.width(), scale.height()); 22 matrix.setScale(scale.width(), scale.height());
23 23
24 if (!is_decomposable) { 24 if (!is_decomposable) {
25 // Perspective is not decomposable, add it. 25 // Perspective is not decomposable, add it.
26 matrix[SkMatrix::kMPersp0] = 0.1f; 26 matrix[SkMatrix::kMPersp0] = 0.1f;
27 } 27 }
28 28
29 return matrix; 29 return matrix;
30 } 30 }
31 31
32 TEST(SoftwareImageDecodeControllerTest, ImageKeyLowQuality) { 32 TEST(SoftwareImageDecodeControllerTest, ImageKeyLowQuality) {
33 skia::RefPtr<SkImage> image = CreateImage(100, 100); 33 sk_sp<SkImage> image = CreateImage(100, 100);
34 bool is_decomposable = true; 34 bool is_decomposable = true;
35 SkFilterQuality qualities[] = {kNone_SkFilterQuality, kLow_SkFilterQuality}; 35 SkFilterQuality qualities[] = {kNone_SkFilterQuality, kLow_SkFilterQuality};
36 for (auto quality : qualities) { 36 for (auto quality : qualities) {
37 DrawImage draw_image( 37 DrawImage draw_image(
38 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 38 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
39 CreateMatrix(SkSize::Make(0.5f, 1.5f), is_decomposable)); 39 CreateMatrix(SkSize::Make(0.5f, 1.5f), is_decomposable));
40 40
41 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image); 41 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image);
42 EXPECT_EQ(image->uniqueID(), key.image_id()); 42 EXPECT_EQ(image->uniqueID(), key.image_id());
43 EXPECT_EQ(quality, key.filter_quality()); 43 EXPECT_EQ(quality, key.filter_quality());
44 EXPECT_EQ(100, key.target_size().width()); 44 EXPECT_EQ(100, key.target_size().width());
45 EXPECT_EQ(100, key.target_size().height()); 45 EXPECT_EQ(100, key.target_size().height());
46 EXPECT_TRUE(key.can_use_original_decode()); 46 EXPECT_TRUE(key.can_use_original_decode());
47 // Since the original decode will be used, the locked_bytes is that of the 47 // Since the original decode will be used, the locked_bytes is that of the
48 // original image. 48 // original image.
49 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes()); 49 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
50 } 50 }
51 } 51 }
52 52
53 TEST(SoftwareImageDecodeControllerTest, ImageKeyMediumQuality) { 53 TEST(SoftwareImageDecodeControllerTest, ImageKeyMediumQuality) {
54 skia::RefPtr<SkImage> image = CreateImage(100, 100); 54 sk_sp<SkImage> image = CreateImage(100, 100);
55 bool is_decomposable = true; 55 bool is_decomposable = true;
56 SkFilterQuality quality = kMedium_SkFilterQuality; 56 SkFilterQuality quality = kMedium_SkFilterQuality;
57 57
58 DrawImage draw_image( 58 DrawImage draw_image(
59 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 59 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
60 CreateMatrix(SkSize::Make(0.5f, 1.5f), is_decomposable)); 60 CreateMatrix(SkSize::Make(0.5f, 1.5f), is_decomposable));
61 61
62 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image); 62 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image);
63 EXPECT_EQ(image->uniqueID(), key.image_id()); 63 EXPECT_EQ(image->uniqueID(), key.image_id());
64 EXPECT_EQ(quality, key.filter_quality()); 64 EXPECT_EQ(quality, key.filter_quality());
65 EXPECT_EQ(50, key.target_size().width()); 65 EXPECT_EQ(50, key.target_size().width());
66 EXPECT_EQ(150, key.target_size().height()); 66 EXPECT_EQ(150, key.target_size().height());
67 EXPECT_FALSE(key.can_use_original_decode()); 67 EXPECT_FALSE(key.can_use_original_decode());
68 EXPECT_EQ(50u * 150u * 4u, key.locked_bytes()); 68 EXPECT_EQ(50u * 150u * 4u, key.locked_bytes());
69 } 69 }
70 70
71 TEST(SoftwareImageDecodeControllerTest, 71 TEST(SoftwareImageDecodeControllerTest,
72 ImageKeyMediumQualityDropToLowIfEnlarging) { 72 ImageKeyMediumQualityDropToLowIfEnlarging) {
73 skia::RefPtr<SkImage> image = CreateImage(100, 100); 73 sk_sp<SkImage> image = CreateImage(100, 100);
74 bool is_decomposable = true; 74 bool is_decomposable = true;
75 SkFilterQuality quality = kMedium_SkFilterQuality; 75 SkFilterQuality quality = kMedium_SkFilterQuality;
76 76
77 DrawImage draw_image( 77 DrawImage draw_image(
78 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 78 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
79 CreateMatrix(SkSize::Make(1.5f, 1.5f), is_decomposable)); 79 CreateMatrix(SkSize::Make(1.5f, 1.5f), is_decomposable));
80 80
81 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image); 81 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image);
82 EXPECT_EQ(image->uniqueID(), key.image_id()); 82 EXPECT_EQ(image->uniqueID(), key.image_id());
83 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality()); 83 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
84 EXPECT_EQ(100, key.target_size().width()); 84 EXPECT_EQ(100, key.target_size().width());
85 EXPECT_EQ(100, key.target_size().height()); 85 EXPECT_EQ(100, key.target_size().height());
86 EXPECT_TRUE(key.can_use_original_decode()); 86 EXPECT_TRUE(key.can_use_original_decode());
87 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes()); 87 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
88 } 88 }
89 89
90 TEST(SoftwareImageDecodeControllerTest, 90 TEST(SoftwareImageDecodeControllerTest,
91 ImageKeyMediumQualityDropToLowIfIdentity) { 91 ImageKeyMediumQualityDropToLowIfIdentity) {
92 skia::RefPtr<SkImage> image = CreateImage(100, 100); 92 sk_sp<SkImage> image = CreateImage(100, 100);
93 bool is_decomposable = true; 93 bool is_decomposable = true;
94 SkFilterQuality quality = kMedium_SkFilterQuality; 94 SkFilterQuality quality = kMedium_SkFilterQuality;
95 95
96 DrawImage draw_image( 96 DrawImage draw_image(
97 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 97 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
98 CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable)); 98 CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable));
99 99
100 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image); 100 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image);
101 EXPECT_EQ(image->uniqueID(), key.image_id()); 101 EXPECT_EQ(image->uniqueID(), key.image_id());
102 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality()); 102 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
103 EXPECT_EQ(100, key.target_size().width()); 103 EXPECT_EQ(100, key.target_size().width());
104 EXPECT_EQ(100, key.target_size().height()); 104 EXPECT_EQ(100, key.target_size().height());
105 EXPECT_TRUE(key.can_use_original_decode()); 105 EXPECT_TRUE(key.can_use_original_decode());
106 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes()); 106 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
107 } 107 }
108 108
109 TEST(SoftwareImageDecodeControllerTest, 109 TEST(SoftwareImageDecodeControllerTest,
110 ImageKeyMediumQualityDropToLowIfNearlyIdentity) { 110 ImageKeyMediumQualityDropToLowIfNearlyIdentity) {
111 skia::RefPtr<SkImage> image = CreateImage(100, 100); 111 sk_sp<SkImage> image = CreateImage(100, 100);
112 bool is_decomposable = true; 112 bool is_decomposable = true;
113 SkFilterQuality quality = kMedium_SkFilterQuality; 113 SkFilterQuality quality = kMedium_SkFilterQuality;
114 114
115 DrawImage draw_image( 115 DrawImage draw_image(
116 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 116 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
117 CreateMatrix(SkSize::Make(1.001f, 1.001f), is_decomposable)); 117 CreateMatrix(SkSize::Make(1.001f, 1.001f), is_decomposable));
118 118
119 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image); 119 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image);
120 EXPECT_EQ(image->uniqueID(), key.image_id()); 120 EXPECT_EQ(image->uniqueID(), key.image_id());
121 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality()); 121 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
122 EXPECT_EQ(100, key.target_size().width()); 122 EXPECT_EQ(100, key.target_size().width());
123 EXPECT_EQ(100, key.target_size().height()); 123 EXPECT_EQ(100, key.target_size().height());
124 EXPECT_TRUE(key.can_use_original_decode()); 124 EXPECT_TRUE(key.can_use_original_decode());
125 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes()); 125 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
126 } 126 }
127 127
128 TEST(SoftwareImageDecodeControllerTest, 128 TEST(SoftwareImageDecodeControllerTest,
129 ImageKeyMediumQualityDropToLowIfNearlyIdentity2) { 129 ImageKeyMediumQualityDropToLowIfNearlyIdentity2) {
130 skia::RefPtr<SkImage> image = CreateImage(100, 100); 130 sk_sp<SkImage> image = CreateImage(100, 100);
131 bool is_decomposable = true; 131 bool is_decomposable = true;
132 SkFilterQuality quality = kMedium_SkFilterQuality; 132 SkFilterQuality quality = kMedium_SkFilterQuality;
133 133
134 DrawImage draw_image( 134 DrawImage draw_image(
135 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 135 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
136 CreateMatrix(SkSize::Make(0.999f, 0.999f), is_decomposable)); 136 CreateMatrix(SkSize::Make(0.999f, 0.999f), is_decomposable));
137 137
138 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image); 138 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image);
139 EXPECT_EQ(image->uniqueID(), key.image_id()); 139 EXPECT_EQ(image->uniqueID(), key.image_id());
140 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality()); 140 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
141 EXPECT_EQ(100, key.target_size().width()); 141 EXPECT_EQ(100, key.target_size().width());
142 EXPECT_EQ(100, key.target_size().height()); 142 EXPECT_EQ(100, key.target_size().height());
143 EXPECT_TRUE(key.can_use_original_decode()); 143 EXPECT_TRUE(key.can_use_original_decode());
144 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes()); 144 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
145 } 145 }
146 146
147 TEST(SoftwareImageDecodeControllerTest, 147 TEST(SoftwareImageDecodeControllerTest,
148 ImageKeyMediumQualityDropToLowIfNotDecomposable) { 148 ImageKeyMediumQualityDropToLowIfNotDecomposable) {
149 skia::RefPtr<SkImage> image = CreateImage(100, 100); 149 sk_sp<SkImage> image = CreateImage(100, 100);
150 bool is_decomposable = false; 150 bool is_decomposable = false;
151 SkFilterQuality quality = kMedium_SkFilterQuality; 151 SkFilterQuality quality = kMedium_SkFilterQuality;
152 152
153 DrawImage draw_image( 153 DrawImage draw_image(
154 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 154 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
155 CreateMatrix(SkSize::Make(0.5f, 1.5f), is_decomposable)); 155 CreateMatrix(SkSize::Make(0.5f, 1.5f), is_decomposable));
156 156
157 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image); 157 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image);
158 EXPECT_EQ(image->uniqueID(), key.image_id()); 158 EXPECT_EQ(image->uniqueID(), key.image_id());
159 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality()); 159 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
160 EXPECT_EQ(100, key.target_size().width()); 160 EXPECT_EQ(100, key.target_size().width());
161 EXPECT_EQ(100, key.target_size().height()); 161 EXPECT_EQ(100, key.target_size().height());
162 EXPECT_TRUE(key.can_use_original_decode()); 162 EXPECT_TRUE(key.can_use_original_decode());
163 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes()); 163 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
164 } 164 }
165 165
166 TEST(SoftwareImageDecodeControllerTest, ImageKeyHighQuality) { 166 TEST(SoftwareImageDecodeControllerTest, ImageKeyHighQuality) {
167 skia::RefPtr<SkImage> image = CreateImage(100, 100); 167 sk_sp<SkImage> image = CreateImage(100, 100);
168 bool is_decomposable = true; 168 bool is_decomposable = true;
169 SkFilterQuality quality = kHigh_SkFilterQuality; 169 SkFilterQuality quality = kHigh_SkFilterQuality;
170 170
171 DrawImage draw_image( 171 DrawImage draw_image(
172 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 172 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
173 CreateMatrix(SkSize::Make(0.5f, 1.5f), is_decomposable)); 173 CreateMatrix(SkSize::Make(0.5f, 1.5f), is_decomposable));
174 174
175 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image); 175 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image);
176 EXPECT_EQ(image->uniqueID(), key.image_id()); 176 EXPECT_EQ(image->uniqueID(), key.image_id());
177 EXPECT_EQ(quality, key.filter_quality()); 177 EXPECT_EQ(quality, key.filter_quality());
178 EXPECT_EQ(50, key.target_size().width()); 178 EXPECT_EQ(50, key.target_size().width());
179 EXPECT_EQ(150, key.target_size().height()); 179 EXPECT_EQ(150, key.target_size().height());
180 EXPECT_FALSE(key.can_use_original_decode()); 180 EXPECT_FALSE(key.can_use_original_decode());
181 EXPECT_EQ(50u * 150u * 4u, key.locked_bytes()); 181 EXPECT_EQ(50u * 150u * 4u, key.locked_bytes());
182 } 182 }
183 183
184 TEST(SoftwareImageDecodeControllerTest, 184 TEST(SoftwareImageDecodeControllerTest,
185 ImageKeyHighQualityDropToMediumIfTooLarge) { 185 ImageKeyHighQualityDropToMediumIfTooLarge) {
186 // Just over 64MB when scaled. 186 // Just over 64MB when scaled.
187 skia::RefPtr<SkImage> image = CreateImage(4555, 2048); 187 sk_sp<SkImage> image = CreateImage(4555, 2048);
188 bool is_decomposable = true; 188 bool is_decomposable = true;
189 SkFilterQuality quality = kHigh_SkFilterQuality; 189 SkFilterQuality quality = kHigh_SkFilterQuality;
190 190
191 // At least one dimension should scale down, so that medium quality doesn't 191 // At least one dimension should scale down, so that medium quality doesn't
192 // become low. 192 // become low.
193 DrawImage draw_image( 193 DrawImage draw_image(
194 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 194 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
195 CreateMatrix(SkSize::Make(0.9f, 2.f), is_decomposable)); 195 CreateMatrix(SkSize::Make(0.9f, 2.f), is_decomposable));
196 196
197 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image); 197 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image);
198 EXPECT_EQ(image->uniqueID(), key.image_id()); 198 EXPECT_EQ(image->uniqueID(), key.image_id());
199 EXPECT_EQ(kMedium_SkFilterQuality, key.filter_quality()); 199 EXPECT_EQ(kMedium_SkFilterQuality, key.filter_quality());
200 EXPECT_EQ(4100, key.target_size().width()); 200 EXPECT_EQ(4100, key.target_size().width());
201 EXPECT_EQ(4096, key.target_size().height()); 201 EXPECT_EQ(4096, key.target_size().height());
202 EXPECT_FALSE(key.can_use_original_decode()); 202 EXPECT_FALSE(key.can_use_original_decode());
203 EXPECT_EQ(4100u * 4096u * 4u, key.locked_bytes()); 203 EXPECT_EQ(4100u * 4096u * 4u, key.locked_bytes());
204 } 204 }
205 205
206 TEST(SoftwareImageDecodeControllerTest, 206 TEST(SoftwareImageDecodeControllerTest,
207 ImageKeyHighQualityDropToLowIfNotDecomposable) { 207 ImageKeyHighQualityDropToLowIfNotDecomposable) {
208 skia::RefPtr<SkImage> image = CreateImage(100, 100); 208 sk_sp<SkImage> image = CreateImage(100, 100);
209 bool is_decomposable = false; 209 bool is_decomposable = false;
210 SkFilterQuality quality = kHigh_SkFilterQuality; 210 SkFilterQuality quality = kHigh_SkFilterQuality;
211 211
212 DrawImage draw_image( 212 DrawImage draw_image(
213 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 213 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
214 CreateMatrix(SkSize::Make(0.5f, 1.5f), is_decomposable)); 214 CreateMatrix(SkSize::Make(0.5f, 1.5f), is_decomposable));
215 215
216 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image); 216 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image);
217 EXPECT_EQ(image->uniqueID(), key.image_id()); 217 EXPECT_EQ(image->uniqueID(), key.image_id());
218 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality()); 218 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
219 EXPECT_EQ(100, key.target_size().width()); 219 EXPECT_EQ(100, key.target_size().width());
220 EXPECT_EQ(100, key.target_size().height()); 220 EXPECT_EQ(100, key.target_size().height());
221 EXPECT_TRUE(key.can_use_original_decode()); 221 EXPECT_TRUE(key.can_use_original_decode());
222 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes()); 222 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
223 } 223 }
224 224
225 TEST(SoftwareImageDecodeControllerTest, 225 TEST(SoftwareImageDecodeControllerTest,
226 ImageKeyHighQualityDropToLowIfIdentity) { 226 ImageKeyHighQualityDropToLowIfIdentity) {
227 skia::RefPtr<SkImage> image = CreateImage(100, 100); 227 sk_sp<SkImage> image = CreateImage(100, 100);
228 bool is_decomposable = true; 228 bool is_decomposable = true;
229 SkFilterQuality quality = kHigh_SkFilterQuality; 229 SkFilterQuality quality = kHigh_SkFilterQuality;
230 230
231 DrawImage draw_image( 231 DrawImage draw_image(
232 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 232 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
233 CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable)); 233 CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable));
234 234
235 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image); 235 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image);
236 EXPECT_EQ(image->uniqueID(), key.image_id()); 236 EXPECT_EQ(image->uniqueID(), key.image_id());
237 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality()); 237 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
238 EXPECT_EQ(100, key.target_size().width()); 238 EXPECT_EQ(100, key.target_size().width());
239 EXPECT_EQ(100, key.target_size().height()); 239 EXPECT_EQ(100, key.target_size().height());
240 EXPECT_TRUE(key.can_use_original_decode()); 240 EXPECT_TRUE(key.can_use_original_decode());
241 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes()); 241 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
242 } 242 }
243 243
244 TEST(SoftwareImageDecodeControllerTest, 244 TEST(SoftwareImageDecodeControllerTest,
245 ImageKeyHighQualityDropToLowIfNearlyIdentity) { 245 ImageKeyHighQualityDropToLowIfNearlyIdentity) {
246 skia::RefPtr<SkImage> image = CreateImage(100, 100); 246 sk_sp<SkImage> image = CreateImage(100, 100);
247 bool is_decomposable = true; 247 bool is_decomposable = true;
248 SkFilterQuality quality = kHigh_SkFilterQuality; 248 SkFilterQuality quality = kHigh_SkFilterQuality;
249 249
250 DrawImage draw_image( 250 DrawImage draw_image(
251 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 251 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
252 CreateMatrix(SkSize::Make(1.001f, 1.001f), is_decomposable)); 252 CreateMatrix(SkSize::Make(1.001f, 1.001f), is_decomposable));
253 253
254 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image); 254 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image);
255 EXPECT_EQ(image->uniqueID(), key.image_id()); 255 EXPECT_EQ(image->uniqueID(), key.image_id());
256 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality()); 256 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
257 EXPECT_EQ(100, key.target_size().width()); 257 EXPECT_EQ(100, key.target_size().width());
258 EXPECT_EQ(100, key.target_size().height()); 258 EXPECT_EQ(100, key.target_size().height());
259 EXPECT_TRUE(key.can_use_original_decode()); 259 EXPECT_TRUE(key.can_use_original_decode());
260 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes()); 260 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
261 } 261 }
262 262
263 TEST(SoftwareImageDecodeControllerTest, 263 TEST(SoftwareImageDecodeControllerTest,
264 ImageKeyHighQualityDropToLowIfNearlyIdentity2) { 264 ImageKeyHighQualityDropToLowIfNearlyIdentity2) {
265 skia::RefPtr<SkImage> image = CreateImage(100, 100); 265 sk_sp<SkImage> image = CreateImage(100, 100);
266 bool is_decomposable = true; 266 bool is_decomposable = true;
267 SkFilterQuality quality = kHigh_SkFilterQuality; 267 SkFilterQuality quality = kHigh_SkFilterQuality;
268 268
269 DrawImage draw_image( 269 DrawImage draw_image(
270 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 270 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
271 CreateMatrix(SkSize::Make(0.999f, 0.999f), is_decomposable)); 271 CreateMatrix(SkSize::Make(0.999f, 0.999f), is_decomposable));
272 272
273 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image); 273 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image);
274 EXPECT_EQ(image->uniqueID(), key.image_id()); 274 EXPECT_EQ(image->uniqueID(), key.image_id());
275 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality()); 275 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
276 EXPECT_EQ(100, key.target_size().width()); 276 EXPECT_EQ(100, key.target_size().width());
277 EXPECT_EQ(100, key.target_size().height()); 277 EXPECT_EQ(100, key.target_size().height());
278 EXPECT_TRUE(key.can_use_original_decode()); 278 EXPECT_TRUE(key.can_use_original_decode());
279 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes()); 279 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
280 } 280 }
281 281
282 TEST(SoftwareImageDecodeControllerTest, OriginalDecodesAreEqual) { 282 TEST(SoftwareImageDecodeControllerTest, OriginalDecodesAreEqual) {
283 skia::RefPtr<SkImage> image = CreateImage(100, 100); 283 sk_sp<SkImage> image = CreateImage(100, 100);
284 bool is_decomposable = true; 284 bool is_decomposable = true;
285 SkFilterQuality quality = kLow_SkFilterQuality; 285 SkFilterQuality quality = kLow_SkFilterQuality;
286 286
287 DrawImage draw_image( 287 DrawImage draw_image(
288 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 288 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
289 CreateMatrix(SkSize::Make(0.5f, 0.5), is_decomposable)); 289 CreateMatrix(SkSize::Make(0.5f, 0.5), is_decomposable));
290 290
291 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image); 291 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image);
292 EXPECT_EQ(image->uniqueID(), key.image_id()); 292 EXPECT_EQ(image->uniqueID(), key.image_id());
293 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality()); 293 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
(...skipping 12 matching lines...) Expand all
306 EXPECT_EQ(kLow_SkFilterQuality, another_key.filter_quality()); 306 EXPECT_EQ(kLow_SkFilterQuality, another_key.filter_quality());
307 EXPECT_EQ(100, another_key.target_size().width()); 307 EXPECT_EQ(100, another_key.target_size().width());
308 EXPECT_EQ(100, another_key.target_size().height()); 308 EXPECT_EQ(100, another_key.target_size().height());
309 EXPECT_TRUE(another_key.can_use_original_decode()); 309 EXPECT_TRUE(another_key.can_use_original_decode());
310 EXPECT_EQ(100u * 100u * 4u, another_key.locked_bytes()); 310 EXPECT_EQ(100u * 100u * 4u, another_key.locked_bytes());
311 311
312 EXPECT_TRUE(key == another_key); 312 EXPECT_TRUE(key == another_key);
313 } 313 }
314 314
315 TEST(SoftwareImageDecodeControllerTest, ImageRectDoesNotContainSrcRect) { 315 TEST(SoftwareImageDecodeControllerTest, ImageRectDoesNotContainSrcRect) {
316 skia::RefPtr<SkImage> image = CreateImage(100, 100); 316 sk_sp<SkImage> image = CreateImage(100, 100);
317 bool is_decomposable = true; 317 bool is_decomposable = true;
318 SkFilterQuality quality = kHigh_SkFilterQuality; 318 SkFilterQuality quality = kHigh_SkFilterQuality;
319 319
320 DrawImage draw_image( 320 DrawImage draw_image(
321 image.get(), SkIRect::MakeXYWH(25, 35, image->width(), image->height()), 321 image.get(), SkIRect::MakeXYWH(25, 35, image->width(), image->height()),
322 quality, CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable)); 322 quality, CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable));
323 323
324 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image); 324 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image);
325 EXPECT_EQ(image->uniqueID(), key.image_id()); 325 EXPECT_EQ(image->uniqueID(), key.image_id());
326 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality()); 326 EXPECT_EQ(kLow_SkFilterQuality, key.filter_quality());
327 EXPECT_EQ(100, key.target_size().width()); 327 EXPECT_EQ(100, key.target_size().width());
328 EXPECT_EQ(100, key.target_size().height()); 328 EXPECT_EQ(100, key.target_size().height());
329 EXPECT_EQ(gfx::Rect(25, 35, 75, 65), key.src_rect()); 329 EXPECT_EQ(gfx::Rect(25, 35, 75, 65), key.src_rect());
330 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes()); 330 EXPECT_EQ(100u * 100u * 4u, key.locked_bytes());
331 } 331 }
332 332
333 TEST(SoftwareImageDecodeControllerTest, 333 TEST(SoftwareImageDecodeControllerTest,
334 ImageRectDoesNotContainSrcRectWithScale) { 334 ImageRectDoesNotContainSrcRectWithScale) {
335 skia::RefPtr<SkImage> image = CreateImage(100, 100); 335 sk_sp<SkImage> image = CreateImage(100, 100);
336 bool is_decomposable = true; 336 bool is_decomposable = true;
337 SkFilterQuality quality = kHigh_SkFilterQuality; 337 SkFilterQuality quality = kHigh_SkFilterQuality;
338 338
339 DrawImage draw_image( 339 DrawImage draw_image(
340 image.get(), SkIRect::MakeXYWH(20, 30, image->width(), image->height()), 340 image.get(), SkIRect::MakeXYWH(20, 30, image->width(), image->height()),
341 quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 341 quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
342 342
343 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image); 343 auto key = ImageDecodeControllerKey::FromDrawImage(draw_image);
344 EXPECT_EQ(image->uniqueID(), key.image_id()); 344 EXPECT_EQ(image->uniqueID(), key.image_id());
345 EXPECT_EQ(kHigh_SkFilterQuality, key.filter_quality()); 345 EXPECT_EQ(kHigh_SkFilterQuality, key.filter_quality());
346 EXPECT_EQ(40, key.target_size().width()); 346 EXPECT_EQ(40, key.target_size().width());
347 EXPECT_EQ(35, key.target_size().height()); 347 EXPECT_EQ(35, key.target_size().height());
348 EXPECT_EQ(gfx::Rect(20, 30, 80, 70), key.src_rect()); 348 EXPECT_EQ(gfx::Rect(20, 30, 80, 70), key.src_rect());
349 EXPECT_EQ(40u * 35u * 4u, key.locked_bytes()); 349 EXPECT_EQ(40u * 35u * 4u, key.locked_bytes());
350 } 350 }
351 351
352 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageSameImage) { 352 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageSameImage) {
353 SoftwareImageDecodeController controller; 353 SoftwareImageDecodeController controller;
354 skia::RefPtr<SkImage> image = CreateImage(100, 100); 354 sk_sp<SkImage> image = CreateImage(100, 100);
355 bool is_decomposable = true; 355 bool is_decomposable = true;
356 SkFilterQuality quality = kHigh_SkFilterQuality; 356 SkFilterQuality quality = kHigh_SkFilterQuality;
357 uint64_t prepare_tiles_id = 1; 357 uint64_t prepare_tiles_id = 1;
358 358
359 DrawImage draw_image( 359 DrawImage draw_image(
360 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 360 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
361 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 361 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
362 scoped_refptr<ImageDecodeTask> task; 362 scoped_refptr<ImageDecodeTask> task;
363 bool need_unref = 363 bool need_unref =
364 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task); 364 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task);
365 EXPECT_TRUE(need_unref); 365 EXPECT_TRUE(need_unref);
366 EXPECT_TRUE(task); 366 EXPECT_TRUE(task);
367 367
368 DrawImage another_draw_image( 368 DrawImage another_draw_image(
369 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 369 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
370 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 370 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
371 scoped_refptr<ImageDecodeTask> another_task; 371 scoped_refptr<ImageDecodeTask> another_task;
372 need_unref = controller.GetTaskForImageAndRef( 372 need_unref = controller.GetTaskForImageAndRef(
373 another_draw_image, prepare_tiles_id, &another_task); 373 another_draw_image, prepare_tiles_id, &another_task);
374 EXPECT_TRUE(need_unref); 374 EXPECT_TRUE(need_unref);
375 EXPECT_TRUE(task.get() == another_task.get()); 375 EXPECT_TRUE(task.get() == another_task.get());
376 376
377 controller.UnrefImage(draw_image); 377 controller.UnrefImage(draw_image);
378 controller.UnrefImage(draw_image); 378 controller.UnrefImage(draw_image);
379 } 379 }
380 380
381 TEST(SoftwareImageDecodeControllerTest, 381 TEST(SoftwareImageDecodeControllerTest,
382 GetTaskForImageSameImageDifferentQuality) { 382 GetTaskForImageSameImageDifferentQuality) {
383 SoftwareImageDecodeController controller; 383 SoftwareImageDecodeController controller;
384 skia::RefPtr<SkImage> image = CreateImage(100, 100); 384 sk_sp<SkImage> image = CreateImage(100, 100);
385 bool is_decomposable = true; 385 bool is_decomposable = true;
386 uint64_t prepare_tiles_id = 1; 386 uint64_t prepare_tiles_id = 1;
387 387
388 DrawImage high_quality_draw_image( 388 DrawImage high_quality_draw_image(
389 image.get(), SkIRect::MakeWH(image->width(), image->height()), 389 image.get(), SkIRect::MakeWH(image->width(), image->height()),
390 kHigh_SkFilterQuality, 390 kHigh_SkFilterQuality,
391 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 391 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
392 scoped_refptr<ImageDecodeTask> high_quality_task; 392 scoped_refptr<ImageDecodeTask> high_quality_task;
393 bool need_unref = controller.GetTaskForImageAndRef( 393 bool need_unref = controller.GetTaskForImageAndRef(
394 high_quality_draw_image, prepare_tiles_id, &high_quality_task); 394 high_quality_draw_image, prepare_tiles_id, &high_quality_task);
(...skipping 25 matching lines...) Expand all
420 EXPECT_TRUE(low_quality_task); 420 EXPECT_TRUE(low_quality_task);
421 EXPECT_TRUE(high_quality_task.get() != low_quality_task.get()); 421 EXPECT_TRUE(high_quality_task.get() != low_quality_task.get());
422 EXPECT_TRUE(medium_quality_task.get() != low_quality_task.get()); 422 EXPECT_TRUE(medium_quality_task.get() != low_quality_task.get());
423 423
424 controller.UnrefImage(high_quality_draw_image); 424 controller.UnrefImage(high_quality_draw_image);
425 controller.UnrefImage(low_quality_draw_image); 425 controller.UnrefImage(low_quality_draw_image);
426 } 426 }
427 427
428 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageSameImageDifferentSize) { 428 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageSameImageDifferentSize) {
429 SoftwareImageDecodeController controller; 429 SoftwareImageDecodeController controller;
430 skia::RefPtr<SkImage> image = CreateImage(100, 100); 430 sk_sp<SkImage> image = CreateImage(100, 100);
431 bool is_decomposable = true; 431 bool is_decomposable = true;
432 uint64_t prepare_tiles_id = 1; 432 uint64_t prepare_tiles_id = 1;
433 SkFilterQuality quality = kHigh_SkFilterQuality; 433 SkFilterQuality quality = kHigh_SkFilterQuality;
434 434
435 DrawImage half_size_draw_image( 435 DrawImage half_size_draw_image(
436 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 436 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
437 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 437 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
438 scoped_refptr<ImageDecodeTask> half_size_task; 438 scoped_refptr<ImageDecodeTask> half_size_task;
439 bool need_unref = controller.GetTaskForImageAndRef( 439 bool need_unref = controller.GetTaskForImageAndRef(
440 half_size_draw_image, prepare_tiles_id, &half_size_task); 440 half_size_draw_image, prepare_tiles_id, &half_size_task);
(...skipping 13 matching lines...) Expand all
454 controller.UnrefImage(half_size_draw_image); 454 controller.UnrefImage(half_size_draw_image);
455 controller.UnrefImage(quarter_size_draw_image); 455 controller.UnrefImage(quarter_size_draw_image);
456 } 456 }
457 457
458 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageDifferentImage) { 458 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageDifferentImage) {
459 SoftwareImageDecodeController controller; 459 SoftwareImageDecodeController controller;
460 bool is_decomposable = true; 460 bool is_decomposable = true;
461 uint64_t prepare_tiles_id = 1; 461 uint64_t prepare_tiles_id = 1;
462 SkFilterQuality quality = kHigh_SkFilterQuality; 462 SkFilterQuality quality = kHigh_SkFilterQuality;
463 463
464 skia::RefPtr<SkImage> first_image = CreateImage(100, 100); 464 sk_sp<SkImage> first_image = CreateImage(100, 100);
465 DrawImage first_draw_image( 465 DrawImage first_draw_image(
466 first_image.get(), 466 first_image.get(),
467 SkIRect::MakeWH(first_image->width(), first_image->height()), quality, 467 SkIRect::MakeWH(first_image->width(), first_image->height()), quality,
468 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 468 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
469 scoped_refptr<ImageDecodeTask> first_task; 469 scoped_refptr<ImageDecodeTask> first_task;
470 bool need_unref = controller.GetTaskForImageAndRef( 470 bool need_unref = controller.GetTaskForImageAndRef(
471 first_draw_image, prepare_tiles_id, &first_task); 471 first_draw_image, prepare_tiles_id, &first_task);
472 EXPECT_TRUE(need_unref); 472 EXPECT_TRUE(need_unref);
473 EXPECT_TRUE(first_task); 473 EXPECT_TRUE(first_task);
474 474
475 skia::RefPtr<SkImage> second_image = CreateImage(100, 100); 475 sk_sp<SkImage> second_image = CreateImage(100, 100);
476 DrawImage second_draw_image( 476 DrawImage second_draw_image(
477 second_image.get(), 477 second_image.get(),
478 SkIRect::MakeWH(second_image->width(), second_image->height()), quality, 478 SkIRect::MakeWH(second_image->width(), second_image->height()), quality,
479 CreateMatrix(SkSize::Make(0.25f, 0.25f), is_decomposable)); 479 CreateMatrix(SkSize::Make(0.25f, 0.25f), is_decomposable));
480 scoped_refptr<ImageDecodeTask> second_task; 480 scoped_refptr<ImageDecodeTask> second_task;
481 need_unref = controller.GetTaskForImageAndRef(second_draw_image, 481 need_unref = controller.GetTaskForImageAndRef(second_draw_image,
482 prepare_tiles_id, &second_task); 482 prepare_tiles_id, &second_task);
483 EXPECT_TRUE(need_unref); 483 EXPECT_TRUE(need_unref);
484 EXPECT_TRUE(second_task); 484 EXPECT_TRUE(second_task);
485 EXPECT_TRUE(first_task.get() != second_task.get()); 485 EXPECT_TRUE(first_task.get() != second_task.get());
486 486
487 controller.UnrefImage(first_draw_image); 487 controller.UnrefImage(first_draw_image);
488 controller.UnrefImage(second_draw_image); 488 controller.UnrefImage(second_draw_image);
489 } 489 }
490 490
491 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageAlreadyDecoded) { 491 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageAlreadyDecoded) {
492 SoftwareImageDecodeController controller; 492 SoftwareImageDecodeController controller;
493 bool is_decomposable = true; 493 bool is_decomposable = true;
494 uint64_t prepare_tiles_id = 1; 494 uint64_t prepare_tiles_id = 1;
495 SkFilterQuality quality = kHigh_SkFilterQuality; 495 SkFilterQuality quality = kHigh_SkFilterQuality;
496 496
497 skia::RefPtr<SkImage> image = CreateImage(100, 100); 497 sk_sp<SkImage> image = CreateImage(100, 100);
498 DrawImage draw_image( 498 DrawImage draw_image(
499 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 499 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
500 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 500 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
501 scoped_refptr<ImageDecodeTask> task; 501 scoped_refptr<ImageDecodeTask> task;
502 bool need_unref = 502 bool need_unref =
503 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task); 503 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task);
504 EXPECT_TRUE(need_unref); 504 EXPECT_TRUE(need_unref);
505 EXPECT_TRUE(task); 505 EXPECT_TRUE(task);
506 506
507 task->WillSchedule(); 507 task->WillSchedule();
(...skipping 14 matching lines...) Expand all
522 controller.UnrefImage(draw_image); 522 controller.UnrefImage(draw_image);
523 controller.UnrefImage(draw_image); 523 controller.UnrefImage(draw_image);
524 } 524 }
525 525
526 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageAlreadyPrerolled) { 526 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageAlreadyPrerolled) {
527 SoftwareImageDecodeController controller; 527 SoftwareImageDecodeController controller;
528 bool is_decomposable = true; 528 bool is_decomposable = true;
529 uint64_t prepare_tiles_id = 1; 529 uint64_t prepare_tiles_id = 1;
530 SkFilterQuality quality = kLow_SkFilterQuality; 530 SkFilterQuality quality = kLow_SkFilterQuality;
531 531
532 skia::RefPtr<SkImage> image = CreateImage(100, 100); 532 sk_sp<SkImage> image = CreateImage(100, 100);
533 DrawImage draw_image( 533 DrawImage draw_image(
534 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 534 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
535 CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable)); 535 CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable));
536 scoped_refptr<ImageDecodeTask> task; 536 scoped_refptr<ImageDecodeTask> task;
537 bool need_unref = 537 bool need_unref =
538 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task); 538 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task);
539 EXPECT_TRUE(need_unref); 539 EXPECT_TRUE(need_unref);
540 EXPECT_TRUE(task); 540 EXPECT_TRUE(task);
541 541
542 task->WillSchedule(); 542 task->WillSchedule();
(...skipping 21 matching lines...) Expand all
564 controller.UnrefImage(draw_image); 564 controller.UnrefImage(draw_image);
565 controller.UnrefImage(draw_image); 565 controller.UnrefImage(draw_image);
566 } 566 }
567 567
568 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageCanceledGetsNewTask) { 568 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageCanceledGetsNewTask) {
569 SoftwareImageDecodeController controller; 569 SoftwareImageDecodeController controller;
570 bool is_decomposable = true; 570 bool is_decomposable = true;
571 uint64_t prepare_tiles_id = 1; 571 uint64_t prepare_tiles_id = 1;
572 SkFilterQuality quality = kHigh_SkFilterQuality; 572 SkFilterQuality quality = kHigh_SkFilterQuality;
573 573
574 skia::RefPtr<SkImage> image = CreateImage(100, 100); 574 sk_sp<SkImage> image = CreateImage(100, 100);
575 DrawImage draw_image( 575 DrawImage draw_image(
576 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 576 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
577 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 577 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
578 scoped_refptr<ImageDecodeTask> task; 578 scoped_refptr<ImageDecodeTask> task;
579 bool need_unref = 579 bool need_unref =
580 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task); 580 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task);
581 EXPECT_TRUE(need_unref); 581 EXPECT_TRUE(need_unref);
582 EXPECT_TRUE(task); 582 EXPECT_TRUE(task);
583 583
584 task->WillSchedule(); 584 task->WillSchedule();
(...skipping 26 matching lines...) Expand all
611 controller.UnrefImage(draw_image); 611 controller.UnrefImage(draw_image);
612 } 612 }
613 613
614 TEST(SoftwareImageDecodeControllerTest, 614 TEST(SoftwareImageDecodeControllerTest,
615 GetTaskForImageCanceledWhileReffedGetsNewTask) { 615 GetTaskForImageCanceledWhileReffedGetsNewTask) {
616 SoftwareImageDecodeController controller; 616 SoftwareImageDecodeController controller;
617 bool is_decomposable = true; 617 bool is_decomposable = true;
618 uint64_t prepare_tiles_id = 1; 618 uint64_t prepare_tiles_id = 1;
619 SkFilterQuality quality = kHigh_SkFilterQuality; 619 SkFilterQuality quality = kHigh_SkFilterQuality;
620 620
621 skia::RefPtr<SkImage> image = CreateImage(100, 100); 621 sk_sp<SkImage> image = CreateImage(100, 100);
622 DrawImage draw_image( 622 DrawImage draw_image(
623 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 623 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
624 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 624 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
625 scoped_refptr<ImageDecodeTask> task; 625 scoped_refptr<ImageDecodeTask> task;
626 bool need_unref = 626 bool need_unref =
627 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task); 627 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task);
628 EXPECT_TRUE(need_unref); 628 EXPECT_TRUE(need_unref);
629 EXPECT_TRUE(task); 629 EXPECT_TRUE(task);
630 630
631 task->WillSchedule(); 631 task->WillSchedule();
(...skipping 25 matching lines...) Expand all
657 controller.UnrefImage(draw_image); 657 controller.UnrefImage(draw_image);
658 controller.UnrefImage(draw_image); 658 controller.UnrefImage(draw_image);
659 } 659 }
660 660
661 TEST(SoftwareImageDecodeControllerTest, GetDecodedImageForDraw) { 661 TEST(SoftwareImageDecodeControllerTest, GetDecodedImageForDraw) {
662 SoftwareImageDecodeController controller; 662 SoftwareImageDecodeController controller;
663 bool is_decomposable = true; 663 bool is_decomposable = true;
664 uint64_t prepare_tiles_id = 1; 664 uint64_t prepare_tiles_id = 1;
665 SkFilterQuality quality = kHigh_SkFilterQuality; 665 SkFilterQuality quality = kHigh_SkFilterQuality;
666 666
667 skia::RefPtr<SkImage> image = CreateImage(100, 100); 667 sk_sp<SkImage> image = CreateImage(100, 100);
668 DrawImage draw_image( 668 DrawImage draw_image(
669 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 669 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
670 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 670 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
671 scoped_refptr<ImageDecodeTask> task; 671 scoped_refptr<ImageDecodeTask> task;
672 bool need_unref = 672 bool need_unref =
673 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task); 673 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task);
674 EXPECT_TRUE(need_unref); 674 EXPECT_TRUE(need_unref);
675 EXPECT_TRUE(task); 675 EXPECT_TRUE(task);
676 676
677 task->WillSchedule(); 677 task->WillSchedule();
(...skipping 21 matching lines...) Expand all
699 controller.UnrefImage(draw_image); 699 controller.UnrefImage(draw_image);
700 } 700 }
701 701
702 TEST(SoftwareImageDecodeControllerTest, 702 TEST(SoftwareImageDecodeControllerTest,
703 GetDecodedImageForDrawWithNonContainedSrcRect) { 703 GetDecodedImageForDrawWithNonContainedSrcRect) {
704 SoftwareImageDecodeController controller; 704 SoftwareImageDecodeController controller;
705 bool is_decomposable = true; 705 bool is_decomposable = true;
706 uint64_t prepare_tiles_id = 1; 706 uint64_t prepare_tiles_id = 1;
707 SkFilterQuality quality = kHigh_SkFilterQuality; 707 SkFilterQuality quality = kHigh_SkFilterQuality;
708 708
709 skia::RefPtr<SkImage> image = CreateImage(100, 100); 709 sk_sp<SkImage> image = CreateImage(100, 100);
710 DrawImage draw_image( 710 DrawImage draw_image(
711 image.get(), SkIRect::MakeXYWH(20, 30, image->width(), image->height()), 711 image.get(), SkIRect::MakeXYWH(20, 30, image->width(), image->height()),
712 quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 712 quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
713 scoped_refptr<ImageDecodeTask> task; 713 scoped_refptr<ImageDecodeTask> task;
714 bool need_unref = 714 bool need_unref =
715 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task); 715 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task);
716 EXPECT_TRUE(need_unref); 716 EXPECT_TRUE(need_unref);
717 EXPECT_TRUE(task); 717 EXPECT_TRUE(task);
718 718
719 task->WillSchedule(); 719 task->WillSchedule();
(...skipping 19 matching lines...) Expand all
739 739
740 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 740 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
741 controller.UnrefImage(draw_image); 741 controller.UnrefImage(draw_image);
742 } 742 }
743 743
744 TEST(SoftwareImageDecodeControllerTest, GetDecodedImageForDrawAtRasterDecode) { 744 TEST(SoftwareImageDecodeControllerTest, GetDecodedImageForDrawAtRasterDecode) {
745 SoftwareImageDecodeController controller; 745 SoftwareImageDecodeController controller;
746 bool is_decomposable = true; 746 bool is_decomposable = true;
747 SkFilterQuality quality = kHigh_SkFilterQuality; 747 SkFilterQuality quality = kHigh_SkFilterQuality;
748 748
749 skia::RefPtr<SkImage> image = CreateImage(100, 100); 749 sk_sp<SkImage> image = CreateImage(100, 100);
750 DrawImage draw_image( 750 DrawImage draw_image(
751 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 751 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
752 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 752 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
753 753
754 DecodedDrawImage decoded_draw_image = 754 DecodedDrawImage decoded_draw_image =
755 controller.GetDecodedImageForDraw(draw_image); 755 controller.GetDecodedImageForDraw(draw_image);
756 EXPECT_TRUE(decoded_draw_image.image()); 756 EXPECT_TRUE(decoded_draw_image.image());
757 EXPECT_EQ(50, decoded_draw_image.image()->width()); 757 EXPECT_EQ(50, decoded_draw_image.image()->width());
758 EXPECT_EQ(50, decoded_draw_image.image()->height()); 758 EXPECT_EQ(50, decoded_draw_image.image()->height());
759 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().width()); 759 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().width());
760 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().height()); 760 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().height());
761 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); 761 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality());
762 EXPECT_FALSE(decoded_draw_image.is_scale_adjustment_identity()); 762 EXPECT_FALSE(decoded_draw_image.is_scale_adjustment_identity());
763 EXPECT_TRUE(decoded_draw_image.is_at_raster_decode()); 763 EXPECT_TRUE(decoded_draw_image.is_at_raster_decode());
764 764
765 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 765 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
766 } 766 }
767 767
768 TEST(SoftwareImageDecodeControllerTest, 768 TEST(SoftwareImageDecodeControllerTest,
769 GetDecodedImageForDrawAtRasterDecodeMultipleTimes) { 769 GetDecodedImageForDrawAtRasterDecodeMultipleTimes) {
770 SoftwareImageDecodeController controller; 770 SoftwareImageDecodeController controller;
771 bool is_decomposable = true; 771 bool is_decomposable = true;
772 SkFilterQuality quality = kHigh_SkFilterQuality; 772 SkFilterQuality quality = kHigh_SkFilterQuality;
773 773
774 skia::RefPtr<SkImage> image = CreateImage(100, 100); 774 sk_sp<SkImage> image = CreateImage(100, 100);
775 DrawImage draw_image( 775 DrawImage draw_image(
776 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 776 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
777 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 777 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
778 778
779 DecodedDrawImage decoded_draw_image = 779 DecodedDrawImage decoded_draw_image =
780 controller.GetDecodedImageForDraw(draw_image); 780 controller.GetDecodedImageForDraw(draw_image);
781 EXPECT_TRUE(decoded_draw_image.image()); 781 EXPECT_TRUE(decoded_draw_image.image());
782 EXPECT_EQ(50, decoded_draw_image.image()->width()); 782 EXPECT_EQ(50, decoded_draw_image.image()->width());
783 EXPECT_EQ(50, decoded_draw_image.image()->height()); 783 EXPECT_EQ(50, decoded_draw_image.image()->height());
784 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().width()); 784 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().width());
(...skipping 11 matching lines...) Expand all
796 controller.DrawWithImageFinished(draw_image, another_decoded_draw_image); 796 controller.DrawWithImageFinished(draw_image, another_decoded_draw_image);
797 } 797 }
798 798
799 TEST(SoftwareImageDecodeControllerTest, 799 TEST(SoftwareImageDecodeControllerTest,
800 GetDecodedImageForDrawAtRasterDecodeDoesNotPreventTasks) { 800 GetDecodedImageForDrawAtRasterDecodeDoesNotPreventTasks) {
801 SoftwareImageDecodeController controller; 801 SoftwareImageDecodeController controller;
802 bool is_decomposable = true; 802 bool is_decomposable = true;
803 uint64_t prepare_tiles_id = 1; 803 uint64_t prepare_tiles_id = 1;
804 SkFilterQuality quality = kHigh_SkFilterQuality; 804 SkFilterQuality quality = kHigh_SkFilterQuality;
805 805
806 skia::RefPtr<SkImage> image = CreateImage(100, 100); 806 sk_sp<SkImage> image = CreateImage(100, 100);
807 DrawImage draw_image( 807 DrawImage draw_image(
808 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 808 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
809 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 809 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
810 810
811 DecodedDrawImage decoded_draw_image = 811 DecodedDrawImage decoded_draw_image =
812 controller.GetDecodedImageForDraw(draw_image); 812 controller.GetDecodedImageForDraw(draw_image);
813 EXPECT_TRUE(decoded_draw_image.image()); 813 EXPECT_TRUE(decoded_draw_image.image());
814 EXPECT_EQ(50, decoded_draw_image.image()->width()); 814 EXPECT_EQ(50, decoded_draw_image.image()->width());
815 EXPECT_EQ(50, decoded_draw_image.image()->height()); 815 EXPECT_EQ(50, decoded_draw_image.image()->height());
816 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().width()); 816 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().width());
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
850 controller.UnrefImage(draw_image); 850 controller.UnrefImage(draw_image);
851 } 851 }
852 852
853 TEST(SoftwareImageDecodeControllerTest, 853 TEST(SoftwareImageDecodeControllerTest,
854 GetDecodedImageForDrawAtRasterDecodeIsUsedForLockedCache) { 854 GetDecodedImageForDrawAtRasterDecodeIsUsedForLockedCache) {
855 SoftwareImageDecodeController controller; 855 SoftwareImageDecodeController controller;
856 bool is_decomposable = true; 856 bool is_decomposable = true;
857 uint64_t prepare_tiles_id = 1; 857 uint64_t prepare_tiles_id = 1;
858 SkFilterQuality quality = kHigh_SkFilterQuality; 858 SkFilterQuality quality = kHigh_SkFilterQuality;
859 859
860 skia::RefPtr<SkImage> image = CreateImage(100, 100); 860 sk_sp<SkImage> image = CreateImage(100, 100);
861 DrawImage draw_image( 861 DrawImage draw_image(
862 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 862 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
863 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 863 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
864 864
865 DecodedDrawImage decoded_draw_image = 865 DecodedDrawImage decoded_draw_image =
866 controller.GetDecodedImageForDraw(draw_image); 866 controller.GetDecodedImageForDraw(draw_image);
867 EXPECT_TRUE(decoded_draw_image.image()); 867 EXPECT_TRUE(decoded_draw_image.image());
868 EXPECT_EQ(50, decoded_draw_image.image()->width()); 868 EXPECT_EQ(50, decoded_draw_image.image()->width());
869 EXPECT_EQ(50, decoded_draw_image.image()->height()); 869 EXPECT_EQ(50, decoded_draw_image.image()->height());
870 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().width()); 870 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().width());
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
904 controller.DrawWithImageFinished(draw_image, another_decoded_draw_image); 904 controller.DrawWithImageFinished(draw_image, another_decoded_draw_image);
905 controller.UnrefImage(draw_image); 905 controller.UnrefImage(draw_image);
906 } 906 }
907 907
908 TEST(SoftwareImageDecodeControllerTest, ZeroSizedImagesAreSkipped) { 908 TEST(SoftwareImageDecodeControllerTest, ZeroSizedImagesAreSkipped) {
909 SoftwareImageDecodeController controller; 909 SoftwareImageDecodeController controller;
910 bool is_decomposable = true; 910 bool is_decomposable = true;
911 uint64_t prepare_tiles_id = 1; 911 uint64_t prepare_tiles_id = 1;
912 SkFilterQuality quality = kHigh_SkFilterQuality; 912 SkFilterQuality quality = kHigh_SkFilterQuality;
913 913
914 skia::RefPtr<SkImage> image = CreateImage(100, 100); 914 sk_sp<SkImage> image = CreateImage(100, 100);
915 DrawImage draw_image( 915 DrawImage draw_image(
916 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 916 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
917 CreateMatrix(SkSize::Make(0.f, 0.f), is_decomposable)); 917 CreateMatrix(SkSize::Make(0.f, 0.f), is_decomposable));
918 918
919 scoped_refptr<ImageDecodeTask> task; 919 scoped_refptr<ImageDecodeTask> task;
920 bool need_unref = 920 bool need_unref =
921 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task); 921 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task);
922 EXPECT_FALSE(task); 922 EXPECT_FALSE(task);
923 EXPECT_FALSE(need_unref); 923 EXPECT_FALSE(need_unref);
924 924
925 DecodedDrawImage decoded_draw_image = 925 DecodedDrawImage decoded_draw_image =
926 controller.GetDecodedImageForDraw(draw_image); 926 controller.GetDecodedImageForDraw(draw_image);
927 EXPECT_FALSE(decoded_draw_image.image()); 927 EXPECT_FALSE(decoded_draw_image.image());
928 928
929 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 929 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
930 } 930 }
931 931
932 TEST(SoftwareImageDecodeControllerTest, NonOverlappingSrcRectImagesAreSkipped) { 932 TEST(SoftwareImageDecodeControllerTest, NonOverlappingSrcRectImagesAreSkipped) {
933 SoftwareImageDecodeController controller; 933 SoftwareImageDecodeController controller;
934 bool is_decomposable = true; 934 bool is_decomposable = true;
935 uint64_t prepare_tiles_id = 1; 935 uint64_t prepare_tiles_id = 1;
936 SkFilterQuality quality = kHigh_SkFilterQuality; 936 SkFilterQuality quality = kHigh_SkFilterQuality;
937 937
938 skia::RefPtr<SkImage> image = CreateImage(100, 100); 938 sk_sp<SkImage> image = CreateImage(100, 100);
939 DrawImage draw_image( 939 DrawImage draw_image(
940 image.get(), SkIRect::MakeXYWH(150, 150, image->width(), image->height()), 940 image.get(), SkIRect::MakeXYWH(150, 150, image->width(), image->height()),
941 quality, CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable)); 941 quality, CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable));
942 942
943 scoped_refptr<ImageDecodeTask> task; 943 scoped_refptr<ImageDecodeTask> task;
944 bool need_unref = 944 bool need_unref =
945 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task); 945 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task);
946 EXPECT_FALSE(task); 946 EXPECT_FALSE(task);
947 EXPECT_FALSE(need_unref); 947 EXPECT_FALSE(need_unref);
948 948
949 DecodedDrawImage decoded_draw_image = 949 DecodedDrawImage decoded_draw_image =
950 controller.GetDecodedImageForDraw(draw_image); 950 controller.GetDecodedImageForDraw(draw_image);
951 EXPECT_FALSE(decoded_draw_image.image()); 951 EXPECT_FALSE(decoded_draw_image.image());
952 952
953 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 953 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
954 } 954 }
955 955
956 TEST(SoftwareImageDecodeControllerTest, LowQualityFilterIsHandled) { 956 TEST(SoftwareImageDecodeControllerTest, LowQualityFilterIsHandled) {
957 SoftwareImageDecodeController controller; 957 SoftwareImageDecodeController controller;
958 bool is_decomposable = true; 958 bool is_decomposable = true;
959 uint64_t prepare_tiles_id = 1; 959 uint64_t prepare_tiles_id = 1;
960 SkFilterQuality quality = kLow_SkFilterQuality; 960 SkFilterQuality quality = kLow_SkFilterQuality;
961 961
962 skia::RefPtr<SkImage> image = CreateImage(100, 100); 962 sk_sp<SkImage> image = CreateImage(100, 100);
963 DrawImage draw_image( 963 DrawImage draw_image(
964 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality, 964 image.get(), SkIRect::MakeWH(image->width(), image->height()), quality,
965 CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable)); 965 CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable));
966 966
967 scoped_refptr<ImageDecodeTask> task; 967 scoped_refptr<ImageDecodeTask> task;
968 bool need_unref = 968 bool need_unref =
969 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task); 969 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task);
970 EXPECT_TRUE(task); 970 EXPECT_TRUE(task);
971 EXPECT_TRUE(need_unref); 971 EXPECT_TRUE(need_unref);
972 972
973 DecodedDrawImage decoded_draw_image = 973 DecodedDrawImage decoded_draw_image =
974 controller.GetDecodedImageForDraw(draw_image); 974 controller.GetDecodedImageForDraw(draw_image);
975 EXPECT_TRUE(decoded_draw_image.image()); 975 EXPECT_TRUE(decoded_draw_image.image());
976 // If we decoded the image and cached it, it would be stored in a different 976 // If we decoded the image and cached it, it would be stored in a different
977 // SkImage object. 977 // SkImage object.
978 EXPECT_TRUE(decoded_draw_image.image() != image.get()); 978 EXPECT_TRUE(decoded_draw_image.image() != image.get());
979 979
980 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 980 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
981 controller.UnrefImage(draw_image); 981 controller.UnrefImage(draw_image);
982 } 982 }
983 983
984 TEST(SoftwareImageDecodeControllerTest, LowQualityScaledSubrectIsHandled) { 984 TEST(SoftwareImageDecodeControllerTest, LowQualityScaledSubrectIsHandled) {
985 SoftwareImageDecodeController controller; 985 SoftwareImageDecodeController controller;
986 bool is_decomposable = true; 986 bool is_decomposable = true;
987 uint64_t prepare_tiles_id = 1; 987 uint64_t prepare_tiles_id = 1;
988 SkFilterQuality quality = kLow_SkFilterQuality; 988 SkFilterQuality quality = kLow_SkFilterQuality;
989 989
990 skia::RefPtr<SkImage> image = CreateImage(100, 100); 990 sk_sp<SkImage> image = CreateImage(100, 100);
991 DrawImage draw_image(image.get(), SkIRect::MakeXYWH(10, 10, 80, 80), quality, 991 DrawImage draw_image(image.get(), SkIRect::MakeXYWH(10, 10, 80, 80), quality,
992 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 992 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
993 993
994 scoped_refptr<ImageDecodeTask> task; 994 scoped_refptr<ImageDecodeTask> task;
995 bool need_unref = 995 bool need_unref =
996 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task); 996 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task);
997 EXPECT_TRUE(task); 997 EXPECT_TRUE(task);
998 EXPECT_TRUE(need_unref); 998 EXPECT_TRUE(need_unref);
999 999
1000 DecodedDrawImage decoded_draw_image = 1000 DecodedDrawImage decoded_draw_image =
1001 controller.GetDecodedImageForDraw(draw_image); 1001 controller.GetDecodedImageForDraw(draw_image);
1002 EXPECT_TRUE(decoded_draw_image.image()); 1002 EXPECT_TRUE(decoded_draw_image.image());
1003 // If we decoded the image and cached it, it would be stored in a different 1003 // If we decoded the image and cached it, it would be stored in a different
1004 // SkImage object. 1004 // SkImage object.
1005 EXPECT_TRUE(decoded_draw_image.image() != image.get()); 1005 EXPECT_TRUE(decoded_draw_image.image() != image.get());
1006 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); 1006 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality());
1007 EXPECT_TRUE(decoded_draw_image.is_scale_adjustment_identity()); 1007 EXPECT_TRUE(decoded_draw_image.is_scale_adjustment_identity());
1008 1008
1009 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 1009 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
1010 controller.UnrefImage(draw_image); 1010 controller.UnrefImage(draw_image);
1011 } 1011 }
1012 1012
1013 TEST(SoftwareImageDecodeControllerTest, NoneQualityScaledSubrectIsHandled) { 1013 TEST(SoftwareImageDecodeControllerTest, NoneQualityScaledSubrectIsHandled) {
1014 SoftwareImageDecodeController controller; 1014 SoftwareImageDecodeController controller;
1015 bool is_decomposable = true; 1015 bool is_decomposable = true;
1016 uint64_t prepare_tiles_id = 1; 1016 uint64_t prepare_tiles_id = 1;
1017 SkFilterQuality quality = kNone_SkFilterQuality; 1017 SkFilterQuality quality = kNone_SkFilterQuality;
1018 1018
1019 skia::RefPtr<SkImage> image = CreateImage(100, 100); 1019 sk_sp<SkImage> image = CreateImage(100, 100);
1020 DrawImage draw_image(image.get(), SkIRect::MakeXYWH(10, 10, 80, 80), quality, 1020 DrawImage draw_image(image.get(), SkIRect::MakeXYWH(10, 10, 80, 80), quality,
1021 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); 1021 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable));
1022 1022
1023 scoped_refptr<ImageDecodeTask> task; 1023 scoped_refptr<ImageDecodeTask> task;
1024 bool need_unref = 1024 bool need_unref =
1025 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task); 1025 controller.GetTaskForImageAndRef(draw_image, prepare_tiles_id, &task);
1026 EXPECT_TRUE(task); 1026 EXPECT_TRUE(task);
1027 EXPECT_TRUE(need_unref); 1027 EXPECT_TRUE(need_unref);
1028 1028
1029 DecodedDrawImage decoded_draw_image = 1029 DecodedDrawImage decoded_draw_image =
1030 controller.GetDecodedImageForDraw(draw_image); 1030 controller.GetDecodedImageForDraw(draw_image);
1031 EXPECT_TRUE(decoded_draw_image.image()); 1031 EXPECT_TRUE(decoded_draw_image.image());
1032 // If we decoded the image and cached it, it would be stored in a different 1032 // If we decoded the image and cached it, it would be stored in a different
1033 // SkImage object. 1033 // SkImage object.
1034 EXPECT_TRUE(decoded_draw_image.image() != image.get()); 1034 EXPECT_TRUE(decoded_draw_image.image() != image.get());
1035 EXPECT_EQ(kNone_SkFilterQuality, decoded_draw_image.filter_quality()); 1035 EXPECT_EQ(kNone_SkFilterQuality, decoded_draw_image.filter_quality());
1036 EXPECT_TRUE(decoded_draw_image.is_scale_adjustment_identity()); 1036 EXPECT_TRUE(decoded_draw_image.is_scale_adjustment_identity());
1037 1037
1038 controller.DrawWithImageFinished(draw_image, decoded_draw_image); 1038 controller.DrawWithImageFinished(draw_image, decoded_draw_image);
1039 controller.UnrefImage(draw_image); 1039 controller.UnrefImage(draw_image);
1040 } 1040 }
1041 } // namespace 1041 } // namespace
1042 } // namespace cc 1042 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698