@@ -4527,6 +4527,65 @@ TEST_F(EmbedderTest, CreateInvalidBackingstoreOpenGLFramebuffer) {
4527
4527
latch.Wait ();
4528
4528
}
4529
4529
4530
+ TEST_F (EmbedderTest, CreateInvalidBackingstoreOpenGLSurface) {
4531
+ auto & context = GetEmbedderContext (EmbedderTestContextType::kOpenGLContext );
4532
+ EmbedderConfigBuilder builder (context);
4533
+ builder.SetOpenGLRendererConfig (SkISize::Make (800 , 600 ));
4534
+ builder.SetCompositor ();
4535
+ builder.SetRenderTargetType (
4536
+ EmbedderTestBackingStoreProducer::RenderTargetType::kOpenGLSurface );
4537
+ builder.SetDartEntrypoint (" invalid_backingstore" );
4538
+
4539
+ fml::AutoResetWaitableEvent latch;
4540
+
4541
+ builder.GetCompositor ().create_backing_store_callback =
4542
+ [](const FlutterBackingStoreConfig* config, //
4543
+ FlutterBackingStore* backing_store_out, //
4544
+ void * user_data //
4545
+ ) {
4546
+ backing_store_out->type = kFlutterBackingStoreTypeOpenGL ;
4547
+ backing_store_out->user_data = user_data;
4548
+ backing_store_out->open_gl .type = kFlutterOpenGLTargetTypeSurface ;
4549
+ backing_store_out->open_gl .surface .user_data = user_data;
4550
+ // Deliberately set this to an invalid format
4551
+ backing_store_out->open_gl .surface .format = 0 ;
4552
+ backing_store_out->open_gl .surface .make_current_callback = [](void *,
4553
+ bool *) {
4554
+ ADD_FAILURE () << " make_current_callback method should not be called" ;
4555
+ return true ;
4556
+ };
4557
+ backing_store_out->open_gl .surface .clear_current_callback = [](void *,
4558
+ bool *) {
4559
+ ADD_FAILURE () << " clear_current_callback method should not be called" ;
4560
+ return true ;
4561
+ };
4562
+ backing_store_out->open_gl .surface .destruction_callback =
4563
+ [](void * user_data) {
4564
+ FAIL () << " destruction_callback method should not be called" ;
4565
+ };
4566
+
4567
+ return true ;
4568
+ };
4569
+
4570
+ context.AddNativeCallback (
4571
+ " SignalNativeTest" ,
4572
+ CREATE_NATIVE_ENTRY (
4573
+ [&latch](Dart_NativeArguments args) { latch.Signal (); }));
4574
+
4575
+ auto engine = builder.LaunchEngine ();
4576
+
4577
+ // Send a window metrics events so frames may be scheduled.
4578
+ FlutterWindowMetricsEvent event = {};
4579
+ event.struct_size = sizeof (event);
4580
+ event.width = 800 ;
4581
+ event.height = 600 ;
4582
+ event.pixel_ratio = 1.0 ;
4583
+ ASSERT_EQ (FlutterEngineSendWindowMetricsEvent (engine.get (), &event),
4584
+ kSuccess );
4585
+ ASSERT_TRUE (engine.is_valid ());
4586
+ latch.Wait ();
4587
+ }
4588
+
4530
4589
TEST_F (EmbedderTest, ExternalTextureGLRefreshedTooOften) {
4531
4590
TestGLSurface surface (SkISize::Make (100 , 100 ));
4532
4591
auto context = surface.GetGrContext ();
0 commit comments