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

Side by Side Diff: cc/paint/display_item_list_unittest.cc

Issue 2894843002: Revert of Remove cullRect() from PaintOpBuffer. (Closed)
Patch Set: rebase TestExpectations Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/paint/display_item_list.cc ('k') | cc/paint/drawing_display_item.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/paint/display_item_list.h" 5 #include "cc/paint/display_item_list.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <vector> 9 #include <vector>
10 10
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 } 95 }
96 96
97 void AppendFirstSerializationTestPicture(scoped_refptr<DisplayItemList> list, 97 void AppendFirstSerializationTestPicture(scoped_refptr<DisplayItemList> list,
98 const gfx::Size& layer_size) { 98 const gfx::Size& layer_size) {
99 gfx::PointF offset(2.f, 3.f); 99 gfx::PointF offset(2.f, 3.f);
100 PaintRecorder recorder; 100 PaintRecorder recorder;
101 101
102 PaintFlags red_paint; 102 PaintFlags red_paint;
103 red_paint.setColor(SK_ColorRED); 103 red_paint.setColor(SK_ColorRED);
104 104
105 SkRect bounds = SkRect::MakeXYWH(offset.x(), offset.y(), layer_size.width(), 105 PaintCanvas* canvas = recorder.beginRecording(SkRect::MakeXYWH(
106 layer_size.height()); 106 offset.x(), offset.y(), layer_size.width(), layer_size.height()));
107 PaintCanvas* canvas = recorder.beginRecording(bounds);
108 canvas->translate(offset.x(), offset.y()); 107 canvas->translate(offset.x(), offset.y());
109 canvas->drawRect(SkRect::MakeWH(4, 4), red_paint); 108 canvas->drawRect(SkRect::MakeWH(4, 4), red_paint);
110 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 109 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
111 kVisualRect, recorder.finishRecordingAsPicture(), bounds); 110 kVisualRect, recorder.finishRecordingAsPicture());
112 } 111 }
113 112
114 } // namespace 113 } // namespace
115 114
116 TEST(DisplayItemListTest, SingleDrawingItem) { 115 TEST(DisplayItemListTest, SingleDrawingItem) {
117 gfx::Rect layer_rect(100, 100); 116 gfx::Rect layer_rect(100, 100);
118 PaintRecorder recorder; 117 PaintRecorder recorder;
119 PaintFlags blue_flags; 118 PaintFlags blue_flags;
120 blue_flags.setColor(SK_ColorBLUE); 119 blue_flags.setColor(SK_ColorBLUE);
121 PaintFlags red_paint; 120 PaintFlags red_paint;
122 red_paint.setColor(SK_ColorRED); 121 red_paint.setColor(SK_ColorRED);
123 unsigned char pixels[4 * 100 * 100] = {0}; 122 unsigned char pixels[4 * 100 * 100] = {0};
124 auto list = make_scoped_refptr(new DisplayItemList); 123 auto list = make_scoped_refptr(new DisplayItemList);
125 124
126 gfx::PointF offset(8.f, 9.f); 125 gfx::PointF offset(8.f, 9.f);
127 gfx::RectF recording_rect(offset, gfx::SizeF(layer_rect.size())); 126 gfx::RectF recording_rect(offset, gfx::SizeF(layer_rect.size()));
128 PaintCanvas* canvas = 127 PaintCanvas* canvas =
129 recorder.beginRecording(gfx::RectFToSkRect(recording_rect)); 128 recorder.beginRecording(gfx::RectFToSkRect(recording_rect));
130 canvas->translate(offset.x(), offset.y()); 129 canvas->translate(offset.x(), offset.y());
131 canvas->drawRect(SkRect::MakeLTRB(0.f, 0.f, 60.f, 60.f), red_paint); 130 canvas->drawRect(SkRect::MakeLTRB(0.f, 0.f, 60.f, 60.f), red_paint);
132 canvas->drawRect(SkRect::MakeLTRB(50.f, 50.f, 75.f, 75.f), blue_flags); 131 canvas->drawRect(SkRect::MakeLTRB(50.f, 50.f, 75.f, 75.f), blue_flags);
133 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 132 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
134 kVisualRect, recorder.finishRecordingAsPicture(), 133 kVisualRect, recorder.finishRecordingAsPicture());
135 gfx::RectFToSkRect(recording_rect));
136 list->Finalize(); 134 list->Finalize();
137 DrawDisplayList(pixels, layer_rect, list); 135 DrawDisplayList(pixels, layer_rect, list);
138 136
139 SkBitmap expected_bitmap; 137 SkBitmap expected_bitmap;
140 unsigned char expected_pixels[4 * 100 * 100] = {0}; 138 unsigned char expected_pixels[4 * 100 * 100] = {0};
141 SkImageInfo info = 139 SkImageInfo info =
142 SkImageInfo::MakeN32Premul(layer_rect.width(), layer_rect.height()); 140 SkImageInfo::MakeN32Premul(layer_rect.width(), layer_rect.height());
143 expected_bitmap.installPixels(info, expected_pixels, info.minRowBytes()); 141 expected_bitmap.installPixels(info, expected_pixels, info.minRowBytes());
144 SkiaPaintCanvas expected_canvas(expected_bitmap); 142 SkiaPaintCanvas expected_canvas(expected_bitmap);
145 expected_canvas.clipRect(gfx::RectToSkRect(layer_rect)); 143 expected_canvas.clipRect(gfx::RectToSkRect(layer_rect));
(...skipping 19 matching lines...) Expand all
165 unsigned char pixels[4 * 100 * 100] = {0}; 163 unsigned char pixels[4 * 100 * 100] = {0};
166 auto list = make_scoped_refptr(new DisplayItemList); 164 auto list = make_scoped_refptr(new DisplayItemList);
167 165
168 gfx::PointF first_offset(8.f, 9.f); 166 gfx::PointF first_offset(8.f, 9.f);
169 gfx::RectF first_recording_rect(first_offset, gfx::SizeF(layer_rect.size())); 167 gfx::RectF first_recording_rect(first_offset, gfx::SizeF(layer_rect.size()));
170 PaintCanvas* canvas = 168 PaintCanvas* canvas =
171 recorder.beginRecording(gfx::RectFToSkRect(first_recording_rect)); 169 recorder.beginRecording(gfx::RectFToSkRect(first_recording_rect));
172 canvas->translate(first_offset.x(), first_offset.y()); 170 canvas->translate(first_offset.x(), first_offset.y());
173 canvas->drawRect(SkRect::MakeWH(60, 60), red_paint); 171 canvas->drawRect(SkRect::MakeWH(60, 60), red_paint);
174 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 172 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
175 kVisualRect, recorder.finishRecordingAsPicture(), 173 kVisualRect, recorder.finishRecordingAsPicture());
176 gfx::RectFToSkRect(first_recording_rect));
177 174
178 gfx::Rect clip_rect(60, 60, 10, 10); 175 gfx::Rect clip_rect(60, 60, 10, 10);
179 list->CreateAndAppendPairedBeginItem<ClipDisplayItem>( 176 list->CreateAndAppendPairedBeginItem<ClipDisplayItem>(
180 clip_rect, std::vector<SkRRect>(), true); 177 clip_rect, std::vector<SkRRect>(), true);
181 178
182 gfx::PointF second_offset(2.f, 3.f); 179 gfx::PointF second_offset(2.f, 3.f);
183 gfx::RectF second_recording_rect(second_offset, 180 gfx::RectF second_recording_rect(second_offset,
184 gfx::SizeF(layer_rect.size())); 181 gfx::SizeF(layer_rect.size()));
185 canvas = recorder.beginRecording(gfx::RectFToSkRect(second_recording_rect)); 182 canvas = recorder.beginRecording(gfx::RectFToSkRect(second_recording_rect));
186 canvas->translate(second_offset.x(), second_offset.y()); 183 canvas->translate(second_offset.x(), second_offset.y());
187 canvas->drawRect(SkRect::MakeLTRB(50.f, 50.f, 75.f, 75.f), blue_flags); 184 canvas->drawRect(SkRect::MakeLTRB(50.f, 50.f, 75.f, 75.f), blue_flags);
188 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 185 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
189 kVisualRect, recorder.finishRecordingAsPicture(), 186 kVisualRect, recorder.finishRecordingAsPicture());
190 gfx::RectFToSkRect(second_recording_rect));
191 187
192 list->CreateAndAppendPairedEndItem<EndClipDisplayItem>(); 188 list->CreateAndAppendPairedEndItem<EndClipDisplayItem>();
193 list->Finalize(); 189 list->Finalize();
194 190
195 DrawDisplayList(pixels, layer_rect, list); 191 DrawDisplayList(pixels, layer_rect, list);
196 192
197 SkBitmap expected_bitmap; 193 SkBitmap expected_bitmap;
198 unsigned char expected_pixels[4 * 100 * 100] = {0}; 194 unsigned char expected_pixels[4 * 100 * 100] = {0};
199 SkImageInfo info = 195 SkImageInfo info =
200 SkImageInfo::MakeN32Premul(layer_rect.width(), layer_rect.height()); 196 SkImageInfo::MakeN32Premul(layer_rect.width(), layer_rect.height());
(...skipping 23 matching lines...) Expand all
224 unsigned char pixels[4 * 100 * 100] = {0}; 220 unsigned char pixels[4 * 100 * 100] = {0};
225 auto list = make_scoped_refptr(new DisplayItemList); 221 auto list = make_scoped_refptr(new DisplayItemList);
226 222
227 gfx::PointF first_offset(8.f, 9.f); 223 gfx::PointF first_offset(8.f, 9.f);
228 gfx::RectF first_recording_rect(first_offset, gfx::SizeF(layer_rect.size())); 224 gfx::RectF first_recording_rect(first_offset, gfx::SizeF(layer_rect.size()));
229 PaintCanvas* canvas = 225 PaintCanvas* canvas =
230 recorder.beginRecording(gfx::RectFToSkRect(first_recording_rect)); 226 recorder.beginRecording(gfx::RectFToSkRect(first_recording_rect));
231 canvas->translate(first_offset.x(), first_offset.y()); 227 canvas->translate(first_offset.x(), first_offset.y());
232 canvas->drawRect(SkRect::MakeWH(60, 60), red_paint); 228 canvas->drawRect(SkRect::MakeWH(60, 60), red_paint);
233 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 229 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
234 kVisualRect, recorder.finishRecordingAsPicture(), 230 kVisualRect, recorder.finishRecordingAsPicture());
235 gfx::RectFToSkRect(first_recording_rect));
236 231
237 gfx::Transform transform; 232 gfx::Transform transform;
238 transform.Rotate(45.0); 233 transform.Rotate(45.0);
239 list->CreateAndAppendPairedBeginItem<TransformDisplayItem>(transform); 234 list->CreateAndAppendPairedBeginItem<TransformDisplayItem>(transform);
240 235
241 gfx::PointF second_offset(2.f, 3.f); 236 gfx::PointF second_offset(2.f, 3.f);
242 gfx::RectF second_recording_rect(second_offset, 237 gfx::RectF second_recording_rect(second_offset,
243 gfx::SizeF(layer_rect.size())); 238 gfx::SizeF(layer_rect.size()));
244 canvas = recorder.beginRecording(gfx::RectFToSkRect(second_recording_rect)); 239 canvas = recorder.beginRecording(gfx::RectFToSkRect(second_recording_rect));
245 canvas->translate(second_offset.x(), second_offset.y()); 240 canvas->translate(second_offset.x(), second_offset.y());
246 canvas->drawRect(SkRect::MakeLTRB(50.f, 50.f, 75.f, 75.f), blue_flags); 241 canvas->drawRect(SkRect::MakeLTRB(50.f, 50.f, 75.f, 75.f), blue_flags);
247 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 242 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
248 kVisualRect, recorder.finishRecordingAsPicture(), 243 kVisualRect, recorder.finishRecordingAsPicture());
249 gfx::RectFToSkRect(second_recording_rect));
250 244
251 list->CreateAndAppendPairedEndItem<EndTransformDisplayItem>(); 245 list->CreateAndAppendPairedEndItem<EndTransformDisplayItem>();
252 list->Finalize(); 246 list->Finalize();
253 247
254 DrawDisplayList(pixels, layer_rect, list); 248 DrawDisplayList(pixels, layer_rect, list);
255 249
256 SkBitmap expected_bitmap; 250 SkBitmap expected_bitmap;
257 unsigned char expected_pixels[4 * 100 * 100] = {0}; 251 unsigned char expected_pixels[4 * 100 * 100] = {0};
258 SkImageInfo info = 252 SkImageInfo info =
259 SkImageInfo::MakeN32Premul(layer_rect.width(), layer_rect.height()); 253 SkImageInfo::MakeN32Premul(layer_rect.width(), layer_rect.height());
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 list->CreateAndAppendPairedBeginItem<FilterDisplayItem>( 296 list->CreateAndAppendPairedBeginItem<FilterDisplayItem>(
303 filters, filter_bounds, filter_bounds.origin()); 297 filters, filter_bounds, filter_bounds.origin());
304 298
305 // Include a rect drawing so that filter is actually applied to something. 299 // Include a rect drawing so that filter is actually applied to something.
306 { 300 {
307 PaintRecorder recorder; 301 PaintRecorder recorder;
308 302
309 PaintFlags red_paint; 303 PaintFlags red_paint;
310 red_paint.setColor(SK_ColorRED); 304 red_paint.setColor(SK_ColorRED);
311 305
312 SkRect bounds = 306 PaintCanvas* canvas = recorder.beginRecording(
313 SkRect::MakeXYWH(0, 0, layer_rect.width(), layer_rect.height()); 307 SkRect::MakeXYWH(0, 0, layer_rect.width(), layer_rect.height()));
314 PaintCanvas* canvas = recorder.beginRecording(bounds);
315 canvas->drawRect( 308 canvas->drawRect(
316 SkRect::MakeLTRB(filter_bounds.x(), filter_bounds.y(), 309 SkRect::MakeLTRB(filter_bounds.x(), filter_bounds.y(),
317 filter_bounds.right(), filter_bounds.bottom()), 310 filter_bounds.right(), filter_bounds.bottom()),
318 red_paint); 311 red_paint);
319 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 312 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
320 ToNearestRect(filter_bounds), recorder.finishRecordingAsPicture(), 313 ToNearestRect(filter_bounds), recorder.finishRecordingAsPicture());
321 bounds);
322 } 314 }
323 315
324 list->CreateAndAppendPairedEndItem<EndFilterDisplayItem>(); 316 list->CreateAndAppendPairedEndItem<EndFilterDisplayItem>();
325 list->Finalize(); 317 list->Finalize();
326 318
327 DrawDisplayList(pixels, layer_rect, list); 319 DrawDisplayList(pixels, layer_rect, list);
328 320
329 SkBitmap expected_bitmap; 321 SkBitmap expected_bitmap;
330 unsigned char expected_pixels[4 * 100 * 100] = {0}; 322 unsigned char expected_pixels[4 * 100 * 100] = {0};
331 PaintFlags paint; 323 PaintFlags paint;
(...skipping 17 matching lines...) Expand all
349 PaintFlags blue_flags; 341 PaintFlags blue_flags;
350 blue_flags.setColor(SK_ColorBLUE); 342 blue_flags.setColor(SK_ColorBLUE);
351 PaintCanvas* canvas = recorder.beginRecording(gfx::RectToSkRect(layer_rect)); 343 PaintCanvas* canvas = recorder.beginRecording(gfx::RectToSkRect(layer_rect));
352 for (int i = 0; i < kNumCommandsInTestSkPicture; i++) 344 for (int i = 0; i < kNumCommandsInTestSkPicture; i++)
353 canvas->drawRect(SkRect(), blue_flags); 345 canvas->drawRect(SkRect(), blue_flags);
354 sk_sp<PaintRecord> record = recorder.finishRecordingAsPicture(); 346 sk_sp<PaintRecord> record = recorder.finishRecordingAsPicture();
355 size_t record_size = record->bytes_used(); 347 size_t record_size = record->bytes_used();
356 ASSERT_GE(record_size, kNumCommandsInTestSkPicture * sizeof(SkRect)); 348 ASSERT_GE(record_size, kNumCommandsInTestSkPicture * sizeof(SkRect));
357 349
358 auto list = make_scoped_refptr(new DisplayItemList); 350 auto list = make_scoped_refptr(new DisplayItemList);
359 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 351 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(kVisualRect, record);
360 kVisualRect, record, gfx::RectToSkRect(layer_rect));
361 list->Finalize(); 352 list->Finalize();
362 memory_usage = list->ApproximateMemoryUsage(); 353 memory_usage = list->ApproximateMemoryUsage();
363 EXPECT_GE(memory_usage, record_size); 354 EXPECT_GE(memory_usage, record_size);
364 EXPECT_LE(memory_usage, 2 * record_size); 355 EXPECT_LE(memory_usage, 2 * record_size);
365 } 356 }
366 357
367 TEST(DisplayItemListTest, AsValueWithNoItems) { 358 TEST(DisplayItemListTest, AsValueWithNoItems) {
368 auto list = make_scoped_refptr(new DisplayItemList); 359 auto list = make_scoped_refptr(new DisplayItemList);
369 list->SetRetainVisualRectsForTesting(true); 360 list->SetRetainVisualRectsForTesting(true);
370 list->Finalize(); 361 list->Finalize();
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 401
411 TEST(DisplayItemListTest, SizeEmpty) { 402 TEST(DisplayItemListTest, SizeEmpty) {
412 auto list = make_scoped_refptr(new DisplayItemList); 403 auto list = make_scoped_refptr(new DisplayItemList);
413 EXPECT_EQ(0u, list->size()); 404 EXPECT_EQ(0u, list->size());
414 } 405 }
415 406
416 TEST(DisplayItemListTest, SizeOne) { 407 TEST(DisplayItemListTest, SizeOne) {
417 auto list = make_scoped_refptr(new DisplayItemList); 408 auto list = make_scoped_refptr(new DisplayItemList);
418 gfx::Rect drawing_bounds(5, 6, 1, 1); 409 gfx::Rect drawing_bounds(5, 6, 1, 1);
419 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 410 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
420 drawing_bounds, CreateRectPicture(drawing_bounds), 411 drawing_bounds, CreateRectPicture(drawing_bounds));
421 gfx::RectToSkRect(drawing_bounds));
422 EXPECT_EQ(1u, list->size()); 412 EXPECT_EQ(1u, list->size());
423 } 413 }
424 414
425 TEST(DisplayItemListTest, SizeMultiple) { 415 TEST(DisplayItemListTest, SizeMultiple) {
426 auto list = make_scoped_refptr(new DisplayItemList); 416 auto list = make_scoped_refptr(new DisplayItemList);
427 gfx::Rect clip_bounds(5, 6, 7, 8); 417 gfx::Rect clip_bounds(5, 6, 7, 8);
428 list->CreateAndAppendPairedBeginItem<ClipDisplayItem>( 418 list->CreateAndAppendPairedBeginItem<ClipDisplayItem>(
429 clip_bounds, std::vector<SkRRect>(), true); 419 clip_bounds, std::vector<SkRRect>(), true);
430 list->CreateAndAppendPairedEndItem<EndClipDisplayItem>(); 420 list->CreateAndAppendPairedEndItem<EndClipDisplayItem>();
431 EXPECT_EQ(2u, list->size()); 421 EXPECT_EQ(2u, list->size());
432 } 422 }
433 423
434 TEST(DisplayItemListTest, AppendVisualRectSimple) { 424 TEST(DisplayItemListTest, AppendVisualRectSimple) {
435 auto list = make_scoped_refptr(new DisplayItemList); 425 auto list = make_scoped_refptr(new DisplayItemList);
436 426
437 // One drawing: D. 427 // One drawing: D.
438 428
439 gfx::Rect drawing_bounds(5, 6, 7, 8); 429 gfx::Rect drawing_bounds(5, 6, 7, 8);
440 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 430 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
441 drawing_bounds, CreateRectPicture(drawing_bounds), 431 drawing_bounds, CreateRectPicture(drawing_bounds));
442 gfx::RectToSkRect(drawing_bounds));
443 432
444 EXPECT_EQ(1u, list->size()); 433 EXPECT_EQ(1u, list->size());
445 EXPECT_RECT_EQ(drawing_bounds, list->VisualRectForTesting(0)); 434 EXPECT_RECT_EQ(drawing_bounds, list->VisualRectForTesting(0));
446 } 435 }
447 436
448 TEST(DisplayItemListTest, AppendVisualRectEmptyBlock) { 437 TEST(DisplayItemListTest, AppendVisualRectEmptyBlock) {
449 auto list = make_scoped_refptr(new DisplayItemList); 438 auto list = make_scoped_refptr(new DisplayItemList);
450 439
451 // One block: B1, E1. 440 // One block: B1, E1.
452 441
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 auto list = make_scoped_refptr(new DisplayItemList); 473 auto list = make_scoped_refptr(new DisplayItemList);
485 474
486 // One block with one drawing: B1, Da, E1. 475 // One block with one drawing: B1, Da, E1.
487 476
488 gfx::Rect clip_bounds(5, 6, 7, 8); 477 gfx::Rect clip_bounds(5, 6, 7, 8);
489 list->CreateAndAppendPairedBeginItem<ClipDisplayItem>( 478 list->CreateAndAppendPairedBeginItem<ClipDisplayItem>(
490 clip_bounds, std::vector<SkRRect>(), true); 479 clip_bounds, std::vector<SkRRect>(), true);
491 480
492 gfx::Rect drawing_bounds(5, 6, 1, 1); 481 gfx::Rect drawing_bounds(5, 6, 1, 1);
493 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 482 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
494 drawing_bounds, CreateRectPicture(drawing_bounds), 483 drawing_bounds, CreateRectPicture(drawing_bounds));
495 gfx::RectToSkRect(drawing_bounds));
496 484
497 list->CreateAndAppendPairedEndItem<EndClipDisplayItem>(); 485 list->CreateAndAppendPairedEndItem<EndClipDisplayItem>();
498 486
499 EXPECT_EQ(3u, list->size()); 487 EXPECT_EQ(3u, list->size());
500 EXPECT_RECT_EQ(drawing_bounds, list->VisualRectForTesting(0)); 488 EXPECT_RECT_EQ(drawing_bounds, list->VisualRectForTesting(0));
501 EXPECT_RECT_EQ(drawing_bounds, list->VisualRectForTesting(1)); 489 EXPECT_RECT_EQ(drawing_bounds, list->VisualRectForTesting(1));
502 EXPECT_RECT_EQ(drawing_bounds, list->VisualRectForTesting(2)); 490 EXPECT_RECT_EQ(drawing_bounds, list->VisualRectForTesting(2));
503 } 491 }
504 492
505 TEST(DisplayItemListTest, AppendVisualRectBlockContainingEscapedDrawing) { 493 TEST(DisplayItemListTest, AppendVisualRectBlockContainingEscapedDrawing) {
506 auto list = make_scoped_refptr(new DisplayItemList); 494 auto list = make_scoped_refptr(new DisplayItemList);
507 495
508 // One block with one drawing: B1, Da (escapes), E1. 496 // One block with one drawing: B1, Da (escapes), E1.
509 497
510 gfx::Rect clip_bounds(5, 6, 7, 8); 498 gfx::Rect clip_bounds(5, 6, 7, 8);
511 list->CreateAndAppendPairedBeginItem<ClipDisplayItem>( 499 list->CreateAndAppendPairedBeginItem<ClipDisplayItem>(
512 clip_bounds, std::vector<SkRRect>(), true); 500 clip_bounds, std::vector<SkRRect>(), true);
513 501
514 gfx::Rect drawing_bounds(1, 2, 3, 4); 502 gfx::Rect drawing_bounds(1, 2, 3, 4);
515 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 503 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
516 drawing_bounds, CreateRectPicture(drawing_bounds), 504 drawing_bounds, CreateRectPicture(drawing_bounds));
517 gfx::RectToSkRect(drawing_bounds));
518 505
519 list->CreateAndAppendPairedEndItem<EndClipDisplayItem>(); 506 list->CreateAndAppendPairedEndItem<EndClipDisplayItem>();
520 507
521 EXPECT_EQ(3u, list->size()); 508 EXPECT_EQ(3u, list->size());
522 EXPECT_RECT_EQ(drawing_bounds, list->VisualRectForTesting(0)); 509 EXPECT_RECT_EQ(drawing_bounds, list->VisualRectForTesting(0));
523 EXPECT_RECT_EQ(drawing_bounds, list->VisualRectForTesting(1)); 510 EXPECT_RECT_EQ(drawing_bounds, list->VisualRectForTesting(1));
524 EXPECT_RECT_EQ(drawing_bounds, list->VisualRectForTesting(2)); 511 EXPECT_RECT_EQ(drawing_bounds, list->VisualRectForTesting(2));
525 } 512 }
526 513
527 TEST(DisplayItemListTest, 514 TEST(DisplayItemListTest,
528 AppendVisualRectDrawingFollowedByBlockContainingEscapedDrawing) { 515 AppendVisualRectDrawingFollowedByBlockContainingEscapedDrawing) {
529 auto list = make_scoped_refptr(new DisplayItemList); 516 auto list = make_scoped_refptr(new DisplayItemList);
530 517
531 // One drawing followed by one block with one drawing: Da, B1, Db (escapes), 518 // One drawing followed by one block with one drawing: Da, B1, Db (escapes),
532 // E1. 519 // E1.
533 520
534 gfx::Rect drawing_a_bounds(1, 2, 3, 4); 521 gfx::Rect drawing_a_bounds(1, 2, 3, 4);
535 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 522 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
536 drawing_a_bounds, CreateRectPicture(drawing_a_bounds), 523 drawing_a_bounds, CreateRectPicture(drawing_a_bounds));
537 gfx::RectToSkRect(drawing_a_bounds));
538 524
539 gfx::Rect clip_bounds(5, 6, 7, 8); 525 gfx::Rect clip_bounds(5, 6, 7, 8);
540 list->CreateAndAppendPairedBeginItem<ClipDisplayItem>( 526 list->CreateAndAppendPairedBeginItem<ClipDisplayItem>(
541 clip_bounds, std::vector<SkRRect>(), true); 527 clip_bounds, std::vector<SkRRect>(), true);
542 528
543 gfx::Rect drawing_b_bounds(13, 14, 1, 1); 529 gfx::Rect drawing_b_bounds(13, 14, 1, 1);
544 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 530 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
545 drawing_b_bounds, CreateRectPicture(drawing_b_bounds), 531 drawing_b_bounds, CreateRectPicture(drawing_b_bounds));
546 gfx::RectToSkRect(drawing_b_bounds));
547 532
548 list->CreateAndAppendPairedEndItem<EndClipDisplayItem>(); 533 list->CreateAndAppendPairedEndItem<EndClipDisplayItem>();
549 534
550 EXPECT_EQ(4u, list->size()); 535 EXPECT_EQ(4u, list->size());
551 EXPECT_RECT_EQ(drawing_a_bounds, list->VisualRectForTesting(0)); 536 EXPECT_RECT_EQ(drawing_a_bounds, list->VisualRectForTesting(0));
552 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(1)); 537 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(1));
553 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(2)); 538 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(2));
554 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(3)); 539 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(3));
555 } 540 }
556 541
557 TEST(DisplayItemListTest, AppendVisualRectTwoBlocksTwoDrawings) { 542 TEST(DisplayItemListTest, AppendVisualRectTwoBlocksTwoDrawings) {
558 auto list = make_scoped_refptr(new DisplayItemList); 543 auto list = make_scoped_refptr(new DisplayItemList);
559 544
560 // Multiple nested blocks with drawings amidst: B1, Da, B2, Db, E2, E1. 545 // Multiple nested blocks with drawings amidst: B1, Da, B2, Db, E2, E1.
561 546
562 gfx::Rect clip_bounds(5, 6, 7, 8); 547 gfx::Rect clip_bounds(5, 6, 7, 8);
563 list->CreateAndAppendPairedBeginItem<ClipDisplayItem>( 548 list->CreateAndAppendPairedBeginItem<ClipDisplayItem>(
564 clip_bounds, std::vector<SkRRect>(), true); 549 clip_bounds, std::vector<SkRRect>(), true);
565 550
566 gfx::Rect drawing_a_bounds(5, 6, 1, 1); 551 gfx::Rect drawing_a_bounds(5, 6, 1, 1);
567 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 552 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
568 drawing_a_bounds, CreateRectPicture(drawing_a_bounds), 553 drawing_a_bounds, CreateRectPicture(drawing_a_bounds));
569 gfx::RectToSkRect(drawing_a_bounds));
570 554
571 list->CreateAndAppendPairedBeginItem<TransformDisplayItem>(gfx::Transform()); 555 list->CreateAndAppendPairedBeginItem<TransformDisplayItem>(gfx::Transform());
572 556
573 gfx::Rect drawing_b_bounds(7, 8, 1, 1); 557 gfx::Rect drawing_b_bounds(7, 8, 1, 1);
574 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 558 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
575 drawing_b_bounds, CreateRectPicture(drawing_b_bounds), 559 drawing_b_bounds, CreateRectPicture(drawing_b_bounds));
576 gfx::RectToSkRect(drawing_b_bounds));
577 560
578 list->CreateAndAppendPairedEndItem<EndTransformDisplayItem>(); 561 list->CreateAndAppendPairedEndItem<EndTransformDisplayItem>();
579 list->CreateAndAppendPairedEndItem<EndClipDisplayItem>(); 562 list->CreateAndAppendPairedEndItem<EndClipDisplayItem>();
580 563
581 EXPECT_EQ(6u, list->size()); 564 EXPECT_EQ(6u, list->size());
582 gfx::Rect merged_drawing_bounds = gfx::Rect(drawing_a_bounds); 565 gfx::Rect merged_drawing_bounds = gfx::Rect(drawing_a_bounds);
583 merged_drawing_bounds.Union(drawing_b_bounds); 566 merged_drawing_bounds.Union(drawing_b_bounds);
584 EXPECT_RECT_EQ(merged_drawing_bounds, list->VisualRectForTesting(0)); 567 EXPECT_RECT_EQ(merged_drawing_bounds, list->VisualRectForTesting(0));
585 EXPECT_RECT_EQ(drawing_a_bounds, list->VisualRectForTesting(1)); 568 EXPECT_RECT_EQ(drawing_a_bounds, list->VisualRectForTesting(1));
586 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(2)); 569 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(2));
587 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(3)); 570 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(3));
588 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(4)); 571 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(4));
589 EXPECT_RECT_EQ(merged_drawing_bounds, list->VisualRectForTesting(5)); 572 EXPECT_RECT_EQ(merged_drawing_bounds, list->VisualRectForTesting(5));
590 } 573 }
591 574
592 TEST(DisplayItemListTest, 575 TEST(DisplayItemListTest,
593 AppendVisualRectTwoBlocksTwoDrawingsInnerDrawingEscaped) { 576 AppendVisualRectTwoBlocksTwoDrawingsInnerDrawingEscaped) {
594 auto list = make_scoped_refptr(new DisplayItemList); 577 auto list = make_scoped_refptr(new DisplayItemList);
595 578
596 // Multiple nested blocks with drawings amidst: B1, Da, B2, Db (escapes), E2, 579 // Multiple nested blocks with drawings amidst: B1, Da, B2, Db (escapes), E2,
597 // E1. 580 // E1.
598 581
599 gfx::Rect clip_bounds(5, 6, 7, 8); 582 gfx::Rect clip_bounds(5, 6, 7, 8);
600 list->CreateAndAppendPairedBeginItem<ClipDisplayItem>( 583 list->CreateAndAppendPairedBeginItem<ClipDisplayItem>(
601 clip_bounds, std::vector<SkRRect>(), true); 584 clip_bounds, std::vector<SkRRect>(), true);
602 585
603 gfx::Rect drawing_a_bounds(5, 6, 1, 1); 586 gfx::Rect drawing_a_bounds(5, 6, 1, 1);
604 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 587 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
605 drawing_a_bounds, CreateRectPicture(drawing_a_bounds), 588 drawing_a_bounds, CreateRectPicture(drawing_a_bounds));
606 gfx::RectToSkRect(drawing_a_bounds));
607 589
608 list->CreateAndAppendPairedBeginItem<TransformDisplayItem>(gfx::Transform()); 590 list->CreateAndAppendPairedBeginItem<TransformDisplayItem>(gfx::Transform());
609 591
610 gfx::Rect drawing_b_bounds(1, 2, 3, 4); 592 gfx::Rect drawing_b_bounds(1, 2, 3, 4);
611 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 593 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
612 drawing_b_bounds, CreateRectPicture(drawing_b_bounds), 594 drawing_b_bounds, CreateRectPicture(drawing_b_bounds));
613 gfx::RectToSkRect(drawing_b_bounds));
614 595
615 list->CreateAndAppendPairedEndItem<EndTransformDisplayItem>(); 596 list->CreateAndAppendPairedEndItem<EndTransformDisplayItem>();
616 list->CreateAndAppendPairedEndItem<EndClipDisplayItem>(); 597 list->CreateAndAppendPairedEndItem<EndClipDisplayItem>();
617 598
618 EXPECT_EQ(6u, list->size()); 599 EXPECT_EQ(6u, list->size());
619 gfx::Rect merged_drawing_bounds = gfx::Rect(drawing_a_bounds); 600 gfx::Rect merged_drawing_bounds = gfx::Rect(drawing_a_bounds);
620 merged_drawing_bounds.Union(drawing_b_bounds); 601 merged_drawing_bounds.Union(drawing_b_bounds);
621 EXPECT_RECT_EQ(merged_drawing_bounds, list->VisualRectForTesting(0)); 602 EXPECT_RECT_EQ(merged_drawing_bounds, list->VisualRectForTesting(0));
622 EXPECT_RECT_EQ(drawing_a_bounds, list->VisualRectForTesting(1)); 603 EXPECT_RECT_EQ(drawing_a_bounds, list->VisualRectForTesting(1));
623 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(2)); 604 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(2));
624 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(3)); 605 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(3));
625 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(4)); 606 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(4));
626 EXPECT_RECT_EQ(merged_drawing_bounds, list->VisualRectForTesting(5)); 607 EXPECT_RECT_EQ(merged_drawing_bounds, list->VisualRectForTesting(5));
627 } 608 }
628 609
629 TEST(DisplayItemListTest, 610 TEST(DisplayItemListTest,
630 AppendVisualRectTwoBlocksTwoDrawingsOuterDrawingEscaped) { 611 AppendVisualRectTwoBlocksTwoDrawingsOuterDrawingEscaped) {
631 auto list = make_scoped_refptr(new DisplayItemList); 612 auto list = make_scoped_refptr(new DisplayItemList);
632 613
633 // Multiple nested blocks with drawings amidst: B1, Da (escapes), B2, Db, E2, 614 // Multiple nested blocks with drawings amidst: B1, Da (escapes), B2, Db, E2,
634 // E1. 615 // E1.
635 616
636 gfx::Rect clip_bounds(5, 6, 7, 8); 617 gfx::Rect clip_bounds(5, 6, 7, 8);
637 list->CreateAndAppendPairedBeginItem<ClipDisplayItem>( 618 list->CreateAndAppendPairedBeginItem<ClipDisplayItem>(
638 clip_bounds, std::vector<SkRRect>(), true); 619 clip_bounds, std::vector<SkRRect>(), true);
639 620
640 gfx::Rect drawing_a_bounds(1, 2, 3, 4); 621 gfx::Rect drawing_a_bounds(1, 2, 3, 4);
641 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 622 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
642 drawing_a_bounds, CreateRectPicture(drawing_a_bounds), 623 drawing_a_bounds, CreateRectPicture(drawing_a_bounds));
643 gfx::RectToSkRect(drawing_a_bounds));
644 624
645 list->CreateAndAppendPairedBeginItem<TransformDisplayItem>(gfx::Transform()); 625 list->CreateAndAppendPairedBeginItem<TransformDisplayItem>(gfx::Transform());
646 626
647 gfx::Rect drawing_b_bounds(7, 8, 1, 1); 627 gfx::Rect drawing_b_bounds(7, 8, 1, 1);
648 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 628 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
649 drawing_b_bounds, CreateRectPicture(drawing_b_bounds), 629 drawing_b_bounds, CreateRectPicture(drawing_b_bounds));
650 gfx::RectToSkRect(drawing_b_bounds));
651 630
652 list->CreateAndAppendPairedEndItem<EndTransformDisplayItem>(); 631 list->CreateAndAppendPairedEndItem<EndTransformDisplayItem>();
653 list->CreateAndAppendPairedEndItem<EndClipDisplayItem>(); 632 list->CreateAndAppendPairedEndItem<EndClipDisplayItem>();
654 633
655 EXPECT_EQ(6u, list->size()); 634 EXPECT_EQ(6u, list->size());
656 gfx::Rect merged_drawing_bounds = gfx::Rect(drawing_a_bounds); 635 gfx::Rect merged_drawing_bounds = gfx::Rect(drawing_a_bounds);
657 merged_drawing_bounds.Union(drawing_b_bounds); 636 merged_drawing_bounds.Union(drawing_b_bounds);
658 EXPECT_RECT_EQ(merged_drawing_bounds, list->VisualRectForTesting(0)); 637 EXPECT_RECT_EQ(merged_drawing_bounds, list->VisualRectForTesting(0));
659 EXPECT_RECT_EQ(drawing_a_bounds, list->VisualRectForTesting(1)); 638 EXPECT_RECT_EQ(drawing_a_bounds, list->VisualRectForTesting(1));
660 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(2)); 639 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(2));
661 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(3)); 640 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(3));
662 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(4)); 641 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(4));
663 EXPECT_RECT_EQ(merged_drawing_bounds, list->VisualRectForTesting(5)); 642 EXPECT_RECT_EQ(merged_drawing_bounds, list->VisualRectForTesting(5));
664 } 643 }
665 644
666 TEST(DisplayItemListTest, 645 TEST(DisplayItemListTest,
667 AppendVisualRectTwoBlocksTwoDrawingsBothDrawingsEscaped) { 646 AppendVisualRectTwoBlocksTwoDrawingsBothDrawingsEscaped) {
668 auto list = make_scoped_refptr(new DisplayItemList); 647 auto list = make_scoped_refptr(new DisplayItemList);
669 648
670 // Multiple nested blocks with drawings amidst: 649 // Multiple nested blocks with drawings amidst:
671 // B1, Da (escapes to the right), B2, Db (escapes to the left), E2, E1. 650 // B1, Da (escapes to the right), B2, Db (escapes to the left), E2, E1.
672 651
673 gfx::Rect clip_bounds(5, 6, 7, 8); 652 gfx::Rect clip_bounds(5, 6, 7, 8);
674 list->CreateAndAppendPairedBeginItem<ClipDisplayItem>( 653 list->CreateAndAppendPairedBeginItem<ClipDisplayItem>(
675 clip_bounds, std::vector<SkRRect>(), true); 654 clip_bounds, std::vector<SkRRect>(), true);
676 655
677 gfx::Rect drawing_a_bounds(13, 14, 1, 1); 656 gfx::Rect drawing_a_bounds(13, 14, 1, 1);
678 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 657 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
679 drawing_a_bounds, CreateRectPicture(drawing_a_bounds), 658 drawing_a_bounds, CreateRectPicture(drawing_a_bounds));
680 gfx::RectToSkRect(drawing_a_bounds));
681 659
682 list->CreateAndAppendPairedBeginItem<TransformDisplayItem>(gfx::Transform()); 660 list->CreateAndAppendPairedBeginItem<TransformDisplayItem>(gfx::Transform());
683 661
684 gfx::Rect drawing_b_bounds(1, 2, 3, 4); 662 gfx::Rect drawing_b_bounds(1, 2, 3, 4);
685 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 663 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
686 drawing_b_bounds, CreateRectPicture(drawing_b_bounds), 664 drawing_b_bounds, CreateRectPicture(drawing_b_bounds));
687 gfx::RectToSkRect(drawing_b_bounds));
688 665
689 list->CreateAndAppendPairedEndItem<EndTransformDisplayItem>(); 666 list->CreateAndAppendPairedEndItem<EndTransformDisplayItem>();
690 list->CreateAndAppendPairedEndItem<EndClipDisplayItem>(); 667 list->CreateAndAppendPairedEndItem<EndClipDisplayItem>();
691 668
692 EXPECT_EQ(6u, list->size()); 669 EXPECT_EQ(6u, list->size());
693 gfx::Rect merged_drawing_bounds = gfx::Rect(drawing_a_bounds); 670 gfx::Rect merged_drawing_bounds = gfx::Rect(drawing_a_bounds);
694 merged_drawing_bounds.Union(drawing_b_bounds); 671 merged_drawing_bounds.Union(drawing_b_bounds);
695 EXPECT_RECT_EQ(merged_drawing_bounds, list->VisualRectForTesting(0)); 672 EXPECT_RECT_EQ(merged_drawing_bounds, list->VisualRectForTesting(0));
696 EXPECT_RECT_EQ(drawing_a_bounds, list->VisualRectForTesting(1)); 673 EXPECT_RECT_EQ(drawing_a_bounds, list->VisualRectForTesting(1));
697 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(2)); 674 EXPECT_RECT_EQ(drawing_b_bounds, list->VisualRectForTesting(2));
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
743 720
744 // Verify that raster time optimizations for compositing item / draw single op / 721 // Verify that raster time optimizations for compositing item / draw single op /
745 // end compositing item can be collapsed together into a single draw op 722 // end compositing item can be collapsed together into a single draw op
746 // with the opacity from the compositing item folded in. 723 // with the opacity from the compositing item folded in.
747 TEST(DisplayItemListTest, SaveDrawRestore) { 724 TEST(DisplayItemListTest, SaveDrawRestore) {
748 auto list = make_scoped_refptr(new DisplayItemList); 725 auto list = make_scoped_refptr(new DisplayItemList);
749 726
750 list->CreateAndAppendPairedBeginItem<CompositingDisplayItem>( 727 list->CreateAndAppendPairedBeginItem<CompositingDisplayItem>(
751 80, SkBlendMode::kSrcOver, nullptr, nullptr, false); 728 80, SkBlendMode::kSrcOver, nullptr, nullptr, false);
752 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 729 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
753 kVisualRect, CreateRectPictureWithAlpha(kVisualRect, 40), 730 kVisualRect, CreateRectPictureWithAlpha(kVisualRect, 40));
754 gfx::RectToSkRect(kVisualRect));
755 list->CreateAndAppendPairedEndItem<EndCompositingDisplayItem>(); 731 list->CreateAndAppendPairedEndItem<EndCompositingDisplayItem>();
756 list->Finalize(); 732 list->Finalize();
757 733
758 SaveCountingCanvas canvas; 734 SaveCountingCanvas canvas;
759 list->Raster(&canvas); 735 list->Raster(&canvas);
760 736
761 EXPECT_EQ(0, canvas.save_count_); 737 EXPECT_EQ(0, canvas.save_count_);
762 EXPECT_EQ(0, canvas.restore_count_); 738 EXPECT_EQ(0, canvas.restore_count_);
763 EXPECT_EQ(gfx::RectToSkRect(kVisualRect), canvas.draw_rect_); 739 EXPECT_EQ(gfx::RectToSkRect(kVisualRect), canvas.draw_rect_);
764 740
(...skipping 29 matching lines...) Expand all
794 // The same as SaveDrawRestore, but with save flags that prevent the 770 // The same as SaveDrawRestore, but with save flags that prevent the
795 // optimization. 771 // optimization.
796 TEST(DisplayItemListTest, SaveDrawRestoreFail_BadSaveFlags) { 772 TEST(DisplayItemListTest, SaveDrawRestoreFail_BadSaveFlags) {
797 auto list = make_scoped_refptr(new DisplayItemList); 773 auto list = make_scoped_refptr(new DisplayItemList);
798 774
799 // Use a blend mode that's not compatible with the SaveDrawRestore 775 // Use a blend mode that's not compatible with the SaveDrawRestore
800 // optimization. 776 // optimization.
801 list->CreateAndAppendPairedBeginItem<CompositingDisplayItem>( 777 list->CreateAndAppendPairedBeginItem<CompositingDisplayItem>(
802 80, SkBlendMode::kSrc, nullptr, nullptr, false); 778 80, SkBlendMode::kSrc, nullptr, nullptr, false);
803 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 779 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(
804 kVisualRect, CreateRectPictureWithAlpha(kVisualRect, 40), 780 kVisualRect, CreateRectPictureWithAlpha(kVisualRect, 40));
805 gfx::RectToSkRect(kVisualRect));
806 list->CreateAndAppendPairedEndItem<EndCompositingDisplayItem>(); 781 list->CreateAndAppendPairedEndItem<EndCompositingDisplayItem>();
807 list->Finalize(); 782 list->Finalize();
808 783
809 SaveCountingCanvas canvas; 784 SaveCountingCanvas canvas;
810 list->Raster(&canvas); 785 list->Raster(&canvas);
811 786
812 EXPECT_EQ(1, canvas.save_count_); 787 EXPECT_EQ(1, canvas.save_count_);
813 EXPECT_EQ(1, canvas.restore_count_); 788 EXPECT_EQ(1, canvas.restore_count_);
814 EXPECT_EQ(gfx::RectToSkRect(kVisualRect), canvas.draw_rect_); 789 EXPECT_EQ(gfx::RectToSkRect(kVisualRect), canvas.draw_rect_);
815 EXPECT_LE(40, canvas.paint_.getAlpha()); 790 EXPECT_LE(40, canvas.paint_.getAlpha());
816 } 791 }
817 792
818 // The same as SaveDrawRestore, but with too many ops in the PaintRecord. 793 // The same as SaveDrawRestore, but with too many ops in the PaintRecord.
819 TEST(DisplayItemListTest, SaveDrawRestoreFail_TooManyOps) { 794 TEST(DisplayItemListTest, SaveDrawRestoreFail_TooManyOps) {
820 sk_sp<const PaintRecord> record; 795 sk_sp<const PaintRecord> record;
821 SkRect bounds = SkRect::MakeWH(kVisualRect.width(), kVisualRect.height());
822 { 796 {
823 PaintRecorder recorder; 797 PaintRecorder recorder;
824 PaintCanvas* canvas = recorder.beginRecording(bounds); 798 PaintCanvas* canvas =
799 recorder.beginRecording(kVisualRect.width(), kVisualRect.height());
825 PaintFlags flags; 800 PaintFlags flags;
826 flags.setAlpha(40); 801 flags.setAlpha(40);
827 canvas->drawRect(gfx::RectToSkRect(kVisualRect), flags); 802 canvas->drawRect(gfx::RectToSkRect(kVisualRect), flags);
828 // Add an extra op here. 803 // Add an extra op here.
829 canvas->drawRect(gfx::RectToSkRect(kVisualRect), flags); 804 canvas->drawRect(gfx::RectToSkRect(kVisualRect), flags);
830 record = recorder.finishRecordingAsPicture(); 805 record = recorder.finishRecordingAsPicture();
831 } 806 }
832 EXPECT_GT(record->size(), 1u); 807 EXPECT_GT(record->size(), 1u);
833 808
834 auto list = make_scoped_refptr(new DisplayItemList); 809 auto list = make_scoped_refptr(new DisplayItemList);
835 810
836 list->CreateAndAppendPairedBeginItem<CompositingDisplayItem>( 811 list->CreateAndAppendPairedBeginItem<CompositingDisplayItem>(
837 80, SkBlendMode::kSrcOver, nullptr, nullptr, false); 812 80, SkBlendMode::kSrcOver, nullptr, nullptr, false);
838 list->CreateAndAppendDrawingItem<DrawingDisplayItem>( 813 list->CreateAndAppendDrawingItem<DrawingDisplayItem>(kVisualRect,
839 kVisualRect, std::move(record), bounds); 814 std::move(record));
840 list->CreateAndAppendPairedEndItem<EndCompositingDisplayItem>(); 815 list->CreateAndAppendPairedEndItem<EndCompositingDisplayItem>();
841 list->Finalize(); 816 list->Finalize();
842 817
843 SaveCountingCanvas canvas; 818 SaveCountingCanvas canvas;
844 list->Raster(&canvas); 819 list->Raster(&canvas);
845 820
846 EXPECT_EQ(1, canvas.save_count_); 821 EXPECT_EQ(1, canvas.save_count_);
847 EXPECT_EQ(1, canvas.restore_count_); 822 EXPECT_EQ(1, canvas.restore_count_);
848 EXPECT_EQ(gfx::RectToSkRect(kVisualRect), canvas.draw_rect_); 823 EXPECT_EQ(gfx::RectToSkRect(kVisualRect), canvas.draw_rect_);
849 EXPECT_LE(40, canvas.paint_.getAlpha()); 824 EXPECT_LE(40, canvas.paint_.getAlpha());
850 } 825 }
851 826
852 } // namespace cc 827 } // namespace cc
OLDNEW
« no previous file with comments | « cc/paint/display_item_list.cc ('k') | cc/paint/drawing_display_item.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698