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

Side by Side Diff: skia/ext/discardable_pixel_ref_utils_unittest.cc

Issue 111143005: cc: Gather and lock/unlock SkDiscardablePixelRefs instead of skia::LazyPixelRefs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "base/compiler_specific.h" 5 #include "base/compiler_specific.h"
6 #include "base/memory/scoped_ptr.h" 6 #include "base/memory/scoped_ptr.h"
7 #include "cc/test/geometry_test_utils.h" 7 #include "cc/test/geometry_test_utils.h"
8 #include "skia/ext/lazy_pixel_ref.h" 8 #include "skia/ext/discardable_pixel_ref_utils.h"
9 #include "skia/ext/lazy_pixel_ref_utils.h"
10 #include "skia/ext/refptr.h" 9 #include "skia/ext/refptr.h"
11 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
12 #include "third_party/skia/include/core/SkBitmap.h" 11 #include "third_party/skia/include/core/SkBitmap.h"
13 #include "third_party/skia/include/core/SkCanvas.h" 12 #include "third_party/skia/include/core/SkCanvas.h"
14 #include "third_party/skia/include/core/SkFlattenableBuffers.h" 13 #include "third_party/skia/include/core/SkFlattenableBuffers.h"
14 #include "third_party/skia/include/core/SkPixelRef.h"
15 #include "third_party/skia/include/core/SkPoint.h" 15 #include "third_party/skia/include/core/SkPoint.h"
16 #include "third_party/skia/include/core/SkShader.h" 16 #include "third_party/skia/include/core/SkShader.h"
17 #include "third_party/skia/src/core/SkOrderedReadBuffer.h" 17 #include "third_party/skia/src/core/SkOrderedReadBuffer.h"
18 #include "ui/gfx/rect.h" 18 #include "ui/gfx/rect.h"
19 #include "ui/gfx/skia_util.h" 19 #include "ui/gfx/skia_util.h"
20 20
21 namespace skia { 21 namespace skia {
22 22
23 namespace { 23 namespace {
24 24
25 void CreateBitmap(gfx::Size size, const char* uri, SkBitmap* bitmap); 25 void CreateBitmap(gfx::Size size, const char* uri, SkBitmap* bitmap);
26 26
27 class TestPixelRef : public SkPixelRef { 27 class TestPixelRef : public SkPixelRef {
28 public: 28 public:
29 TestPixelRef(int width, int height); 29 TestPixelRef(int width, int height);
30 virtual ~TestPixelRef(); 30 virtual ~TestPixelRef();
31 31
32 virtual SkFlattenable::Factory getFactory() const OVERRIDE; 32 virtual SkFlattenable::Factory getFactory() const OVERRIDE;
33 virtual void* onLockPixels(SkColorTable** color_table) OVERRIDE; 33 virtual void* onLockPixels(SkColorTable** color_table) OVERRIDE;
34 virtual void onUnlockPixels() OVERRIDE {} 34 virtual void onUnlockPixels() OVERRIDE {}
35 virtual SkPixelRef* deepCopy(SkBitmap::Config config, const SkIRect* subset) 35 virtual SkPixelRef* deepCopy(SkBitmap::Config config, const SkIRect* subset)
36 OVERRIDE; 36 OVERRIDE;
37 37
38 private: 38 private:
39 scoped_ptr<char[]> pixels_; 39 scoped_ptr<char[]> pixels_;
40 }; 40 };
41 41
42 class TestLazyPixelRef : public skia::LazyPixelRef { 42 class TestDiscardableShader : public SkShader {
43 public: 43 public:
44 TestLazyPixelRef(int width, int height); 44 TestDiscardableShader() {
45 virtual ~TestLazyPixelRef(); 45 CreateBitmap(gfx::Size(50, 50), "discardable", &bitmap_);
46 }
46 47
47 virtual SkFlattenable::Factory getFactory() const OVERRIDE; 48 TestDiscardableShader(SkFlattenableReadBuffer& flattenable_buffer) {
48 virtual void* onLockPixels(SkColorTable** color_table) OVERRIDE;
49 virtual void onUnlockPixels() OVERRIDE {}
50 virtual bool PrepareToDecode(const PrepareParams& params) OVERRIDE;
51 virtual bool MaybeDecoded() OVERRIDE;
52 virtual SkPixelRef* deepCopy(SkBitmap::Config config, const SkIRect* subset)
53 OVERRIDE;
54 virtual void Decode() OVERRIDE {}
55
56 private:
57 scoped_ptr<char[]> pixels_;
58 };
59
60 class TestLazyShader : public SkShader {
61 public:
62 TestLazyShader() { CreateBitmap(gfx::Size(50, 50), "lazy", &bitmap_); }
63
64 TestLazyShader(SkFlattenableReadBuffer& flattenable_buffer) {
65 SkOrderedReadBuffer& buffer = 49 SkOrderedReadBuffer& buffer =
66 static_cast<SkOrderedReadBuffer&>(flattenable_buffer); 50 static_cast<SkOrderedReadBuffer&>(flattenable_buffer);
67 SkReader32* reader = buffer.getReader32(); 51 SkReader32* reader = buffer.getReader32();
68 52
69 reader->skip(-4); 53 reader->skip(-4);
70 uint32_t toSkip = reader->readU32(); 54 uint32_t toSkip = reader->readU32();
71 reader->skip(toSkip); 55 reader->skip(toSkip);
72 56
73 CreateBitmap(gfx::Size(50, 50), "lazy", &bitmap_); 57 CreateBitmap(gfx::Size(50, 50), "discardable", &bitmap_);
74 } 58 }
75 59
76 virtual SkShader::BitmapType asABitmap(SkBitmap* bitmap, 60 virtual SkShader::BitmapType asABitmap(SkBitmap* bitmap,
77 SkMatrix* matrix, 61 SkMatrix* matrix,
78 TileMode xy[2]) const OVERRIDE { 62 TileMode xy[2]) const OVERRIDE {
79 if (bitmap) 63 if (bitmap)
80 *bitmap = bitmap_; 64 *bitmap = bitmap_;
81 return SkShader::kDefault_BitmapType; 65 return SkShader::kDefault_BitmapType;
82 } 66 }
83 67
84 // Pure virtual implementaiton. 68 // Pure virtual implementaiton.
85 virtual void shadeSpan(int x, int y, SkPMColor[], int count) OVERRIDE {} 69 virtual void shadeSpan(int x, int y, SkPMColor[], int count) OVERRIDE {}
86 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(TestLazyShader); 70 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(TestDiscardableShader);
87 71
88 private: 72 private:
89 SkBitmap bitmap_; 73 SkBitmap bitmap_;
90 }; 74 };
91 75
92 TestPixelRef::TestPixelRef(int width, int height) 76 TestPixelRef::TestPixelRef(int width, int height)
93 : pixels_(new char[4 * width * height]) {} 77 : pixels_(new char[4 * width * height]) {}
94 78
95 TestPixelRef::~TestPixelRef() {} 79 TestPixelRef::~TestPixelRef() {}
96 80
97 SkFlattenable::Factory TestPixelRef::getFactory() const { return NULL; } 81 SkFlattenable::Factory TestPixelRef::getFactory() const { return NULL; }
98 82
99 void* TestPixelRef::onLockPixels(SkColorTable** color_table) { 83 void* TestPixelRef::onLockPixels(SkColorTable** color_table) {
100 return pixels_.get(); 84 return pixels_.get();
101 } 85 }
102 86
103 SkPixelRef* TestPixelRef::deepCopy(SkBitmap::Config config, 87 SkPixelRef* TestPixelRef::deepCopy(SkBitmap::Config config,
104 const SkIRect* subset) { 88 const SkIRect* subset) {
105 this->ref(); 89 this->ref();
106 return this; 90 return this;
107 } 91 }
108 92
109 TestLazyPixelRef::TestLazyPixelRef(int width, int height)
110 : pixels_(new char[4 * width * height]) {}
111
112 TestLazyPixelRef::~TestLazyPixelRef() {}
113
114 SkFlattenable::Factory TestLazyPixelRef::getFactory() const { return NULL; }
115
116 void* TestLazyPixelRef::onLockPixels(SkColorTable** color_table) {
117 return pixels_.get();
118 }
119
120 bool TestLazyPixelRef::PrepareToDecode(const PrepareParams& params) {
121 return true;
122 }
123
124 bool TestLazyPixelRef::MaybeDecoded() {
125 return true;
126 }
127
128 SkPixelRef* TestLazyPixelRef::deepCopy(SkBitmap::Config config,
129 const SkIRect* subset) {
130 this->ref();
131 return this;
132 }
133
134 void CreateBitmap(gfx::Size size, const char* uri, SkBitmap* bitmap) { 93 void CreateBitmap(gfx::Size size, const char* uri, SkBitmap* bitmap) {
135 skia::RefPtr<TestLazyPixelRef> lazy_pixel_ref = 94 skia::RefPtr<TestPixelRef> pixel_ref =
136 skia::AdoptRef(new TestLazyPixelRef(size.width(), size.height())); 95 skia::AdoptRef(new TestPixelRef(size.width(), size.height()));
137 lazy_pixel_ref->setURI(uri); 96 pixel_ref->setURI(uri);
138 97
139 bitmap->setConfig(SkBitmap::kARGB_8888_Config, size.width(), size.height()); 98 bitmap->setConfig(SkBitmap::kARGB_8888_Config, size.width(), size.height());
140 bitmap->setPixelRef(lazy_pixel_ref.get()); 99 bitmap->setPixelRef(pixel_ref.get());
141 } 100 }
142 101
143 SkCanvas* StartRecording(SkPicture* picture, gfx::Rect layer_rect) { 102 SkCanvas* StartRecording(SkPicture* picture, gfx::Rect layer_rect) {
144 SkCanvas* canvas = picture->beginRecording( 103 SkCanvas* canvas = picture->beginRecording(
145 layer_rect.width(), 104 layer_rect.width(),
146 layer_rect.height(), 105 layer_rect.height(),
147 SkPicture::kUsePathBoundsForClip_RecordingFlag | 106 SkPicture::kUsePathBoundsForClip_RecordingFlag |
148 SkPicture::kOptimizeForClippedPlayback_RecordingFlag); 107 SkPicture::kOptimizeForClippedPlayback_RecordingFlag);
149 108
150 canvas->save(); 109 canvas->save();
151 canvas->translate(-layer_rect.x(), -layer_rect.y()); 110 canvas->translate(-layer_rect.x(), -layer_rect.y());
152 canvas->clipRect(SkRect::MakeXYWH( 111 canvas->clipRect(SkRect::MakeXYWH(
153 layer_rect.x(), layer_rect.y(), layer_rect.width(), layer_rect.height())); 112 layer_rect.x(), layer_rect.y(), layer_rect.width(), layer_rect.height()));
154 113
155 return canvas; 114 return canvas;
156 } 115 }
157 116
158 void StopRecording(SkPicture* picture, SkCanvas* canvas) { 117 void StopRecording(SkPicture* picture, SkCanvas* canvas) {
159 canvas->restore(); 118 canvas->restore();
160 picture->endRecording(); 119 picture->endRecording();
161 } 120 }
162 121
163 } // namespace 122 } // namespace
164 123
165 TEST(LazyPixelRefUtilsTest, DrawPaint) { 124 TEST(DiscardablePixelRefUtilsTest, DrawPaint) {
166 gfx::Rect layer_rect(0, 0, 256, 256); 125 gfx::Rect layer_rect(0, 0, 256, 256);
167 126
168 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 127 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
169 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 128 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
170 129
171 TestLazyShader first_shader; 130 TestDiscardableShader first_shader;
172 SkPaint first_paint; 131 SkPaint first_paint;
173 first_paint.setShader(&first_shader); 132 first_paint.setShader(&first_shader);
174 133
175 TestLazyShader second_shader; 134 TestDiscardableShader second_shader;
176 SkPaint second_paint; 135 SkPaint second_paint;
177 second_paint.setShader(&second_shader); 136 second_paint.setShader(&second_shader);
178 137
179 TestLazyShader third_shader; 138 TestDiscardableShader third_shader;
180 SkPaint third_paint; 139 SkPaint third_paint;
181 third_paint.setShader(&third_shader); 140 third_paint.setShader(&third_shader);
182 141
183 canvas->drawPaint(first_paint); 142 canvas->drawPaint(first_paint);
184 canvas->clipRect(SkRect::MakeXYWH(34, 45, 56, 67)); 143 canvas->clipRect(SkRect::MakeXYWH(34, 45, 56, 67));
185 canvas->drawPaint(second_paint); 144 canvas->drawPaint(second_paint);
186 // Total clip is now (34, 45, 56, 55) 145 // Total clip is now (34, 45, 56, 55)
187 canvas->clipRect(SkRect::MakeWH(100, 100)); 146 canvas->clipRect(SkRect::MakeWH(100, 100));
188 canvas->drawPaint(third_paint); 147 canvas->drawPaint(third_paint);
189 148
190 StopRecording(picture.get(), canvas); 149 StopRecording(picture.get(), canvas);
191 150
192 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 151 std::vector<skia::DiscardablePixelRefUtils::PositionPixelRef> pixel_refs;
193 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 152 skia::DiscardablePixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs);
194 153
195 EXPECT_EQ(3u, pixel_refs.size()); 154 EXPECT_EQ(3u, pixel_refs.size());
196 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 256, 256), 155 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 256, 256),
197 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect)); 156 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect));
198 EXPECT_FLOAT_RECT_EQ(gfx::RectF(34, 45, 56, 67), 157 EXPECT_FLOAT_RECT_EQ(gfx::RectF(34, 45, 56, 67),
199 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect)); 158 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect));
200 EXPECT_FLOAT_RECT_EQ(gfx::RectF(34, 45, 56, 55), 159 EXPECT_FLOAT_RECT_EQ(gfx::RectF(34, 45, 56, 55),
201 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect)); 160 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect));
202 } 161 }
203 162
204 TEST(LazyPixelRefUtilsTest, DrawPoints) { 163 TEST(DiscardablePixelRefUtilsTest, DrawPoints) {
205 gfx::Rect layer_rect(0, 0, 256, 256); 164 gfx::Rect layer_rect(0, 0, 256, 256);
206 165
207 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 166 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
208 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 167 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
209 168
210 TestLazyShader first_shader; 169 TestDiscardableShader first_shader;
211 SkPaint first_paint; 170 SkPaint first_paint;
212 first_paint.setShader(&first_shader); 171 first_paint.setShader(&first_shader);
213 172
214 TestLazyShader second_shader; 173 TestDiscardableShader second_shader;
215 SkPaint second_paint; 174 SkPaint second_paint;
216 second_paint.setShader(&second_shader); 175 second_paint.setShader(&second_shader);
217 176
218 TestLazyShader third_shader; 177 TestDiscardableShader third_shader;
219 SkPaint third_paint; 178 SkPaint third_paint;
220 third_paint.setShader(&third_shader); 179 third_paint.setShader(&third_shader);
221 180
222 SkPoint points[3]; 181 SkPoint points[3];
223 points[0].set(10, 10); 182 points[0].set(10, 10);
224 points[1].set(100, 20); 183 points[1].set(100, 20);
225 points[2].set(50, 100); 184 points[2].set(50, 100);
226 // (10, 10, 90, 90). 185 // (10, 10, 90, 90).
227 canvas->drawPoints(SkCanvas::kPolygon_PointMode, 3, points, first_paint); 186 canvas->drawPoints(SkCanvas::kPolygon_PointMode, 3, points, first_paint);
228 187
229 canvas->save(); 188 canvas->save();
230 189
231 canvas->clipRect(SkRect::MakeWH(50, 50)); 190 canvas->clipRect(SkRect::MakeWH(50, 50));
232 // (10, 10, 40, 40). 191 // (10, 10, 40, 40).
233 canvas->drawPoints(SkCanvas::kPolygon_PointMode, 3, points, second_paint); 192 canvas->drawPoints(SkCanvas::kPolygon_PointMode, 3, points, second_paint);
234 193
235 canvas->restore(); 194 canvas->restore();
236 195
237 points[0].set(50, 55); 196 points[0].set(50, 55);
238 points[1].set(50, 55); 197 points[1].set(50, 55);
239 points[2].set(200, 200); 198 points[2].set(200, 200);
240 // (50, 55, 150, 145). 199 // (50, 55, 150, 145).
241 canvas->drawPoints(SkCanvas::kPolygon_PointMode, 3, points, third_paint); 200 canvas->drawPoints(SkCanvas::kPolygon_PointMode, 3, points, third_paint);
242 201
243 StopRecording(picture.get(), canvas); 202 StopRecording(picture.get(), canvas);
244 203
245 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 204 std::vector<skia::DiscardablePixelRefUtils::PositionPixelRef> pixel_refs;
246 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 205 skia::DiscardablePixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs);
247 206
248 EXPECT_EQ(3u, pixel_refs.size()); 207 EXPECT_EQ(3u, pixel_refs.size());
249 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 10, 90, 90), 208 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 10, 90, 90),
250 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect)); 209 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect));
251 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 10, 40, 40), 210 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 10, 40, 40),
252 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect)); 211 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect));
253 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 55, 150, 145), 212 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 55, 150, 145),
254 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect)); 213 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect));
255 } 214 }
256 215
257 TEST(LazyPixelRefUtilsTest, DrawRect) { 216 TEST(DiscardablePixelRefUtilsTest, DrawRect) {
258 gfx::Rect layer_rect(0, 0, 256, 256); 217 gfx::Rect layer_rect(0, 0, 256, 256);
259 218
260 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 219 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
261 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 220 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
262 221
263 TestLazyShader first_shader; 222 TestDiscardableShader first_shader;
264 SkPaint first_paint; 223 SkPaint first_paint;
265 first_paint.setShader(&first_shader); 224 first_paint.setShader(&first_shader);
266 225
267 TestLazyShader second_shader; 226 TestDiscardableShader second_shader;
268 SkPaint second_paint; 227 SkPaint second_paint;
269 second_paint.setShader(&second_shader); 228 second_paint.setShader(&second_shader);
270 229
271 TestLazyShader third_shader; 230 TestDiscardableShader third_shader;
272 SkPaint third_paint; 231 SkPaint third_paint;
273 third_paint.setShader(&third_shader); 232 third_paint.setShader(&third_shader);
274 233
275 // (10, 20, 30, 40). 234 // (10, 20, 30, 40).
276 canvas->drawRect(SkRect::MakeXYWH(10, 20, 30, 40), first_paint); 235 canvas->drawRect(SkRect::MakeXYWH(10, 20, 30, 40), first_paint);
277 236
278 canvas->save(); 237 canvas->save();
279 238
280 canvas->translate(5, 17); 239 canvas->translate(5, 17);
281 // (5, 50, 25, 35) 240 // (5, 50, 25, 35)
282 canvas->drawRect(SkRect::MakeXYWH(0, 33, 25, 35), second_paint); 241 canvas->drawRect(SkRect::MakeXYWH(0, 33, 25, 35), second_paint);
283 242
284 canvas->restore(); 243 canvas->restore();
285 244
286 canvas->clipRect(SkRect::MakeXYWH(50, 50, 50, 50)); 245 canvas->clipRect(SkRect::MakeXYWH(50, 50, 50, 50));
287 canvas->translate(20, 20); 246 canvas->translate(20, 20);
288 // (50, 50, 50, 50) 247 // (50, 50, 50, 50)
289 canvas->drawRect(SkRect::MakeXYWH(0, 0, 100, 100), third_paint); 248 canvas->drawRect(SkRect::MakeXYWH(0, 0, 100, 100), third_paint);
290 249
291 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 250 std::vector<skia::DiscardablePixelRefUtils::PositionPixelRef> pixel_refs;
292 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 251 skia::DiscardablePixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs);
293 252
294 EXPECT_EQ(3u, pixel_refs.size()); 253 EXPECT_EQ(3u, pixel_refs.size());
295 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 20, 30, 40), 254 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 20, 30, 40),
296 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect)); 255 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect));
297 EXPECT_FLOAT_RECT_EQ(gfx::RectF(5, 50, 25, 35), 256 EXPECT_FLOAT_RECT_EQ(gfx::RectF(5, 50, 25, 35),
298 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect)); 257 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect));
299 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 50, 50, 50), 258 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 50, 50, 50),
300 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect)); 259 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect));
301 } 260 }
302 261
303 TEST(LazyPixelRefUtilsTest, DrawRRect) { 262 TEST(DiscardablePixelRefUtilsTest, DrawRRect) {
304 gfx::Rect layer_rect(0, 0, 256, 256); 263 gfx::Rect layer_rect(0, 0, 256, 256);
305 264
306 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 265 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
307 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 266 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
308 267
309 TestLazyShader first_shader; 268 TestDiscardableShader first_shader;
310 SkPaint first_paint; 269 SkPaint first_paint;
311 first_paint.setShader(&first_shader); 270 first_paint.setShader(&first_shader);
312 271
313 TestLazyShader second_shader; 272 TestDiscardableShader second_shader;
314 SkPaint second_paint; 273 SkPaint second_paint;
315 second_paint.setShader(&second_shader); 274 second_paint.setShader(&second_shader);
316 275
317 TestLazyShader third_shader; 276 TestDiscardableShader third_shader;
318 SkPaint third_paint; 277 SkPaint third_paint;
319 third_paint.setShader(&third_shader); 278 third_paint.setShader(&third_shader);
320 279
321 SkRRect rrect; 280 SkRRect rrect;
322 rrect.setRect(SkRect::MakeXYWH(10, 20, 30, 40)); 281 rrect.setRect(SkRect::MakeXYWH(10, 20, 30, 40));
323 282
324 // (10, 20, 30, 40). 283 // (10, 20, 30, 40).
325 canvas->drawRRect(rrect, first_paint); 284 canvas->drawRRect(rrect, first_paint);
326 285
327 canvas->save(); 286 canvas->save();
328 287
329 canvas->translate(5, 17); 288 canvas->translate(5, 17);
330 rrect.setRect(SkRect::MakeXYWH(0, 33, 25, 35)); 289 rrect.setRect(SkRect::MakeXYWH(0, 33, 25, 35));
331 // (5, 50, 25, 35) 290 // (5, 50, 25, 35)
332 canvas->drawRRect(rrect, second_paint); 291 canvas->drawRRect(rrect, second_paint);
333 292
334 canvas->restore(); 293 canvas->restore();
335 294
336 canvas->clipRect(SkRect::MakeXYWH(50, 50, 50, 50)); 295 canvas->clipRect(SkRect::MakeXYWH(50, 50, 50, 50));
337 canvas->translate(20, 20); 296 canvas->translate(20, 20);
338 rrect.setRect(SkRect::MakeXYWH(0, 0, 100, 100)); 297 rrect.setRect(SkRect::MakeXYWH(0, 0, 100, 100));
339 // (50, 50, 50, 50) 298 // (50, 50, 50, 50)
340 canvas->drawRRect(rrect, third_paint); 299 canvas->drawRRect(rrect, third_paint);
341 300
342 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 301 std::vector<skia::DiscardablePixelRefUtils::PositionPixelRef> pixel_refs;
343 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 302 skia::DiscardablePixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs);
344 303
345 EXPECT_EQ(3u, pixel_refs.size()); 304 EXPECT_EQ(3u, pixel_refs.size());
346 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 20, 30, 40), 305 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 20, 30, 40),
347 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect)); 306 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect));
348 EXPECT_FLOAT_RECT_EQ(gfx::RectF(5, 50, 25, 35), 307 EXPECT_FLOAT_RECT_EQ(gfx::RectF(5, 50, 25, 35),
349 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect)); 308 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect));
350 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 50, 50, 50), 309 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 50, 50, 50),
351 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect)); 310 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect));
352 } 311 }
353 312
354 TEST(LazyPixelRefUtilsTest, DrawOval) { 313 TEST(DiscardablePixelRefUtilsTest, DrawOval) {
355 gfx::Rect layer_rect(0, 0, 256, 256); 314 gfx::Rect layer_rect(0, 0, 256, 256);
356 315
357 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 316 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
358 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 317 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
359 318
360 TestLazyShader first_shader; 319 TestDiscardableShader first_shader;
361 SkPaint first_paint; 320 SkPaint first_paint;
362 first_paint.setShader(&first_shader); 321 first_paint.setShader(&first_shader);
363 322
364 TestLazyShader second_shader; 323 TestDiscardableShader second_shader;
365 SkPaint second_paint; 324 SkPaint second_paint;
366 second_paint.setShader(&second_shader); 325 second_paint.setShader(&second_shader);
367 326
368 TestLazyShader third_shader; 327 TestDiscardableShader third_shader;
369 SkPaint third_paint; 328 SkPaint third_paint;
370 third_paint.setShader(&third_shader); 329 third_paint.setShader(&third_shader);
371 330
372 canvas->save(); 331 canvas->save();
373 332
374 canvas->scale(2, 0.5); 333 canvas->scale(2, 0.5);
375 // (20, 10, 60, 20). 334 // (20, 10, 60, 20).
376 canvas->drawOval(SkRect::MakeXYWH(10, 20, 30, 40), first_paint); 335 canvas->drawOval(SkRect::MakeXYWH(10, 20, 30, 40), first_paint);
377 336
378 canvas->restore(); 337 canvas->restore();
379 canvas->save(); 338 canvas->save();
380 339
381 canvas->translate(1, 2); 340 canvas->translate(1, 2);
382 // (1, 35, 25, 35) 341 // (1, 35, 25, 35)
383 canvas->drawRect(SkRect::MakeXYWH(0, 33, 25, 35), second_paint); 342 canvas->drawRect(SkRect::MakeXYWH(0, 33, 25, 35), second_paint);
384 343
385 canvas->restore(); 344 canvas->restore();
386 345
387 canvas->clipRect(SkRect::MakeXYWH(50, 50, 50, 50)); 346 canvas->clipRect(SkRect::MakeXYWH(50, 50, 50, 50));
388 canvas->translate(20, 20); 347 canvas->translate(20, 20);
389 // (50, 50, 50, 50) 348 // (50, 50, 50, 50)
390 canvas->drawRect(SkRect::MakeXYWH(0, 0, 100, 100), third_paint); 349 canvas->drawRect(SkRect::MakeXYWH(0, 0, 100, 100), third_paint);
391 350
392 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 351 std::vector<skia::DiscardablePixelRefUtils::PositionPixelRef> pixel_refs;
393 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 352 skia::DiscardablePixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs);
394 353
395 EXPECT_EQ(3u, pixel_refs.size()); 354 EXPECT_EQ(3u, pixel_refs.size());
396 EXPECT_FLOAT_RECT_EQ(gfx::RectF(20, 10, 60, 20), 355 EXPECT_FLOAT_RECT_EQ(gfx::RectF(20, 10, 60, 20),
397 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect)); 356 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect));
398 EXPECT_FLOAT_RECT_EQ(gfx::RectF(1, 35, 25, 35), 357 EXPECT_FLOAT_RECT_EQ(gfx::RectF(1, 35, 25, 35),
399 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect)); 358 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect));
400 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 50, 50, 50), 359 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 50, 50, 50),
401 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect)); 360 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect));
402 } 361 }
403 362
404 TEST(LazyPixelRefUtilsTest, DrawPath) { 363 TEST(DiscardablePixelRefUtilsTest, DrawPath) {
405 gfx::Rect layer_rect(0, 0, 256, 256); 364 gfx::Rect layer_rect(0, 0, 256, 256);
406 365
407 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 366 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
408 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 367 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
409 368
410 TestLazyShader first_shader; 369 TestDiscardableShader first_shader;
411 SkPaint first_paint; 370 SkPaint first_paint;
412 first_paint.setShader(&first_shader); 371 first_paint.setShader(&first_shader);
413 372
414 TestLazyShader second_shader; 373 TestDiscardableShader second_shader;
415 SkPaint second_paint; 374 SkPaint second_paint;
416 second_paint.setShader(&second_shader); 375 second_paint.setShader(&second_shader);
417 376
418 SkPath path; 377 SkPath path;
419 path.moveTo(12, 13); 378 path.moveTo(12, 13);
420 path.lineTo(50, 50); 379 path.lineTo(50, 50);
421 path.lineTo(22, 101); 380 path.lineTo(22, 101);
422 381
423 // (12, 13, 38, 88). 382 // (12, 13, 38, 88).
424 canvas->drawPath(path, first_paint); 383 canvas->drawPath(path, first_paint);
425 384
426 canvas->save(); 385 canvas->save();
427 canvas->clipRect(SkRect::MakeWH(50, 50)); 386 canvas->clipRect(SkRect::MakeWH(50, 50));
428 387
429 // (12, 13, 38, 37). 388 // (12, 13, 38, 37).
430 canvas->drawPath(path, second_paint); 389 canvas->drawPath(path, second_paint);
431 390
432 canvas->restore(); 391 canvas->restore();
433 392
434 StopRecording(picture.get(), canvas); 393 StopRecording(picture.get(), canvas);
435 394
436 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 395 std::vector<skia::DiscardablePixelRefUtils::PositionPixelRef> pixel_refs;
437 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 396 skia::DiscardablePixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs);
438 397
439 EXPECT_EQ(2u, pixel_refs.size()); 398 EXPECT_EQ(2u, pixel_refs.size());
440 EXPECT_FLOAT_RECT_EQ(gfx::RectF(12, 13, 38, 88), 399 EXPECT_FLOAT_RECT_EQ(gfx::RectF(12, 13, 38, 88),
441 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect)); 400 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect));
442 EXPECT_FLOAT_RECT_EQ(gfx::RectF(12, 13, 38, 37), 401 EXPECT_FLOAT_RECT_EQ(gfx::RectF(12, 13, 38, 37),
443 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect)); 402 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect));
444 } 403 }
445 404
446 TEST(LazyPixelRefUtilsTest, DrawBitmap) { 405 TEST(DiscardablePixelRefUtilsTest, DrawBitmap) {
447 gfx::Rect layer_rect(0, 0, 256, 256); 406 gfx::Rect layer_rect(0, 0, 256, 256);
448 407
449 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 408 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
450 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 409 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
451 410
452 SkBitmap first; 411 SkBitmap first;
453 CreateBitmap(gfx::Size(50, 50), "lazy", &first); 412 CreateBitmap(gfx::Size(50, 50), "discardable", &first);
454 SkBitmap second; 413 SkBitmap second;
455 CreateBitmap(gfx::Size(50, 50), "lazy", &second); 414 CreateBitmap(gfx::Size(50, 50), "discardable", &second);
456 SkBitmap third; 415 SkBitmap third;
457 CreateBitmap(gfx::Size(50, 50), "lazy", &third); 416 CreateBitmap(gfx::Size(50, 50), "discardable", &third);
458 SkBitmap fourth; 417 SkBitmap fourth;
459 CreateBitmap(gfx::Size(50, 1), "lazy", &fourth); 418 CreateBitmap(gfx::Size(50, 1), "discardable", &fourth);
460 SkBitmap fifth; 419 SkBitmap fifth;
461 CreateBitmap(gfx::Size(10, 10), "lazy", &fifth); 420 CreateBitmap(gfx::Size(10, 10), "discardable", &fifth);
462 421
463 canvas->save(); 422 canvas->save();
464 423
465 // At (0, 0). 424 // At (0, 0).
466 canvas->drawBitmap(first, 0, 0); 425 canvas->drawBitmap(first, 0, 0);
467 canvas->translate(25, 0); 426 canvas->translate(25, 0);
468 // At (25, 0). 427 // At (25, 0).
469 canvas->drawBitmap(second, 0, 0); 428 canvas->drawBitmap(second, 0, 0);
470 canvas->translate(0, 50); 429 canvas->translate(0, 50);
471 // At (50, 50). 430 // At (50, 50).
472 canvas->drawBitmap(third, 25, 0); 431 canvas->drawBitmap(third, 25, 0);
473 432
474 canvas->restore(); 433 canvas->restore();
475 canvas->save(); 434 canvas->save();
476 435
477 canvas->translate(1, 0); 436 canvas->translate(1, 0);
478 canvas->rotate(90); 437 canvas->rotate(90);
479 // At (1, 0), rotated 90 degrees 438 // At (1, 0), rotated 90 degrees
480 canvas->drawBitmap(fourth, 0, 0); 439 canvas->drawBitmap(fourth, 0, 0);
481 440
482 canvas->restore(); 441 canvas->restore();
483 442
484 canvas->scale(5, 6); 443 canvas->scale(5, 6);
485 // At (0, 0), scaled by 5 and 6 444 // At (0, 0), scaled by 5 and 6
486 canvas->drawBitmap(fifth, 0, 0); 445 canvas->drawBitmap(fifth, 0, 0);
487 446
488 StopRecording(picture.get(), canvas); 447 StopRecording(picture.get(), canvas);
489 448
490 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 449 std::vector<skia::DiscardablePixelRefUtils::PositionPixelRef> pixel_refs;
491 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 450 skia::DiscardablePixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs);
492 451
493 EXPECT_EQ(5u, pixel_refs.size()); 452 EXPECT_EQ(5u, pixel_refs.size());
494 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 50, 50), 453 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 50, 50),
495 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect)); 454 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect));
496 EXPECT_FLOAT_RECT_EQ(gfx::RectF(25, 0, 50, 50), 455 EXPECT_FLOAT_RECT_EQ(gfx::RectF(25, 0, 50, 50),
497 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect)); 456 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect));
498 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 50, 50, 50), 457 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 50, 50, 50),
499 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect)); 458 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect));
500 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 1, 50), 459 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 1, 50),
501 gfx::SkRectToRectF(pixel_refs[3].pixel_ref_rect)); 460 gfx::SkRectToRectF(pixel_refs[3].pixel_ref_rect));
502 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 50, 60), 461 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 50, 60),
503 gfx::SkRectToRectF(pixel_refs[4].pixel_ref_rect)); 462 gfx::SkRectToRectF(pixel_refs[4].pixel_ref_rect));
504 463
505 } 464 }
506 465
507 TEST(LazyPixelRefUtilsTest, DrawBitmapRect) { 466 TEST(DiscardablePixelRefUtilsTest, DrawBitmapRect) {
508 gfx::Rect layer_rect(0, 0, 256, 256); 467 gfx::Rect layer_rect(0, 0, 256, 256);
509 468
510 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 469 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
511 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 470 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
512 471
513 SkBitmap first; 472 SkBitmap first;
514 CreateBitmap(gfx::Size(50, 50), "lazy", &first); 473 CreateBitmap(gfx::Size(50, 50), "discardable", &first);
515 SkBitmap second; 474 SkBitmap second;
516 CreateBitmap(gfx::Size(50, 50), "lazy", &second); 475 CreateBitmap(gfx::Size(50, 50), "discardable", &second);
517 SkBitmap third; 476 SkBitmap third;
518 CreateBitmap(gfx::Size(50, 50), "lazy", &third); 477 CreateBitmap(gfx::Size(50, 50), "discardable", &third);
519 478
520 TestLazyShader first_shader; 479 TestDiscardableShader first_shader;
521 SkPaint first_paint; 480 SkPaint first_paint;
522 first_paint.setShader(&first_shader); 481 first_paint.setShader(&first_shader);
523 482
524 SkPaint non_lazy_paint; 483 SkPaint non_discardable_paint;
525 484
526 canvas->save(); 485 canvas->save();
527 486
528 // (0, 0, 100, 100). 487 // (0, 0, 100, 100).
529 canvas->drawBitmapRect(first, SkRect::MakeWH(100, 100), &non_lazy_paint); 488 canvas->drawBitmapRect(
489 first, SkRect::MakeWH(100, 100), &non_discardable_paint);
530 canvas->translate(25, 0); 490 canvas->translate(25, 0);
531 // (75, 50, 10, 10). 491 // (75, 50, 10, 10).
532 canvas->drawBitmapRect( 492 canvas->drawBitmapRect(
533 second, SkRect::MakeXYWH(50, 50, 10, 10), &non_lazy_paint); 493 second, SkRect::MakeXYWH(50, 50, 10, 10), &non_discardable_paint);
534 canvas->translate(5, 50); 494 canvas->translate(5, 50);
535 // (0, 30, 100, 100). One from bitmap, one from paint. 495 // (0, 30, 100, 100). One from bitmap, one from paint.
536 canvas->drawBitmapRect( 496 canvas->drawBitmapRect(
537 third, SkRect::MakeXYWH(-30, -20, 100, 100), &first_paint); 497 third, SkRect::MakeXYWH(-30, -20, 100, 100), &first_paint);
538 498
539 canvas->restore(); 499 canvas->restore();
540 500
541 StopRecording(picture.get(), canvas); 501 StopRecording(picture.get(), canvas);
542 502
543 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 503 std::vector<skia::DiscardablePixelRefUtils::PositionPixelRef> pixel_refs;
544 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 504 skia::DiscardablePixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs);
545 505
546 EXPECT_EQ(4u, pixel_refs.size()); 506 EXPECT_EQ(4u, pixel_refs.size());
547 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 100, 100), 507 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 100, 100),
548 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect)); 508 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect));
549 EXPECT_FLOAT_RECT_EQ(gfx::RectF(75, 50, 10, 10), 509 EXPECT_FLOAT_RECT_EQ(gfx::RectF(75, 50, 10, 10),
550 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect)); 510 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect));
551 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 30, 100, 100), 511 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 30, 100, 100),
552 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect)); 512 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect));
553 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 30, 100, 100), 513 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 30, 100, 100),
554 gfx::SkRectToRectF(pixel_refs[3].pixel_ref_rect)); 514 gfx::SkRectToRectF(pixel_refs[3].pixel_ref_rect));
555 } 515 }
556 516
557 TEST(LazyPixelRefUtilsTest, DrawSprite) { 517 TEST(DiscardablePixelRefUtilsTest, DrawSprite) {
558 gfx::Rect layer_rect(0, 0, 256, 256); 518 gfx::Rect layer_rect(0, 0, 256, 256);
559 519
560 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 520 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
561 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 521 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
562 522
563 SkBitmap first; 523 SkBitmap first;
564 CreateBitmap(gfx::Size(50, 50), "lazy", &first); 524 CreateBitmap(gfx::Size(50, 50), "discardable", &first);
565 SkBitmap second; 525 SkBitmap second;
566 CreateBitmap(gfx::Size(50, 50), "lazy", &second); 526 CreateBitmap(gfx::Size(50, 50), "discardable", &second);
567 SkBitmap third; 527 SkBitmap third;
568 CreateBitmap(gfx::Size(50, 50), "lazy", &third); 528 CreateBitmap(gfx::Size(50, 50), "discardable", &third);
569 SkBitmap fourth; 529 SkBitmap fourth;
570 CreateBitmap(gfx::Size(50, 50), "lazy", &fourth); 530 CreateBitmap(gfx::Size(50, 50), "discardable", &fourth);
571 SkBitmap fifth; 531 SkBitmap fifth;
572 CreateBitmap(gfx::Size(50, 50), "lazy", &fifth); 532 CreateBitmap(gfx::Size(50, 50), "discardable", &fifth);
573 533
574 canvas->save(); 534 canvas->save();
575 535
576 // Sprites aren't affected by the current matrix. 536 // Sprites aren't affected by the current matrix.
577 537
578 // (0, 0, 50, 50). 538 // (0, 0, 50, 50).
579 canvas->drawSprite(first, 0, 0); 539 canvas->drawSprite(first, 0, 0);
580 canvas->translate(25, 0); 540 canvas->translate(25, 0);
581 // (10, 0, 50, 50). 541 // (10, 0, 50, 50).
582 canvas->drawSprite(second, 10, 0); 542 canvas->drawSprite(second, 10, 0);
583 canvas->translate(0, 50); 543 canvas->translate(0, 50);
584 // (25, 0, 50, 50). 544 // (25, 0, 50, 50).
585 canvas->drawSprite(third, 25, 0); 545 canvas->drawSprite(third, 25, 0);
586 546
587 canvas->restore(); 547 canvas->restore();
588 canvas->save(); 548 canvas->save();
589 549
590 canvas->rotate(90); 550 canvas->rotate(90);
591 // (0, 0, 50, 50). 551 // (0, 0, 50, 50).
592 canvas->drawSprite(fourth, 0, 0); 552 canvas->drawSprite(fourth, 0, 0);
593 553
594 canvas->restore(); 554 canvas->restore();
595 555
596 TestLazyShader first_shader; 556 TestDiscardableShader first_shader;
597 SkPaint first_paint; 557 SkPaint first_paint;
598 first_paint.setShader(&first_shader); 558 first_paint.setShader(&first_shader);
599 559
600 canvas->scale(5, 6); 560 canvas->scale(5, 6);
601 // (100, 100, 50, 50). 561 // (100, 100, 50, 50).
602 canvas->drawSprite(fifth, 100, 100, &first_paint); 562 canvas->drawSprite(fifth, 100, 100, &first_paint);
603 563
604 StopRecording(picture.get(), canvas); 564 StopRecording(picture.get(), canvas);
605 565
606 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 566 std::vector<skia::DiscardablePixelRefUtils::PositionPixelRef> pixel_refs;
607 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 567 skia::DiscardablePixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs);
608 568
609 EXPECT_EQ(6u, pixel_refs.size()); 569 EXPECT_EQ(6u, pixel_refs.size());
610 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 50, 50), 570 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 50, 50),
611 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect)); 571 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect));
612 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 0, 50, 50), 572 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 0, 50, 50),
613 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect)); 573 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect));
614 EXPECT_FLOAT_RECT_EQ(gfx::RectF(25, 0, 50, 50), 574 EXPECT_FLOAT_RECT_EQ(gfx::RectF(25, 0, 50, 50),
615 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect)); 575 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect));
616 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 50, 50), 576 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 50, 50),
617 gfx::SkRectToRectF(pixel_refs[3].pixel_ref_rect)); 577 gfx::SkRectToRectF(pixel_refs[3].pixel_ref_rect));
618 EXPECT_FLOAT_RECT_EQ(gfx::RectF(100, 100, 50, 50), 578 EXPECT_FLOAT_RECT_EQ(gfx::RectF(100, 100, 50, 50),
619 gfx::SkRectToRectF(pixel_refs[4].pixel_ref_rect)); 579 gfx::SkRectToRectF(pixel_refs[4].pixel_ref_rect));
620 EXPECT_FLOAT_RECT_EQ(gfx::RectF(100, 100, 50, 50), 580 EXPECT_FLOAT_RECT_EQ(gfx::RectF(100, 100, 50, 50),
621 gfx::SkRectToRectF(pixel_refs[5].pixel_ref_rect)); 581 gfx::SkRectToRectF(pixel_refs[5].pixel_ref_rect));
622 } 582 }
623 583
624 TEST(LazyPixelRefUtilsTest, DrawText) { 584 TEST(DiscardablePixelRefUtilsTest, DrawText) {
625 gfx::Rect layer_rect(0, 0, 256, 256); 585 gfx::Rect layer_rect(0, 0, 256, 256);
626 586
627 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 587 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
628 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 588 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
629 589
630 TestLazyShader first_shader; 590 TestDiscardableShader first_shader;
631 SkPaint first_paint; 591 SkPaint first_paint;
632 first_paint.setShader(&first_shader); 592 first_paint.setShader(&first_shader);
633 593
634 SkPoint points[4]; 594 SkPoint points[4];
635 points[0].set(10, 50); 595 points[0].set(10, 50);
636 points[1].set(20, 50); 596 points[1].set(20, 50);
637 points[2].set(30, 50); 597 points[2].set(30, 50);
638 points[3].set(40, 50); 598 points[3].set(40, 50);
639 599
640 SkPath path; 600 SkPath path;
641 path.moveTo(10, 50); 601 path.moveTo(10, 50);
642 path.lineTo(20, 50); 602 path.lineTo(20, 50);
643 path.lineTo(30, 50); 603 path.lineTo(30, 50);
644 path.lineTo(40, 50); 604 path.lineTo(40, 50);
645 path.lineTo(50, 50); 605 path.lineTo(50, 50);
646 606
647 canvas->drawText("text", 4, 50, 50, first_paint); 607 canvas->drawText("text", 4, 50, 50, first_paint);
648 canvas->drawPosText("text", 4, points, first_paint); 608 canvas->drawPosText("text", 4, points, first_paint);
649 canvas->drawTextOnPath("text", 4, path, NULL, first_paint); 609 canvas->drawTextOnPath("text", 4, path, NULL, first_paint);
650 610
651 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 611 std::vector<skia::DiscardablePixelRefUtils::PositionPixelRef> pixel_refs;
652 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 612 skia::DiscardablePixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs);
653 613
654 EXPECT_EQ(3u, pixel_refs.size()); 614 EXPECT_EQ(3u, pixel_refs.size());
655 } 615 }
656 616
657 TEST(LazyPixelRefUtilsTest, DrawVertices) { 617 TEST(DiscardablePixelRefUtilsTest, DrawVertices) {
658 gfx::Rect layer_rect(0, 0, 256, 256); 618 gfx::Rect layer_rect(0, 0, 256, 256);
659 619
660 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture); 620 skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
661 SkCanvas* canvas = StartRecording(picture.get(), layer_rect); 621 SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
662 622
663 TestLazyShader first_shader; 623 TestDiscardableShader first_shader;
664 SkPaint first_paint; 624 SkPaint first_paint;
665 first_paint.setShader(&first_shader); 625 first_paint.setShader(&first_shader);
666 626
667 TestLazyShader second_shader; 627 TestDiscardableShader second_shader;
668 SkPaint second_paint; 628 SkPaint second_paint;
669 second_paint.setShader(&second_shader); 629 second_paint.setShader(&second_shader);
670 630
671 TestLazyShader third_shader; 631 TestDiscardableShader third_shader;
672 SkPaint third_paint; 632 SkPaint third_paint;
673 third_paint.setShader(&third_shader); 633 third_paint.setShader(&third_shader);
674 634
675 SkPoint points[3]; 635 SkPoint points[3];
676 SkColor colors[3]; 636 SkColor colors[3];
677 uint16_t indecies[3] = {0, 1, 2}; 637 uint16_t indecies[3] = {0, 1, 2};
678 points[0].set(10, 10); 638 points[0].set(10, 10);
679 points[1].set(100, 20); 639 points[1].set(100, 20);
680 points[2].set(50, 100); 640 points[2].set(50, 100);
681 // (10, 10, 90, 90). 641 // (10, 10, 90, 90).
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 points, 674 points,
715 points, 675 points,
716 colors, 676 colors,
717 NULL, 677 NULL,
718 indecies, 678 indecies,
719 3, 679 3,
720 third_paint); 680 third_paint);
721 681
722 StopRecording(picture.get(), canvas); 682 StopRecording(picture.get(), canvas);
723 683
724 std::vector<skia::LazyPixelRefUtils::PositionLazyPixelRef> pixel_refs; 684 std::vector<skia::DiscardablePixelRefUtils::PositionPixelRef> pixel_refs;
725 skia::LazyPixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs); 685 skia::DiscardablePixelRefUtils::GatherPixelRefs(picture.get(), &pixel_refs);
726 686
727 EXPECT_EQ(3u, pixel_refs.size()); 687 EXPECT_EQ(3u, pixel_refs.size());
728 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 10, 90, 90), 688 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 10, 90, 90),
729 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect)); 689 gfx::SkRectToRectF(pixel_refs[0].pixel_ref_rect));
730 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 10, 40, 40), 690 EXPECT_FLOAT_RECT_EQ(gfx::RectF(10, 10, 40, 40),
731 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect)); 691 gfx::SkRectToRectF(pixel_refs[1].pixel_ref_rect));
732 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 55, 150, 145), 692 EXPECT_FLOAT_RECT_EQ(gfx::RectF(50, 55, 150, 145),
733 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect)); 693 gfx::SkRectToRectF(pixel_refs[2].pixel_ref_rect));
734 } 694 }
735 695
736 } // namespace skia 696 } // namespace skia
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698