Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove extra string/attributed string creation in accessibility props #1062

Merged
merged 2 commits into from
Aug 3, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
- Create and set delegate for clip corner layers within ASDisplayNode [Michael Schneider](https://github.com/maicki) [#1029](https://github.com/TextureGroup/Texture/pull/1029)
- Improve locking situation in ASVideoPlayerNode [Michael Schneider](https://github.com/maicki) [#1042](https://github.com/TextureGroup/Texture/pull/1042)
- Remove CA transaction signpost injection because it causes more transactions and is too chatty. [Adlai Holler](https://github.com/Adlai-Holler)
- Optimize display node accessibility by not creating attributed & non-attributed copies of hint, label, and value. [Adlai Holler](https://github.com/Adlai-Holler)


## 2.7
Expand Down
91 changes: 47 additions & 44 deletions Source/Private/_ASPendingState.mm
Original file line number Diff line number Diff line change
Expand Up @@ -607,92 +607,92 @@ - (void)setIsAccessibilityElement:(BOOL)newIsAccessibilityElement

- (NSString *)accessibilityLabel
{
if (_flags.setAccessibilityAttributedLabel) {
return accessibilityAttributedLabel.string;
}
return accessibilityLabel;
}

- (void)setAccessibilityLabel:(NSString *)newAccessibilityLabel
{
if (! ASObjectIsEqual(accessibilityLabel, newAccessibilityLabel)) {
_flags.setAccessibilityLabel = YES;
_flags.setAccessibilityAttributedLabel = YES;
accessibilityLabel = newAccessibilityLabel ? [newAccessibilityLabel copy] : nil;
accessibilityAttributedLabel = newAccessibilityLabel ? [[NSAttributedString alloc] initWithString:newAccessibilityLabel] : nil;
}
ASCompareAssignCopy(accessibilityLabel, newAccessibilityLabel);
_flags.setAccessibilityLabel = YES;
_flags.setAccessibilityAttributedLabel = NO;
}

- (NSAttributedString *)accessibilityAttributedLabel
{
if (_flags.setAccessibilityLabel) {
return [[NSAttributedString alloc] initWithString:accessibilityLabel];
}
return accessibilityAttributedLabel;
}

- (void)setAccessibilityAttributedLabel:(NSAttributedString *)newAccessibilityAttributedLabel
{
if (! ASObjectIsEqual(accessibilityAttributedLabel, newAccessibilityAttributedLabel)) {
_flags.setAccessibilityAttributedLabel = YES;
_flags.setAccessibilityLabel = YES;
accessibilityAttributedLabel = newAccessibilityAttributedLabel ? [newAccessibilityAttributedLabel copy] : nil;
accessibilityLabel = newAccessibilityAttributedLabel ? [newAccessibilityAttributedLabel.string copy] : nil;
}
ASCompareAssignCopy(accessibilityAttributedLabel, newAccessibilityAttributedLabel);
_flags.setAccessibilityAttributedLabel = YES;
_flags.setAccessibilityLabel = NO;
}

- (NSString *)accessibilityHint
{
if (_flags.setAccessibilityAttributedHint) {
return accessibilityAttributedHint.string;
}
return accessibilityHint;
}

- (void)setAccessibilityHint:(NSString *)newAccessibilityHint
{
if (! ASObjectIsEqual(accessibilityHint, newAccessibilityHint)) {
_flags.setAccessibilityHint = YES;
_flags.setAccessibilityAttributedHint = YES;
accessibilityHint = newAccessibilityHint ? [newAccessibilityHint copy] : nil;
accessibilityAttributedHint = newAccessibilityHint ? [[NSAttributedString alloc] initWithString:newAccessibilityHint] : nil;
}
ASCompareAssignCopy(accessibilityHint, newAccessibilityHint);
_flags.setAccessibilityHint = YES;
_flags.setAccessibilityAttributedHint = NO;
}

- (NSAttributedString *)accessibilityAttributedHint
{
if (_flags.setAccessibilityHint) {
return [[NSAttributedString alloc] initWithString:accessibilityHint];
}
return accessibilityAttributedHint;
}

- (void)setAccessibilityAttributedHint:(NSAttributedString *)newAccessibilityAttributedHint
{
if (! ASObjectIsEqual(accessibilityAttributedHint, newAccessibilityAttributedHint)) {
_flags.setAccessibilityAttributedHint = YES;
_flags.setAccessibilityHint = YES;
accessibilityAttributedHint = newAccessibilityAttributedHint ? [newAccessibilityAttributedHint copy] : nil;
accessibilityHint = newAccessibilityAttributedHint ? [newAccessibilityAttributedHint.string copy] : nil;
}
ASCompareAssignCopy(accessibilityAttributedHint, newAccessibilityAttributedHint);
_flags.setAccessibilityAttributedHint = YES;
_flags.setAccessibilityHint = NO;
}

- (NSString *)accessibilityValue
{
if (_flags.setAccessibilityAttributedValue) {
return accessibilityAttributedValue.string;
}
return accessibilityValue;
}

- (void)setAccessibilityValue:(NSString *)newAccessibilityValue
{
if (! ASObjectIsEqual(accessibilityValue, newAccessibilityValue)) {
_flags.setAccessibilityValue = YES;
_flags.setAccessibilityAttributedValue = YES;
accessibilityValue = newAccessibilityValue ? [newAccessibilityValue copy] : nil;
accessibilityAttributedValue = newAccessibilityValue ? [[NSAttributedString alloc] initWithString:newAccessibilityValue] : nil;
}
ASCompareAssignCopy(accessibilityValue, newAccessibilityValue);
_flags.setAccessibilityValue = YES;
_flags.setAccessibilityAttributedValue = NO;
}

- (NSAttributedString *)accessibilityAttributedValue
{
if (_flags.setAccessibilityValue) {
return [[NSAttributedString alloc] initWithString:accessibilityValue];
}
return accessibilityAttributedValue;
}

- (void)setAccessibilityAttributedValue:(NSAttributedString *)newAccessibilityAttributedValue
{
if (! ASObjectIsEqual(accessibilityAttributedValue, newAccessibilityAttributedValue)) {
_flags.setAccessibilityAttributedValue = YES;
_flags.setAccessibilityValue = YES;
accessibilityAttributedValue = newAccessibilityAttributedValue? [newAccessibilityAttributedValue copy] : nil;
accessibilityValue = newAccessibilityAttributedValue ? [newAccessibilityAttributedValue.string copy] : nil;
}
ASCompareAssignCopy(accessibilityAttributedValue, newAccessibilityAttributedValue);
_flags.setAccessibilityAttributedValue = YES;
_flags.setAccessibilityValue = NO;
}

- (UIAccessibilityTraits)accessibilityTraits
Expand Down Expand Up @@ -1087,20 +1087,23 @@ - (void)applyToView:(UIView *)view withSpecialPropertiesHandling:(BOOL)specialPr
if (flags.setAccessibilityLabel)
view.accessibilityLabel = accessibilityLabel;

if (AS_AT_LEAST_IOS11 && flags.setAccessibilityAttributedLabel)
[view setValue:accessibilityAttributedLabel forKey:@"accessibilityAttributedLabel"];

if (flags.setAccessibilityHint)
view.accessibilityHint = accessibilityHint;

if (AS_AT_LEAST_IOS11 && flags.setAccessibilityAttributedHint)
[view setValue:accessibilityAttributedHint forKey:@"accessibilityAttributedHint"];

if (flags.setAccessibilityValue)
view.accessibilityValue = accessibilityValue;

if (AS_AT_LEAST_IOS11 && flags.setAccessibilityAttributedValue)
[view setValue:accessibilityAttributedValue forKey:@"accessibilityAttributedValue"];
if (AS_AVAILABLE_IOS(11)) {
if (flags.setAccessibilityAttributedLabel) {
view.accessibilityAttributedLabel = accessibilityAttributedLabel;
}
if (flags.setAccessibilityAttributedHint) {
view.accessibilityAttributedHint = accessibilityAttributedHint;
}
if (flags.setAccessibilityAttributedValue) {
view.accessibilityAttributedValue = accessibilityAttributedValue;
}
}

if (flags.setAccessibilityTraits)
view.accessibilityTraits = accessibilityTraits;
Expand Down