@@ -10,6 +10,7 @@ import 'package:ui/src/engine.dart';
1010import 'package:ui/ui.dart' as ui;
1111
1212import 'common.dart' ;
13+ import 'test_data.dart' ;
1314
1415void main () {
1516 internalBootstrapBrowserTest (() => testMain);
@@ -618,6 +619,52 @@ void testMain() {
618619 );
619620 });
620621
622+ test ('does not crash when resizing the window after textures have been registered' , () async {
623+ ui.platformViewRegistry.registerViewFactory (
624+ 'test-platform-view' ,
625+ (int viewId) => createDomHTMLDivElement ()..id = 'view-0' ,
626+ );
627+ await createPlatformView (0 , 'test-platform-view' );
628+
629+ final CkBrowserImageDecoder image = await CkBrowserImageDecoder .create (
630+ data: kAnimatedGif,
631+ debugSource: 'test' ,
632+ );
633+ final ui.FrameInfo frame = await image.getNextFrame ();
634+ final CkImage ckImage = frame.image as CkImage ;
635+
636+ final LayerSceneBuilder sb = LayerSceneBuilder ();
637+ sb.pushOffset (0 , 0 );
638+ final CkPictureRecorder recorder = CkPictureRecorder ();
639+ final CkCanvas canvas = recorder.beginRecording (ui.Rect .largest);
640+ canvas.drawImage (ckImage, ui.Offset .zero, CkPaint ());
641+ final CkPicture picture = recorder.endRecording ();
642+ sb.addPicture (ui.Offset .zero, picture);
643+ sb.addPlatformView (0 , width: 10 , height: 10 );
644+
645+ window.webOnlyDebugPhysicalSizeOverride = const ui.Size (100 , 100 );
646+ window.debugForceResize ();
647+ CanvasKitRenderer .instance.rasterizer.draw (sb.build ().layerTree);
648+ _expectSceneMatches (< _EmbeddedViewMarker > [
649+ _overlay,
650+ _platformView,
651+ _overlay,
652+ ]);
653+
654+ window.webOnlyDebugPhysicalSizeOverride = const ui.Size (200 , 200 );
655+ window.debugForceResize ();
656+ CanvasKitRenderer .instance.rasterizer.draw (sb.build ().layerTree);
657+ _expectSceneMatches (< _EmbeddedViewMarker > [
658+ _overlay,
659+ _platformView,
660+ _overlay,
661+ ]);
662+
663+ window.webOnlyDebugPhysicalSizeOverride = null ;
664+ window.debugForceResize ();
665+ // ImageDecoder is not supported in Safari or Firefox.
666+ }, skip: isSafari || isFirefox);
667+
621668 test ('removed the DOM node of an unrendered platform view' , () async {
622669 final Rasterizer rasterizer = CanvasKitRenderer .instance.rasterizer;
623670 ui.platformViewRegistry.registerViewFactory (
0 commit comments