diff --git a/impeller/aiks/aiks_unittests.cc b/impeller/aiks/aiks_unittests.cc index b0e4139f4e6d3..14d70f2d27f7f 100644 --- a/impeller/aiks/aiks_unittests.cc +++ b/impeller/aiks/aiks_unittests.cc @@ -3700,6 +3700,26 @@ TEST_P(AiksTest, BlurHasNoEdge) { }, }; canvas.DrawRect(Rect{300, 300, 200, 200}, blur); +} + +TEST_P(AiksTest, EmptySaveLayerIgnoresPaint) { + Canvas canvas; + canvas.Scale(GetContentScale()); + canvas.DrawPaint(Paint{.color = Color::Red()}); + canvas.ClipRect({100, 100, 200, 200}); + canvas.SaveLayer(Paint{.color = Color::Blue()}); + canvas.Restore(); + ASSERT_TRUE(OpenPlaygroundHere(canvas.EndRecordingAsPicture())); +} + +TEST_P(AiksTest, EmptySaveLayerRendersWithClear) { + Canvas canvas; + canvas.Scale(GetContentScale()); + auto image = std::make_shared(CreateTextureForFixture("airplane.jpg")); + canvas.DrawImage(image, {10, 10}, {}); + canvas.ClipRect({100, 100, 200, 200}); + canvas.SaveLayer(Paint{.blend_mode = BlendMode::kClear}); + canvas.Restore(); ASSERT_TRUE(OpenPlaygroundHere(canvas.EndRecordingAsPicture())); }