Remove expensive operator== from CKViewConfiguration & AccessibilityContext

Summary:
`CKComponentAccessibilityContext::operator==` can be extremely expensive; it may invoke the `accessibilityLazyTextBlock` for its `CKComponentAccessibilityTextAttribute` members, and that can do a lot of string construction.

I could refactor this to make it cheaper, e.g. by migrating to a function-pointer-and-context-object approach. But the easiest thing to do is to simply remove it; I don't think it's meaningfully used.

Reviewed By: kevin0571

Differential Revision: D22322108

fbshipit-source-id: 82a0548d6dd28ec4adf2f3ba85705eabf665d100
This commit is contained in:
Adam Ernst
2020-07-01 08:23:51 -07:00
committed by Facebook GitHub Bot
parent 7e7f431c66
commit 993dbef7b8

View File

@@ -38,11 +38,6 @@
sonar_additionalDataOverride;
@end
static BOOL AccessibilityContextIsDefault(
CKComponentAccessibilityContext accessibilityContext) {
return accessibilityContext == CKComponentAccessibilityContext();
}
static NSDictionary<NSString*, NSObject*>* AccessibilityContextDict(
CKComponentAccessibilityContext accessibilityContext) {
NSMutableDictionary<NSString*, NSObject*>* accessibilityDict =
@@ -234,12 +229,12 @@ static CK::StaticMutex _mutex = CK_MUTEX_INITIALIZER;
// Only add accessibility panel if accessibilityContext is not default
CKComponentAccessibilityContext accessibilityContext =
[self viewConfiguration].accessibilityContext();
if (!AccessibilityContextIsDefault(accessibilityContext)) {
[data addObject:[SKNamed
newWithName:@"Accessibility"
NSDictionary* accessibilityDict =
AccessibilityContextDict(accessibilityContext);
if ([accessibilityDict count]) {
[data addObject:[SKNamed newWithName:@"Accessibility"
withValue:@{
@"accessibilityContext" :
AccessibilityContextDict(accessibilityContext),
@"accessibilityContext" : accessibilityDict,
@"accessibilityEnabled" : SKMutableObject(
@(CK::Component::Accessibility::
IsAccessibilityEnabled())),