@@ -327,5 +327,29 @@ TEST_F(BackdropLayerDiffTest, BackdropLayer) {
327327 EXPECT_EQ (damage.frame_damage , SkIRect::MakeLTRB (0 , 0 , 190 , 190 ));
328328}
329329
330+ TEST_F (BackdropLayerDiffTest, BackdropLayerInvalidTransform) {
331+ auto filter = SkImageFilters::Blur (10 , 10 , SkTileMode::kClamp , nullptr );
332+
333+ {
334+ // tests later assume 30px readback area, fail early if that's not the case
335+ auto readback = filter->filterBounds (SkIRect::MakeWH (10 , 10 ), SkMatrix::I (),
336+ SkImageFilter::kReverse_MapDirection );
337+ EXPECT_EQ (readback, SkIRect::MakeLTRB (-30 , -30 , 40 , 40 ));
338+ }
339+
340+ MockLayerTree l1 (SkISize::Make (100 , 100 ));
341+ SkMatrix transform;
342+ transform.setPerspX (0.1 );
343+ transform.setPerspY (0.1 );
344+
345+ auto transform_layer = std::make_shared<TransformLayer>(transform);
346+ l1.root ()->Add (transform_layer);
347+ transform_layer->Add (
348+ std::make_shared<BackdropFilterLayer>(filter, SkBlendMode::kSrcOver ));
349+
350+ auto damage = DiffLayerTree (l1, MockLayerTree (SkISize::Make (100 , 100 )));
351+ EXPECT_EQ (damage.frame_damage , SkIRect::MakeWH (15 , 15 ));
352+ }
353+
330354} // namespace testing
331355} // namespace flutter
0 commit comments