|  | 
| 22 | 22 | #include "flutter/testing/testing.h" | 
| 23 | 23 | 
 | 
| 24 | 24 | #include "third_party/skia/include/core/SkPictureRecorder.h" | 
| 25 |  | -#include "third_party/skia/include/core/SkRSXform.h" | 
| 26 | 25 | #include "third_party/skia/include/core/SkSurface.h" | 
| 27 | 26 | 
 | 
| 28 | 27 | namespace flutter { | 
| @@ -2640,164 +2639,5 @@ TEST_F(DisplayListTest, DrawSaveDrawCannotInheritOpacity) { | 
| 2640 | 2639 |   ASSERT_FALSE(display_list->can_apply_group_opacity()); | 
| 2641 | 2640 | } | 
| 2642 | 2641 | 
 | 
| 2643 |  | -TEST_F(DisplayListTest, NopOperationsOmittedFromRecords) { | 
| 2644 |  | -  auto run_tests = [](const std::string& name, | 
| 2645 |  | -                      void init(DisplayListBuilder & builder, DlPaint & paint), | 
| 2646 |  | -                      uint32_t expected_op_count = 0u) { | 
| 2647 |  | -    auto run_one_test = | 
| 2648 |  | -        [init](const std::string& name, | 
| 2649 |  | -               void build(DisplayListBuilder & builder, DlPaint & paint), | 
| 2650 |  | -               uint32_t expected_op_count = 0u) { | 
| 2651 |  | -          DisplayListBuilder builder; | 
| 2652 |  | -          DlPaint paint; | 
| 2653 |  | -          init(builder, paint); | 
| 2654 |  | -          build(builder, paint); | 
| 2655 |  | -          auto list = builder.Build(); | 
| 2656 |  | -          if (list->op_count() != expected_op_count) { | 
| 2657 |  | -            FML_LOG(ERROR) << *list; | 
| 2658 |  | -          } | 
| 2659 |  | -          ASSERT_EQ(list->op_count(), expected_op_count) << name; | 
| 2660 |  | -          ASSERT_TRUE(list->bounds().isEmpty()) << name; | 
| 2661 |  | -        }; | 
| 2662 |  | -    run_one_test( | 
| 2663 |  | -        name + " DrawColor", | 
| 2664 |  | -        [](DisplayListBuilder& builder, DlPaint& paint) { | 
| 2665 |  | -          builder.DrawColor(paint.getColor(), paint.getBlendMode()); | 
| 2666 |  | -        }, | 
| 2667 |  | -        expected_op_count); | 
| 2668 |  | -    run_one_test( | 
| 2669 |  | -        name + " DrawPaint", | 
| 2670 |  | -        [](DisplayListBuilder& builder, DlPaint& paint) { | 
| 2671 |  | -          builder.DrawPaint(paint); | 
| 2672 |  | -        }, | 
| 2673 |  | -        expected_op_count); | 
| 2674 |  | -    run_one_test( | 
| 2675 |  | -        name + " DrawRect", | 
| 2676 |  | -        [](DisplayListBuilder& builder, DlPaint& paint) { | 
| 2677 |  | -          builder.DrawRect({10, 10, 20, 20}, paint); | 
| 2678 |  | -        }, | 
| 2679 |  | -        expected_op_count); | 
| 2680 |  | -    run_one_test( | 
| 2681 |  | -        name + " Other Draw Ops", | 
| 2682 |  | -        [](DisplayListBuilder& builder, DlPaint& paint) { | 
| 2683 |  | -          builder.DrawLine({10, 10}, {20, 20}, paint); | 
| 2684 |  | -          builder.DrawOval({10, 10, 20, 20}, paint); | 
| 2685 |  | -          builder.DrawCircle({50, 50}, 20, paint); | 
| 2686 |  | -          builder.DrawRRect(SkRRect::MakeRectXY({10, 10, 20, 20}, 5, 5), paint); | 
| 2687 |  | -          builder.DrawDRRect(SkRRect::MakeRectXY({5, 5, 100, 100}, 5, 5), | 
| 2688 |  | -                             SkRRect::MakeRectXY({10, 10, 20, 20}, 5, 5), | 
| 2689 |  | -                             paint); | 
| 2690 |  | -          builder.DrawPath(kTestPath1, paint); | 
| 2691 |  | -          builder.DrawArc({10, 10, 20, 20}, 45, 90, true, paint); | 
| 2692 |  | -          SkPoint pts[] = {{10, 10}, {20, 20}}; | 
| 2693 |  | -          builder.DrawPoints(PointMode::kLines, 2, pts, paint); | 
| 2694 |  | -          builder.DrawVertices(TestVertices1, DlBlendMode::kSrcOver, paint); | 
| 2695 |  | -          builder.DrawImage(TestImage1, {10, 10}, DlImageSampling::kLinear, | 
| 2696 |  | -                            &paint); | 
| 2697 |  | -          builder.DrawImageRect(TestImage1, SkRect{0.0f, 0.0f, 10.0f, 10.0f}, | 
| 2698 |  | -                                SkRect{10.0f, 10.0f, 25.0f, 25.0f}, | 
| 2699 |  | -                                DlImageSampling::kLinear, &paint); | 
| 2700 |  | -          builder.DrawImageNine(TestImage1, {10, 10, 20, 20}, | 
| 2701 |  | -                                {10, 10, 100, 100}, DlFilterMode::kLinear, | 
| 2702 |  | -                                &paint); | 
| 2703 |  | -          SkRSXform xforms[] = {{1, 0, 10, 10}, {0, 1, 10, 10}}; | 
| 2704 |  | -          SkRect rects[] = {{10, 10, 20, 20}, {10, 20, 30, 20}}; | 
| 2705 |  | -          builder.DrawAtlas(TestImage1, xforms, rects, nullptr, 2, | 
| 2706 |  | -                            DlBlendMode::kSrcOver, DlImageSampling::kLinear, | 
| 2707 |  | -                            nullptr, &paint); | 
| 2708 |  | -          builder.DrawTextBlob(TestBlob1, 10, 10, paint); | 
| 2709 |  | - | 
| 2710 |  | -          // Dst mode eliminates most rendering ops except for | 
| 2711 |  | -          // the following two, so we'll prune those manually... | 
| 2712 |  | -          if (paint.getBlendMode() != DlBlendMode::kDst) { | 
| 2713 |  | -            builder.DrawDisplayList(TestDisplayList1, paint.getOpacity()); | 
| 2714 |  | -            builder.DrawShadow(kTestPath1, paint.getColor(), 1, true, 1); | 
| 2715 |  | -          } | 
| 2716 |  | -        }, | 
| 2717 |  | -        expected_op_count); | 
| 2718 |  | -    run_one_test( | 
| 2719 |  | -        name + " SaveLayer", | 
| 2720 |  | -        [](DisplayListBuilder& builder, DlPaint& paint) { | 
| 2721 |  | -          builder.SaveLayer(nullptr, &paint, nullptr); | 
| 2722 |  | -          builder.DrawRect({10, 10, 20, 20}, DlPaint()); | 
| 2723 |  | -          builder.Restore(); | 
| 2724 |  | -        }, | 
| 2725 |  | -        expected_op_count); | 
| 2726 |  | -    run_one_test( | 
| 2727 |  | -        name + " inside Save", | 
| 2728 |  | -        [](DisplayListBuilder& builder, DlPaint& paint) { | 
| 2729 |  | -          builder.Save(); | 
| 2730 |  | -          builder.DrawRect({10, 10, 20, 20}, paint); | 
| 2731 |  | -          builder.Restore(); | 
| 2732 |  | -        }, | 
| 2733 |  | -        expected_op_count); | 
| 2734 |  | -  }; | 
| 2735 |  | -  run_tests("transparent color",  // | 
| 2736 |  | -            [](DisplayListBuilder& builder, DlPaint& paint) { | 
| 2737 |  | -              paint.setColor(DlColor::kTransparent()); | 
| 2738 |  | -            }); | 
| 2739 |  | -  run_tests("0 alpha",  // | 
| 2740 |  | -            [](DisplayListBuilder& builder, DlPaint& paint) { | 
| 2741 |  | -              // The transparent test above already tested transparent | 
| 2742 |  | -              // black (all 0s), we set White color here so we can test | 
| 2743 |  | -              // the case of all 1s with a 0 alpha | 
| 2744 |  | -              paint.setColor(DlColor::kWhite()); | 
| 2745 |  | -              paint.setAlpha(0); | 
| 2746 |  | -            }); | 
| 2747 |  | -  run_tests("BlendMode::kDst",  // | 
| 2748 |  | -            [](DisplayListBuilder& builder, DlPaint& paint) { | 
| 2749 |  | -              paint.setBlendMode(DlBlendMode::kDst); | 
| 2750 |  | -            }); | 
| 2751 |  | -  run_tests("Empty rect clip",  // | 
| 2752 |  | -            [](DisplayListBuilder& builder, DlPaint& paint) { | 
| 2753 |  | -              builder.ClipRect(SkRect::MakeEmpty(), ClipOp::kIntersect, false); | 
| 2754 |  | -            }); | 
| 2755 |  | -  run_tests("Empty rrect clip",  // | 
| 2756 |  | -            [](DisplayListBuilder& builder, DlPaint& paint) { | 
| 2757 |  | -              builder.ClipRRect(SkRRect::MakeEmpty(), ClipOp::kIntersect, | 
| 2758 |  | -                                false); | 
| 2759 |  | -            }); | 
| 2760 |  | -  run_tests("Empty path clip",  // | 
| 2761 |  | -            [](DisplayListBuilder& builder, DlPaint& paint) { | 
| 2762 |  | -              builder.ClipPath(SkPath(), ClipOp::kIntersect, false); | 
| 2763 |  | -            }); | 
| 2764 |  | -  run_tests("Transparent SaveLayer",  // | 
| 2765 |  | -            [](DisplayListBuilder& builder, DlPaint& paint) { | 
| 2766 |  | -              DlPaint save_paint; | 
| 2767 |  | -              save_paint.setColor(DlColor::kTransparent()); | 
| 2768 |  | -              builder.SaveLayer(nullptr, &save_paint); | 
| 2769 |  | -            }); | 
| 2770 |  | -  run_tests("0 alpha SaveLayer",  // | 
| 2771 |  | -            [](DisplayListBuilder& builder, DlPaint& paint) { | 
| 2772 |  | -              DlPaint save_paint; | 
| 2773 |  | -              // The transparent test above already tested transparent | 
| 2774 |  | -              // black (all 0s), we set White color here so we can test | 
| 2775 |  | -              // the case of all 1s with a 0 alpha | 
| 2776 |  | -              save_paint.setColor(DlColor::kWhite()); | 
| 2777 |  | -              save_paint.setAlpha(0); | 
| 2778 |  | -              builder.SaveLayer(nullptr, &save_paint); | 
| 2779 |  | -            }); | 
| 2780 |  | -  run_tests("Dst blended SaveLayer",  // | 
| 2781 |  | -            [](DisplayListBuilder& builder, DlPaint& paint) { | 
| 2782 |  | -              DlPaint save_paint; | 
| 2783 |  | -              save_paint.setBlendMode(DlBlendMode::kDst); | 
| 2784 |  | -              builder.SaveLayer(nullptr, &save_paint); | 
| 2785 |  | -            }); | 
| 2786 |  | -  run_tests( | 
| 2787 |  | -      "Nop inside SaveLayer", | 
| 2788 |  | -      [](DisplayListBuilder& builder, DlPaint& paint) { | 
| 2789 |  | -        builder.SaveLayer(nullptr, nullptr); | 
| 2790 |  | -        paint.setBlendMode(DlBlendMode::kDst); | 
| 2791 |  | -      }, | 
| 2792 |  | -      2u); | 
| 2793 |  | -  run_tests("DrawImage inside Culled SaveLayer",  // | 
| 2794 |  | -            [](DisplayListBuilder& builder, DlPaint& paint) { | 
| 2795 |  | -              DlPaint save_paint; | 
| 2796 |  | -              save_paint.setColor(DlColor::kTransparent()); | 
| 2797 |  | -              builder.SaveLayer(nullptr, &save_paint); | 
| 2798 |  | -              builder.DrawImage(TestImage1, {10, 10}, DlImageSampling::kLinear); | 
| 2799 |  | -            }); | 
| 2800 |  | -} | 
| 2801 |  | - | 
| 2802 | 2642 | }  // namespace testing | 
| 2803 | 2643 | }  // namespace flutter | 
0 commit comments