@@ -124,6 +124,8 @@ - (void)handlePressEvent:(FlutterUIPressProxy*)press
124124- (void )scrollEvent : (UIPanGestureRecognizer*)recognizer ;
125125- (void )updateViewportMetrics ;
126126- (void )onUserSettingsChanged : (NSNotification *)notification ;
127+ - (void )applicationWillTerminate : (NSNotification *)notification ;
128+ - (void )goToApplicationLifecycle : (nonnull NSString *)state ;
127129- (void )keyboardWillChangeFrame : (NSNotification *)notification ;
128130- (void )startKeyBoardAnimation : (NSTimeInterval )duration ;
129131- (void )ensureViewportMetricsIsCorrect ;
@@ -214,6 +216,20 @@ - (void)testViewDidDisappearDoesntPauseEngineWhenNotTheViewController {
214216 OCMReject ([viewControllerMock surfaceUpdated: [OCMArg any ]]);
215217}
216218
219+ - (void )testAppWillTerminateViewDidDestroyTheEngine {
220+ FlutterEngine* mockEngine = OCMPartialMock ([[FlutterEngine alloc ] init ]);
221+ [mockEngine createShell: @" " libraryURI: @" " initialRoute: nil ];
222+ FlutterViewController* viewController = [[FlutterViewController alloc ] initWithEngine: mockEngine
223+ nibName: nil
224+ bundle: nil ];
225+ id viewControllerMock = OCMPartialMock (viewController);
226+ OCMStub ([viewControllerMock goToApplicationLifecycle: @" AppLifecycleState.detached" ]);
227+ OCMStub ([mockEngine destroyContext ]);
228+ [viewController applicationWillTerminate: nil ];
229+ OCMVerify ([viewControllerMock goToApplicationLifecycle: @" AppLifecycleState.detached" ]);
230+ OCMVerify ([mockEngine destroyContext ]);
231+ }
232+
217233- (void )testViewDidDisappearDoesPauseEngineWhenIsTheViewController {
218234 id lifecycleChannel = OCMClassMock ([FlutterBasicMessageChannel class ]);
219235 FlutterEnginePartialMock* mockEngine = [[FlutterEnginePartialMock alloc ] init ];
0 commit comments