diff --git a/Schemas/configuration.json b/Schemas/configuration.json index d32caf9c1..925720f6a 100644 --- a/Schemas/configuration.json +++ b/Schemas/configuration.json @@ -22,7 +22,6 @@ "exp_framesetter_cache", "exp_skip_clear_data", "exp_did_enter_preload_skip_asm_layout", - "exp_disable_a11y_cache", "exp_dispatch_apply", "exp_text_drawing", "exp_oom_bg_dealloc_disable", diff --git a/Source/ASExperimentalFeatures.h b/Source/ASExperimentalFeatures.h index 8842e6672..ef91628b3 100644 --- a/Source/ASExperimentalFeatures.h +++ b/Source/ASExperimentalFeatures.h @@ -26,13 +26,12 @@ typedef NS_OPTIONS(NSUInteger, ASExperimentalFeatures) { ASExperimentalFramesetterCache = 1 << 5, // exp_framesetter_cache ASExperimentalSkipClearData = 1 << 6, // exp_skip_clear_data ASExperimentalDidEnterPreloadSkipASMLayout = 1 << 7, // exp_did_enter_preload_skip_asm_layout - ASExperimentalDisableAccessibilityCache = 1 << 8, // exp_disable_a11y_cache - ASExperimentalDispatchApply = 1 << 9, // exp_dispatch_apply - ASExperimentalTextDrawing = 1 << 10, // exp_text_drawing - ASExperimentalOOMBackgroundDeallocDisable = 1 << 11, // exp_oom_bg_dealloc_disable - ASExperimentalTransactionOperationRetainCycle = 1 << 12, // exp_transaction_operation_retain_cycle - ASExperimentalRemoveTextKitInitialisingLock = 1 << 13, // exp_remove_textkit_initialising_lock - ASExperimentalDrawingGlobal = 1 << 14, // exp_drawing_global + ASExperimentalDispatchApply = 1 << 8, // exp_dispatch_apply + ASExperimentalTextDrawing = 1 << 9, // exp_text_drawing + ASExperimentalOOMBackgroundDeallocDisable = 1 << 10, // exp_oom_bg_dealloc_disable + ASExperimentalTransactionOperationRetainCycle = 1 << 11, // exp_transaction_operation_retain_cycle + ASExperimentalRemoveTextKitInitialisingLock = 1 << 12, // exp_remove_textkit_initialising_lock + ASExperimentalDrawingGlobal = 1 << 13, // exp_drawing_global ASExperimentalFeatureAll = 0xFFFFFFFF }; diff --git a/Source/ASExperimentalFeatures.mm b/Source/ASExperimentalFeatures.mm index 045dbc245..9594a8f60 100644 --- a/Source/ASExperimentalFeatures.mm +++ b/Source/ASExperimentalFeatures.mm @@ -20,7 +20,6 @@ @"exp_framesetter_cache", @"exp_skip_clear_data", @"exp_did_enter_preload_skip_asm_layout", - @"exp_disable_a11y_cache", @"exp_dispatch_apply", @"exp_text_drawing", @"exp_oom_bg_dealloc_disable", diff --git a/Source/Details/_ASDisplayViewAccessiblity.mm b/Source/Details/_ASDisplayViewAccessiblity.mm index 35cb0b8cd..202c9c9e4 100644 --- a/Source/Details/_ASDisplayViewAccessiblity.mm +++ b/Source/Details/_ASDisplayViewAccessiblity.mm @@ -13,7 +13,6 @@ #import #import #import -#import #import #import @@ -88,8 +87,7 @@ + (ASAccessibilityElement *)accessibilityElementWithContainer:(UIView *)containe - (CGRect)accessibilityFrame { CGRect accessibilityFrame = [self.containerNode convertRect:self.node.bounds fromNode:self.node]; - accessibilityFrame = UIAccessibilityConvertFrameToScreenCoordinates(accessibilityFrame, self.accessibilityContainer); - return accessibilityFrame; + return UIAccessibilityConvertFrameToScreenCoordinates(accessibilityFrame, self.accessibilityContainer); } @end @@ -109,8 +107,7 @@ @implementation ASAccessibilityCustomAction - (CGRect)accessibilityFrame { CGRect accessibilityFrame = [self.containerNode convertRect:self.node.bounds fromNode:self.node]; - accessibilityFrame = UIAccessibilityConvertFrameToScreenCoordinates(accessibilityFrame, self.container); - return accessibilityFrame; + return UIAccessibilityConvertFrameToScreenCoordinates(accessibilityFrame, self.container); } @end @@ -268,7 +265,7 @@ - (NSArray *)accessibilityElements return @[]; } - if (_accessibilityElements == nil || ASActivateExperimentalFeature(ASExperimentalDisableAccessibilityCache)) { + if (_accessibilityElements == nil) { _accessibilityElements = [viewNode accessibilityElements]; } return _accessibilityElements; diff --git a/Tests/ASConfigurationTests.mm b/Tests/ASConfigurationTests.mm index d8cda4469..150360ea9 100644 --- a/Tests/ASConfigurationTests.mm +++ b/Tests/ASConfigurationTests.mm @@ -26,7 +26,6 @@ ASExperimentalFramesetterCache, ASExperimentalSkipClearData, ASExperimentalDidEnterPreloadSkipASMLayout, - ASExperimentalDisableAccessibilityCache, ASExperimentalDispatchApply, ASExperimentalTextDrawing, ASExperimentalOOMBackgroundDeallocDisable, @@ -53,7 +52,6 @@ + (NSArray *)names { @"exp_framesetter_cache", @"exp_skip_clear_data", @"exp_did_enter_preload_skip_asm_layout", - @"exp_disable_a11y_cache", @"exp_dispatch_apply", @"exp_text_drawing", @"exp_oom_bg_dealloc_disable", diff --git a/Tests/ASDisplayViewAccessibilityTests.mm b/Tests/ASDisplayViewAccessibilityTests.mm index bbc28cf0b..7d4512cdf 100644 --- a/Tests/ASDisplayViewAccessibilityTests.mm +++ b/Tests/ASDisplayViewAccessibilityTests.mm @@ -24,13 +24,6 @@ @interface ASDisplayViewAccessibilityTests : XCTestCase @implementation ASDisplayViewAccessibilityTests -- (void)setUp -{ - ASConfiguration *config = [[ASConfiguration alloc] initWithDictionary:nil]; - config.experimentalFeatures = ASExperimentalDisableAccessibilityCache; - [ASConfigurationManager test_resetWithConfiguration:config]; -} - - (void)testAccessibilityElementsAccessors { // Setup nodes with accessibility info @@ -95,78 +88,6 @@ - (void)testThatContainerAccessibilityLabelOverrideStopsAggregation [node.view.accessibilityElements.firstObject accessibilityLabel]); } -- (void)testAccessibilityLayerbackedNodesOperationInContainer { - ASDisplayNode *contianer = [[ASDisplayNode alloc] init]; - contianer.frame = CGRectMake(50, 50, 200, 400); - contianer.backgroundColor = [UIColor grayColor]; - contianer.isAccessibilityContainer = YES; - // Do any additional setup after loading the view, typically from a nib. - ASTextNode *text1 = [[ASTextNode alloc] init]; - text1.layerBacked = YES; - text1.attributedText = [[NSAttributedString alloc] initWithString:@"hello"]; - text1.frame = CGRectMake(50, 100, 200, 200); - [contianer addSubnode:text1]; - [contianer layoutIfNeeded]; - [contianer.layer displayIfNeeded]; - NSArray *elements = contianer.view.accessibilityElements; - XCTAssertTrue(elements.count == 1); - XCTAssertTrue([[elements.firstObject accessibilityLabel] isEqualToString:@"hello"]); - ASTextNode *text2 = [[ASTextNode alloc] init]; - text2.layerBacked = YES; - text2.attributedText = [[NSAttributedString alloc] initWithString:@"world"]; - text2.frame = CGRectMake(50, 300, 200, 200); - [contianer addSubnode:text2]; - [contianer layoutIfNeeded]; - [contianer.layer displayIfNeeded]; - NSArray *updatedElements = contianer.view.accessibilityElements; - XCTAssertTrue(updatedElements.count == 1); - XCTAssertTrue([[updatedElements.firstObject accessibilityLabel] isEqualToString:@"hello, world"]); - ASTextNode *text3 = [[ASTextNode alloc] init]; - text3.attributedText = [[NSAttributedString alloc] initWithString:@"!!!!"]; - text3.frame = CGRectMake(50, 400, 200, 100); - text3.layerBacked = YES; - [text2 addSubnode:text3]; - [contianer layoutIfNeeded]; - [contianer.layer displayIfNeeded]; - NSArray *updatedElements2 = contianer.view.accessibilityElements; - XCTAssertTrue([[updatedElements2.firstObject accessibilityLabel] isEqualToString:@"hello, world, !!!!"]); -} - -- (void)testAccessibilityNonLayerbackedNodesOperationInContainer -{ - ASDisplayNode *contianer = [[ASDisplayNode alloc] init]; - contianer.frame = CGRectMake(50, 50, 200, 600); - contianer.backgroundColor = [UIColor grayColor]; - contianer.isAccessibilityContainer = YES; - // Do any additional setup after loading the view, typically from a nib. - ASTextNode *text1 = [[ASTextNode alloc] init]; - text1.attributedText = [[NSAttributedString alloc] initWithString:@"hello"]; - text1.frame = CGRectMake(50, 100, 200, 200); - [contianer addSubnode:text1]; - [contianer layoutIfNeeded]; - [contianer.layer displayIfNeeded]; - NSArray *elements = contianer.view.accessibilityElements; - XCTAssertTrue(elements.count == 1); - XCTAssertTrue([[elements.firstObject accessibilityLabel] isEqualToString:@"hello"]); - ASTextNode *text2 = [[ASTextNode alloc] init]; - text2.attributedText = [[NSAttributedString alloc] initWithString:@"world"]; - text2.frame = CGRectMake(50, 300, 200, 200); - [contianer addSubnode:text2]; - [contianer layoutIfNeeded]; - [contianer.layer displayIfNeeded]; - NSArray *updatedElements = contianer.view.accessibilityElements; - XCTAssertTrue(updatedElements.count == 1); - XCTAssertTrue([[updatedElements.firstObject accessibilityLabel] isEqualToString:@"hello, world"]); - ASTextNode *text3 = [[ASTextNode alloc] init]; - text3.attributedText = [[NSAttributedString alloc] initWithString:@"!!!!"]; - text3.frame = CGRectMake(50, 400, 200, 100); - [text2 addSubnode:text3]; - [contianer layoutIfNeeded]; - [contianer.layer displayIfNeeded]; - NSArray *updatedElements2 = contianer.view.accessibilityElements; - XCTAssertTrue([[updatedElements2.firstObject accessibilityLabel] isEqualToString:@"hello, world, !!!!"]); -} - - (void)testAccessibilityNonLayerbackedNodesOperationInNonContainer { ASDisplayNode *contianer = [[ASDisplayNode alloc] init]; @@ -204,71 +125,6 @@ - (void)testAccessibilityNonLayerbackedNodesOperationInNonContainer XCTAssertTrue([[updatedElements2.firstObject accessibilityLabel] isEqualToString:@"hello"]); XCTAssertTrue([[updatedElements2.lastObject accessibilityLabel] isEqualToString:@"world"]); } -- (void)testAccessibilityLayerbackedNodesOperationInNonContainer -{ - ASDisplayNode *contianer = [[ASDisplayNode alloc] init]; - contianer.frame = CGRectMake(50, 50, 200, 600); - contianer.backgroundColor = [UIColor grayColor]; - // Do any additional setup after loading the view, typically from a nib. - ASTextNode *text1 = [[ASTextNode alloc] init]; - text1.layerBacked = YES; - text1.attributedText = [[NSAttributedString alloc] initWithString:@"hello"]; - text1.frame = CGRectMake(50, 0, 100, 100); - [contianer addSubnode:text1]; - [contianer layoutIfNeeded]; - [contianer.layer displayIfNeeded]; - NSArray *elements = contianer.view.accessibilityElements; - XCTAssertTrue(elements.count == 1); - XCTAssertTrue([[elements.firstObject accessibilityLabel] isEqualToString:@"hello"]); - ASTextNode *text2 = [[ASTextNode alloc] init]; - text2.layerBacked = YES; - text2.attributedText = [[NSAttributedString alloc] initWithString:@"world"]; - text2.frame = CGRectMake(50, 100, 100, 100); - [contianer addSubnode:text2]; - [contianer layoutIfNeeded]; - [contianer.layer displayIfNeeded]; - NSArray *updatedElements = contianer.view.accessibilityElements; - XCTAssertTrue(updatedElements.count == 2); - XCTAssertTrue([[updatedElements.firstObject accessibilityLabel] isEqualToString:@"hello"]); - XCTAssertTrue([[updatedElements.lastObject accessibilityLabel] isEqualToString:@"world"]); - ASTextNode *text3 = [[ASTextNode alloc] init]; - text3.layerBacked = YES; - text3.attributedText = [[NSAttributedString alloc] initWithString:@"!!!!"]; - text3.frame = CGRectMake(50, 200, 100, 100); - [text2 addSubnode:text3]; - [contianer layoutIfNeeded]; - [contianer.layer displayIfNeeded]; - NSArray *updatedElements2 = contianer.view.accessibilityElements; - //text3 won't be read out cause it's overshadowed by text2 - XCTAssertTrue(updatedElements2.count == 2); - XCTAssertTrue([[updatedElements2.firstObject accessibilityLabel] isEqualToString:@"hello"]); - XCTAssertTrue([[updatedElements2.lastObject accessibilityLabel] isEqualToString:@"world"]); -} - -- (void)testAccessibilityUpdatesWithElementsChanges -{ - ASDisplayNode *contianer = [[ASDisplayNode alloc] init]; - contianer.frame = CGRectMake(50, 50, 200, 600); - contianer.backgroundColor = [UIColor grayColor]; - contianer.isAccessibilityContainer = YES; - // Do any additional setup after loading the view, typically from a nib. - ASTextNode *text1 = [[ASTextNode alloc] init]; - text1.layerBacked = YES; - text1.attributedText = [[NSAttributedString alloc] initWithString:@"hello"]; - text1.frame = CGRectMake(50, 0, 100, 100); - [contianer addSubnode:text1]; - [contianer layoutIfNeeded]; - [contianer.layer displayIfNeeded]; - NSArray *elements = contianer.view.accessibilityElements; - XCTAssertTrue(elements.count == 1); - XCTAssertTrue([[elements.firstObject accessibilityLabel] isEqualToString:@"hello"]); - text1.attributedText = [[NSAttributedString alloc] initWithString:@"greeting"]; - [contianer layoutIfNeeded]; - [contianer.layer displayIfNeeded]; - NSArray *elements2 = contianer.view.accessibilityElements; - XCTAssertTrue(elements2.count == 1); - XCTAssertTrue([[elements2.firstObject accessibilityLabel] isEqualToString:@"greeting"]); -} #pragma mark - #pragma mark UIAccessibilityAction Forwarding