Bug 1626036 - Cache CURRENT state in Mac. r=morgan

This allows us to not pull in attributes for every accessible.

Differential Revision: https://phabricator.services.mozilla.com/D69132

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Eitan Isaacson 2020-04-02 16:44:24 +00:00
parent df0924d72a
commit 9d0aad6f8b

View File

@ -246,7 +246,7 @@ static inline NSMutableArray* ConvertToNSArray(nsTArray<ProxyAccessible*>& aArra
} }
static const uint64_t kCachedStates = static const uint64_t kCachedStates =
states::CHECKED states::PRESSED | states::MIXED | states::EXPANDED; states::CHECKED | states::PRESSED | states::MIXED | states::EXPANDED | states::CURRENT;
static const uint64_t kCacheInitialized = ((uint64_t)0x1) << 63; static const uint64_t kCacheInitialized = ((uint64_t)0x1) << 63;
- (uint64_t)state { - (uint64_t)state {
@ -328,7 +328,11 @@ static const uint64_t kCacheInitialized = ((uint64_t)0x1) << 63;
} }
if ([attribute isEqualToString:NSAccessibilityValueAttribute]) return [self value]; if ([attribute isEqualToString:NSAccessibilityValueAttribute]) return [self value];
if ([attribute isEqualToString:NSAccessibilityARIACurrentAttribute]) { if ([attribute isEqualToString:NSAccessibilityARIACurrentAttribute]) {
return utils::GetAccAttr(self, "current"); if ([self stateWithMask:states::CURRENT]) {
return utils::GetAccAttr(self, "current");
} else {
return nil;
}
} }
if ([attribute isEqualToString:NSAccessibilityRoleDescriptionAttribute]) if ([attribute isEqualToString:NSAccessibilityRoleDescriptionAttribute])
return [self roleDescription]; return [self roleDescription];