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

Side by Side Diff: cc/resources/picture_pile_impl_unittest.cc

Issue 732423002: Update from chromium https://crrev.com/304586 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 6 years, 1 month 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/resources/picture_pile_impl.cc ('k') | cc/resources/picture_pile_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 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/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "cc/test/fake_picture_pile_impl.h" 6 #include "cc/test/fake_picture_pile_impl.h"
7 #include "cc/test/skia_common.h" 7 #include "cc/test/skia_common.h"
8 #include "skia/ext/refptr.h" 8 #include "skia/ext/refptr.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "third_party/skia/include/core/SkPixelRef.h" 10 #include "third_party/skia/include/core/SkPixelRef.h"
(...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 EXPECT_TRUE(iterator); 627 EXPECT_TRUE(iterator);
628 EXPECT_TRUE(*iterator == discardable_bitmap[0][0].pixelRef()); 628 EXPECT_TRUE(*iterator == discardable_bitmap[0][0].pixelRef());
629 EXPECT_TRUE(++iterator); 629 EXPECT_TRUE(++iterator);
630 EXPECT_TRUE(*iterator == discardable_bitmap[0][1].pixelRef()); 630 EXPECT_TRUE(*iterator == discardable_bitmap[0][1].pixelRef());
631 EXPECT_TRUE(++iterator); 631 EXPECT_TRUE(++iterator);
632 EXPECT_TRUE(*iterator == discardable_bitmap[1][1].pixelRef()); 632 EXPECT_TRUE(*iterator == discardable_bitmap[1][1].pixelRef());
633 EXPECT_FALSE(++iterator); 633 EXPECT_FALSE(++iterator);
634 } 634 }
635 } 635 }
636 636
637 class FullContentsTest : public ::testing::TestWithParam<bool> {}; 637 TEST(PicturePileImplTest, RasterFullContents) {
638
639 TEST_P(FullContentsTest, RasterFullContents) {
640 gfx::Size tile_size(1000, 1000); 638 gfx::Size tile_size(1000, 1000);
641 gfx::Size layer_bounds(3, 5); 639 gfx::Size layer_bounds(3, 5);
642 float contents_scale = 1.5f; 640 float contents_scale = 1.5f;
643 float raster_divisions = 2.f; 641 float raster_divisions = 2.f;
644 // Param in this case is whether the content is fully opaque
645 // or just filled completely. For this test they should behave the same.
646 bool contents_opaque = GetParam();
647 bool fills_content = !GetParam();
648 642
649 scoped_refptr<FakePicturePileImpl> pile = 643 scoped_refptr<FakePicturePileImpl> pile =
650 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 644 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
651 // Because the caller sets content opaque, it also promises that it 645 // Because the caller sets content opaque, it also promises that it
652 // has at least filled in layer_bounds opaquely. 646 // has at least filled in layer_bounds opaquely.
653 SkPaint white_paint; 647 SkPaint white_paint;
654 white_paint.setColor(SK_ColorWHITE); 648 white_paint.setColor(SK_ColorWHITE);
655 pile->add_draw_rect_with_paint(gfx::Rect(layer_bounds), white_paint); 649 pile->add_draw_rect_with_paint(gfx::Rect(layer_bounds), white_paint);
656 650
657 pile->SetMinContentsScale(contents_scale); 651 pile->SetMinContentsScale(contents_scale);
658 pile->set_background_color(SK_ColorBLACK); 652 pile->set_background_color(SK_ColorBLACK);
659 pile->set_contents_opaque(contents_opaque); 653 pile->SetRequiresClear(false);
660 pile->set_contents_fill_bounds_completely(fills_content);
661 pile->set_clear_canvas_with_debug_color(false); 654 pile->set_clear_canvas_with_debug_color(false);
662 pile->RerecordPile(); 655 pile->RerecordPile();
663 656
664 gfx::Size content_bounds( 657 gfx::Size content_bounds(
665 gfx::ToCeiledSize(gfx::ScaleSize(layer_bounds, contents_scale))); 658 gfx::ToCeiledSize(gfx::ScaleSize(layer_bounds, contents_scale)));
666 659
667 // Simulate drawing into different tiles at different offsets. 660 // Simulate drawing into different tiles at different offsets.
668 int step_x = std::ceil(content_bounds.width() / raster_divisions); 661 int step_x = std::ceil(content_bounds.width() / raster_divisions);
669 int step_y = std::ceil(content_bounds.height() / raster_divisions); 662 int step_y = std::ceil(content_bounds.height() / raster_divisions);
670 for (int offset_x = 0; offset_x < content_bounds.width(); 663 for (int offset_x = 0; offset_x < content_bounds.width();
(...skipping 27 matching lines...) Expand all
698 } 691 }
699 692
700 // If the canvas doesn't extend past the edge of the content, 693 // If the canvas doesn't extend past the edge of the content,
701 // it should be entirely white. Otherwise, the edge of the content 694 // it should be entirely white. Otherwise, the edge of the content
702 // will be non-white. 695 // will be non-white.
703 EXPECT_EQ(all_white, gfx::Rect(content_bounds).Contains(canvas_rect)); 696 EXPECT_EQ(all_white, gfx::Rect(content_bounds).Contains(canvas_rect));
704 } 697 }
705 } 698 }
706 } 699 }
707 700
708 INSTANTIATE_TEST_CASE_P(PicturePileImpl,
709 FullContentsTest,
710 ::testing::Values(false, true));
711
712 TEST(PicturePileImpl, RasterContentsTransparent) { 701 TEST(PicturePileImpl, RasterContentsTransparent) {
713 gfx::Size tile_size(1000, 1000); 702 gfx::Size tile_size(1000, 1000);
714 gfx::Size layer_bounds(5, 3); 703 gfx::Size layer_bounds(5, 3);
715 float contents_scale = 0.5f; 704 float contents_scale = 0.5f;
716 705
717 scoped_refptr<FakePicturePileImpl> pile = 706 scoped_refptr<FakePicturePileImpl> pile =
718 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 707 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
719 pile->set_background_color(SK_ColorTRANSPARENT); 708 pile->set_background_color(SK_ColorTRANSPARENT);
720 pile->set_contents_opaque(false); 709 pile->SetRequiresClear(true);
721 pile->SetMinContentsScale(contents_scale); 710 pile->SetMinContentsScale(contents_scale);
722 pile->set_clear_canvas_with_debug_color(false); 711 pile->set_clear_canvas_with_debug_color(false);
723 pile->RerecordPile(); 712 pile->RerecordPile();
724 713
725 gfx::Size content_bounds( 714 gfx::Size content_bounds(
726 gfx::ToCeiledSize(gfx::ScaleSize(layer_bounds, contents_scale))); 715 gfx::ToCeiledSize(gfx::ScaleSize(layer_bounds, contents_scale)));
727 716
728 gfx::Rect canvas_rect(content_bounds); 717 gfx::Rect canvas_rect(content_bounds);
729 canvas_rect.Inset(0, 0, -1, -1); 718 canvas_rect.Inset(0, 0, -1, -1);
730 719
(...skipping 19 matching lines...) Expand all
750 gfx::Size tile_size(10, 10); 739 gfx::Size tile_size(10, 10);
751 gfx::Size layer_bounds(30, 30); 740 gfx::Size layer_bounds(30, 30);
752 gfx::Size bigger_than_layer_bounds(300, 300); 741 gfx::Size bigger_than_layer_bounds(300, 300);
753 float contents_scale = GetParam(); 742 float contents_scale = GetParam();
754 // Pick an opaque color to not have to deal with premultiplication off-by-one. 743 // Pick an opaque color to not have to deal with premultiplication off-by-one.
755 SkColor test_color = SkColorSetARGB(255, 45, 56, 67); 744 SkColor test_color = SkColorSetARGB(255, 45, 56, 67);
756 745
757 scoped_refptr<FakePicturePileImpl> pile = 746 scoped_refptr<FakePicturePileImpl> pile =
758 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 747 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
759 pile->set_background_color(SK_ColorTRANSPARENT); 748 pile->set_background_color(SK_ColorTRANSPARENT);
760 pile->set_contents_opaque(false); 749 pile->SetRequiresClear(true);
761 pile->SetMinContentsScale(MinContentsScale()); 750 pile->SetMinContentsScale(MinContentsScale());
762 pile->set_clear_canvas_with_debug_color(true); 751 pile->set_clear_canvas_with_debug_color(true);
763 SkPaint color_paint; 752 SkPaint color_paint;
764 color_paint.setColor(test_color); 753 color_paint.setColor(test_color);
765 // Additive paint, so that if two paints overlap, the color will change. 754 // Additive paint, so that if two paints overlap, the color will change.
766 color_paint.setXfermodeMode(SkXfermode::kPlus_Mode); 755 color_paint.setXfermodeMode(SkXfermode::kPlus_Mode);
767 // Paint outside the layer to make sure that blending works. 756 // Paint outside the layer to make sure that blending works.
768 pile->add_draw_rect_with_paint(gfx::RectF(bigger_than_layer_bounds), 757 pile->add_draw_rect_with_paint(gfx::RectF(bigger_than_layer_bounds),
769 color_paint); 758 color_paint);
770 pile->RerecordPile(); 759 pile->RerecordPile();
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 EXPECT_TRUE(iterator); 861 EXPECT_TRUE(iterator);
873 EXPECT_TRUE(*iterator == discardable_bitmap[1].pixelRef()); 862 EXPECT_TRUE(*iterator == discardable_bitmap[1].pixelRef());
874 EXPECT_TRUE(++iterator); 863 EXPECT_TRUE(++iterator);
875 EXPECT_TRUE(*iterator == discardable_bitmap[2].pixelRef()); 864 EXPECT_TRUE(*iterator == discardable_bitmap[2].pixelRef());
876 EXPECT_FALSE(++iterator); 865 EXPECT_FALSE(++iterator);
877 } 866 }
878 } 867 }
879 868
880 } // namespace 869 } // namespace
881 } // namespace cc 870 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/picture_pile_impl.cc ('k') | cc/resources/picture_pile_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698