@@ -800,7 +800,6 @@ TEST_F(FlutterWindowsEngineTest, TestExit) {
800800 modifier.SetImplicitView (&view);
801801 modifier.embedder_api ().RunsAOTCompiledDartCode = []() { return false ; };
802802 auto handler = std::make_unique<MockWindowsLifecycleManager>(engine.get ());
803- EXPECT_CALL (*handler, SetLifecycleState (AppLifecycleState::kResumed ));
804803 EXPECT_CALL (*handler, Quit)
805804 .WillOnce ([&finished](std::optional<HWND> hwnd,
806805 std::optional<WPARAM> wparam,
@@ -837,7 +836,6 @@ TEST_F(FlutterWindowsEngineTest, TestExitCancel) {
837836 modifier.SetImplicitView (&view);
838837 modifier.embedder_api ().RunsAOTCompiledDartCode = []() { return false ; };
839838 auto handler = std::make_unique<MockWindowsLifecycleManager>(engine.get ());
840- EXPECT_CALL (*handler, SetLifecycleState (AppLifecycleState::kResumed ));
841839 EXPECT_CALL (*handler, IsLastWindowOfProcess).WillRepeatedly (Return (true ));
842840 EXPECT_CALL (*handler, Quit).Times (0 );
843841 modifier.SetLifecycleManager (std::move (handler));
@@ -885,7 +883,6 @@ TEST_F(FlutterWindowsEngineTest, TestExitSecondCloseMessage) {
885883 modifier.SetImplicitView (&view);
886884 modifier.embedder_api ().RunsAOTCompiledDartCode = []() { return false ; };
887885 auto handler = std::make_unique<MockWindowsLifecycleManager>(engine.get ());
888- EXPECT_CALL (*handler, SetLifecycleState (AppLifecycleState::kResumed ));
889886 EXPECT_CALL (*handler, IsLastWindowOfProcess).WillOnce (Return (true ));
890887 EXPECT_CALL (*handler, Quit)
891888 .WillOnce ([handler_ptr = handler.get ()](
@@ -945,7 +942,6 @@ TEST_F(FlutterWindowsEngineTest, TestExitCloseMultiWindow) {
945942 modifier.SetImplicitView (&view);
946943 modifier.embedder_api ().RunsAOTCompiledDartCode = []() { return false ; };
947944 auto handler = std::make_unique<MockWindowsLifecycleManager>(engine.get ());
948- EXPECT_CALL (*handler, SetLifecycleState (AppLifecycleState::kResumed ));
949945 EXPECT_CALL (*handler, IsLastWindowOfProcess).WillOnce ([&finished]() {
950946 finished = true ;
951947 return false ;
@@ -1023,24 +1019,6 @@ TEST_F(FlutterWindowsEngineTest, ApplicationLifecycleExternalWindow) {
10231019 engine->lifecycle_manager ()->ExternalWindowMessage (0 , WM_CLOSE, 0 , 0 );
10241020}
10251021
1026- TEST_F (FlutterWindowsEngineTest, AppStartsInResumedState) {
1027- FlutterWindowsEngineBuilder builder{GetContext ()};
1028-
1029- auto engine = builder.Build ();
1030- auto window_binding_handler =
1031- std::make_unique<::testing::NiceMock<MockWindowBindingHandler>>();
1032- MockFlutterWindowsView view (engine.get (), std::move (window_binding_handler));
1033-
1034- EngineModifier modifier (engine.get ());
1035- modifier.SetImplicitView (&view);
1036- modifier.embedder_api ().RunsAOTCompiledDartCode = []() { return false ; };
1037- auto handler = std::make_unique<MockWindowsLifecycleManager>(engine.get ());
1038- EXPECT_CALL (*handler, SetLifecycleState (AppLifecycleState::kResumed ))
1039- .Times (1 );
1040- modifier.SetLifecycleManager (std::move (handler));
1041- engine->Run ();
1042- }
1043-
10441022TEST_F (FlutterWindowsEngineTest, LifecycleStateTransition) {
10451023 FlutterWindowsEngineBuilder builder{GetContext ()};
10461024
@@ -1056,16 +1034,41 @@ TEST_F(FlutterWindowsEngineTest, LifecycleStateTransition) {
10561034
10571035 engine->window_proc_delegate_manager ()->OnTopLevelWindowProc (
10581036 (HWND)1 , WM_SIZE, SIZE_RESTORED, 0 );
1037+
1038+ while (engine->lifecycle_manager ()->IsUpdateStateScheduled ()) {
1039+ PumpMessage ();
1040+ }
1041+
1042+ EXPECT_EQ (engine->lifecycle_manager ()->GetLifecycleState (),
1043+ AppLifecycleState::kInactive );
1044+
1045+ engine->lifecycle_manager ()->OnWindowStateEvent ((HWND)1 ,
1046+ WindowStateEvent::kFocus );
1047+
1048+ while (engine->lifecycle_manager ()->IsUpdateStateScheduled ()) {
1049+ PumpMessage ();
1050+ }
1051+
10591052 EXPECT_EQ (engine->lifecycle_manager ()->GetLifecycleState (),
10601053 AppLifecycleState::kResumed );
10611054
10621055 engine->window_proc_delegate_manager ()->OnTopLevelWindowProc (
10631056 (HWND)1 , WM_SIZE, SIZE_MINIMIZED, 0 );
1057+
1058+ while (engine->lifecycle_manager ()->IsUpdateStateScheduled ()) {
1059+ PumpMessage ();
1060+ }
1061+
10641062 EXPECT_EQ (engine->lifecycle_manager ()->GetLifecycleState (),
10651063 AppLifecycleState::kHidden );
10661064
10671065 engine->window_proc_delegate_manager ()->OnTopLevelWindowProc (
10681066 (HWND)1 , WM_SIZE, SIZE_RESTORED, 0 );
1067+
1068+ while (engine->lifecycle_manager ()->IsUpdateStateScheduled ()) {
1069+ PumpMessage ();
1070+ }
1071+
10691072 EXPECT_EQ (engine->lifecycle_manager ()->GetLifecycleState (),
10701073 AppLifecycleState::kInactive );
10711074}
@@ -1090,6 +1093,10 @@ TEST_F(FlutterWindowsEngineTest, ExternalWindowMessage) {
10901093 engine->ProcessExternalWindowMessage (reinterpret_cast <HWND>(1 ), WM_SHOWWINDOW,
10911094 FALSE , NULL );
10921095
1096+ while (engine->lifecycle_manager ()->IsUpdateStateScheduled ()) {
1097+ PumpMessage ();
1098+ }
1099+
10931100 EXPECT_EQ (engine->lifecycle_manager ()->GetLifecycleState (),
10941101 AppLifecycleState::kHidden );
10951102}
@@ -1117,12 +1124,20 @@ TEST_F(FlutterWindowsEngineTest, InnerWindowHidden) {
11171124 view.OnWindowStateEvent (inner, WindowStateEvent::kShow );
11181125 view.OnWindowStateEvent (inner, WindowStateEvent::kFocus );
11191126
1127+ while (engine->lifecycle_manager ()->IsUpdateStateScheduled ()) {
1128+ PumpMessage ();
1129+ }
1130+
11201131 EXPECT_EQ (engine->lifecycle_manager ()->GetLifecycleState (),
11211132 AppLifecycleState::kResumed );
11221133
11231134 // Hide Flutter window, but not top level window.
11241135 view.OnWindowStateEvent (inner, WindowStateEvent::kHide );
11251136
1137+ while (engine->lifecycle_manager ()->IsUpdateStateScheduled ()) {
1138+ PumpMessage ();
1139+ }
1140+
11261141 // The top-level window is still visible, so we ought not enter hidden state.
11271142 EXPECT_EQ (engine->lifecycle_manager ()->GetLifecycleState (),
11281143 AppLifecycleState::kInactive );
@@ -1244,7 +1259,6 @@ TEST_F(FlutterWindowsEngineTest, ChannelListenedTo) {
12441259
12451260 bool lifecycle_began = false ;
12461261 auto handler = std::make_unique<MockWindowsLifecycleManager>(engine.get ());
1247- EXPECT_CALL (*handler, SetLifecycleState).Times (1 );
12481262 handler->begin_processing_callback = [&]() { lifecycle_began = true ; };
12491263 modifier.SetLifecycleManager (std::move (handler));
12501264
0 commit comments