@@ -657,6 +657,7 @@ TEST_F(FlutterWindowsEngineTest, TestExit) {
657657 ON_CALL (*handler, IsLastWindowOfProcess).WillByDefault ([]() { return true ; });
658658 EXPECT_CALL (*handler, Quit).Times (1 );
659659 modifier.SetLifecycleManager (std::move (handler));
660+ engine->OnApplicationLifecycleEnabled ();
660661
661662 engine->Run ();
662663
@@ -693,6 +694,7 @@ TEST_F(FlutterWindowsEngineTest, TestExitCancel) {
693694 ON_CALL (*handler, IsLastWindowOfProcess).WillByDefault ([]() { return true ; });
694695 EXPECT_CALL (*handler, Quit).Times (0 );
695696 modifier.SetLifecycleManager (std::move (handler));
697+ engine->OnApplicationLifecycleEnabled ();
696698
697699 auto binary_messenger =
698700 std::make_unique<BinaryMessengerImpl>(engine->messenger ());
@@ -753,6 +755,7 @@ TEST_F(FlutterWindowsEngineTest, TestExitSecondCloseMessage) {
753755 hwnd, msg, wparam, lparam);
754756 });
755757 modifier.SetLifecycleManager (std::move (handler));
758+ engine->OnApplicationLifecycleEnabled ();
756759
757760 engine->Run ();
758761
@@ -803,6 +806,7 @@ TEST_F(FlutterWindowsEngineTest, TestExitCloseMultiWindow) {
803806 // Quit should not be called when there is more than one window.
804807 EXPECT_CALL (*handler, Quit).Times (0 );
805808 modifier.SetLifecycleManager (std::move (handler));
809+ engine->OnApplicationLifecycleEnabled ();
806810
807811 engine->Run ();
808812
@@ -814,5 +818,47 @@ TEST_F(FlutterWindowsEngineTest, TestExitCloseMultiWindow) {
814818 }
815819}
816820
821+ TEST_F (FlutterWindowsEngineTest, LifecycleManagerDisabledByDefault) {
822+ FlutterWindowsEngineBuilder builder{GetContext ()};
823+
824+ auto window_binding_handler =
825+ std::make_unique<::testing::NiceMock<MockWindowBindingHandler>>();
826+ MockFlutterWindowsView view (std::move (window_binding_handler));
827+ view.SetEngine (builder.Build ());
828+ FlutterWindowsEngine* engine = view.GetEngine ();
829+
830+ EngineModifier modifier (engine);
831+ modifier.embedder_api ().RunsAOTCompiledDartCode = []() { return false ; };
832+ auto handler = std::make_unique<MockWindowsLifecycleManager>(engine);
833+ EXPECT_CALL (*handler, IsLastWindowOfProcess).Times (0 );
834+ modifier.SetLifecycleManager (std::move (handler));
835+
836+ engine->window_proc_delegate_manager ()->OnTopLevelWindowProc (0 , WM_CLOSE, 0 ,
837+ 0 );
838+ }
839+
840+ TEST_F (FlutterWindowsEngineTest, EnableApplicationLifecycle) {
841+ FlutterWindowsEngineBuilder builder{GetContext ()};
842+
843+ auto window_binding_handler =
844+ std::make_unique<::testing::NiceMock<MockWindowBindingHandler>>();
845+ MockFlutterWindowsView view (std::move (window_binding_handler));
846+ view.SetEngine (builder.Build ());
847+ FlutterWindowsEngine* engine = view.GetEngine ();
848+
849+ EngineModifier modifier (engine);
850+ modifier.embedder_api ().RunsAOTCompiledDartCode = []() { return false ; };
851+ auto handler = std::make_unique<MockWindowsLifecycleManager>(engine);
852+ ON_CALL (*handler, IsLastWindowOfProcess).WillByDefault ([]() {
853+ return false ;
854+ });
855+ EXPECT_CALL (*handler, IsLastWindowOfProcess).Times (1 );
856+ modifier.SetLifecycleManager (std::move (handler));
857+ engine->OnApplicationLifecycleEnabled ();
858+
859+ engine->window_proc_delegate_manager ()->OnTopLevelWindowProc (0 , WM_CLOSE, 0 ,
860+ 0 );
861+ }
862+
817863} // namespace testing
818864} // namespace flutter
0 commit comments