From 924bb901826cf558cce6b4896347c2ec82688635 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Fri, 5 Nov 2021 15:44:23 -0700 Subject: [PATCH 1/4] Hide a11y elements when resigning active --- .../framework/Source/FlutterViewController.mm | 2 ++ .../Source/FlutterViewControllerTest.mm | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index 59dbefc9e98bb..12246c05e1242 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -780,6 +780,7 @@ - (void)dealloc { - (void)applicationBecameActive:(NSNotification*)notification { TRACE_EVENT0("flutter", "applicationBecameActive"); + self.view.accessibilityElementsHidden = NO; if (_viewportMetrics.physical_width) [self surfaceUpdated:YES]; [self goToApplicationLifecycle:@"AppLifecycleState.resumed"]; @@ -787,6 +788,7 @@ - (void)applicationBecameActive:(NSNotification*)notification { - (void)applicationWillResignActive:(NSNotification*)notification { TRACE_EVENT0("flutter", "applicationWillResignActive"); + self.view.accessibilityElementsHidden = YES; [self goToApplicationLifecycle:@"AppLifecycleState.inactive"]; } diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewControllerTest.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewControllerTest.mm index a06d19bbcfaf0..4be0fd5675d3f 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewControllerTest.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewControllerTest.mm @@ -124,6 +124,8 @@ - (void)handlePressEvent:(FlutterUIPressProxy*)press - (void)scrollEvent:(UIPanGestureRecognizer*)recognizer; - (void)updateViewportMetrics; - (void)onUserSettingsChanged:(NSNotification*)notification; +- (void)applicationWillResignActive:(NSNotification*)notification; +- (void)applicationBecameActive:(NSNotification*)notification; @end @interface FlutterViewControllerTest : XCTestCase @@ -746,6 +748,21 @@ - (void)testHideOverlay { engine.viewController = nil; } +- (void)testHideA11yElements { + FlutterDartProject* project = [[FlutterDartProject alloc] init]; + FlutterEngine* engine = [[FlutterEngine alloc] initWithName:@"foobar" project:project]; + [engine createShell:@"" libraryURI:@"" initialRoute:nil]; + FlutterViewController* realVC = [[FlutterViewController alloc] initWithEngine:engine + nibName:nil + bundle:nil]; + XCTAssertFalse(realVC.view.accessibilityElementsHidden, @""); + [realVC applicationWillResignActive:nil]; + XCTAssertTrue(realVC.view.accessibilityElementsHidden, @""); + [realVC applicationBecameActive:nil]; + XCTAssertFalse(realVC.view.accessibilityElementsHidden, @""); + engine.viewController = nil; +} + - (void)testNotifyLowMemory { FlutterEnginePartialMock* mockEngine = [[FlutterEnginePartialMock alloc] init]; FlutterViewController* viewController = [[FlutterViewController alloc] initWithEngine:mockEngine From 33696616929e0e973b57942517a005cfcf3ea823 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Fri, 5 Nov 2021 16:58:24 -0700 Subject: [PATCH 2/4] Update shell/platform/darwin/ios/framework/Source/FlutterViewControllerTest.mm Co-authored-by: Jenn Magder --- .../darwin/ios/framework/Source/FlutterViewControllerTest.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewControllerTest.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewControllerTest.mm index 4be0fd5675d3f..c62e79bf787b3 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewControllerTest.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewControllerTest.mm @@ -757,7 +757,7 @@ - (void)testHideA11yElements { bundle:nil]; XCTAssertFalse(realVC.view.accessibilityElementsHidden, @""); [realVC applicationWillResignActive:nil]; - XCTAssertTrue(realVC.view.accessibilityElementsHidden, @""); + XCTAssertTrue(realVC.view.accessibilityElementsHidden); [realVC applicationBecameActive:nil]; XCTAssertFalse(realVC.view.accessibilityElementsHidden, @""); engine.viewController = nil; From ff8f210e1aec2e23a3049e9d8284d2328610b8c0 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Sat, 6 Nov 2021 08:39:54 -0700 Subject: [PATCH 3/4] use post notification --- .../framework/Source/FlutterViewControllerTest.mm | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewControllerTest.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewControllerTest.mm index c62e79bf787b3..42ad5b0c289a4 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewControllerTest.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewControllerTest.mm @@ -124,8 +124,6 @@ - (void)handlePressEvent:(FlutterUIPressProxy*)press - (void)scrollEvent:(UIPanGestureRecognizer*)recognizer; - (void)updateViewportMetrics; - (void)onUserSettingsChanged:(NSNotification*)notification; -- (void)applicationWillResignActive:(NSNotification*)notification; -- (void)applicationBecameActive:(NSNotification*)notification; @end @interface FlutterViewControllerTest : XCTestCase @@ -755,11 +753,15 @@ - (void)testHideA11yElements { FlutterViewController* realVC = [[FlutterViewController alloc] initWithEngine:engine nibName:nil bundle:nil]; - XCTAssertFalse(realVC.view.accessibilityElementsHidden, @""); - [realVC applicationWillResignActive:nil]; + XCTAssertFalse(realVC.view.accessibilityElementsHidden); + [[NSNotificationCenter defaultCenter] + postNotificationName:UIApplicationWillResignActiveNotification + object:nil]; XCTAssertTrue(realVC.view.accessibilityElementsHidden); - [realVC applicationBecameActive:nil]; - XCTAssertFalse(realVC.view.accessibilityElementsHidden, @""); + [[NSNotificationCenter defaultCenter] + postNotificationName:UIApplicationDidBecomeActiveNotification + object:nil]; + XCTAssertFalse(realVC.view.accessibilityElementsHidden); engine.viewController = nil; } From e94459ae3f14d3d27d3653ae36e7feacc22ccd68 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Sat, 6 Nov 2021 10:38:56 -0700 Subject: [PATCH 4/4] CI